Bienvenido! - Willkommen! - Welcome!

Bitácora Técnica de Tux&Cía., Santa Cruz de la Sierra, BO
Bitácora Central: Tux&Cía.
Bitácora de Información Avanzada: Tux&Cía.-Información
May the source be with you!

Monday, June 15, 2009

Partitionieren & Swap-Erstellung

Partitionieren (OpenSuSE)
Fremde Partitionen und fstab
Wenn die Partitionierung von YaST durchgeführt wird und andere Partitionen im System erkannt werden, werden diese Partitionen ebenfalls in die Datei '/etc/fstab' aufgenommen, um den mühelosen Dateizugriff zu ermöglichen. Diese Datei enthält alle Partitionen im System sowie deren Eigenschaften, beispielsweise Dateisystem, Einhängepunkt und Benutzerberechtigungen.

Hier ein Beispiel von Partitionsdaten in der Datei '/etc/fstab':

/dev/disk/by-id/scsi-SATA_SAMSUNG_SV4002H0413J1FR917614-part1 /data1 auto noauto,user 0 0
/dev/disk/by-id/scsi-SATA_SAMSUNG_SV4002H0413J1FR917614-part5 /data2 auto noauto,user 0 0
/dev/disk/by-id/scsi-SATA_SAMSUNG_SV4002H0413J1FR917614-part6 /data3 auto noauto,user 0 0

Unabhängig davon, ob es sich um Linux- oder FAT-Partitionen handelt, werden diese Partitionen mit den Optionen noauto und user angegeben. Dadurch kann jeder Benutzer diese Partitionen nach Bedarf einhängen oder aushängen. Aus Sicherheitsgründen gibt YaST hier nicht automatisch die Option exec ein, die zur Ausführung von Programmen vom Speicherort aus erforderlich ist. Wenn sie jedoch Programme von diesem Ort aus ausführen möchten, können sie die Option manuell eingeben. Diese Maßnahme ist erforderlich, wenn sie Systemmeldungen, wie beispielsweise Meldungen über einen „fehlerhaften Interpreter“ oder „verweigerte Berechtigungen“, erhalten.

Verwenden von Swap

Mittels Swap wird der physikalisch verfügbare Arbeitsspeicher erweitert. Ihnen steht dadurch über das physikalische RAM hinaus mehr Arbeitsspeicher zur Verfügung. Die Arbeitsspeicherverwaltungssysteme der Kernels vor Version 2.4.10 benötigten Swap als Sicherheitszugabe. Wenn Ihr Swap damals nicht zweimal so groß war wie Ihr RAM, kam es zu erheblichen Leistungseinbußen. Auf heutige Systeme treffen diese Einschränkungen allerdings nicht mehr zu.

Wenn dem Kernel der Arbeitsspeicher nicht ausreicht, lagert er selten verwendete Arbeitsspeicherseiten aus. Den aktiven Anwendungen steht dadurch mehr Arbeitsspeicher zur Verfügung und selbst das Zwischenspeichern läuft reibungsloser ab.

Versucht eine Anwendung jedoch, sämtlichen Arbeitsspeicher für sich zu reklamieren, den sie nur irgendwie erhalten kann, kann es mit dem Swap-Speicher zu Problemen kommen. Wir sollten uns hierzu drei der wichtigsten Szenarien näher ansehen:

  • System ohne Swap
    Die Anwendung erhält den gesamten Arbeitsspeicher, der, auf welche Weise auch immer, freigegeben werden kann. Der gesamte Cache-Speicher wird freigegeben. Dadurch verlangsamen sich alle anderen Anwendungen. Nach einigen Minuten tritt der "Out of Memory-Killermechanismus" des Kernels in Kraft und der Prozess wird abgebrochen.
  • System mit mittelgroßem Swap (128 MB – 256 MB)
    Zunächst lässt die Leistung des Systems wie bei einem System ohne Swap nach. Sobald das gesamte physikalische RAM aufgebraucht ist, wird auch auf den Swap-Speicher zurückgegriffen. An diesem Punkt wird das System sehr langsam; die Fernausführung von Kommandos wird unmöglich. Je nach Geschwindigkeit der Festplatten, die den Swap-Speicher stellen, verbleibt das System etwa 10 bis 15 Minuten in diesem Zustand, bevor das Problem vom "Out of Memory-Killer" des Kernels endgültig "gelöst" wird.
  • System mit großem Swap (mehrere GB)
    Auf einem solchen System sollten sie besser keine Anwendung ausführen, die völlig außer Rand und Band gerät und den Swap-Speicher grenzenlos nutzt. In einem solchen Fall würde das System Stunden brauchen, um sich wieder zu regenerieren. Sehr wahrscheinlich treten in diesem Fall bei anderen Prozessen Timeouts und Fehler auf, wodurch das System in einem undefinierten Zustand zurückbleibt, selbst wenn der fehlerhafte Prozess abgebrochen wird. Am besten schalten sie das System in einem solchen Fall aus und wieder ein und versuchen es wieder hochzufahren. Sehr viel Swap-Speicher ist nur dann sinnvoll, wenn sie eine Anwendung verwenden, die diese Menge an Swap tatsächlich benötigt. Solche Anwendungen (wie Datenbanken oder Bildbearbeitungsprogramme) verfügen in der Regel über eine Option, mit der sie den benötigten Festplattenspeicher direkt abrufen können. Die Verwendung dieser Option ist auf jeden Fall einem übergroßen Swap-Speicher vorzuziehen.

Falls ihre Anwendungen nicht außer Kontrolle geraten, aber dennoch nach einiger Zeit mehr Swap erforderlich ist, können sie den Swap-Speicher auch online erweitern. Wenn sie eine Partition als Swap-Speicher vorbereitet haben, fügen Sie diese Partition einfach mit Hilfe von YaST hinzu. Falls sie auf keine Swap-Partition zurückgreifen können, können sie den Swap-Speicher auch durch eine Swap-Datei erweitern. Swap-Dateien sind im Vergleich zu Partitionen in der Regel langsamer. Im Vergleich zu physikalischem RAM sind jedoch beide Swap-Methoden extrem langsam. Der tatsächliche Geschwindigkeitsunterschied ist allerdings nicht so bedeutend, wie es den Anschein hat.
---------------------------------

Erstellen des swapbereichs

Beim Partitionieren wird üblicherweise des Partitionstyp 0x82
gewählt. Dann mit mkswap die Partition "formatieren" und gegebenenfalls den
Eintrag in der /etc/fstab anpassen. Und manuell mit swapon (wieder)
anschalten.
Man kann auch ein Swapfile anlegen:
dd if=/dev/zero of=/path/to/swapfile bs=1024 count={Größe in KB}
eine leere Datei in gewünschter Größe anlegen,
mit mkswap formatieren und mit swapon anschalten

Inaktivieren des Swapbereichs
Manuell mit swapoff
und/oder vor einen Reboot
den Eintrag in der /etc/fstab auskommentieren.
Auch vor dem Neupartitionieren machen.
--------------------------------

wiki.ubuntuusers.de/Swap
Linux bietet auch die Möglichkeit, anstatt einer Partition den Swap Space in eine Datei zu legen, die sogenannte "Auslagerungsdatei". Dieses Verfahren nutzt z.B. Windows standardmäßig.
Um eine Auslagerungsdatei zu erstellen, ist ein Terminal [1] notwendig. Mit

sudo mkdir -p /var/cache/swap/ 

legt man den angegebenen Verzeichnispfad komplett an.
Danach kommt

sudo dd if=/dev/zero of=/var/cache/swap/swap0 bs=1M count=512 

Den Wert hinter count= sollte man natürlich anpassen, er gibt die Größe der Auslagerungsdatei in Megabyte an.

Experten-Info:

Die Zeile besagt, dass eine Datei mit dem Namen swap0 mit 512MB Größe angelegt wird. Die Größe ergibt sich aus 1M*512=512MiB, wobei 1M=1 Mio. Byte entspricht. Es ist wichtig, dass die Datei so angelegt wird, da sie dann auf der Festplatte durchgehend nur durch leere Speicherstellen besteht und keine zufälligen Daten enthält.
Mehr in den Manpages von Shell/dd und zero.

Um den Speicher zu formatieren, gibt man folgendes ein:

sudo mkswap /var/cache/swap/swap0 

Die Warnung kann man dabei ignorieren. Um nicht jedem beliebigen User die Möglichkeit zu geben, den Swap auszulesen, sollte man

sudo chmod 0600 /var/cache/swap/swap0 

ausführen. Das setzt die Rechte für alle Benutzer außer root auf "kein Lesen, kein Schreiben, kein Ausführen".
Damit das System über den Swap Bescheid weiß, gibt man einfach das hier ein:

sudo swapon /var/cache/swap/swap0 

Ein Neustart ist nicht notwendig.
Sicher will man die Auslagerungsdatei auch nach einem Neustart wieder verwenden. Dazu einfach die Datei /etc/fstab in einem Editor mit Rootrechten [2] öffnen und dort diese Zeile anhängen:

/var/cache/swap/swap0    none    swap    sw      0 0 

Swap Partition nachträglich erstellen
Falls man die Swap Partition neu erstellen möchte und das bei der Installation vergessen hat, sollte man wie folgt vorgehen:

Man erstellt eine Swap-Partion [3] und formatiert diese Mithilfe des mkswap Befehls. Anschließend kann die Partition eingebunden werden. Um die Partition dauerhaft einzubinden, öffnet man die Datei /etc/fstab mit Rootrechten [2]. In der Datei fügt fügt man folgende Zeile ein, welche vorher angepasst werden muss.

 none swap sw 0 0

Wenn man den Ruhezustand nutzen möchte, muss man zuerst die UUID herausfinden, das geht über folgenden Befehl im Terminal [1]:

ls /dev/disk/by-uuid -al 

Danach muss die Datei /etc/initramfs-tools/conf.d/resume mit Rootrechten [2] editiert werden und folgende Zeile eingefügt und mit der eigenen UUID angepasst werden:

RESUME=UUID=

Zuletzt muss das initrd-Image neu geschrieben werden, das geht über folgenden Terminalbefehl:

sudo update-initramfs -u 

Swap überwachen
Mit
sudo swapon -s 

kann man jederzeit den Stand des Swap überprüfen.

Alternativ hilft hier unter GNOME das Programm "System-> Systemverwaltung -> Systemüberwachung". Im Reiter "Ressourcen" kann man die Belegung von Swap sehen. Man kann auch ein Systemmonitor Applet zum Gnome Panel hinzufügen.

Nutzt man KDE 3, so kann man das Programm
"K-Menü -> System -> Systemüberwachung - Performancemonitor" nutzen.
Bei KDE4 ist das entsprechende Programm im Menü in
"Programme -> System -> Systemmonitor"
zu finden, der Reiter "Systemlast" zeigt mitunter auch die Swapnutzung an.

Unter Xfce kann man sich die Belegung von Swap anzeigen lassen, in dem man den Menüpunkt "Applications -> System -> Systemüberwachung", Reiter "Ressourcen" wählt.
Oder, in dem man zum Xfce Panel das Plugin "Systemauslastung" hinzufügt.
---------------------------------

10.5.1.2 Anlegen einer Swap-Datei

Um eine Swap-Datei zu erstellen, müssen Sie eine Datei öffnen und soviele Bytes hineinschreiben, wie die Swap-Datei groß sein soll. Hierfür können Sie gut den Befehl dd (4.5.4) verwenden.

enterprise:~ # dd if=/dev/zero of=/swap bs=1024 count=16384
16384+0 Records ein
16384+0 Records aus
enterprise:~ # ls -l /swap
-rw-r--r-- 1 root root 16777216 Nov 17 12:15 /swap

Das Gerät /dev/zero ist praktisch das Gegenteil von /dev/null. Während /dev/null praktisch ein WOM (Write Only Memory) ist, der alle Informationen schluckt und Sie nicht wieder hergibt, ist /dev/null ein unendlich großer Datenträger, auf dem aber nur Nullen stehen. Der obige Befehl liest praktisch 16384 Blöcke mit 1024 Bytes von diesem Gerät und schreibt Sie in die Datei /swap.

Nach dem Anlegen der Datei sollten Sie sicherheitshalber mit dem Befehl sync (10.3.4) die Dateisysteme wieder synchronisieren.

Auf keinen Fall darf die Swap-Datei eine Lücke besitzen. Die Blöcke der Datei müssen sich hintereinander auf der Platte befinden.

10.5.1.3 Swap-Bereich formatieren
Nach dem Anlegen der Partition bzw. der Datei muß diese für den Einsatz als Auslagerungsspeicher vorbereitet werden, d. h. formatiert werden.
Hier kommt der Befehl mkswap zum Einsatz.

mkswap -c GERÄTENAME

GERÄTENAME steht für den Namen der Partition bzw. der Datei. Der Schalter -c ist optional und bewirkt, daß der Swap-Bereich bei der Formatierung auf fehlerhafte Blöcke untersucht wird.

Nehmen wir als Beispiel mal die oben angelegte Swap-Partition. Mit dem folgenden Befehl wird sie als Swap-Bereich formatiert.

enterprise:~ # mkswap -c /dev/hdb1
Swapbereich Version 1 mit der Größe 279642112 Bytes wird angelegt

Die Swap-Datei wird analog angelegt. Nur daß anstatt des Gerätenamens, der Dateiname angegeben wird.

enterprise:~ # mkswap -c /swap
Swapbereich Version 1 mit der Größe 16773120 Bytes wird angelegt
enterprise:~ # sync

Nach dem Einrichten einer Swap-Datei sollten Sie immer das Dateisystem mit sync synchronisieren um sicherzugehen, daß die Informationen auch physikalisch auf die Platte übertragen worden sind. Dies ist bei der Swap-Partition natürlich nicht nötig.

10.5.1.4 Swap-Bereich aktivieren und deaktivieren
Damit der neue Swap-Bereich auch vom System benutzt wird, muß er aktiviert werden. Dafür ist der Befehl swapon verantwortlich. Analog dazu können Sie natürlich mit dem Befehl swapoff einen Swap-Bereich auch deaktivieren. Anhand des Befehls free (12.8.5) kann die Veränderung des Swap-Bereichs beobachtet werden.

Als Beispiel schauen wir uns doch mal die Einbindung unserer Swap-Datei ins System an.

enterprise:~ # free
total used free shared buffers cached
Mem: 513448 466992 46456 0 63500 258672
-/+ buffers/cache: 144820 368628
Swap: 1028120 0 1028120
enterprise:~ # swapon /swap
enterprise:~ # free
total used free shared buffers cached
Mem: 513448 467032 46416 0 63528 258672
-/+ buffers/cache: 144832 368616
Swap: 1044496 0 1044496
enterprise:~ # swapoff /swap
enterprise:~ # free
total used free shared buffers cached
Mem: 513448 467036 46412 0 63536 258672
-/+ buffers/cache: 144828 368620
Swap: 1028120 0 1028120

Auf jeden Fall sollten Sie eine Swap-Datei nur dann löschen, wenn Sie sie vorher mit swapoff deaktiviert haben.

Wie üblich ist dieser Befehl nicht von Dauer. Nach einem Reboot ist der Swap-Bereich wieder inaktiv. Die Swap-Bereich müssen also bei jedem Start initalisiert werden. Dies geschieht mit dem Befehl swapon -a in einer der Startdateien.

swapon -a liest die Informationen aus der Datei /etc/fstab aus. Wenn dort Informationen des Typs

/dev/hda6       swap    swap    sw 0 0

bzw.

/dev/hdb1       swap    swap    pr=42 0 0

dann werden die jeweiligen Swap-Bereiche beim Booten initialisiert. Sie sollten für jeden neu angelegten Swap-Bereich einen Eintrag zur /etc/fstab hinzufügen.

Multiboot-Umgebung mit Windows XP, Windows 2000, SuSE Linux und Debian Sarge

No comments: