Linux als SOHO-Server

für Linux- und Windows-Clients
http://linux.eusterholz.dyndns.org

Kapitel:

Home
Debian Installation
Debian Etc.
Internet-Zugang
Telnet
FTP
r-Utilities
SSH
Printing
NTP
Nameserver
NFS/NIS/Automount
Samba (SMB-Server)
Apache (WEB-Server)
Modem / ISDN
Backup
Etc.


LVM

Partitionierung ] RAID ] [ LVM ] RAID1 + LVM ] Disk-Quotas ] Hardware-Information/Diagnose ] Kernel ]


Die Abkürzung LVM steht für 'Logical Volume Manager'. Mittels LVM verwalteter Festplattenbereiche ist es möglich, dass im laufenden Betrieb Partitionen angelegt, vergrößert oder verkleinert werden. Auch können mehrere Festplatten zu einer einzigen großen Partition zusammengefasst werden. Für Windows-Anwender entspricht dies in etwa den 'Dynamischen Datenträgern', die unter 'Win 2000' oder 'Win XP Pro' angeboten werden. Auch kann LVM in Kombination mit RAID verwendet werden. Weiterhin können sehr einfach, so genannte Snapshoots des Dateisystems erstellt werden, die ideal für Backups im laufenden Betrieb genutzt werden können.

Die Nachteile von LVM sind:  LVM macht die Administration als Ganzes komplizierter, das gilt insbesondere wenn etwas schief geht. Ist das Dateisystem via LVM über mehrere Festplatten verteilt, steigt die Fehlerwahrscheinlichkeit, der Ausfall einer einzigen Festplatte macht alle Daten des Dateisystems unbrauchbar. LVM kann auch nicht auf bestehende Partitionen angewandt werden, die LVM-Bereiche müssen schon beim erstmaligen Aufsetzen des System berücksichtigt werden.

Die LVM-Funktionalität muss im Kernel gegeben sein, unter Linux ist dieses seit der Version 2.4 im Standard-Kernel integriert. Es gibt momentan zwei LVM-Versionen: '1' und '2'. In Kernel 2.4 ist LVM1 integriert, in Kernel 2.6 LVM2.

Im Folgenden wird das Aufsetzen eines Gesamtsystems unter Berücksichtigung von LVM mittels 'Debian-Installers' gezeigt, weiterhin werden einfache Operationen mittels LVM anhand von kleinen Beispielen gezeigt.

Grundlagen

LVM setzt sich quasi als Zwischenschicht zwischen Partitionen und Filesystem, dabei gibt es im LVM drei Arten von Objekten, mit denen gearbeitet wird:

  • Physical-Volumes (PV)
    Als PV werden reale Festplatten oder Partitionen bezeichnet.
  • Volume-Groups (VG)
    VG's sind sozusagen der Pool des gesamten Speicherplatzes, dabei können mehrere PV's in einer 'Volume-Gruppe' (VG) zusammengefasst werden.
  • Logical-Volumes (LV)
    Aus dem VG lassen sich dann dynamisch 'Logical-Volumes' (LV) erstellen, auf denen dann die unterschiedlichen Dateisysteme angelegt werden können.

Die folgende Skizze, welches auch im Verlauf als Beispielsystem nachgebildet wird, sollte die einzelnen Begriffe etwas verdeutlichen:

In diesem Beispiel befindet sich in der Erweiterten-Partition eine 'Volume-Group' (vg0). Da die 'Volume-Group' sich nicht über mehrere Partitionen oder Festplatten erstreckt, ist quasi die 'Volume-Group' gleich der 'Physical-Volume' (PV). Innerhalb der VG sind die einzelnen 'Logical-Volumes' eingebracht, die separat mit unterschiedlichen Filesystemen z.B. 'ext3' oder 'reiserfs' aufgebaut sein können.

LVM sollte nicht für die System-Partition (Root-Partition) oder Swap-Partitition verwendet werden, obwohl dieses grundsätzlich möglich ist. Speziell bei einer LVM-Root-Partition ist die Konfiguration schwierig und fehleranfällig. Auch kann der Hauptvorteil, das Verändern der Größe einer Partition im laufenden Betrieb, nur mit Einschränkungen genutzt werden. Bei einer LVM-Swap-Partitionen ist eventuell die Geschwindigkeit nicht optimal, da die Daten über unterschiedliche Bereiche auf der Festplatte verteilt sind, welches den Zugriff verlangsamt.
Aus diesem Grund sollten die Root- und Swap-Bereiche nicht als LVM ausgelegt werden und in separate Partitionen untergebracht werden.

Installation LVM mittels 'Debian-Installer'

Im weiteren Verlauf wird die Realisierung eines LVM-Systems anhand der obigen Skizze als Bilderserie mittels 'Debian-Installer' vorgestellt. Die folgenden Bilder können durch Anklicken vergrößert werden:

klicken   klicken   klicken

Ausgehend vom Hauptmenü des 'Debian-Installers' ist der Punkt: 'Festplatte partitionieren' auszuwählen.
Im weiteren Verlauf wird die leere Festplatte 'hda' mit drei Partitionen versehen. Die genaue Vorgehensweise wird hier nicht durch Bilder dokumentiert. Wichtig ist das die vorgesehene LVM-Partition schon jetzt durch den Punkt: 'Physical Volume für LVM' versehen wird, auch sollte bei der ersten Partition das Bootflag gesetzt sein.
Nach Anlegen der drei Partitionen sollte nochmals alle Daten in der Partitions-Übersicht überprüft werden, bevor nun LVM konfiguriert wird.

klicken   klicken   klicken
klicken   klicken

Bevor nun LVM konfiguriert werden kann, sind die Änderungen zunächst auf der Festplatte zu sichern; einfach mit '<Ja>' bestätigen.
Zunächst ist die Aktion 'Volume-Gruppen (LG) modifizieren' auszuwählen.
Danach ist der Punkt 'Volume-Gruppen erstellen' auszuwählen.
Im weiteren Verlauf ist das Gerät für die neu zu erstellende 'Volume-Gruppe' auszuwählen.
Ein Name der 'Volume-Gruppe' ist zu vergeben; in diesem Beispiel: 'vg0'.

klicken   klicken   klicken
klicken   klicken

Nachdem die 'Volume-Gruppe' (VG) erstellt ist. können darin nun die 'Logischen-Volumes' (VGs) erstellt werden. Der Punkt 'Logische Volumens (LV) modifizieren' ist auszuwählen.
Danach ist 'Logisches Volumes erstellen' auszuwählen.
Es ist ein Namen des 'Logischen-Volumes' festzulegen, in diesem Fall: 'lv-usr'.
Weiterhin ist die 'Volume-Gruppe' zu selektieren, in der das neu 'Logische-Volume' erstellt werden soll.
Zum Schluss ist die gewünschte Größe der 'Logischen-Volume' anzugeben.

Auf der gleichen Weise sind nun die weiteren 'Logischen-Volume': 'lv-var', 'lv-tmp' und 'lv-home' zu erstellen.

klicken   klicken   klicken   klicken

Zurück in der Partitionsübersicht es 'Debian-Installers' sollten die einzelnen Logischen Volumen nochmals überprüft werden.
Im weiteren Verlauf sind nun die einzelnen LVs mit einem Dateisystem zu versehen und die Einhängepunkte sind anzugeben.
Wieder zürück in der Partitionsübersicht sollten die eingegebenen Daten abermals verglichen werden. Bei dieser Beispiel-Installation wurden die LVs 'lv-home' und 'lv-var' mit einen reiser-Filessystem und die LVs 'lv-tmp' und 'lv-usr' mit einen ext3-Filessystem versehen. Mit dem Punkt: 'Partitionierung beenden und Änderungen übernehmen' kann nun das System auf die Festplatte gebracht werden.
Zuvor ist dieses jedoch noch mit: '<Ja>' zu bestätigen.

Nach der Partitionierung kann die Installation wie gewohnt fortgesetzt werden. Als Bootloader sollte 'GRUB' in den 'Master Boot Record' installiert werden.

Handling von LVM

Nachdem das LVM-System fertig gestellt ist, hier einige einfache Beispiele von LVM-Aktionen bezogen auf die obige Installation. Wie schon erwähnt ist der Hauptvorteil von LVM das Vergrößern und verkleinern von Partitionen in laufenden Betrieb.

Informationen bezüglich 'PV', 'VG' und 'LV' abrufen

Um detaillierte Information bezüglich 'PVs', 'VGs' und 'LVs' herauszufinden, kann man sich den folgenden Kommandos bedienen:

pvdisplay
vgdisplay
lvdisplay

Die Ausgabe ist in den Manualseiten zu den einzelnen Kommandos erklärt.

Weiterhin können Informationen mit folgenden Kommandos gewonnen werden, hier einige Ausgaben bezogen auf der Beispiel-Installation:

debian:~# pvscan
PV /dev/hda6 VG vg0 lvm2 [36,96 GB / 4,48 GB free]
Total: 1 [36,96 GB] / in use: 1 [36,96 GB] / in no VG: 0 [0 ]
debian:~# vgscan
Reading all physical volumes. This may take a while...
Found volume group "vg0" using metadata type lvm2
debian:~# lvscan
ACTIVE '/dev/vg0/lv-usr' [5,00 GB] inherit
ACTIVE '/dev/vg0/lv-var' [3,00 GB] inherit
ACTIVE '/dev/vg0/lv-tmp' [500,00 MB] inherit
ACTIVE '/dev/vg0/lv-home' [24,00 GB] inherit
debian:~#

Vergrößern eines 'LV'

Zunächst soll die 'lv-var', die mit dem reiser-Filesystem als 3 GB Bereich angelegt wurde, auf 5 GB erweitert werden:

debian:~# lvextend -L+2G /dev/vg0/lv-var
Extending logical volume lv-var to 5,00 GB
Logical volume lv-var successfully resized
debian:~# resize_reiserfs /dev/vg0/lv-var
resize_reiserfs 3.6.19 (2003 www.namesys.com)



resize_reiserfs: On-line resizing finished successfully.

debian:~#

Das Vergrößern einer reiser-Partition geht in wenigen Schritten. Dazu muss zunächst das 'Logical-Volume' mit 'lvextend' vergrößert werden, anschließend ist das darin befindliche Dateisystem mit 'resize_reiserfs' zu vergrößern.

Weiter ein Beispiel zum Vergrößern der 'lv-tmp' welches als ext3-Filesystem vorliegt, auf 1 GB Gesamtkapazität:

debian:~# lvextend -L+500M /dev/vg0/lv-tmp
Extending logical volume lv-tmp to 1000,00 MB
Logical volume lv-tmp successfully resized
debian:~# umount /tmp
debian:~# e2fsck -f /dev/vg0/lv-tmp
e2fsck 1.37 (21-Mar-2005)
Durchgang 1: Prüfe Inodes, Blocks, und Größen
Durchgang 2: Prüfe Verzeichnis Struktur
Durchgang 3: Prüfe Verzeichnis Verknüpfungen
Durchgang 4: Überprüfe die Referenzzähler
Durchgang 5: Überprüfe Gruppe Zusammenfassung
/tmp: 13/256032 Dateien (0.0% nicht zusammenhängend), 40399/512000 Blöcke
debian:~# resize2fs /dev/vg0/lv-tmp
resize2fs 1.37 (21-Mar-2005)
Resizing the filesystem on /dev/vg0/lv-tmp to 1024000 (1k) blocks.
Das Dateisystem auf /dev/vg0/lv-tmp ist nun 1024000 Blöcke groß.

debian:~# mount -t ext3 /dev/vg0/lv-tmp /tmp
debian:~#

Das Vergrößern einer LVM-Partition mit 'ext3' ist mit mehreren Schritten verbunden. Zunächst ist ebenfalls mit 'lvextend' die LVM-Partition zu vergrößern. Danach ist das ext3-Filesystem mit 'umount' aus dem Verzeichnisbaum zu entfernen. Bevor nun mit dem 'resitze2fs' das Dateisystem vergrößert wird, muss zunächst die Partition mit 'e2fsck -f' auf eventuellen Fehlern überprüft werden. Als letzter Schritt ist die Partition mit 'mount' wieder ins Dateisystem einzubinden.

Verkleinern eines 'LV'

Soll eine LVM-Partition verkleinert werden, ist umgekehrt vorzugehen, d.h. zunächst ist das Dateisystem zu verkleinern und danach das 'Logical- Volume'.

Als Beispiel soll zunächst 'lv-home', welches als reiser-Filesystem existiert, um 4 GB reduziert werden:

debian:~# umount /home
debian:~# resize_reiserfs -s -4G /dev/vg0/lv-home
resize_reiserfs 3.6.19 (2003 www.namesys.com)

You are running BETA version of reiserfs shrinker.
This version is only for testing or VERY CAREFUL use.
Backup of you data is recommended.

Do you want to continue? [y/N]:y
Processing the tree: 0%....20%....40%....60%....80%....100% left 0, 0 /sec

nodes processed (moved):
int 0 (0),
leaves 1 (0),
unfm 0 (0),
total 1 (0).

check for used blocks in truncated region

ReiserFS report:
blocksize 4096
block count 5242880 (6291456)
free blocks 5234509 (6283053)
bitmap block count 160 (192)

Syncing..done


resize_reiserfs: Resizing finished successfully.

debian:~# lvreduce -L-4G /dev/vg0/lv-home
WARNING: Reducing active logical volume to 20,00 GB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce lv-home? [y/n]: y
Reducing logical volume lv-home to 20,00 GB
Logical volume lv-home successfully resized
debian:~# mount -t reiserfs /dev/vg0/lv-home /home
debian:~#

Als erstes ist die Partition mit 'umount' aus dem Verzeichnisbaum zu entfernen. Danach kann das Filesystem mit 'resize_reiserfs' verkleinert werden und anschließend die 'Logical-Volume' mit 'lvreduce' verkleinert werden. Nach Abschluss der Aktionen ist die Partition mit 'mount' in den Verzeichnisbaum einzubinden.

Zum Schluss noch das Verkleinern einer ext3-Partition, hier die 'lv-usr' von 5 GB auf 4 GB:

debian:~# init 1
...
debian:~# umount /usr
debian:~# e2fsck -f /dev/vg0/lv-usr
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/usr: 19276/655360 files (0.3% non-contiguous), 97169/1310720 blocks
debian:~# resize2fs /dev/vg0/vg-usr 1048576
resize2fs 1.37 (21-Mar-2005)
Resizing the filesystem on /dev/vg0/lv-usr to 1048576 (4K) blocks.
The filesystem on /dev/vg0/lv-usr is now 1048576 blocks long

debian:~# lvreduce -L-1G /dev/vg0/lv-usr
  WARNING: Reducing active logical volume to 4.00 GB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce lv-usr? [y/n]: y
  Reducing logical volume lv-usr to 4.00 GB
  Logical volume lv-usr successfully resized
debian:~# mount –t ext3 /dev/vg0/lv-usr /usr
kjournald starting. Commit interval 5 seconds
EXT3 FS on dm-0, internal journal
EXT3-fs mounted filesystem with ordered data mode.
debian:~#
init 3
...

Beim ext3-Dateisystem ist das System zunächst mit 'init 1' im 'Single-User Modus' zu bringen. Anschließend ist das Filesystem mit 'umount' zu demontieren, bevor es mit 'resize2fs' verkleinert wird. Beim 'resize2fs' ist die neue Größe als 'Anzahl in Blöcke' anzugeben. Die 'Anzahl in Blöcken' berechnet sich wie folgt:

                   Speicherkapazität    4 GB    4294967296 B
Anzahl in Blöcke = ----------------- = ------ = ------------ = 1048576
                      Blockgröße       4096 B      4096 B

Die Blockgröße der Festplatte kann mit 'dumpe2fs' herausgefunden werden:

dumpe2fs /dev/vg0/lv-usr

Die Blockgröße lässt sich in der Ausgabezeile unter 'Block size' entnehmen, in diesem Beispiel ist die Blockgröße der Platte 4096 (Byte).
Mittels 'lvreduce' kann nun die LVM-Partition verkleinert werden. Anschließend kann die veränderte Partition wieder mit 'mount' eingebunden werden und das System mit 'init 3' in den 'Multi-User Modus' gebracht werden.

Anmerkungen

Wie am Anfang schon erwähnt, muss für LVM eine Kernel-Unterstützung gegeben sein und die notwendigen LVM-Programme müssen installiert sein. Sind die LVM-Programme nicht auf dem System vorhanden, so können sie mittels 'apt-get install lvm-common lvm2' nachinstalliert werden.

Zum Schluss noch die relevanten Programme und deren Anwendung um ein LVM-System mittels Kommandozeilenbefehle aufzubauen. Als LVM-Beispielsystem soll wieder die obige Skizze nachgebildet werden:

Die LVM-Kommandos setzen die Datei '/etc/lvmtab' und das Verzeichnis '/etc/lvmtab.d' voraus, welche vorher mit dem Befehl 'vgscan' erstellt werden können:

vgscan -v

Zunächst ist die Festplatte mit den Partitions-Tools: 'fdisk' bzw. 'cfdisk' einzuteilen. Dabei ist darauf zu achten, dass bei den Partitionen, die mit LVM versehen werden sollen, die Partitions-ID: '8e' für LVM gesetzt ist.
Ist die Partition mit der ID: '8e' versehen, so kann dieser Partition als 'Physical-Volume' (PV) eingerichtet werden:

pvcreate /dev/hda6

Als nächstes ist die Volume-Gruppe (VG) einzurichten:

vgcreate vg0 /dev/hda6

Hier wird eine 'Volume-Gruppe' mit dem Namen 'vg0' aus dem Device: '/dev/hda6' (also aus der PV) erzeugt. Sollen mehrere PVs zu einer VG zusammengefasst werden, so sind diese hintereinander anzugeben, z.B.: 'vgcreate vg1 /dev/hdb6 /dev/hdc6 /dev/hdd5'.

Die einzelnen 'Logical-Volume' (VG) können dann wie folgt eingebracht werden:

lvcreate -n lv-usr -L 5G vg0
lvcreate -n lv-var -L 3G vg0
lvcreate -n lv-tmp -L 500M vg0
lvcreate -n lv-home -L 24G vg0

Nach der Erstellung der einzelnen LVs sind diese mit einem Dateisystem zu versehen:

mkfs.ext3 /dev/vg0/lv-usr
mkfs.reiserfs /dev/vg0/lv-var
mkfs.ext3 /dev/vg0/lv-tmp
mkfs.reiserfs /dev/vg0/lv-home

In diesem Beispiel wird das ext3- und reiser-Filesystem verwendet.
Anschließend können die LVM-Bereiche ge-mountet werden. Evtl. sind vorher noch die Verzeichnisse zu erstellen, nach denen ge-mounted werden kann:

mkdir usr
mount -t ext3 /dev/vg0/lv-usr /usr

mkdir usr
mount -t reiserfs /dev/vg0/lv-var /var

mkdir tmp
mount -t ext3 /dev/vg0/lv-tmp /tmp

mkdir home
mount -t reiserfs /dev/vg0/lv-home /home

Damit LVM gleich nach dem Systemstart zur Verfügung steht, muss dies innerhalb des Init-V-Prozesses gestartet werden. Weiterhin sind die LVM-Bereiche in der Datei: '/etc/fstab' einzutragen. Genaue Informationen hierzu sind im Internet oder in den HOWTOs zu finden.

Zum Handling eines LVM-Systems gibt es noch wesentlich mehrere Kommandos. Eine Übersicht lässt sich im Internet anhand des Stichworts LVM gewinnen.

Weitere Infos

LVM2 Resource Page http://sourceware.org/lvm2/
Logical Volume Manager (LVM) Howto - deutsche Version http://www.litefaden.com/lite00/lvm/lvm-howto-de.html
Linux LVM HOWTO http://www.linuxhaven.de/dlhp/HOWTO/DE-LVM-HOWTO.html
LVM HOWTO http://www.tldp.org/HOWTO/LVM-HOWTO/
SelfLinux - Linux LVM-HOWTO http://www.selflinux.org/selflinux/html/lvm.html
Manualseiten zu: LVM-Kommandos man <LVM>
System-Dokumentation: lvm2; lvm-common /usr/share/doc/lvm2; /usr/share/doc/lvm-common
Sarge Installations-Handbuch http://d-i.alioth.debian.org/manual/

Home ] Nach oben ] Partitionierung ] RAID ] [ LVM ] RAID1 + LVM ] Disk-Quotas ] Hardware-Information/Diagnose ] Kernel ]

letzte Änderung: 07. März 2006

 

Copyright © 2004 Norbert Eusterholz