BTRFS RAID5-Datenträger ist während des Abgleichs ausgefallen

687
Oliver R.

Wenn Sie auf den Link zu diesem Thema geklickt haben: Vielen Dank!

Ich habe das folgende Setup:

6 x 500
GB HDD-Laufwerke 1x 32 GB NVME-SSD (Intel Optane)

Ich habe bcache verwendet, um die SSD als Caching-Gerät einzurichten, und alle anderen sechs Laufwerke sind Sicherungsgeräte. Nachdem alles vorhanden war, formatierte ich die sechs HDDs mit Btrfs in RAID5. Jetzt funktioniert alles wie erwartet für die letzten 7 Monate.

Mittlerweile habe ich 6x 2 TB HDD-Laufwerke und ich möchte die alten 500-GB-Festplatten nacheinander ersetzen. Also habe ich mit dem ersten angefangen, indem ich es aus dem btrfs gelöscht habe. Das hat gut funktioniert, ich hatte dort keine Probleme. Danach löste ich die leere Festplatte sauber vom bcache, trotzdem ist alles in Ordnung, also entfernte ich sie. Hier sind die Kommandozeilen dafür:

sudo btrfs device delete /dev/bcacheX /media/raid cat /sys/block/bcacheX/bcache/state cat /sys/block/bcacheX/bcache/dirty_data sudo sh -c "echo 1 > /sys/block/bcacheX/bcache/detach" cat /sys/block/bcacheX/bcache/state 

Danach installierte ich eines der 2-TB-Laufwerke, befestigte es an bcache und fügte es dem Schlachtzug hinzu. Der nächste Schritt bestand darin, die Daten auf das neue Laufwerk abzugleichen. Bitte beachten Sie die Kommandozeilen:

sudo make-bcache -B /dev/sdY sudo sh -c "echo '60a63f7c-2e68-4503-9f25-71b6b00e47b2' > /sys/block/bcacheY/bcache/attach" sudo sh -c "echo writeback > /sys/block/bcacheY/bcache/cache_mode" sudo btrfs device add /dev/bcacheY /media/raid sudo btrfs fi ba start /media/raid/  

Der Saldo funktionierte gut, bis ~ 164 GB auf das neue Laufwerk geschrieben wurden. Dies entspricht etwa 50% der zu vergleichenden Daten. Plötzlich treten Schreibfehler auf die Festplatte auf. Der Raid wurde langsam unbrauchbar (ich habe beim Abgleich drei VMs des RAID ausgeführt). Ich denke, dass es einige Zeit funktionierte, weil die SSD die Schreibvorgänge festlegte. Irgendwann hörte das Balancing auf und ich konnte nur die VMs töten. Ich überprüfte die I / Os auf den Festplatten und die SSD spuckte konstant 1,2 GB / s aus. Ich denke, der bcache hat irgendwie Daten an die btrfs geliefert und dort abgelehnt und erneut angefordert, aber das ist nur eine Vermutung. Jedenfalls habe ich den Host zurückgesetzt und die kaputte Festplatte physisch getrennt und eine neue eingelegt. Ich habe auch ein Bcache-Backing-Gerät darauf erstellt und den folgenden Befehl zum Ersetzen der fehlerhaften Festplatte ausgegeben:

sudo btrfs replace start -r 7 /dev/bcache5 /media/raid 

Das Dateisystem muss zum Lesen / Schreiben gemountet sein, damit dieser Befehl funktioniert. Es macht jetzt seine Arbeit, aber sehr langsam, etwa 3,5 MB / s. Leider meldet das syslog viele dieser Meldungen:

... scrub_missing_raid56_worker: 62 callbacks suppressed BTRFS error (device bcache0): failed to rebuild valid logical 4929143865344 for dev (null) ... BTRFS error (device bcache0): failed to rebuild valid logical 4932249866240 for dev (null) scrub_missing_raid56_worker: 1 callbacks suppressed BTRFS error (device bcache0): failed to rebuild valid logical 4933254250496 for dev (null) .... 

Wenn ich versuche, eine Datei aus dem Dateisystem zu lesen, schlägt der Ausgabebefehl mit einem einfachen E / A-Fehler fehl, und im Syslog werden ähnliche Einträge angezeigt:

BTRFS warning (device bcache0): csum failed root 5 ino 1143 off 7274496 csum 0xccccf554 expected csum 0x6340b527 mirror 2 

So weit, so gut (oder schlecht). Für 4,3% des Ersatzes waren bisher ca. 6 Stunden erforderlich. Für das Ersetzungsverfahren wurden keine Lese- oder Schreibfehler gemeldet ("btrfs replace status"). Ich werde es bis zur Fertigstellung voll ausleben. Bevor die erste 2-TB-Festplatte ausfiel, wurden 164 GB Daten gemäß "btrfs filesystem show" geschrieben. Wenn ich die auf das neue Laufwerk geschriebene Datenmenge überprüfe, entsprechen die 4,3% ungefähr 82 GB (laut / proc / diskstats). Ich weiß nicht, wie ich das interpretieren soll, aber trotzdem.

Und nun endlich meine Fragen: Wenn der Ersetzungsbefehl erfolgreich abgeschlossen wird, was soll ich als Nächstes tun. Ein schrubben? Ein Gleichgewicht? Noch eine Sicherung? ;-) Sehen Sie etwas, was ich bei diesem Verfahren falsch gemacht habe? Bedeuten die von btrfs gemeldeten Warnungen und Fehler, dass die Daten verloren gehen? :-(

Hier einige zusätzliche Informationen ( bearbeitet ):

$ sudo btrfs fi sh Total devices 7 FS bytes used 1.56TiB Label: none uuid: 9f765025-5354-47e4-afcc-a601b2a52703 devid 0 size 1.82TiB used 164.03GiB path /dev/bcache5 devid 1 size 465.76GiB used 360.03GiB path /dev/bcache4 devid 3 size 465.76GiB used 360.00GiB path /dev/bcache3 devid 4 size 465.76GiB used 359.03GiB path /dev/bcache1 devid 5 size 465.76GiB used 360.00GiB path /dev/bcache0 devid 6 size 465.76GiB used 360.03GiB path /dev/bcache2 *** Some devices missing  $ sudo btrfs dev stats /media/raid/ [/dev/bcache5].write_io_errs 0 [/dev/bcache5].read_io_errs 0 [/dev/bcache5].flush_io_errs 0 [/dev/bcache5].corruption_errs 0 [/dev/bcache5].generation_errs 0 [/dev/bcache4].write_io_errs 0 [/dev/bcache4].read_io_errs 0 [/dev/bcache4].flush_io_errs 0 [/dev/bcache4].corruption_errs 0 [/dev/bcache4].generation_errs 0 [/dev/bcache3].write_io_errs 0 [/dev/bcache3].read_io_errs 0 [/dev/bcache3].flush_io_errs 0 [/dev/bcache3].corruption_errs 0 [/dev/bcache3].generation_errs 0 [/dev/bcache1].write_io_errs 0 [/dev/bcache1].read_io_errs 0 [/dev/bcache1].flush_io_errs 0 [/dev/bcache1].corruption_errs 0 [/dev/bcache1].generation_errs 0 [/dev/bcache0].write_io_errs 0 [/dev/bcache0].read_io_errs 0 [/dev/bcache0].flush_io_errs 0 [/dev/bcache0].corruption_errs 0 [/dev/bcache0].generation_errs 0 [/dev/bcache2].write_io_errs 0 [/dev/bcache2].read_io_errs 0 [/dev/bcache2].flush_io_errs 0 [/dev/bcache2].corruption_errs 0 [/dev/bcache2].generation_errs 0 [devid:7].write_io_errs 9525186 [devid:7].read_io_errs 10136573 [devid:7].flush_io_errs 143 [devid:7].corruption_errs 0 [devid:7].generation_errs 0  $ sudo btrfs fi df /media/raid/ Data, RAID5: total=1.56TiB, used=1.55TiB System, RAID1: total=64.00MiB, used=128.00KiB Metadata, RAID1: total=4.00GiB, used=2.48GiB GlobalReserve, single: total=512.00MiB, used=0.00B  $ uname -a Linux hostname 4.15.0-36-generic #39-Ubuntu SMP Mon Sep 24 16:19:09 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux  $ btrfs --version btrfs-progs v4.15.1  $ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=18.04 DISTRIB_CODENAME=bionic DISTRIB_DESCRIPTION="Ubuntu 18.04.1 LTS" 

Nochmals vielen Dank für das Lesen und hoffentlich Ihre Kommentare / Antworten!

BEARBEITEN 2

Das 'Gerät ersetzen' ist gerade fertig. Es war neben der 9% -Marke, ich denke, dass dieser Prozentsatz der geschriebenen Datenmenge auf dem Laufwerk entspricht: 164 GiB bei einer Gesamtgröße von 1,82 TiB. 100% würde also einen vollständigen Ersatz von 2 TB bedeuten. Hier also einige zusätzliche Ausgaben:

$ btrfs replace status -1 /media/raid/ Started on 30.Oct 08:16:53, finished on 30.Oct 21:05:22, 0 write errs, 0 uncorr. read errs  $ sudo btrfs fi sh Label: none uuid: 9f765025-5354-47e4-afcc-a601b2a52703 Total devices 6 FS bytes used 1.56TiB devid 1 size 465.76GiB used 360.03GiB path /dev/bcache4 devid 3 size 465.76GiB used 360.00GiB path /dev/bcache3 devid 4 size 465.76GiB used 359.03GiB path /dev/bcache1 devid 5 size 465.76GiB used 360.00GiB path /dev/bcache0 devid 6 size 465.76GiB used 360.03GiB path /dev/bcache2 devid 7 size 1.82TiB used 164.03GiB path /dev/bcache5 

Das Lesen von Dateien bricht immer noch mit E / A-Fehlern ab. In syslog wird weiterhin Folgendes angezeigt:

BTRFS warning (device bcache0): csum failed root 5 ino 1143 off 7274496 csum 0x98f94189 expected csum 0x6340b527 mirror 1 BTRFS warning (device bcache0): csum failed root 5 ino 1143 off 7274496 csum 0xccccf554 expected csum 0x6340b527 mirror 2 

Ich denke, die harmloseste Aktion ist ein Nur-Lese-Scrub. Ich habe den Prozess gerade erst gestartet. Fehler und Warnungen überfluten das Syslog:

$ sudo btrfs scrub start -BdrR /media/raid # -B no backgroud, -d statistics per device, -r read-only, -R raw statistics per device $ tail -f /var/log/syslog BTRFS error (device bcache0): bdev /dev/bcache5 errs: wr 0, rd 0, flush 0, corrupt 2848, gen 0 BTRFS warning (device bcache0): checksum error at logical 4590109331456 on dev /dev/bcache5, physical 2954104832, root 5, inode 418, offset 1030803456, length 4096, links 1 (path: VMs/Virtualbox/Windows 10 Imaging VMs/Windows 10 Imaging/Windows 10 Imaging-fixed.vdi) BTRFS error (device bcache0): bdev /dev/bcache5 errs: wr 0, rd 0, flush 0, corrupt 2849, gen 0 BTRFS warning (device bcache0): checksum error at logical 4590108811264 on dev /dev/bcache5, physical 2953977856, root 5, inode 1533, offset 93051236352, length 4096, links 1 (path: VMs/Virtualbox/vmrbreb/vmrbreb-fixed.vdi) BTRFS error (device bcache0): bdev /dev/bcache5 errs: wr 0, rd 0, flush 0, corrupt 2850, gen 0 BTRFS warning (device bcache0): checksum error at logical 4590109335552 on dev /dev/bcache5, physical 2954108928, root 5, inode 418, offset 1030807552, length 4096, links 1 (path: VMs/Virtualbox/Windows 10 Imaging VMs/Windows 10 Imaging/Windows 10 Imaging-fixed.vdi) BTRFS error (device bcache0): bdev /dev/bcache5 errs: wr 0, rd 0, flush 0, corrupt 2851, gen 0 BTRFS warning (device bcache0): checksum error at logical 4590108815360 on dev /dev/bcache5, physical 2953981952, root 5, inode 621, offset 11864412160, length 4096, links 1 (path: VMs/Virtualbox/Win102016_Alter-Firefox/Win102016_Alter-Firefox-disk1.vdi) BTRFS error (device bcache0): bdev /dev/bcache5 errs: wr 0, rd 0, flush 0, corrupt 2852, gen 0 BTRFS warning (device bcache0): checksum error at logical 4590109339648 on dev /dev/bcache5, physical 2954113024, root 5, inode 418, offset 1030811648, length 4096, links 1 (path: VMs/Virtualbox/Windows 10 Imaging VMs/Windows 10 Imaging/Windows 10 Imaging-fixed.vdi) BTRFS error (device bcache0): bdev /dev/bcache5 errs: wr 0, rd 0, flush 0, corrupt 2853, gen 0 BTRFS warning (device bcache0): checksum error at logical 4590109343744 on dev /dev/bcache5, physical 2954117120, root 5, inode 418, offset 1030815744, length 4096, links 1 (path: VMs/Virtualbox/Windows 10 Imaging VMs/Windows 10 Imaging 

Meine Fragen bleiben noch: Was soll ich als nächstes tun? Ein schrubben? Ein Gleichgewicht? Habe ich etwas völlig falsch gemacht? Wie interpretiere ich die Fehler und Warnungen aus dem Read-Only-Scrub, kann btrfs sie beheben?

1
Ihr Setup verbirgt Hardwarefehler hinter dem Cache. Das ist keine gute Idee. Wenn Sie wirklich * blockieren * müssen, sollten Sie es vor dem RAID-Array platzieren. Btrfs kann das derzeit nicht. Um Probleme mit dem aktuellen Setup zu verringern, sollten Sie in den Durchschreibcache wechseln. Daniel B vor 6 Jahren 5
Würden Sie bitte erwähnen, welches * ix-Betriebssystem und welche Version Sie verwenden? Klicken Sie oben links auf "Bearbeiten", um den ursprünglichen Beitrag zu bearbeiten. K7AAY vor 6 Jahren 0
Wenn es sich um BTRFS handelt, handelt es sich entweder um Linux oder um ReactOS (ja, sie haben tatsächlich einen Treiber). Angenommen, es ist Linux angesichts des Kontextes. In diesem Fall sollten auch die Ausgaben von "uname -a" und "btrfs --version" hinzugefügt werden. Austin Hemmelgarn vor 6 Jahren 0
Danke für deine Kommentare. Ich habe alle angeforderten Informationen im letzten Block des Beitrags hinzugefügt. Der Prozess schließt an der 13-Stunden-Marke, 8,7% sind erledigt. 160 GiB geschrieben Oliver R. vor 6 Jahren 0
BEARBEITEN 2 - Gerät ersetzen abgeschlossen - siehe Hauptpost Oliver R. vor 6 Jahren 0

0 Antworten auf die Frage