# aptitude -y install lvm2
LVM-Implementation (1998 von Heinz Mauelshagen geschrieben), die sich in der Bedienung stark an HP-UX anlehnt. Eine Online-Vergrößerung ist unter Anderem mit folgenden Dateisystemen möglich: ext2, ext3, und ext4, JFS, ReiserFS V3 so wie mit XFS. Ebenfalls ist die Spiegelung der Logical Volumes möglich und unabhängig vom verwendeten Dateisystem. Neben der LVM-Implementierung von Red Hat (ehemals Sistina) gibt es mit EVMS auch eine Implementierung von IBM, die über LVM hinaus auch fast alle anderen Massenspeicheraufgaben unterstützt (Partitionierung, RAID, Dateisystemverwaltung).
Die Dateisysteme btrfs enthalten bereits die Funktionen eines Logical Volume Manager's. Hier braucht man also keinen separaten Logical Volume Manager.
| Dateisysteme und ihre Möglichkeiten | ||||
|---|---|---|---|---|
| Dateisystem | Online | Offline | ||
| Vergrößern | Verkleinern | Vergrößern | Verkleinern | |
| ext2/ext3 | ja | nein | ja | ja |
| ext4 | ja | ? | ? | ja |
| ReiserFS | nein | nein | ja | ja |
| JFS | ja | nein | nein | nein |
| XFS | ja | nein | nein | nein |
| NTFS | nein | nein | ja | ja |
| FAT | nein | nein | ja | ja |
Als erstes muss eine Partition angelegt werden und die Partions-ID auf 8e geändert werden. Dies passiert mit fdisk und sollte keinen große Probleme bereiten:
# fdisk -l # fdisk -l /dev/sda # fdisk /dev/sda
Als zweites muss die Partition (bzw. die Partitionen) initialisiert werden:
# pvcreate /dev/sda3 Physical volume "/dev/sda3" successfully created
Dann muss man eine logische Volumengruppe (z.B. home) anlegen:
# vgcreate home /dev/sda3 Volume group "home" successfully created
Jetzt kann man sich schon mal alle Informationen zur logische Volumengruppe anzeigen lassen:
# vgs # vgdisplay # vgdisplay home
Die Variable Total PE bezeichnet die Gesamtgröße der logische Volumengruppe. Und die Variable Free PE bezeichnet die Gesamtgröße des noch freien Bereiches in der logische Volumengruppe.
Will man also die komplette Volumengruppe mit nur einem einzigen logisches Volumen (fritz) belegen, kann man das ganz einfach so machen:
# lvcreate -l [Wert von "Free PE"] -n fritz home Logical volume "fritz" created
Das logisches Volumen kann man sich so ansehen:
# lvs # lvdisplay
Gelöscht wird ein logisches Volumen so:
# lvremove home/fritz
Do you really want to remove active logical volume "fritz"? [y/n]: y
Logical volume "fritz" successfully removed
Ein logisches Volumen (fritz) mit einer Größe von 1GB kann man wie folgt anlegen:
# lvcreate -L 1G -n fritz home Logical volume "fritz" created
Ein logisches Volumen vergrößert man um 1GB so:
# lvresize -L +1G home/fritz Extending logical volume fritz to 2,00 GB Logical volume fritz successfully resized
Die Größe eines logisches Volumen setzt man wie folgt auf einen festen Wert:
# lvresize -L 3G home/fritz Extending logical volume fritz to 3,00 GB Logical volume fritz successfully resized
Die Größe eines logisches Volumen vergrößert man wie folgt um 20% der aktuellen Gesamtgröße:
# lvresize -l +20%LV home/fritz Extending logical volume fritz to 1,20 GB Logical volume fritz successfully resized
Jetzt kann man das logische Volumen formatieren und einhängen:
# mkfs -t ext4 /dev/home/fritz # mount /dev/home/fritz /home/fritz
Man kann das ganze auch mit LABEL machen:
# mkfs -t ext4 -L fritz /dev/home/fritz # mount LABEL=fritz /home/fritz
Man kann an Stelle von „fritz“ auch die komplette Bezeichnung des Mount-Points (/home/fritz) als Label verwenden:
# mkfs -t ext4 -L /home/fritz /dev/home/fritz # mount LABEL=/home/fritz /home/fritz
In der /etc/fstab würde der Eintrag dann so aussehen:
LABEL=/home/fritz /home/fritz jfs defaults 0 0
Soll das Laufwerk sehr sicher (dafür aber langsamer) sein, dann noch das hier:
# tune2fs -o journal_data /dev/home/fritz
Möchte man ein logisches Volumen für SWAP verwenden, dann könnte man es so machen:
# lvcreate -L 2G -n swap home # mkswap -L swap /dev/home/swap # vi /etc/fstab LABEL=swap none swap sw 0 0
einen Snapshot erstellen:
# lvcreate -L10G -s -n der_schnappschuss /dev/home/fritz
Seit Kernel 2.6.10 kann es auch im eingehängten Zustand vergrößert werden.
# lvresize -L 30G data/mysql # umount /var/lib/mysql/ # e2fsck -yFf /dev/mapper/data-mysql # resize2fs # mount /var/lib/mysql/
JFS kann __nur_ im eingehängten Zustand vergrößert werden!
# lvresize -L 30G data/mysql # mount -o remount,resize /var/lib/mysql/
Die Möglichkeit zu haben, bei Bedarf ein zu klein bemessenes Dateisystem zu vergrößern ist zwar recht schön, ist aber auch in einigen Punkten problematisch.
Aus diesem Grund sollte man das Vergrößern von LV's auf ein Minimum beschränken und bevorzugt ein Dateisystem einsetzen, welches mit dynamischen Inodes arbeitet (z.B.: JFS oder XFS).
wenn dieser Fehler beim Aufruf eines beliebigen LVM-Befehl's auftritt (meist nach einem Absturz):
# lvs Parse error at byte 3 (line 2): unexpected token
dann müssen alle LV-Laufwerke runter gefahren werden
und dann kann man den Kram hier löschen:
# rm /etc/lvm/cache/.cache*