问题描述
我有Ubuntu 14.04,有很多软件包和工作相关的东西,我很满意。它安装在我的主SSD驱动器上,这是一个120GB的(当我安装ubuntu时我选择了”/”,所以我相信一切都应该在这个驱动器上)。它显示为/dev /sda
现在我已经在我的计算机上添加了另一个SSD,这是一个240Gb。我目前没有任何其他存储介质(例如外置硬盘)。
由于新的240GB驱动器具有明显更大的容量和更快(比我的120GB更新一代),我想将我的Linux移动到这个新驱动器。这个新的驱动器显示为/dev /sdb,目前它没有格式化或任何东西(我现在已经完全解包并插入我的电脑中:P)
如何安全地将我的linux安装移动到新驱动器?
我可以更换SATA电缆,以便新驱动器在必要时显示为/dev /sda。
如果有帮助,这是“fdisk -l”的输出:
Disk /dev/sda: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders, total 234441648 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x00076d7a
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 226064383 113031168 83 Linux
/dev/sda2 226066430 234440703 4187137 5 Extended
Partition 2 does not start on physical sector boundary.
/dev/sda5 226066432 234440703 4187136 82 Linux swap / Solaris
Disk /dev/sdb: 240.1 GB, 240057409536 bytes
255 heads, 63 sectors/track, 29185 cylinders, total 468862128 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/sdb doesn't contain a valid partition table
最佳解决思路
您可以使用CLONEZILLA来实现此目的。
Clonezilla是一个免费的分区和磁盘映像/克隆工具,可用于以高度压缩的方式备份所有数据(整个磁盘或分区),然后将其克隆回硬盘以使其完全相同。这比大多数时候安装操作系统要快。
-
下载Clonezilla stable ISO或Direct Download clonezilla-live-2.4.6-25-amd64.iso
-
使用Tuxboot 7.0制作可引导(实时)USB。
-
从创建的Clonezilla媒体启动。
-
现在你有很多选择:
-
仅创建’/'(saveparts)的映像并将其克隆到其他SDD的任何分区。
-
创建完整磁盘(savedisk)的映像并将其克隆到新SSD。
-
在您的情况下,您也可以使用”device-device”选项,但我不熟悉它。
你可以在这里找到关于Clonezilla的详细指南:http://clonezilla.org
次佳解决思路
它可以通过几种方式完成。但最简单的方法是将所有文件从旧驱动器复制到新驱动器。
-
在新驱动器上创建ext4分区和交换分区。
-
从LiveUSB启动。
-
将旧的Ubuntu分区挂载到某个目录,将新的挂载到其他目录。
-
使用
cp -a
命令将所有文件从旧文件复制到新文件。 -
使用新的UUID更新
/etc/fstab
。
如果事情不明确,我可以添加一些解释。
第三种解决思路
如果你有时间并想要安全:
$ dd if=/dev/sda of=/dev/sdb bs=64K conv=noerror,sync
命令说明:
-
if
是输入,of
是目的地 -
bs
设置块大小。它是读取和写入的块的大小。更高的块大小通常意味着更高的性能,但如果输入磁盘有错误,也会导致更多数据损坏,请参见此处:archwiki on dd -
noerror
继续在r /w-errors中。 -
如果发生错误,
sync
会同步偏移量。
这将基本上创建一个磁盘sda的映像并将其写入sdb(相同的分区布局等)。当然,这将写入整个120GB,因为它是file-agnostic。因此,如果您只使用磁盘的一小部分,那么非常安全,但不是最快的。但是,如果输入磁盘已满,则可能更快。
但:
-
之后,您可能希望调整分区大小,否则您无法利用额外空间。
-
无论如何,可能需要编辑/etc /fstab文件。如果使用Hardware-IDs识别磁盘,则会出现这种情况。
第四种思路
与其他答案不同,这允许您克隆Linux安装并将其添加到Grub菜单中,当前安装完好无损。此外,它会自动为您修改/etc/fstab
并更新grub
启动菜单。
提供了一个菜单,可帮助您选择要克隆的正确分区。分区中的克隆是您当前引导的分区。
如果您选择重新放置分区,rsync
用于获得最佳速度。如果升级失败,等待错误修复并希望再次运行升级,这将非常有用。同样,您可能在升级期间选择了错误的选项,并希望再次执行此操作。
完整的脚本可以在这里找到:Bash script to clone Ubuntu to new partition for testing 18.04 LTS upgrade,这就是屏幕的样子:
第五种思路
我切换到新硬盘时的方式是:
-
在新驱动器上创建我想要的分区布局
-
从Live CD /USB启动或安装,救援等。
-
挂载要复制到的旧硬盘分区,例如
/mnt/a
-
挂载新的硬盘分区以接收文件,比如说
/mnt/b
-
cp -a
或使用tar将文件从/mnt/a
复制到/mnt/b
-
在新磁盘¹上安装引导加载程序(lilo或grub)
-
更新
/etc/fstab
(您可能希望使用blkid
来识别新的UUID) -
重新启动并测试一切是否正常
Note¹:
使用以下命令检查所有硬盘和分区:
sudo fdisk -l
现在请注意安装Ubuntu的分区,如下所示:/dev/sda1
将分区挂载到需要安装GRUB 2(硬盘分区)的位置,文件系统显示在Nautilus中。现在我们必须安装正确的硬盘分区来更改实际的硬盘MBR。为此,我们需要:
sudo mount /dev/sda1 /mnt
mount
现在将分区安装到备用位置
sudo mount /dev/sda1 /mnt/boot
从您启动的实时映像上的/dev
文件夹创建一个不可破解的链接到您安装到/mnt
的分区上的/dev
文件夹
sudo mount --bind /dev /mnt/dev/
现在我们必须将根CD(/)更改为已安装分区的根目录
sudo chroot /mnt
现在您处于新的根shell中,其中已安装的分区是新的根。您可以验证此键入ls
。由于我们现在处于已安装的分区中,我们可以提前安装GRUB 2:
sudo grub-install /dev/sda
安装现在应该完成,没有错误
键入exit
或按Ctrl
+ D
退出CHROOT shell,然后返回Live CD /USB Shell
卸载我们之前安装的分区以进行干净重启:
sudo umount /mnt/dev
sudo umount /mnt/boot
sudo umount /mnt
移除Live CD或USB Stick以从硬盘启动后重新启动:
sudo reboot