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


15

我正在尝试确定文件系统,想知道是否可以在不停机的情况下替换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. 但是,如果突然失败,变得无法读取...在这种情况下,Web搜索表明我必须首先卸载文件系统,以降级模式安装,添加新设备,然后删除丢失的设备。

    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
如果一个驱动器着火,则系统的其余部分也可能着火
Journeyman Geek

1
@JourneymanGeek逗你玩.. :)我只是想非常清楚地表明我的意思是灾难性,突发性和不可预测的故障-驱动器完全停止工作。这是很不常见的,硬盘通常会逐渐失效,并且通过有效的监视,我可以在此之前更换它们,但是,如果...
NothingsImpossible

2
在Linux 3.8 btrfs replace mountpoint old_disk new_disk中添加了。
布莱恩(Brian)

@Brian woow ...那就是答案。我用Google搜索“ btrfs replace”,结果显示了lwn.net/Articles/524589。这是_exactly_什么,我一直在寻找。请发布它作为答案,以便我接受。
NothingsImpossible

Answers:


11

在Linux 3.8中,btrfs replace mountpoint old_disk new_disk已添加。如果您正在运行最新的内核,它将提供您正在寻找的功能。


4
现在将是btrfs replace start /dev/old /dev/new /mountpoint(已添加开始)。另请参阅man btrfs-replace
basic6 2015年

1

小修正,当前语法为:

btrfs替换开始OLDDEV NEWDEV MOUNTPOINT

然后是背景。

您可以通过以下方式查看状态

btrfs替换状态MOUNTPOINT

这将向您显示替换操作的持续更新状态。


1
不是原始问题的答案。要批评或要求作者澄清,请在其帖子下方留下评论-您始终可以对自己的帖子发表评论,一旦您拥有足够的声誉,就可以在任何帖子中发表评论
DavidPostill
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.