[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [linux-support] Swap on md device?
On Mon, 24 Sep 2001, Wernig Markus wrote:
> nun ja, der kernel verwaltet wohl beide devices, und zwischen dem
> write() aufs md und
> dem effektiven ATAPI-befehl auf die devices kann nichts anderes
> ablaufen, findet also kein content-switch statt. ich hatte gefunden,
> dass ich den overhead riskieren kann angesichts der vorteile.
Ausschnitt aus dem Software-RAID-HOWTO
7. Root-Partition oder Swap-Partition als RAID
7.2 RAID auch für Swap-Partitionen?
RAID-Technik mit normalen Swap-Partitionen
Sie überlegen sich, RAID auch für Swap Partitionen einzurichten? Diese
Mühe können Sie sich sparen, denn der Linux-Kernel unterstützt das
RAID-Verhalten auf Swap-Partitionen quasi »von Haus aus«. Legen Sie
einfach auf verschiedenen Festplatten ein paar Partitionen an, änderen
Sie den Partitionstyp mittels
fdisk /dev/Ihre-Partition
und der Option »t« auf 82 und erstellen Sie das Swap Dateisystem:
mkswap /dev/Ihre-neue-Swap-Partition
Nun fügen Sie diese in die /etc/fstab ein und geben allen
Swap-Partitionen dieselbe Priorität.
/dev/hda3 swap swap defaults,pri=1 0 0
/dev/hdb3 swap swap defaults,pri=1 0 0
/dev/sda4 swap swap defaults,pri=1 0 0
Vom nächsten Startup an werden die Swap Partitionen ähnlich wie ein
RAID-0 Device behandelt, da die Lese- und Schreibzugriffe ab jetzt
gleichmäßig über die Swap-Partitionen verteilt werden.
Will man aus irgendwelchen Gründen zwei Swap-Partitionen höher
priorisieren als eine Dritte, so kann man das auch über den Parameter
»pri=« ändern, wobei die Priorität einen Wert zwischen »0« und »32767«
annehmen kann. Ein höherer Wert entspricht einer höheren Priorität. Je
höher die Priorität desto eher wird die Swap-Partition beschrieben.
Bei der folgenden Konfiguration würde also /dev/hda3 wesentlich
stärker als Swap-Partition genutzt werden als /dev/hdb3.
/dev/hda3 swap swap defaults,pri=5 0 0
/dev/hdb3 swap swap defaults,pri=1 0 0
Swap-Partitionen auf RAID-1 Verbunden
Erstellt man die Swap-Partition auf einem vorhandenen RAID-1 Verbund,
formatiert sie dann mittels mkswap /dev/mdx und trägt sie als
Swap-Partition in die /etc/fstab ein, so hat man zwar keinen, oder nur
einen kleinen lesenden Geschwindigkeitsvorteil, jedoch den großen,
nicht zu unterschätzenden Vorteil, daß man bei einem Festplattendefekt
nach dem Ausschalten des Rechners und dem Austausch der defekten
Festplatte, ohne weitere manuelle Eingriffe wieder ein vollständig
funktionierendes System hat. Der einzige Wermutstropfen betrifft
hierbei die Freunde des Hot Plugging. Erfahrungsgemäß verkraftet Linux
das Hot Plugging eines dermaßen gestalteten RAID-1 Verbundes nur, wenn
vorher die Swap-Partitionen mittels swapoff -a abgeschaltet wurden.
Als Warnung sei hier aber noch der schlimmste Fall genannt, über den
man sich Gedanken machen sollte: Hat man die Swap-Partition auf einen
RAID-1 Verbund gelegt und zusätzlich dafür eine Spare-Disk reserviert,
so würde diese Spare-Disk natürlich bei einem Festplattendefekt sofort
eingearbeitet werden. Das ist zwar erwünscht und auch so gedacht,
jedoch funktioniert das Resynchronisieren dieses RAID-1 Verbundes mit
einer aktiven Swap-Partition nicht. Die Software-RAID Treiber nutzen
beim Resynchronisieren den Puffer-Cache, die Swap-Partition aber
nicht. Das Ergebnis ist eine defekte Swap-Partition.
Als Lösung bleibt nur die Möglichkeit, keine Spare-Disks zu benutzen
und nach einem Festplattenausfall swapoff -a per Hand auszuführen, die
defekte Festplatte auszutauschen und nach dem Erstellen der
Partitionen und des Swap-Dateisystems mit swapon -a wieder zu
aktivieren.
Ein Problem bleibt dennoch: Gesetzt den Fall der Linux-Rechner würde
aufgrund eines Stromausfalls nicht sauber heruntergefahren worden
sein, so werden die RAID-Verbunde beim nächsten Startup automatisch
resynchronisiert. Dies erfolgt mit einem automatischen »ge-nice-ten«
Aufruf des entsprechenden RAID-Daemons im Hintergrund bereits zu
Anfang der Bootprozedur. Im weiteren Bootverlauf werden aber
irgendwann die Swap-Partitionen aktiviert und treffen auf ein nicht
synchronisiertes RAID. Das Aktivieren der Swap-Partitionen muß also
verzögert werden, bis die Resynchronisation abgeschlossen ist.
Wie unter Linux üblich läßt sich auch dieses Problem mit einem Skript
lösen. Der Gedanke dabei ist, den Befehl swapon -a durch ein Skript zu
ersetzen, welches die Pseudodatei /proc/mdstat nach der Zeichenfolge
resync= durchsucht und im Falle des Verschwindens dieser Zeichenfolge
die Swap-Partitionen aktiviert. Im folgenden finden Sie ein Beispiel
abgedruckt:
#!/bin/sh
#
RAIDDEVS=`grep swap /etc/fstab | grep /dev/md|cut -f1|cut -d/ -f3`
for raiddev in $RAIDDEVS
do
# echo "testing $raiddev"
while grep $raiddev /proc/mdstat | grep -q "resync="
do
# echo "`date`: $raiddev resyncing" >> /var/log/raidswap-status
sleep 20
done
/sbin/swapon /dev/$raiddev
done
exit 0
_________________________________________________________________
Gruss
Chris
--
Christoph Scheurer chris at rebmatt.ch
Rebmatt 1 SMS:chris.nat at rebmatt.ch
3270 Aarberg Phone:+41 32 392 18 22
Switzerland Mobile:+41 78 644 39 02