2022-10-30
打开电脑提示home
分区空间马上用尽,但是此电脑是256G固态硬盘+1T机械硬盘的,于是想计划将home
挂载到空间较大的机械硬盘,本文记录这个过程。
规划好新的硬盘
在增加新硬盘时,先将新硬盘安装好,同时进行分区和格式化等操作,而我的电脑是双硬盘,所以直接操作即可。对于Linux系统,当前一般流行ext4
格式,所以直接格式化准备好就行。比如我的硬盘规划如下:
1 2 3 4 5 6 7 8 9 10 11 12 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 931.5G 0 disk ├─sda1 8:1 0 831.4G 0 part /home └─sda2 8:2 0 100.1G 0 part sdb 8:16 0 238.5G 0 disk ├─sdb1 8:17 0 499M 0 part ├─sdb2 8:18 0 100M 0 part /boot/efi ├─sdb3 8:19 0 16M 0 part ├─sdb4 8:20 0 100G 0 part ├─sdb5 8:21 0 136.9G 0 part / └─sdb6 8:22 0 1G 0 part [SWAP] sr0 11:0 1 1024M 0 rom
上面是我设置完成后的状态,其中/home
之前安装系统时我单独设置了分区,而后来挂载机械硬盘后,我将原来的分区合并到了现在的根分区下,也就是现在的/dev/sdb5
。而之前的机械硬盘设置也不是很合理,工作时发现windows
我几乎很少启动,所以之前分配的空间太大了,于是在操作前先使用U盘启动系统到Archlinux,再使用分区工具GParted
进行无损分区,这点大可放心,启动程序后你就会操作了。但是我提醒大家注意一点,分区是是对齐到4k或柱面等的,所以手动输入的空间一般不能保证全部空间都利用起来,这时候需要你手动输入一个大体值,然后再调整+
, -
使空间得到全部利用。
向新硬盘写入原来home
分区数据
1 2 3 sudo mkdir /mnt/homesudo mount /dev/sda1 /mnt/homesudo cp -a /home/* /mnt/home/
cp -a
:
递归复制,复制的数据会保留原有数据的时间戳等信息(具体:时间戳+所有权+复制连结文件属性而非档案本身)
cp -r
:
递归复制,复制的数据会使用新的时间戳等信息
由于我们的操作是待新硬盘挂载后和之前的情况一样,所以需要使用-a
选项,复制原来home
中的所有文件及其属性。同时由于原来home
中的文件较多,所以这个复制过程需要些时间,请耐心等待即可。
查看硬盘UUID
序列号
UUID
序列号是硬盘的唯一编号,它告诉系统在启动时挂载哪一个硬盘,这里不应当使用硬盘名称,因为有时候硬盘的名字是会发生变更的,而这个UUID
是不会变的。查看UUID
一共有三种方法,如下
使用命令sudo blkid
获取UUID
1 2 3 4 5 6 7 8 /dev/sdb4: BLOCK_SIZE="512" UUID="42AC941EAC940F13" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="308b3a1a-ee27-4022-a862-5a72d303e7f3" /dev/sdb2: UUID="AAAB-E291" BLOCK_SIZE="512" TYPE="vfat" PARTLABEL="EFI system partition" PARTUUID="0a77ba7c-e364-4da9-add2-c5e500bf1c1b" /dev/sdb5: UUID="59063614-55b8-4075-9e43-27a83f0a556b" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="e5d5cd4b-9cac-3a47-8de5-9220ee2b6362" /dev/sdb3: PARTLABEL="Microsoft reserved partition" PARTUUID="d5c042f5-f557-496d-b5ff-ab75a4f0b652" /dev/sdb1: LABEL="M-fM-^AM-\"M-eM-$M -^M" BLOCK_SIZE="512" UUID="480CA8670CA851AC" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="4cfeba65-1d66-403f-be55-e458f17dd9de" /dev/sdb6: UUID="9c8f9d48-e16c-45a7-8fb4-52584973fd9e" TYPE="swap" PARTUUID="161069e4-62be-485d-9113-e46671f86f1b" /dev/sda2: LABEL="win-D" BLOCK_SIZE="512" UUID="2C0A1DDB0A1DA33E" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="1a0b343e-3e59-45bc-9c56-38e88bd6912c" /dev/sda1: UUID="3e94476e-727c-4f5d-9a3b-af276a1e3b9a" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="f4fd1e2e-5e18-4232-92d9-69d926244608"
使用命令sudo lsblk -f
获取UUID
1 2 3 4 5 6 7 8 9 10 11 12 NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS sda ├─sda1 ext4 1.0 3e94476e-727c-4f5d-9a3b-af276a1e3b9a 728.3G 6% /home └─sda2 ntfs win-D 2C0A1DDB0A1DA33E sdb ├─sdb1 ntfs 恢复 480CA8670CA851AC ├─sdb2 vfat FAT32 AAAB-E291 68.6M 29% /boot/efi ├─sdb3 ├─sdb4 ntfs 42AC941EAC940F13 ├─sdb5 ext4 1.0 59063614-55b8-4075-9e43-27a83f0a556b 105.9G 16% / └─sdb6 swap 1 9c8f9d48-e16c-45a7-8fb4-52584973fd9e [SWAP] sr0
使用命令sudo ls -l /dev/disk/by-uuid
获取UUID
1 2 3 4 5 6 7 8 总计 0 lrwxrwxrwx 1 root root 10 10月30日 15:27 2C0A1DDB0A1DA33E -> ../../sda2 lrwxrwxrwx 1 root root 10 10月30日 15:27 3e94476e-727c-4f5d-9a3b-af276a1e3b9a -> ../../sda1 lrwxrwxrwx 1 root root 10 10月30日 15:27 42AC941EAC940F13 -> ../../sdb4 lrwxrwxrwx 1 root root 10 10月30日 15:27 480CA8670CA851AC -> ../../sdb1 lrwxrwxrwx 1 root root 10 10月30日 15:27 59063614-55b8-4075-9e43-27a83f0a556b -> ../../sdb5 lrwxrwxrwx 1 root root 10 10月30日 15:27 9c8f9d48-e16c-45a7-8fb4-52584973fd9e -> ../../sdb6 lrwxrwxrwx 1 root root 10 10月30日 15:27 AAAB-E291 -> ../../sdb2
设置开机自动挂载新硬盘
这里需要操作一步简单的操作,即sudo nvim /etc/fstab
将
/home
前的UUID
更换为上一小节查询到的相应UUID
即可,我的系统设置如下
1 2 3 4 5 6 7 8 9 10 11 12 UUID=AAAB-E291 /boot/efi vfat umask =0077 0 2 UUID=59063614-55b8-4075-9e43-27a83f0a556b / ext4 defaults,noatime 0 1 UUID=3e94476e-727c-4f5d-9a3b-af276a1e3b9a /home ext4 defaults,noatime 0 2 tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0
我在原来的设置中,将原来的/home
一行注释掉,然后重新设置了新的硬盘UUID
即上面的第11行是新的硬盘。
总结
通过今天的操作,发现更换home
分区其实并不难,而且还挺容易。所以对于之前按装系统流程就有了新的思考,如果你的电脑只有一个硬盘,那装双系统需要合理规划一下分区然后按照之前的流程装就可以了,比如我的ThinkPad t490
。但是,如果你我现在的办公电脑,它只有256G
的固态硬盘,还要考虑到不可避免的windows
的使用,不得不划分出一块给windows
,而且windows
占据的空间还不能太小。这样留给Linux
的空间就不会太大了,如果再分区home
就更小了,但是此电脑是双硬盘,因此在装机时不必划分home
分区,而除根分区外只分出/boot/efi/
及linux-swap
即可,待安装完系统,按照此处的方法将机械硬盘挂载到/home
即可。