schlittermann

LVM ohne Manpage

Auf einfachen Wunsch … eine unvollständige Anleitung, wie immer hilft aber eigentlich das Manual (man -k lvm) weiter.

WTF is LVM?

Mit LVM wird es möglich, den zur Verfügung stehenden Festplattenplatz relativ dynamisch an die Anforderungen anzupassen. Um die einzelnen Begriffe zu verstehen, ist vielleicht das folgende Bild hilfreich:

Physical Volumes (Partitionen, ganze Festplatten) (PV)
    /dev/hda  /dev/hdc4  ...
        \       |       /
         \      |      /       pv*
          \     |     /
        [ verfügbarer Platz ]
            /        \         Aufteilung in Volume Groups (VG)
           /          \        vg*
        [ Volume ]   [ Volume ]
        [ Group  ]   [ Group  ]
          /    \        ..  ..
         /      \               Aufteilung in Logical Volumes (LV)
        /        \              lv*
     [ Logical ] [ Logical ]
     [ Volume  ] [ Volume  ]

Kurz und Bündig

$ su -
$ Password:
# cfdisk /dev/XXX
# vgscan
# pvcreate /dev/XXX
# vgcreate /dev/XXX
# lvcreate -L 500G vg1
# mke2fs -j /dev/vg1/lvol1
# mount /dev/vg1/lvol1 /data
# _

Etwas länger

Zu Beginn

Um das LVM-System zu initialisieren ist ein einmaliger Aufruf von vgscan notwendig. Es werden /etc/lvm*-Files angelegt.

pv*

Zuerst müssen die physischen Datenträger dem LVM “übereignet” werden. (Hier hilft fdisk -l beim Finden von Datenträgern und Partitionen. Werden reale Partitionen verwendet, sollte der verwendete Partitionstyp dann 8e bzw. Linux LVM sein.

pvcreate /dev/sda
Physischen Datenträger ans LVM übergeben (Physical Volume (PV) “erzeugen”)
pvdisplay /dev/sda
Anzeigen der Eigenschaften dieses PV
pvscan
Suchen nach LVM-Datenträgern (PVs)

Jeder der zu verwendenden Datenträger wird also mit pvcreate behandelt. Die Gesamtheit dieser Datenträger bildet dann den Pool der verfügbaren Blöcke (PE - Physical Extends).

Und natürlich gibt es noch weitere Kommandos (Verschieben der Daten eines PV etc.)

vg*

Nun können Volume Groups (VG) angelegt werden. Ein VG ist am besten vergleichbar mit einer Festplatte, auf der dann später noch Partitionen eingerichtet werden. Beim Anlegen der VG ist es erforderlich, mit anzugeben, auf welchen physischen Devices diese Volumegroup beheimatet sein soll. Wir könnten also z.B. eine VG für unsere Videos (große, billige Platten) und eine andere VG für unsere Kunden-Datenbank (teure, hochwertige Platten) anlegen.

vgcreate /dev/sda /dev/sdb
Volume Group erzeugen — legt also eine VG mit Default-Namen vg1 an. Die Daten dieser VG werden dann auf /dev/sda und /dev/sdb verteilt.
vgdisplay vg1
VG anzeigen
vgscan
Suchen nach Volume Groups
vgchange -a n vg1 (dann vgremove vg1)
Auflösen einer VG: erst deaktivieren, dann entfernen. Dafür darf aber auf dieser VG kein Logical Volume mehr liegen (s.u.).

Und es gilt das selbe wie oben: Es gibt noch mehr Kommandos für VGs (Verändern etc.) Die Tabulatortaste ist Ihr Freund: vg<TAB><TAB>.

lv*

Wenn das geschafft ist, müssen nur noch die Logical Volumes (vergleichbar mit Partitionen) angelegt werden. Jetzt ist der Augenblick der Größenbestimmung gekommen…

lvcreate -L 100G vg1
Logical Volume (LV) anlegen. Dieses LV kann jetzt wie ein Block-Device betrachtet werden (z.B. könnte ein Filesystem erzeugt werden: mkfs /dev/vg1/lvol1). Der Name lvol1 ist der Default-Name und wurde von lvcreate gewählt.
lvdisplay /dev/vg1/lvol1
LV anzeigen
lvscan
LVs suchen
lvextend -L 200M /dev/vg1/lvol1
LV verändern (Größe anpassen)
lvremove /dev/vg1/lvol1
LV entfernen. Natürlich darf die LV nicht mehr gemounted sein.

Und natürlich auch wieder hier: es gibt noch jede Menge weitere Kommandos.

Ganz genau

Dafür sei einfach mal auf die Manual-Seiten und auf das Weltweite Web verwiesen :-)