[[lvm]]
 

Logical Volume Manager (LVM)

unterstützte Dateisysteme

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

Installation

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

LV vergrößern

ext*

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

JFS kann __nur_ im eingehängten Zustand vergrößert werden!

# lvresize -L 30G data/mysql
# mount -o remount,resize /var/lib/mysql/

zu bedenken bei LV-Vergrößerungen

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.

  1. Wenn man ein Dateisystem mit statischen Inodes (z.B.: ext4) verwendet, dann bleibt die Anzahl der Inodes bei der Vergrösserung gleich. Das bedeutet, man kann jetzt zwar größere Dateien auf der Partition ablegen aber nicht mehr!
  2. Liegen auf einer VolumenGruppe viele LV's und davon werden dann hin und wieder mal verschiedene LV's vergrössert, dann fragmentiert der Festplattenbereich auf der VolumenGruppe und dadurch werden die mechanischen Plattenkopfbewegungen unnötig in die Höhe getrieben. Das bedeutet, die gefühlte Arbeitsgeschwindigkeit der Platte sinkt.

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).

Parse error at byte 3

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*
 
Falls nicht anders bezeichnet, ist der Inhalt dieses Wikis unter der folgenden Lizenz veröffentlicht:GNU Free Documentation License 1.2
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki