[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