网上有几个类似的问题,但我没有看到任何涵盖确切场景的问题。这是一个问题和答案合二为一的问题,我花了几个小时才解决。
我想克隆一个驱动器并维护 /boot,而不必摆弄 grub。
答案1
在实时 CD/USB 上启动,然后使用 dd 从旧磁盘克隆到新磁盘:
dd if=/dev/sda of=/dev/sdb
关闭并移除旧驱动器以避免 vg 冲突实际上我所做的是将 /dev/sda 克隆到第三个驱动器上的文件,这样我就可以 a) 进行备份,并且 b) 相当轻松地从头开始。如果您再次运行 dd 步骤,请重新启动,因为 pvdisplay 仍将显示旧统计信息。
shutdown -h now
再次通过 live cd/usb 启动后,sdb 变为 sda
使用 parted 在所有现有分区后创建新分区。我发现在这种情况下 parted 比 fdisk 更容易,因为你可以告诉它使用所有可用空间
gparted /dev/sda
现在创建一个新的物理卷。有些人建议更改现有的 pv 大小(pvresize --setphysicalvolumesize),但这对我来说不起作用,并导致 lvextend 步骤出现错误
pvcreate /dev/sda3 (The new partition)
vgextend /dev/vgname /dev/sda3
您现在应该可以看到额外的可用空间
vgdisplay
抱歉,输出不多,我不会再运行这些了:D
现在我们需要扩展 lvm 分区。请注意,如果您最后有一个交换分区,请不要担心,lvm 会为您处理。
lvextend /dev/vgname/root -L+150G
(vgdisplay 显示您可以添加多少空间)
lvscan
这将向您显示空间已分配,但我们还未完全分配,df 不会显示额外的可用空间。
e2fsck -f /dev/vgname/root
resize2fs /dev/vgname/root
现在我们应该在那里,如果你挂载 /dev/vgname/root,df 将报告新的分区大小和可用空间。
移除您的实时 CD/USB 并重新启动,您的安装应该就可以正常工作了。
这些步骤适用于 Ubuntu Server 16.04.2 安装和 Ubuntu 16.04.2 live USB。