我准备买一个更大的硬盘,想把根目录复制到这个硬盘上。根分区是 20G。我想在新硬盘上把根分区变大。我还想把 /home 复制到新硬盘上一个更大的分区上。
我可以用来
dd
复制分区吗?或者有没有更好的方法来复制分区?在复制分区之前我应该格式化新驱动器吗?
除此之外,我还需要做什么来
sudo update-grub
表明我将使用新的驱动器?我知道这很主观,但我发现如果添加很多程序,20G 对于根分区来说有点小。40G 够大吗,还是更大的分区更好?
答案1
首先,让我们对新驱动器进行分区。由于它将成为系统中的第二个驱动器,因此我们只需按需要进行设置即可。如果您不确定分区的大小要求,请使用 LVM。(我不会在这里介绍它。)希望这会为您提供足够的指示,让您知道该怎么做。
- 除非您要制作与旧磁盘完全相同的副本(比如将磁盘交换到速度更快但大小相同的磁盘),否则不要使用
dd
。首先对新驱动器进行分区,然后格式化分区(例如 ext4)。然后可以使用以下命令完成实际复制:tar -c --one-file-system -f - . | (cd /newPartitionMountPoint/; tar -xvf -)
- 新驱动器:否,用于
dd
分区:否,之后parted
:是(除非自动格式化分区) - 好吧,当您更改之前存在的分区时,您还必须编辑
/etc/fstab
使用blkid
以查看新旧 UUID + 标签并相应地更改 fstab。如果您有/boot
单独的分区,/dev/sda
那就是大部分内容。 - 根分区的大小是主观的。实际上,我从未需要超过 20G 的分区
root
,但这意味着我有单独的分区/var/lib
(如果需要数据库),/data
用于我的一般数据需求,当然/home
在 Linux 中移动硬盘系统比在 Windows 中更容易,但最困难的是移动“/”和“/boot”。我认为对您来说更简单的方法是检查您使用空间的位置:du -hsc /*
然后为最大的文件夹创建一个分区(例如/usr
)/dev/sdb1 20G LABEL=myusr /dev/sdb2 100G LABEL=myhome
然后创建 usrtmp 文件夹并在那里同步旧 usr: 请注意,这是高级内容即使一切正常,也可能会破坏您的系统。基本上,如果你知道怎么做,那就去做吧。如果你不知道……那我就不会这么做……
mkdir /usrtmp
mount LABEL=myusr /usrtmp
cd /usr
tar -c --one-file-system -f - . | (cd /usrtmp/; tar -xvf -)
# this might be dangerous so I would do it with livecd myself..
# If you're feeling risky do this:
cd /
mv /usr /usr_old && mv /usrtmp /usr
## Now you can edit /etc/fstab to mount LABEL=myusr to /usr
## if you forget this but you did the mv then you won't be able to use your system
## Reboot, if everything is okay, you can remove /usr_old
## Repeat the same for home, but change labels accordingly