将安装移动到新磁盘

我目前有一个这些分区的高清:

/dev/sdb1 / /dev/sdb2 swap /dev/sdb3 /home 

我正在考虑购买我的/分区的ssd。

现在我的问题是:是否可以将当前配置移动/转换为新配置(两个磁盘,/ home仍然存在)? 最好是从运行系统内部?

我建议不要使用dd 。 它只是逐个扇区复制,这意味着如果目标分区较小则会失败,并且浪费大量时间来复制可用空间,如果目标分区较大,则在运行之前,额外空间将无法使用resize2fs扩展文件系统。

最好从Live CD执行此操作,因为如果在修改文件时复制文件,最终会导致损坏的结果。

格式化ssd并同时安装新的ssd分区和原始根分区,然后运行sudo cp -ax /media/old-partition/* /media/new-partition ,其中old-partition和new-partition被替换为他们的实际挂载点。 这将复制每个文件,保留所有权,权限和时间戳。

然后在替换new-partition和SSD_DEVICE的正确值之后运行sudo grub-install --root-directory=/media/new-partition /dev/SSD_DEVICE SSD_DEVICE。 这将安装grub,使磁盘可启动。

一旦你重新启动(确保你的BIOS被配置为从ssd而不是旧驱动器启动),通过检查df和/或mount的输出,确保你从ssd而不是从旧驱动器运行,并且你应该好好吹掉旧的分区。

哦,在复制和更新根分区的UUID以匹配新SSD分区的UUID而不是旧分区的UUID之后,您将需要编辑新分区上的/etc/fstab文件。 您可以通过运行sudo blkid找到该UUID。

编辑:在上面的副本中添加/ *,但需要编辑超过6个字符。 现在是101个字符!

这个命令:

 dd if=/dev/sdb1 of=DEVICE_PATH_OF_SSD_DRIVE 

应该可以将/分区克隆到SSD驱动器。

编辑:这只有在您的分区与驱动器大小相同时才有效。 如果它们的大小不同,则可以使用partimage :

 partimage -z0 -d save /dev/sdb1 clone.partimg partimage restore DEVICE_PATH_OF_SSD_DRIVE clone.partimg rm clone.partimg 

此方法的一个警告是,驱动器上需要足够的空间来容纳包含/的所有内容的图像。 如果你有超过10GB的免费,你应该没问题。 否则,您可以使用-z1而不是-z0来压缩图像。 要获得更大的压缩效果,请使用-z2 。 此外, partimage不支持ext4文件系统

完成后,您应该安装SSD并检查您的数据是否已正确复制:

 $ mkdir /tmp/ssd $ sudo mount -t ext4 DEVICE_PATH_OF_SSD_DRIVE /tmp/ssd $ ls /tmp/ssd bin dev initrd.img lost+found opt sbin sys var boot etc initrd.img.old media proc selinux tmp vmlinuz cdrom home lib mnt root srv usr vmlinuz.old 

ext4替换为您用于/的文件系统。

您可能需要在此驱动器上安装GRUB引导加载程序:

 sudo grub-install DEVICE_PATH_OF_SSD_DRIVE 

然后,您需要编辑/etc/fstab文件,将/dev/sdb1替换为安装到/的条目中SSD驱动器的设备路径。 ( sudo $EDITOR /etc/fstab

请等到这个答案有几个upvotes,然后才能按照这些说明操作。 我不是这些事情的专家,所以我可能错过了一些重要的信息。 任何看到任何缺陷的人,请添加解释他们的评论。 您应该采取这些预防措施,因为如果出现问题,可能会导致计算机无法启动。

首先阅读如何迁移, 有没有简单的方法将操作系统从一个硬盘驱动器转移到另一个硬盘驱动器? 。

从您的SSD启动并将以下行添加到/etc/fstab (它只是一个绑定):

 /media/slowhd/home /home none rw,bind 0 0 

启动mount -a以激活更改。

提示 :不要mount /dev/yourhd /home因为你没有灵活性将更多目录移动到旧的高清。

更技术性的解决方案是使用LVM(逻辑卷管理器) 。