我正在更换镜像 btrfs 中出现故障的硬盘。
btrfs device delete missing /[mountpoint]需要很长时间,所以我认为它实际上是将数据重新平衡到替换驱动器。
有没有办法监控这样的操作的进度?
我不一定期望漂亮的 GUI,甚至 % 计数器;如果有必要,我愿意编写几行 shell 脚本,但我什至不知道从哪里开始寻找相关数据。btrfs filesystem show例如只是挂起,大概是等待平衡操作完成,然后才显示有关镜像文件系统的任何信息。
llu*_*lua 31
btrfs balance status /mountpoint
Run Code Online (Sandbox Code Playgroud)
man 8 btrfs
[filesystem] balance status [-v] <path>
Show status of running or paused balance.
Options
-v be verbose
Run Code Online (Sandbox Code Playgroud)
sudo btrfs fi show
Run Code Online (Sandbox Code Playgroud)
这将输出如下内容:
Label: none uuid: 2c97e7cd-06d4-4df0-b1bc-651397edf74c
Total devices 16 FS bytes used 5.36TiB
devid 1 size 931.51GiB used 770.48GiB path /dev/sdc
devid 2 size 931.51GiB used 770.48GiB path /dev/sdg
devid 3 size 931.51GiB used 770.48GiB path /dev/sdj
devid 4 size 0.00 used 10.02GiB path
devid 5 size 931.51GiB used 770.48GiB path /dev/sdh
devid 6 size 931.51GiB used 770.48GiB path /dev/sdi
devid 7 size 931.51GiB used 770.48GiB path /dev/sdd
devid 8 size 931.51GiB used 770.48GiB path /dev/sdo
devid 9 size 465.76GiB used 384.31GiB path /dev/sdn
devid 10 size 931.51GiB used 770.48GiB path /dev/sdp
devid 11 size 931.51GiB used 770.48GiB path /dev/sdr
devid 12 size 931.51GiB used 770.48GiB path /dev/sdm
devid 13 size 931.51GiB used 769.48GiB path /dev/sdq
devid 14 size 931.51GiB used 770.48GiB path /dev/sdl
devid 15 size 931.51GiB used 770.48GiB path /dev/sde
devid 16 size 3.64TiB used 587.16GiB path /dev/sdf
Btrfs v3.12
Run Code Online (Sandbox Code Playgroud)
如果您注意到设备 ID #4 看起来与其他设备略有不同。当您执行“btrfs 设备删除丢失的/mntpoint”操作时,它将开始重新生成释放“丢失”驱动器所需的raid 元/数据。
如果你做类似的事情
"watch -n 10 sudo btrfs fi show"
Run Code Online (Sandbox Code Playgroud)
然后您可以看到有问题的“丢失”设备上的空间逐渐变小,直到操作完成并将其从 fi 中删除。