Verhalten von Linux bei Ausfall eines Datenträgers

Dalai

Grand Admiral Special
Mitglied seit
14.06.2004
Beiträge
7.420
Renomée
262
Standort
Meiningen, Thüringen
Hallo an die Experten und solche, die es werden wollen :D.

Im Zusammenhang mit dem [thread=431519]geplanten Software-RAID[/thread] stellt sich die Frage, welche Partitionen man auf das RAID-1 packt und welche nicht, und konkret, ob man die Swap-Partition mit einbezieht. Letztlich läuft es auf die Frage hinaus, wie sich Linux verhält, wenn ein Datenträger (plötzlich) unvermittelt aussteigt, vor allem dann, wenn eine Swap-Partition auf dem ausgefallenen Datenträger liegt.

Ich gebe mal ein Beispiel. Partitionierung soll folgendermaßen aussehen für /dev/sda (und /dev/sdb):
Code:
sda1: 1 GiB FAT32
sda2: fast kompletter Rest der Platte als erweiterte Partition
sda5: 15 GiB Root, RAID-1-Member
sda6: 1 GiB Swap
sda7: Restlicher Platz Repos, RAID-1-Member
Nehmen wir also an, es gibt 2 Swap-Partitionen je 1 GB auf sda und sdb. Was passiert, wenn sda ausfällt und das System das Verlangen hat, Daten in den Swap auszulagern (oder von dort zu lesen)? Friert das System ein oder gibt es dabei einen Timeout, nach dem der Swap auf sdb benutzt wird? Abhängig von dieser Frage: Ist es sinnvoll(er), den Swap ebenfalls mit auf ein RAID zu legen? Kann man eine Partition unmounten, die auf einem ausgefallenen Datenträger liegt, im Beispiel sda1? Gibt es andere/weitere Vorkehrungen, die man treffen kann/sollte, um die Auswirkungen eines Datenträgerausfalls zu mindern?

Grüße
Dalai
 
Wenn das swap nicht auf einem raid-1 ist hängen alle Prozesse die etwas im swapfile haben und es von dort wieder wollen.
Also daher: swap unbedingt auf raid-1 legen wenn Du Stillstände von Prozessen vermeiden willst.

umount -f kann zwar umount forcen aber wenn IOs hängen hängt auch der umount.
 
Die Frage die sich mir eher stellt ist, ob du ein Swap überhaupt benötigst. Mit 1 GiB fällt das ja auch nicht gerade üppig aus.
In der heutigen Zeit mit mehr als genügend RAM gibt es eigentlich nur einen Grund für die Swap Partition: suspend2disk

Willst du das nutzen, dann muss die Swap aber auch so groß wie der RAM sein und dann macht es auf jeden Fall Sinn die auf das RAID zu legen
Wirklich toll anders kannst du den Platz auch nicht verteilen und suspend2disk auf zwei geteilte Swap Partitionen funktioniert meines Wissens auch nicht.

Wenn du kein suspend2disk brauchst und mindestens 8GiB RAM hast, dann kannst du dir die Swap meiner Meinung nach sparen.
Zum Zuge käme die wahrscheinlich nur bei einem Memory Leak und in dem Fall hilft der OOM Killer mehr als die Swap Partition.

Abgesehen davon ist ist RAID1 mit efi/GPT (ich gehe mal davon aus, dass du das vor hast, angesichts der FAT32 Partition) ein ziemlicher Rotz, da das überhaupt nicht dafür ausgelegt ist. Habe da selbst schon Stunden mit verbracht das zu konfigurieren und bin letztendlich damals dazu übergegangen stattdessen über einen USB Stick zu starten.
bzw. in der neuesten Variante ist es dann eine SSD, welche das System hält (dann halt ohne RAID1) und ein RAID1 für Nutzerdaten (/home).
 
@tomturbo:
Danke für deinen Beitrag und die Ausführungen! :) Auch wenn das genaugenommen zum anderen Thema gehört: Ist es sinnvoll, ein Software-RAID zu partitionieren statt drei einzelne RAID-1 (Root, Swap und Repos) zu verwenden? Hat das irgendwelche (gravierenden) Nachteile?

Die Frage die sich mir eher stellt ist, ob du ein Swap überhaupt benötigst.
Die wird schon benötigt, denke ich, denn Linux lagert ja immer ein bissel was aus. Der derzeitige Server hat 8 GiB RAM und lagert "fleißig" aus, was bei dem Datenaufkommen per Samba auch kein Wunder ist. Selbst mit zwischenzeitlich 10 GiB RAM wurde ausgelagert. Ja, ich weiß, die Swappiness kann man einstellen...

Mit 1 GiB fällt das ja auch nicht gerade üppig aus.
Stimmt, ist aber Absicht, weil das reichen sollte. Derzeit sind 3 GiB Swap verfügbar (bei wie gesagt 8 GiB RAM) und davon sind übers vergangene Jahr maximal 300 MB in Benutzung gewesen. Der neue Server bekommt natürlich deutlich mehr RAM (32 GiB sind angedacht), aber Swap sollte IMO dennoch sein, auch wenn es nur ein bisschen ist.

Wenn du kein suspend2disk brauchst und mindestens 8GiB RAM hast, dann kannst du dir die Swap meiner Meinung nach sparen.
Suspend2Disk ist bei einem Server eher weniger gebräuchlich ;).

Abgesehen davon ist ist RAID1 mit efi/GPT (ich gehe mal davon aus, dass du das vor hast, angesichts der FAT32 Partition) ein ziemlicher Rotz
Nope, hier wird ausschließlich MBR verwendet, kein GPT. Die FAT32-Partition hat nur den Sinn, dort ein Live-System (System Rescue CD) und ggf. DOS-Programme sowie BIOS-Updates zu lagern, die man nicht so einfach per USB-Stick starten kann. Eigentlich wäre ersteres besser auf einer eigenen Bootpartition aufgehoben, aber das hilft für letzteres nicht... Die Partitionierung ist vor über 10 Jahren erstellt worden, aber ich sehe keinen Grund, daran etwas zu ändern.

Grüße
Dalai
 
@tomturbo:
Danke für deinen Beitrag und die Ausführungen! :) Auch wenn das genaugenommen zum anderen Thema gehört: Ist es sinnvoll, ein Software-RAID zu partitionieren statt drei einzelne RAID-1 (Root, Swap und Repos) zu verwenden? Hat das irgendwelche (gravierenden) Nachteile?
Wenn du nicht btrfs verwendest würde ich definitiv die Partitionen spiegeln und nicht die ganze Platte (bzw. den Teil der Platte).
mdraid arbeitet blockweise, d.h. bei einem rebuild kannst du das dann partitionsweise machen, was bedeutet, dass du manche Partitionen recht schnell abhaken kannst.
Einen Vorteil der anderen Variante sehe ich nicht (oder fällt mir zumindest nicht ein).
Die wird schon benötigt, denke ich, denn Linux lagert ja immer ein bissel was aus. Der derzeitige Server hat 8 GiB RAM und lagert "fleißig" aus, was bei dem Datenaufkommen per Samba auch kein Wunder ist. Selbst mit zwischenzeitlich 10 GiB RAM wurde ausgelagert. Ja, ich weiß, die Swappiness kann man einstellen...
Ich nutze schon seit 2 (oder 4?) GiB keine Swap mehr (ca. 10 Jahre). Ein Problem (außer Memory Leak) habe ich dadurch bislang nicht bekommen, der Kernel kann mit seinem Speicher schon haushalten.
In deinem Fall vermute ich, dass manche Programme im Cache landen und dafür dann eigentlich "echte" Speicherdaten von Programme ausgelagert werden, aber sicher kannst du das nur selbst nachvollziehen.
Insofern kann ich nicht ausschließen, dass du die Swap benötigst, aber ich würde es bezweifeln. 2/3 der Daten sind meistens nur Cache, könnten also rausgekickt werden.
Würde es sogar eher mal drauf ankommen lassen und nur falls du in Probleme reinläufst nachträglich noch eine Swap aufsetzen (kannst ja dann von der sda7 ein Stück abzwicken).
Nope, hier wird ausschließlich MBR verwendet, kein GPT. Die FAT32-Partition hat nur den Sinn, dort ein Live-System (System Rescue CD) und ggf. DOS-Programme sowie BIOS-Updates zu lagern, die man nicht so einfach per USB-Stick starten kann. Eigentlich wäre ersteres besser auf einer eigenen Bootpartition aufgehoben, aber das hilft für letzteres nicht... Die Partitionierung ist vor über 10 Jahren erstellt worden, aber ich sehe keinen Grund, daran etwas zu ändern.
Ok, dann bist du save, dann ist RAID1 auch kein Thema.
(Wobei ich da auf neueren Mainboards auch schon Probleme hatte, weil das UEFI sich standhaft geweigert hat einen bios-legacy-boot von einer 4k Platte durchzuführen … *noahnung*)
 
Wenn du nicht btrfs verwendest würde ich definitiv die Partitionen spiegeln und nicht die ganze Platte (bzw. den Teil der Platte).
Das ist nicht ganz, was ich meinte. Ganze Datenträger zu spiegeln hab ich ja schon gleich zu Beginn ausgeschlossen. Aber ich hatte überlegt, in die erweiterte Partition ein RAID-1 zu legen, in dem dann Root, Swap und Repos liegt - was aber natürlich voraussetzt, dass das RAID partitioniert wird. Das hätte den Vorteil, dass es nur ein RAID für diese beiden Laufwerke gibt, und bei Ausfall eines Datenträgers nur ein RAID degraded und nicht gleich drei. Macht die Verwaltung vielleicht einfacher *noahnung*.

[...] d.h. bei einem rebuild kannst du das dann partitionsweise machen, was bedeutet, dass du manche Partitionen recht schnell abhaken kannst.
Da hast du auch wieder recht.

In deinem Fall vermute ich, dass manche Programme im Cache landen und dafür dann eigentlich "echte" Speicherdaten von Programme ausgelagert werden
Ich vermute es eher andersrum: Programme werden ausgelagert und vor allem per Samba servierte Dateien landen im Cache bzw. Buffer.

[...] aber sicher kannst du das nur selbst nachvollziehen.
Gibt's da was (von ratiopharm), um das zu tun? Wäre mal interessant zu wissen, welche Typen von Daten im Swap rumliegen.

Insofern kann ich nicht ausschließen, dass du die Swap benötigst, aber ich würde es bezweifeln.
Naja, brauchen ist ein starkes Wort. Der Punkt ist, dass ich bei einem Produktivsystem (und primären Server) kein Risiko eingehen will, und das 1 GB tut nicht weh, noch weniger, wenn die neu zu kaufenden SSDs größer sein werden als die derzeitigen HDDs.

Grüße
Dalai
 
Das hätte den Vorteil, dass es nur ein RAID für diese beiden Laufwerke gibt, und bei Ausfall eines Datenträgers nur ein RAID degraded und nicht gleich drei. Macht die Verwaltung vielleicht einfacher *noahnung*.
Ich denke Faulheit des Admins ist ein eher schlechtes Argument. :p
Ne ernsthaft. Man muss halt ein paar Befehle mehrfach eingeben (eben für jedes RAID), aber das war es dann auch.
Ich vermute es eher andersrum: Programme werden ausgelagert und vor allem per Samba servierte Dateien landen im Cache bzw. Buffer.
Auf einer Swap gibt es keine gecachten Daten, das würde auch keinen Sinn machen, denn ob die nun auf die eine Art von der HDD gelesen werden oder auf die andere spielt ja keine Rolle.
(Ok, im Detail macht es evtl. einen Unterschied, aber das kann der Kernel nicht wissen, vor allem nicht ob zum Vor- oder Nachteil per Swap.)
Auf unserem Simulationsserver mit 32GB gibt es auch ein Swap mit 3GB und davon sind 600MB belegt.
Allerdings sind gleichzeitig über 20GB frei (und weniger als 5GB hab ich bislang noch nicht erlebt), so dass die Daten locker auch in den Swap passen würden.
Warum also der Kernel die Daten auslagert? Keine Ahnung, sehe aber auch keine Notwendigkeit dafür.
Würde ohne auch locker gehen und wenn einer die Kiste überlastet, dann setzt eh der OOM ein.
Gibt's da was (von ratiopharm), um das zu tun? Wäre mal interessant zu wissen, welche Typen von Daten im Swap rumliegen.
Da bin ich überfragt, geht aber sicherlich irgendwie wenn man root Rechte hat (und die hast du ja).
Müsste da aber jetzt genauso suchen wie du auch. :p
Naja, brauchen ist ein starkes Wort. Der Punkt ist, dass ich bei einem Produktivsystem (und primären Server) kein Risiko eingehen will, und das 1 GB tut nicht weh, noch weniger, wenn die neu zu kaufenden SSDs größer sein werden als die derzeitigen HDDs.
Klar tut das nicht weh, aber hilft es was?
Ich kann dir die Frage leider auch nicht zu 100% beantworten, aber würde mich einfach sehr wundern, wenn es so wäre, bzw. würde gerne Argumente dafür sehen.
Ok, bei 8GB hast du immerhin noch 12.5% (bei RAID1) oder 25% (bei 2×single) mehr (ziemlich lahmen) Speicher, das ist schon signifikant, aber bei zukünftig 32GB macht das eigentlich keinen signifikanten Unterschied mehr.

Keine Sorge, ich will dir die Swap nicht ausreden, es tut ja wie du richtig sagst nicht wirklich weh.
Ich wundere mich einfach nur immer wieder, dass Leute das immer noch verwenden, denn abgesehen von suspend2disk sehe ich einfach keinen echten Vorteil darin.
 
@Dalai:
Ich persönlich mache mittlerweile auf den Datenträgern, die mir zur Verfügung stehen, eine boot Partition (evt. auch als MD, denn grub unterstützt das), dann eine Raid-1 vom gesamten Rest der Platten und anschließend LVM drauf.
Somit habe ich nur 2 MDs und den Rest teile ich mir, ohne viel Nachdenken über Datenträgersicherheit, partitionsmäßig per LVM-LVs auf. (wenn ich von 2 phys. Datenträgern aus gehe)
Falls ich irgendwann mehr Platz benötige kann ich auch ein weiteres MD als physischen Datenträger zur LVM-Volumegroup hinzufügen und bestehende Dateisysteme erweitern.
Auch das neue Boot wird so aufgesetzt.

Mit gpt und raid1 hatte ich noch nie Probleme, Berniyh.
 
Zuletzt bearbeitet:
Mit gpt und raid1 hatte ich noch nie Probleme, Berniyh.
GPT an sich ist nicht das Problem.

Ich hatte aber schon den Fall, dass ein Mainboard bei der Kombination GPT + legacy bios rumgezickt hat.
Mit MBR ging es dann problemlos. *noahnung*
In anderen Fällen war GPT + legacy bios auch kein Problem.

Wobei ich auf Datenplatten inzwischen teilweise gar keine Partitionstabelle (weder GPT noch MBR) mehr verwende, da ich da fast ausschließlich mit btrfs arbeite (und dort dann eher mit subvolumes statt Partitionen).
Das hat auch den Vorteil, dass das Thema 4k-Alignierung entfällt (wobei das glaube ich inzwischen automatisch gehandhabt wird, oder?).
 
Zurück
Oben Unten