我正在尝试决定一个文件系统,并想知道是否可以在不停机的情况下更换 btrfs RAID 中的故障驱动器。
假设我使用以下命令创建一个新的 btrfs 文件系统
mkfs.btrfs -d raid1 /dev/sdb /dev/sdc
现在假设有一天设备
/dev/sdc
坏了。有两种可能:设备可能逐渐坏掉,显示 SMART 错误 - 在这种情况下,我可以使用 添加新设备btrfs device add /dev/sde /mnt; btrfs filesystem balance /mnt
,然后使用 移除旧设备btrfs device delete /dev/sdc /mnt
。但如果它突然失败,变得无法读取......网络搜索说在这种情况下我必须首先卸载文件系统,以降级模式挂载,添加新设备,然后删除丢失的设备。
umount /mnt mount -o degraded /dev/sdb /mnt btrfs device add /dev/sdf /mnt btrfs device delete missing /mnt
卸载显然是一个破坏性操作,因此会导致停机 - 任何使用该文件系统的应用程序都会收到 I/O 错误。但考虑到 btrfs 正在大力开发中,这类关于 btrfs 的“教程”看起来已经过时了。
问题是:考虑到 btrfs 的当前状态,是否可以在线执行此操作,即无需卸载?
如果没有,是否有纯软件解决方案可以满足这一需求?
答案1
在 Linux 3.8 中,btrfs replace mountpoint old_disk new_disk
已添加。如果您正在运行较新的内核,它将提供您所需的功能。