BTRFS RAID wird ausgehängt wenn *erste* Platte entfernt wird

Probleme mit Samba, NFS, FTP und Co.
Antworten
Vanadar
Beiträge: 3
Registriert: 10.01.2021 20:00:38

BTRFS RAID wird ausgehängt wenn *erste* Platte entfernt wird

Beitrag von Vanadar » 10.01.2021 23:25:29

Hallo zusammen,

ich bin neu hier und bei Debian. Ich habe ein Problem mit BTRFS, bei dem ich Hilfe suche.

Bei meinem im Aufbau befindlichen neuen Heimserver setze ich ein BTRFS-RAID 1 mit ursprünglich zwei, jetzt drei Platten als Datenlager ein. Bei meinen Tests während der Installation habe ich festgestellt, dass das Dateisystem ausgehängt wird, wenn ich die *erste* Platte entferne. Entferne ich die zweite oder dritte Platte bleibt das Dateisystem eingehängt. Die Festplatten sind in Hot-Swap-Rahmen, damit ist das leicht zu testen.
Mein mit einem RAID 1 verfolgtes Ziel war aber ja gerade, dass das System auch bei Ausfall einer Platte verfügbar bleibt. Natürlich werde ich die SMART-Daten und das gesamte System überwachen und jede Nacht Backups auf ein anderes System erstellen.

Hat hier vielleicht jemand eine Idee, warum das Dateisystem bei Verlust der ersten Platte ausgehängt wird? Hängt das vielleicht mit dem Mountpoint zusammen?

Versionen
Hier die genutzte Software:

Code: Alles auswählen

# uname -a
Linux myserver 4.19.0-13-amd64 #1 SMP Debian 4.19.160-2 (2020-11-28) x86_64 GNU/Linux
# cat /etc/debian_version
10.7
# btrfs version
btrfs-progs v4.20.1

Partitionen
Das System startet von nvme0n1p2 auf einer SSD, gemountet als /boot. Dann kann ich per SSH die Partition nvme0n1p3 entschlüsseln. Darauf ist eine LVM volume group mit einem volume member mit BTRFS und einem Subvolume @root das nach / gemountet wird und einem Subvolume @snapshots das nach /mnt/snapshots/system gemountet wird. Um SWAP auch verschlüsselt zu haben, ist es auch in der LVM volume group. Ich weiß, dass die SSD ein single point of failure ist, aber das ist der Rest des Systems wie das Mainboard auch. Ich erwarte dort aber eine wesentliche geringere Ausfallwahrscheinlichkeit als bei einer drehenden Festplatte und ich kann die Daten auf der SSD aufgrund der geringen Datenmenge und der extern gelagerten Snapshots viel schneller wiederherstellen.
Die Daten sollen auf einem BTRFS volume gespeichert werden, das aus drei Festplatten sda, sdb und sdc besteht. Ich habe mit nur zwei Festplatten angefangen. Nachdem ich den Fehler des Aushängens bemerkt habe, habe ich eine dritte eingebaut um auszuschließen, dass es daran liegt dass das Minimum für ein RAID 1 notwendiger Platten unterschritten wird. Das Verhalten hat sich aber nicht geändert.
Nach Auftreten des Problems mit dem Aushängen habe ich zur Reduktion der Komplexität das BTRFS volume direkt auf den drei Festplatten erstellt. Später sollen diese jeweils verschlüsselt, automatisch mit einer LUKS-Schlüsseldatei beim Booten entschlüsselt und darauf das BTRFS volume erstellt werden.

Code: Alles auswählen

# lsblk -f
NAME                FSTYPE      LABEL  UUID                                   FSAVAIL FSUSE% MOUNTPOINT
sda
└─sda1              btrfs       data   3f7ee395-f804-4e5e-99cb-2c0941b829e2      3.7T     0% /mnt/snapshots/data
sdb
└─sdb1              btrfs       data   3f7ee395-f804-4e5e-99cb-2c0941b829e2
sdc
└─sdc1              btrfs       data   3f7ee395-f804-4e5e-99cb-2c0941b829e2
nvme0n1
├─nvme0n1p1         vfat               93C2-6713                               505.7M     1% /boot/efi
├─nvme0n1p2         ext2               6a07e2ea-9ab8-4180-a9fd-fd9e043ffa83    170.5M    23% /boot
└─nvme0n1p3         crypto_LUKS        c73f13ea-ef20-4ebf-92d6-dbd0f5cd6d44
  └─nvme0n1p3_crypt LVM2_member        Z2mZtj-1lh2-kxau-v03N-XHcp-MSlJ-DCPtz8
	├─system-root   btrfs       system 68af359d-8f8c-4b30-a41c-85ff2a9bb01a     93.2G     1% /mnt/snapshots/system
	└─system-swap_1 swap               71ce1c6b-971d-4315-87b9-91ed45224abe                  [SWAP]
In /etc/fstab habe ich subvolumes hinzugefügt. /var and /home habe ich noch auskommentiert aber sollen später auch vom BTRFS volume eingebunden werden.
Für das BTRFS volume data habe ich bereits die Option degraded ergänzt. Auch die Angabe aller devices habe ich probiert wie im Wiki beschrieben. Ich habe verschiedene Varianten für die erste Angabe <file system> ausprobiert: /dev/mapper/data-a11, LABEL=data, UUID=3f7ee395-f804-4e5e-99cb-2c0941b829e2. Alles mit gleichem Ergebnis.

Code: Alles auswählen

# cat /etc/fstab
# <file system>                                 <mount point>           <type>  <options>                               <dump>  <pass>

# volumes on LVM-volume system-root
/dev/mapper/system-root                         /                       btrfs   defaults,ssd,subvol=@root               0       0
/dev/mapper/system-root                         /mnt/snapshots/system   btrfs   defaults,ssd,subvol=@snapshots          0       0

# volumes on BTRFS-volume data
# /dev/mapper/data-a11                          /var                    btrfs   defaults,degraded,subvol=@var           0       0
# /dev/mapper/data-a11                          /home                   btrfs   defaults,degraded,subvol=@home          0       0
LABEL=data                                      /mnt/snapshots/data     btrfs   defaults,degraded,subvol=@snapshots     0       0
# UUID=3f7ee395-f804-4e5e-99cb-2c0941b829e2     /mnt/snapshots/data     btrfs   defaults,degraded,subvol=@snapshots     0       0

# /boot was on /dev/nvme0n1p2 during installation
UUID=6a07e2ea-9ab8-4180-a9fd-fd9e043ffa83       /boot                   ext2    defaults                                0       2

# /boot/efi was on /dev/nvme0n1p1 during installation
UUID=93C2-6713                                  /boot/efi               vfat    umask=0077                              0       1
/dev/mapper/system-swap_1                       none                    swap    sw                                      0       0
Nach dem Booten zeigt mountinfo immer /dev/sda1 als file system, egal ob ich device, UUID oder label in /etc/fstab genutzt habe.

Code: Alles auswählen

# cat /proc/self/mountinfo | grep /dev/
23 22 0:20 / /dev/pts rw,nosuid,noexec,relatime shared:3 - devpts devpts rw,gid=5,mode=620,ptmxmode=000
25 0 0:22 /@root / rw,relatime shared:1 - btrfs /dev/mapper/system-root rw,ssd,space_cache,subvolid=266,subvol=/@root
27 22 0:25 / /dev/shm rw,nosuid,nodev shared:4 - tmpfs tmpfs rw
46 22 0:18 / /dev/mqueue rw,relatime shared:27 - mqueue mqueue rw
48 22 0:44 / /dev/hugepages rw,relatime shared:29 - hugetlbfs hugetlbfs rw,pagesize=2M
108 25 0:22 /@snapshots /mnt/snapshots/system rw,relatime shared:59 - btrfs /dev/mapper/system-root rw,ssd,space_cache,subvolid=258,subvol=/@snapshots
113 25 259:2 / /boot rw,relatime shared:61 - ext2 /dev/nvme0n1p2 rw
116 113 259:1 / /boot/efi rw,relatime shared:63 - vfat /dev/nvme0n1p1 rw,fmask=0077,dmask=0077,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro
[b]119 25 0:48 /@snapshots /mnt/snapshots/data rw,relatime shared:65 - btrfs /dev/sda1 rw,degraded,space_cache,subvolid=256,subvol=/@snapshots[/b]
Syslog beim Entfernen
sda wird entfernt:

Code: Alles auswählen

Jan  1 14:20:12 myserver kernel: [  482.120376] ata1: SATA link down (SStatus 0 SControl 300)
Jan  1 14:20:18 myserver kernel: [  487.504870] ata1: SATA link down (SStatus 0 SControl 300)
Jan  1 14:20:23 myserver kernel: [  492.880940] ata1: SATA link down (SStatus 0 SControl 300)
Jan  1 14:20:23 myserver kernel: [  492.880951] ata1.00: disabled
Jan  1 14:20:23 myserver kernel: [  492.880985] ata1.00: detaching (SCSI 0:0:0:0)
Jan  1 14:20:23 myserver kernel: [  492.881693] sd 0:0:0:0: [sda] Stopping disk
Jan  1 14:20:23 myserver kernel: [  492.881714] sd 0:0:0:0: [sda] Start/Stop Unit failed: Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
Jan  1 14:20:23 myserver systemd[1]: Stopped target Local File Systems.
Jan  1 14:20:23 myserver systemd[1]: Unmounting /mnt/snapshots/data...
Jan  1 14:20:23 myserver systemd[895]: mnt-snapshots-data.mount: Succeeded.
Jan  1 14:20:23 myserver kernel: [  492.924536] BTRFS error (device sda1): bdev /dev/sda1 errs: wr 0, rd 1, flush 0, corrupt 0, gen 0
Jan  1 14:20:23 myserver kernel: [  492.924539] BTRFS error (device sda1): bdev /dev/sda1 errs: wr 0, rd 2, flush 0, corrupt 0, gen 0
Jan  1 14:20:23 myserver kernel: [  492.924544] BTRFS error (device sda1): bdev /dev/sda1 errs: wr 0, rd 3, flush 0, corrupt 0, gen 0
Jan  1 14:20:23 myserver kernel: [  492.924588] BTRFS error (device sda1): bdev /dev/sda1 errs: wr 0, rd 4, flush 0, corrupt 0, gen 0
Jan  1 14:20:23 myserver kernel: [  492.924593] BTRFS error (device sda1): bdev /dev/sda1 errs: wr 0, rd 5, flush 0, corrupt 0, gen 0
Jan  1 14:20:23 myserver kernel: [  492.924601] BTRFS error (device sda1): bdev /dev/sda1 errs: wr 0, rd 6, flush 0, corrupt 0, gen 0
Jan  1 14:20:23 myserver kernel: [  492.924602] BTRFS error (device sda1): bdev /dev/sda1 errs: wr 0, rd 7, flush 0, corrupt 0, gen 0
Jan  1 14:20:23 myserver kernel: [  492.924605] BTRFS error (device sda1): bdev /dev/sda1 errs: wr 0, rd 8, flush 0, corrupt 0, gen 0
Jan  1 14:20:23 myserver kernel: [  492.924608] BTRFS error (device sda1): bdev /dev/sda1 errs: wr 0, rd 9, flush 0, corrupt 0, gen 0
Jan  1 14:20:23 myserver kernel: [  492.924613] BTRFS error (device sda1): bdev /dev/sda1 errs: wr 0, rd 10, flush 0, corrupt 0, gen 0
Jan  1 14:20:24 myserver kernel: [  494.025952] BTRFS warning (device sda1): lost page write due to IO error on /dev/sda1
Jan  1 14:20:24 myserver kernel: [  494.025962] BTRFS warning (device sda1): lost page write due to IO error on /dev/sda1
Jan  1 14:20:24 myserver kernel: [  494.025969] BTRFS warning (device sda1): lost page write due to IO error on /dev/sda1
Jan  1 14:20:24 myserver kernel: [  494.026108] BTRFS error (device sda1): error writing primary super block to device 1
Jan  1 14:20:24 myserver systemd[1]: mnt-snapshots-data.mount: Succeeded.
Jan  1 14:20:24 myserver systemd[1]: Unmounted /mnt/snapshots/data.
Hier wird /mnt/snapshots/data ausgehängt.

sdc wird entfernt:

Code: Alles auswählen

# tail -n 100 /var/log/syslog
Jan  1 14:09:14 myserver kernel: [  266.234210] ata3: SATA link down (SStatus 0 SControl 300)
Jan  1 14:09:20 myserver kernel: [  271.794813] ata3: SATA link down (SStatus 0 SControl 300)
Jan  1 14:09:25 myserver kernel: [  277.170836] ata3: SATA link down (SStatus 0 SControl 300)
Jan  1 14:09:25 myserver kernel: [  277.170861] ata3.00: disabled
Jan  1 14:09:25 myserver kernel: [  277.170900] ata3.00: detaching (SCSI 2:0:0:0)
Jan  1 14:09:25 myserver kernel: [  277.171539] sd 2:0:0:0: [sdc] Synchronizing SCSI cache
Jan  1 14:09:25 myserver kernel: [  277.171571] sd 2:0:0:0: [sdc] Synchronize Cache(10) failed: Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
Jan  1 14:09:25 myserver kernel: [  277.171573] sd 2:0:0:0: [sdc] Stopping disk
Jan  1 14:09:25 myserver kernel: [  277.171578] sd 2:0:0:0: [sdc] Start/Stop Unit failed: Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
Jan  1 14:10:39 myserver kernel: [  350.600411] BTRFS error (device sda1): bdev /dev/sdc1 errs: wr 1, rd 0, flush 0, corrupt 0, gen 0
Jan  1 14:10:39 myserver kernel: [  350.600502] BTRFS error (device sda1): bdev /dev/sdc1 errs: wr 2, rd 0, flush 0, corrupt 0, gen 0
Jan  1 14:10:39 myserver kernel: [  350.600575] BTRFS error (device sda1): bdev /dev/sdc1 errs: wr 3, rd 0, flush 0, corrupt 0, gen 0
Jan  1 14:10:39 myserver kernel: [  350.600658] BTRFS error (device sda1): bdev /dev/sdc1 errs: wr 4, rd 0, flush 0, corrupt 0, gen 0
Jan  1 14:10:39 myserver kernel: [  350.610032] BTRFS error (device sda1): bdev /dev/sdc1 errs: wr 4, rd 0, flush 1, corrupt 0, gen 0
Jan  1 14:10:39 myserver kernel: [  350.610219] BTRFS warning (device sda1): lost page write due to IO error on /dev/sdc1
Jan  1 14:10:39 myserver kernel: [  350.610222] BTRFS error (device sda1): bdev /dev/sdc1 errs: wr 5, rd 0, flush 1, corrupt 0, gen 0
Jan  1 14:10:39 myserver kernel: [  350.610290] BTRFS warning (device sda1): lost page write due to IO error on /dev/sdc1
Jan  1 14:10:39 myserver kernel: [  350.610292] BTRFS error (device sda1): bdev /dev/sdc1 errs: wr 6, rd 0, flush 1, corrupt 0, gen 0
Jan  1 14:10:39 myserver kernel: [  350.610357] BTRFS warning (device sda1): lost page write due to IO error on /dev/sdc1
Jan  1 14:10:39 myserver kernel: [  350.610359] BTRFS error (device sda1): bdev /dev/sdc1 errs: wr 7, rd 0, flush 1, corrupt 0, gen 0
Jan  1 14:10:39 myserver kernel: [  350.645655] BTRFS error (device sda1): error writing primary super block to device 3
Hier bleibt /mnt/snapshots/data eingehängt.

Ich habe kein vergleichbares Problem hier im Forum, im Debian- oder Kernel-Wiki oder bei Google gefunden und bin mit meinem Latein am Ende. Ich würde mich über jeden Tipp freuen!

wanne
Moderator
Beiträge: 7448
Registriert: 24.05.2010 12:39:42

Re: BTRFS RAID wird ausgehängt wenn *erste* Platte entfernt wird

Beitrag von wanne » 11.01.2021 09:43:23

Mein mit einem RAID 1 verfolgtes Ziel war aber ja gerade, dass das System auch bei Ausfall einer Platte verfügbar bleibt.
Ich glaube, dann bist du mit BTRFS auf der falschen Seite. Auch wenn es sehr ähnlich funktioniert: btrfs ist nicht auf HA sondern auf Datensicherheit ausgelegt. Während bei klassischen RAIDS die Gefahr für Fehlerhafte schreibvorgänge sogar hoch geht will btrfs garantieren dass deine Daten immer korrekt geschrieben oder gelesen werden. (Deswegen auch Checksumming und nicht abschaltbare Fehlerkorrektur.) und das kann es halt nicht mehr garantieren wenn eine platte fehlt. Deswegen solltest du im degradet mode auch ausdrücklich nicht schreiben.
Wenn dir ne Platte abraucht kannst du dich entscheiden ob du sie mit btrfs replace start austauschst oder btrfs dev delete missing; btrfs filesystem balance (bzw. wenn nur noch eine da ist btrfs balance start -dconvert single) in ein kleineres RAID umwandelst. Damit es wieder mit der gewünschten Sicherheit funktioniert. Alles immer mit einer minimalen downtime und einem längeren Performanceeinbruch verbunden. Dafür bleiben die Daten halt sicher.
Dummerweise verursacht dieses Verhalten in der Realität dann zu Datenverlust. Wenn sich btrfs dann weigert weiter zu schreiben fangen die Leute an irgend welche low-lewel Kommandos drauf zu werfen und wundern sich dann (obwohl sie 10 Warnungen bekommen haben) dass sie sich ihr Dateisystem zerschossen haben.
Wenn du nur an HA interessiert bist und dich nicht für Datensicherheit interesssierst, bist du mit nem dm-raid an der richtigeren Adresse.
rot: Moderator wanne spricht, default: User wanne spricht.

mludwig
Beiträge: 793
Registriert: 30.01.2005 19:35:04

Re: BTRFS RAID wird ausgehängt wenn *erste* Platte entfernt wird

Beitrag von mludwig » 11.01.2021 10:34:36

Ich glaube eher, er ist über einen dieser systemd-bugs gestolpert. Der betreffende Bugreport bestätigt wieder zahlreiche Vorurteile ... seit 2015 offen, keine Diskussion erwünscht ...

https://github.com/systemd/systemd/issues/1741

Benutzeravatar
jph
Beiträge: 1049
Registriert: 06.12.2015 15:06:07
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Greven/Westf.

Re: BTRFS RAID wird ausgehängt wenn *erste* Platte entfernt wird

Beitrag von jph » 11.01.2021 11:07:28

@mludwig Bei Rumgepöbel im Bugreport könnten mir die entsprechenden Personen auch den Buckel runterrutschen. („This is a bug tracker not a user forum, where every one can vent his personal frustration“)

@Vanadar Dein RAID scheint beschädigt („degraded“) zu sein:

Code: Alles auswählen

119 25 0:48 /@snapshots /mnt/snapshots/data rw,relatime shared:65 - btrfs /dev/sda1 rw,degraded,space_cache,subvolid=256,subvol=/@snapshots
Du solltest btrfs scrub drüberlaufen lassen.

Zum Vergleich eine Zeile meines RAID:

Code: Alles auswählen

180 24 0:44 /@borgbackup /srv/borgbackup rw,relatime shared:100 - btrfs /dev/sdb1 rw,space_cache,subvolid=256,subvol=/@borgbackup
(Ja, da steht auch /dev/sdb1, wenngleich es über UUID gemountet wird.)

Nachtrag: cat /proc/self/mountinfo | grep /dev/ ist Unfug, weil grep /dev/ /proc/self/mountinfo funktioniert ;-)

wanne
Moderator
Beiträge: 7448
Registriert: 24.05.2010 12:39:42

Re: BTRFS RAID wird ausgehängt wenn *erste* Platte entfernt wird

Beitrag von wanne » 11.01.2021 11:39:15

jph hat geschrieben: ↑ zum Beitrag ↑
11.01.2021 11:07:28
@Vanadar Dein RAID scheint beschädigt („degraded“) zu sein:
[…]
Du solltest btrfs scrub drüberlaufen lassen.
Der hat ne Platte rausgezogen. Natürlich ist das degraded. Da braucht es kein scrub.
rot: Moderator wanne spricht, default: User wanne spricht.

Vanadar
Beiträge: 3
Registriert: 10.01.2021 20:00:38

Re: BTRFS RAID wird ausgehängt wenn *erste* Platte entfernt wird

Beitrag von Vanadar » 11.01.2021 21:00:57

Danke für eure Antworten!
wanne hat geschrieben: ↑ zum Beitrag ↑
11.01.2021 09:43:23
Wenn du nur an HA interessiert bist und dich nicht für Datensicherheit interesssierst, bist du mit nem dm-raid an der richtigeren Adresse.
Eigentlich wollte ich beides - war ja klar. 8)
wanne hat geschrieben: ↑ zum Beitrag ↑
11.01.2021 11:39:15
jph hat geschrieben: ↑ zum Beitrag ↑
11.01.2021 11:07:28
@Vanadar Dein RAID scheint beschädigt („degraded“) zu sein:
[…]
Du solltest btrfs scrub drüberlaufen lassen.
Der hat ne Platte rausgezogen. Natürlich ist das degraded. Da braucht es kein scrub.
Richtig, degraded hatte ich bewusst gesetzt um zu schauen ob es dann verfügbar bleibt.
mludwig hat geschrieben: ↑ zum Beitrag ↑
11.01.2021 10:34:36
Ich glaube eher, er ist über einen dieser systemd-bugs gestolpert. Der betreffende Bugreport bestätigt wieder zahlreiche Vorurteile ... seit 2015 offen, keine Diskussion erwünscht ...

https://github.com/systemd/systemd/issues/1741
Hier habe ich aber nichts gefunden, was ich selbst daran ändern könnte, oder übersehe ich etwas?
wanne hat geschrieben: ↑ zum Beitrag ↑
11.01.2021 09:43:23
Während bei klassischen RAIDS die Gefahr für Fehlerhafte schreibvorgänge sogar hoch geht will btrfs garantieren dass deine Daten immer korrekt geschrieben oder gelesen werden. (Deswegen auch Checksumming und nicht abschaltbare Fehlerkorrektur.) und das kann es halt nicht mehr garantieren wenn eine platte fehlt.
Die Argumentation kann ich nachvollziehen. Aber sollte dann nicht konsequenterweise auch ausgehängt werden, wenn eine andere Platte entfernt wird? Warum nur bei der ersten?

mludwig
Beiträge: 793
Registriert: 30.01.2005 19:35:04

Re: BTRFS RAID wird ausgehängt wenn *erste* Platte entfernt wird

Beitrag von mludwig » 12.01.2021 06:11:51

Wenn ich den Bugreport richtig verstanden habe, macht Systemd einen unmount, wenn es ein gemountetes Dateisystem vorfindet, welches dort laut /etc/fstab nicht hingehört. Da es dein /mnt/snapshots/data mit /dev/sda1 verknüpft gespeichert hat, passt das nach dem verschwinden von /dev/sda1 nicht mehr mit dem Weltbild von systemd zusammen und wird unmounted. Im Bugreport soll

Code: Alles auswählen

systemctl daemon-reload
helfen, systemd den jetzt gültigen Zustand erkennen zu lassen. Also sollte danach entweder alles gemountet sein bzw. sich mounten lassen.

Vanadar
Beiträge: 3
Registriert: 10.01.2021 20:00:38

Re: BTRFS RAID wird ausgehängt wenn *erste* Platte entfernt wird

Beitrag von Vanadar » 17.01.2021 01:41:05

Ich habe jetzt weiter testen können.

Ausgangszustand, alle Platten angeschlossen und BTRFS-Volume über data-a11 gemountet:

Code: Alles auswählen

root@myserver:~# grep /mnt/snapshots /proc/self/mountinfo
108 25 0:22 /@snapshots /mnt/snapshots/system rw,relatime shared:59 - btrfs /dev/mapper/system-root rw,ssd,space_cache,subvolid=258,subvol=/@snapshots
119 25 0:48 /@snapshots /mnt/snapshots/data rw,relatime shared:65 - btrfs /dev/mapper/data-a11 rw,space_cache,subvolid=256,subvol=/@snapshots
Jetzt entferne ich die erste Platte sda.

BTRFS-Volume ist ausgehängt:

Code: Alles auswählen

root@myserver:~# grep /mnt/snapshots /proc/self/mountinfo
108 25 0:22 /@snapshots /mnt/snapshots/system rw,relatime shared:59 - btrfs /dev/mapper/system-root rw,ssd,space_cache,subvolid=258,subvol=/@snapshots
BTRFS-Volume kann (nur) mit Option degraded gemountet werden, data-b11 wird genutzt:

Code: Alles auswählen

root@myserver:~# mount -o defaults,degraded,subvol=@snapshots LABEL=data /mnt/snapshots/data
root@myserver:~# grep /mnt/snapshots /proc/self/mountinfo
108 25 0:22 /@snapshots /mnt/snapshots/system rw,relatime shared:59 - btrfs /dev/mapper/system-root rw,ssd,space_cache,subvolid=258,subvol=/@snapshots
119 25 0:48 /@snapshots /mnt/snapshots/data rw,relatime shared:65 - btrfs /dev/mapper/data-b11 rw,degraded,space_cache,subvolid=256,subvol=/@snapshots
Der im Bugreport zu systemd genannte Befehl scheint also nicht erforderlich zu sein. Er hängt auch nicht das BTRFS-Volume wieder ein:

Code: Alles auswählen

root@myserver:~# umount /mnt/snapshots/data
root@myserver:~# systemctl daemon-reload
root@myserver:~# grep /mnt/snapshots /proc/self/mountinfo
108 25 0:22 /@snapshots /mnt/snapshots/system rw,relatime shared:59 - btrfs /dev/mapper/system-root rw,ssd,space_cache,subvolid=258,subvol=/@snapshots
Also kann ich entweder
1.
HA mit einem dm-raid erreichen, das ich verschlüssele und mit BTRFS formatieren könnte, um zumindest Snapshots und Subvolumes nutzen zu können, nehme BTRFS aber damit die volle Hoheit über die Fehlerkorrektur, etwa so:

Code: Alles auswählen

sda
└─sda1
     └─md0              raid1
crypto_LUKS
sdb
└─sdb1
     └─md0              raid1

md0                        crypto_LUKS
└─md0_crypt     btrfs
oder
2.
auf HA verzichten, dafür aber BTRFS seine Vorteile bei Checksumming und Fehlerkorrektur voll ausspielen lassen und z.B. auch Festplatten dynamisch dem Pool hinzufügen können:

Code: Alles auswählen

sda
└─sda1              crypto_LUKS
  └─data-a11        btrfs       data
sdb
└─sdb1              crypto_LUKS
  └─data-b11        btrfs       data
Variante 2 erscheint mir sinnvoll, wenn es wahrscheinlich ist, dass ich per SMART von einem bevorstehenden Ausfall einer Festplatte erfahre. Laut der immer wieder zitierten Google-Studie ist das ja immerhin bei rund zwei Drittel aller Ausfälle gegeben. Daher würde ich Variante 2 wählen. Wenn dann doch eine Platte spontan ausfällt, gibt es zwar eine Ausfallzeit, die kann ich aber durch Ersetzen der ausgefallenen mit der eingebaut bleibenden aber ungenutzten dritten Platte sdc auch kurz halten.

Antworten