有一块运行 btrfs 的磁盘空间告急,需要替换一块更大的硬盘上去。
下面记录一下过程
环境信息
root@linux:~# cat /etc/issue
Ubuntu 24.04.4 LTS \n \l
root@linux:~# btrfs version
btrfs-progs v6.6.3
首先这种情况下,更换硬盘有两种方式
- 直接执行替换Replace。
- 优点:
- 数据迁移效率高
- 后台执行
- 缺点:
- 执行过程中磁盘容量不变
- 优点:
- 先添加一块新磁盘,然后移除旧的硬盘。
- 优点:
- 执行过程中会扩展磁盘容量
- 缺点:
- 前台执行(利用 screen 解决)
- 数据迁移效率低(相当于做了一次Rebalance重平衡)
- 优点:
然而目前磁盘空间只剩下几个 G 了,并且还有数据在一直写入。
所以就算迁移速度慢,也要采用第二种方式,先添加一个磁盘,再移除旧硬盘。
看一下当前的存储情况
root@linux:~# btrfs filesystem show /data/
Label: none uuid: 975198bd-0476-45d9-afd4-ec62feebd131
Total devices 1 FS bytes used 194.64GiB
devid 1 size 200.00GiB used 199.02GiB path /dev/sdc
添加新磁盘,再次查看存储情况
root@linux:~# btrfs device add /dev/sde /data/
Performing full device TRIM /dev/sde (400.00GiB) ...
root@linux:~# btrfs filesystem show /data/
Label: none uuid: 975198bd-0476-45d9-afd4-ec62feebd131
Total devices 2 FS bytes used 194.75GiB
devid 1 size 200.00GiB used 199.02GiB path /dev/sdc
devid 2 size 400.00GiB used 0.00B path /dev/sde
这是可以看到已经添加了 400G 的硬盘,通过 df 查看能看到分区已经扩容。
接下来移除旧的磁盘
#首先执行 screen 命令启用一个新窗口
#执行移除操作,会在前台卡住
btrfs device remove /dev/sdc /data/
#再将screen窗口放到后台,Mac下是control+A+D的组合键
下面就可以通过查看磁盘使用情况来监控数据迁移状态
root@linux:~# btrfs filesystem show /data/
Label: none uuid: 975198bd-0476-45d9-afd4-ec62feebd131
Total devices 2 FS bytes used 196.01GiB
devid 1 size 0.00B used 196.02GiB path /dev/sdc
devid 2 size 400.00GiB used 4.00GiB path /dev/sde
可以看到目前已经迁移了 4G 到新的 sde 硬盘中。
等待数据迁移完成,然后把旧硬盘物理移除。