可能涉及到的命令:
parted(gparted命令行版)
fdisk
gdisk // 可以很轻松修复分区问题
dd
pv
btrfs filesystem ......
插入新硬盘
不知道为什么外置USB不认。
查清楚分区号
通过在root用户下fdisk -l
查清楚目前的分区号。
使用迁移命令
注意:dd或>命令也会拷贝uuid过去,意味着,/dev/sda1
的uuid和/dev/sdb5
的uuid是一样的。
uuid是一个唯一的标识符,因为类似/dev/sda
这样的映射点,在新设备加入的时候,可能会生成新的映射点,比如原来系统里是/dev/sda
现在变成了/dev/sdb
等等,所以一般情况下,在/etc/fstab
里写自己规则的时候,都是用uuid而非映射点。
可以不修改新硬盘分区的uuid,也就省去了修改/etc/fstab
或者/boot/grub/grub.conf
的麻烦。
选择1:使用>命令克隆并用pv显示进度
https://askubuntu.com/questions/523037/how-would-i-speed-up-a-full-disk-dd/523043#523043
# 必须要root权限
apt install apt
pv < /dev/sde > /dev/sdc
选择2:执行的dd命令
我的根目录所在的分区是/dev/sdb5
,新硬盘划分的是/dev/sda1
。
dd if=/dev/sdb5 of=/dev/sda1
由于dd命令没有展示中间过程,因此使用另一条命令来让他输出中间过程:
watch -n 5 killall -USR1 dd
修复设置
(可选项)
拷贝boot分区内容
更新硬盘信息
修改uuid,添加boot标记
修复grub
硬盘空间调整
ArchLinux、SUSE文档的btrfs
等文件系统文档非常实用。
https://documentation.suse.com/zh-cn/sles/15-SP1/html/SLES-all/cha-resize-fs.html
如果新旧硬盘容量不一致,先用 parted
的resizepart
修复扇区数量使用。
然后对btrfs等文件系统进行扩容。(注意,比如xfs等文件系统不支持缩小容量shrink)
btrfs filesystem resize max /srv/dev-disk-by-label-LVM
将原来的硬盘重新插入
因为新旧硬盘lable
、uuid
一致,重新插入服务器的时候可能会替换新硬盘的挂载。
可以用 fdisk
删除分区表暂时解决,但是并不彻底。需要格式化或者用OMV的抹除功能,或者更改uuid、label也可能解决该问题?