Kann ein ausgefallenes Btrfs-Laufwerk in RAID-1 live ersetzt werden?

15

Ich versuche mich für ein Dateisystem zu entscheiden und möchte wissen, ob es möglich ist, ein ausgefallenes Laufwerk in btrfs RAID ohne Ausfallzeit zu ersetzen.

  1. Angenommen, ich erstelle mit dem Befehl ein neues btrfs-Dateisystem

    mkfs.btrfs -d raid1 /dev/sdb /dev/sdc
    
  2. Angenommen, ein Tag /dev/sdcschlägt fehl. Es gibt zwei Möglichkeiten: Es kann nach und nach fehlschlagen und SMART-Fehler anzeigen. In dieser Situation kann ich ein neues Gerät mit hinzufügen btrfs device add /dev/sde /mnt; btrfs filesystem balance /mntund das alte mit entfernen btrfs device delete /dev/sdc /mnt.

  3. Aber wenn es plötzlich fehlschlägt und nicht mehr lesbar ist ... In einer Websuche heißt es in dieser Situation, dass ich zuerst das Dateisystem aushängen, im herabgesetzten Modus einbinden, ein neues Gerät hinzufügen und dann das fehlende Gerät entfernen muss.

    umount /mnt
    mount -o degraded /dev/sdb /mnt
    btrfs device add /dev/sdf /mnt 
    btrfs device delete missing /mnt
    

Ein Unmount ist offensichtlich ein störender Vorgang, sodass es zu Ausfallzeiten kommen kann. Jede Anwendung, die das Dateisystem verwendet, würde einen E / A-Fehler erhalten. Aber diese Art von "Tutorials" zu btrfs sehen veraltet aus, wenn man bedenkt, dass sich btrfs in einer intensiven Entwicklung befindet.

Die Frage ist: Ist es unter Berücksichtigung des aktuellen Zustands von btrfs möglich, dies online zu tun, dh ohne die Bereitstellung aufzuheben?

Wenn nicht, gibt es eine reine Softwarelösung, die diese Anforderung erfüllt?

Nichts ist unmöglich
quelle
1
Wenn ein Laufwerk Feuer fängt, brennt wahrscheinlich auch der Rest Ihres Systems
Journeyman Geek
1
@JourneymanGeek Funny you .. :) Ich wollte nur klarstellen, dass ich einen katastrophalen, plötzlichen und unvorhersehbaren Ausfall meinte - das Laufwerk funktioniert einfach nicht mehr. Das ist eher ungewöhnlich, in der Regel Festplatte nicht nach und nach und mit einem effektiven Überwachung ich sie ersetzen kann , bevor das passiert, aber was , wenn ...
NothingsImpossible
2
In Linux 3.8 btrfs replace mountpoint old_disk new_diskwurde hinzugefügt.
Brian
@ Brian woow ... Das ist die Antwort. Ich habe nach "btrfs replace" gegoogelt und dies zeigte sich lwn.net/Articles/524589 . Es ist genau das, wonach ich gesucht habe. Bitte poste es als Antwort, damit ich es akzeptieren kann.
NothingsImpossible

Antworten:

11

In Linux 3.8 btrfs replace mountpoint old_disk new_diskwurde hinzugefügt. Wenn Sie einen aktuellen Kernel ausführen, wird dieser die gesuchte Funktionalität bereitstellen.

Brian
quelle
4
Dies wäre nun btrfs replace start /dev/old /dev/new /mountpoint( Start wurde hinzugefügt). Siehe auch man btrfs-replace.
basic6
1

kleine Korrektur, aktuelle Syntax ist:

Btrfs ersetzen Starten Sie OLDDEV NEWDEV MOUNTPOINT

welche dann hintergründe.

Sie können den Status mit überprüfen

btrfs ersetzen den Status MOUNTPOINT

Hier sehen Sie einen ständig aktualisierten Status des Ersetzungsvorgangs.

Volker
quelle
1
Dies ist keine Antwort auf die ursprüngliche Frage. Wenn Sie einen Autor kritisieren oder um Klärung bitten möchten, hinterlassen Sie einen Kommentar unter seinem Beitrag. Sie können jederzeit Ihre eigenen Beiträge kommentieren. Wenn Sie über eine ausreichende Reputation verfügen, können Sie jeden Beitrag kommentieren .
DavidPostill