RAID-1 中发生故障的 Btrfs 驱动器可以实时更换吗?

RAID-1 中发生故障的 Btrfs 驱动器可以实时更换吗?

我正在尝试决定一个文件系统,并想知道是否可以在不停机的情况下更换 btrfs RAID 中的故障驱动器。

  1. 假设我使用以下命令创建一个新的 btrfs 文件系统

    mkfs.btrfs -d raid1 /dev/sdb /dev/sdc
    
  2. 现在假设有一天设备/dev/sdc坏了。有两种可能:设备可能逐渐坏掉,显示 SMART 错误 - 在这种情况下,我可以使用 添加新设备btrfs device add /dev/sde /mnt; btrfs filesystem balance /mnt,然后使用 移除旧设备btrfs device delete /dev/sdc /mnt

  3. 但如果它突然失败,变得无法读取......网络搜索说在这种情况下我必须首先卸载文件系统,以降级模式挂载,添加新设备,然后删除丢失的设备。

    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已添加。如果您正在运行较新的内核,它将提供您所需的功能。

相关内容