BTRFS 分区迁移记录
我的系统之前装在一个512G的硬盘里,随着使用空间逐渐变得捉禁见肘,正好手头有块空闲的1T硬盘,就打算迁移过去,以下步骤是在 ChatGPT 的帮助下完成的,我只是做个简单记录。
我使用的是 BTRFS(B-tree文件系统),它提供了高级快照、克隆和高效的数据存储等功能。当涉及到克隆BTRFS根文件系统时,传统工具如Clonezilla可能不适用,因为它们无法有效地传输UUID或范围(extents)。为了解决这个问题,BTRFS提供了自己的克隆工具,并且也有第三方工具可供使用。
BTRFS提供的一个常用克隆工具是btrfs-replace
:
btrfs replace start [-Bfr] <srcdev>|<devid> <targetdev> <path>
以下是我的源设备和目标设备的磁盘信息:
源设备
设备 起点 末尾 扇区 大小 类型
/dev/nvme1n1p1 2048 2095797 2093750 1022.3M EFI 系统
/dev/nvme1n1p2 991825920 1000214527 8388608 4G Linux swap
/dev/nvme1n1p3 2097152 991825919 989728768 471.9G Linux 文件系统
目标设备
设备 起点 末尾 扇区 大小 类型
/dev/sdb1 2048 2099199 2097152 1G Linux 文件系统
/dev/sdb2 2099200 136316927 134217728 64G Linux swap
/dev/sdb3 136316928 2000408575 1864091648 888.9G Linux 文件系统
克隆 EFI 分区
首先,将源设备 /dev/nvme1n1p1
中的 EFI 分区内容克隆到目标设备 /dev/sdb1
上:
sudo dd if=/dev/nvme1n1p1 of=/dev/sdb1 bs=4M
创建 Btrfs 文件系统
如果目标设备的 /dev/sdb3
分区尚未格式化为 Btrfs 文件系统,请使用以下命令进行格式化:
sudo mkfs.btrfs /dev/sdb3
挂载目标设备
创建一个临时目录作为挂载点,并将目标设备的 Btrfs 分区挂载到该目录:
sudo mkdir /mnt/target
sudo mount /dev/sdb3 /mnt/target
使用 btrfs replace
替换分区
使用 btrfs replace
命令将源设备的 Btrfs 分区替换到目标设备的 Btrfs 分区上:
sudo btrfs replace start -f /dev/nvme1n1p3 /dev/sdb3 /mnt/target
此命令将启动替换过程,并将源设备的 Btrfs 分区数据复制到目标设备的 Btrfs 分区中。
替换过程可能需要一段时间,具体时间取决于数据量的大小。
等待替换完成
等待替换过程完成。您可以使用 btrfs replace status
命令来查看替换进度:
sudo btrfs replace status /mnt/target
重启计算机
重新启动计算机,并选择从新的 Btrfs 分区引导,这时会发现可以进入系统了,但新的 1T 盘却只有 512G 的磁盘空间,这时使用 Live CD 进入实时镜像,使用 GParted 检查一下这个新分区,它会自动修复磁盘空间。
修复完重启即可正常使用。
- 前の記事: 北京联通固定IP通过光猫进行端口映射
- 次の記事: 簡単なモダンな VIM の設定