LVM einrichten

Benötigte Pakete

Wenn noch nicht vorhanden, muss lvm installiert werden:

aptitude install lvm2

Wie ihr ein Logical Volume nachträglich verkleinert, könnt ihr hier nachlesen.

Logical Volume hinzufügen

Ich beschreibe hier das nachträgliche Hinzufügen einer lvm-Partition für den Ordner /var/backups unter Debian Squeeze, um eine bereits vorhandene volle Festplatte zu entlasten.

Ausgangslage

Eine Ausgabe von fdisk -l und df -h schafft einen Überblick über die Ausgangslage

root# fdisk -l

Disk /dev/sda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00081015

Device Boot Start End Blocks Id System
/dev/sda1 * 1 993 7976241 83 Linux
/dev/sda2 994 1044 409657+ 5 Extended
/dev/sda5 994 1044 409626 82 Linux swap / Solaris

Disk /dev/sdb: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x380b6e17

Device Boot Start End Blocks Id System
/dev/sdb1 1 1044 8385898+ 8e Linux LVM


Disk /dev/sdc: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xfeb5b445

Device Boot Start End Blocks Id System
/dev/sdc1 1 1305 10482381 8e Linux LVM
root# df -h
Dateisystem Size Used Avail Use% Eingehängt auf
/dev/sda1 7,5G 5,5G 1,7G 78% /
tmpfs 506M 0 506M 0% /lib/init/rw
udev 501M 104K 501M 1% /dev
tmpfs 506M 0 506M 0% /dev/shm

Wie zu erkennen ist, ist die einzig vorhandene Partion schon recht voll, so dass ich diese, durch Auslagern des Orderns /var/backups entlasten will. Zudem sind bereits zwei Festplatten zu sehen, auf den jeweils eine primäre Partition mit lvm als Partitionierungssystem eingerichtet sind.

PV, VG und LV einrichten…

…bedeutet nix anderes, als eine Partition für lvm zu aktivieren (Physical Volume erstellen).

root# pvcreate /dev/sdc1
Physical volume "/dev/sdc1" successfully created

Darauf wird dann eine Volume Group eingerichtet, die als Pool mehrere Physical Volumes aufnehmen kann. So kann man z.B. mehrere Festplatten innerhalb einer Volume Group verwenden. Hier sollte ein nicht all zu langer Name vergeben werden.

root# # vgcreate vg1 /dev/sdc1
Volume group "vg1" successfully created

Mit vgdisplay kann man sich dann die Einzelheiten zu der gerade eingerichteten Volume Group anschauen. Interessant ist dabei der Wert „Free PE“, der die Physikalischen Einheiten angibt, die noch für Logical Volumes zur Verfügung stehen.

# vgdisplay
--- Volume group ---
VG Name vg1
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size 10,00 GiB
PE Size 4,00 MiB
Total PE 2559
Alloc PE / Size 0 / 0
Free PE / Size 2559 / 10,00 GiB
VG UUID GcAW6r-L2Lp-DCkA-k3P3-al0Q-kCRf-5UXYFu

Danach erstelle ich noch ein Logical Volume (LV) mit der maximalen Anzahl (2559) von freien Physikalischen Einheiten (siehe oben). Würde man hier beim erstellen die angezeigten 10G angeben, bekäme man eine Fehlermeldung, dass nicht genügend freier Speicherplatz in der Volume Group vorhanden ist.

# lvcreate -l 2559 -n backups vg1
Logical volume "backup" created

Dateisystem einrichten

Jetzt muss das Dateisystem auf der neuen Partition noch eingerichtet werden. Ich wähle dazu hier ext3.

root# mkfs.ext3 /dev/vg1/backups
mke2fs 1.41.12 (17-May-2010)
Dateisystem-Label=
OS-Typ: Linux
Blockgröße=4096 (log=2)
Fragmentgröße=4096 (log=2)
Stride=0 Blöcke, Stripebreite=0 Blöcke
655360 Inodes, 2620416 Blöcke
131020 Blöcke (5.00%) reserviert für den Superuser
Erster Datenblock=0
Maximale Dateisystem-Blöcke=2684354560
80 Blockgruppen
32768 Blöcke pro Gruppe, 32768 Fragmente pro Gruppe
8192 Inodes pro Gruppe
Superblock-Sicherungskopien gespeichert in den Blöcken:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Schreibe Inode-Tabellen: erledigt
Erstelle Journal (32768 Blöcke): erledigt
Schreibe Superblöcke und Dateisystem-Accountinginformationen: erledigt

Das Dateisystem wird automatisch nach jeweils 31 Einhäng-Vorgängen bzw.
alle 180 Tage überprüft, je nachdem, was zuerst eintritt. Dies kann durch
tune2fs -c oder -i geändert werden.

Mounten und Datenübernahme

Zuerst muss die erstellte Partition temporär gemountet werden, damit die alten Daten übernommen werden können:

root# mkdir /mnt/backups
root# mount -t ext3 /dev/mapper/vg1-backups /mnt/backups

Wie zu erkennen ist, habe ich die Verknüpfung über den Device-Mapper genutzt. Jetzt können die Daten verschoben werden. ACHTUNG: Die Dateien dürfen sich nicht im Zugriff befinden!

root# mv /var/backups/* /mnt/backups/
root# ls -alh /var/backups/
insgesamt 0

Danach kann die Partion aus dem temporären Speicherort ausgehängt und in den endgültigen Speicherort eingehängt werden:

root# umount /mnt/backups
root# mount -t ext3 /dev/mapper/vg1-backups /var/backups

Bitte nach Beendigung der Arbeit die Anpassungen in der /etc/fstab nicht vergessen!

Wie ihr ein Logical Volume nachträglich verkleinert, könnt ihr hier nachlesen.