LVM Grundkonfiguration

Aus Thomas-Krenn-Wiki
Zur Navigation springen Zur Suche springen

Im folgenden Artikel wird die grundlegende Konfiguration von LVs erläutert. Das verwendete System ist ein Ubuntu Server 10.4 mit dem Kernel 2.6.32-24 und der LVM-Version 2.02.54(1) (2009-10-26). Es wird das Anlegen der Partitionen, der Physical Volumes (PVs), einer Volume Group (VG) und den darauf aufsetzenden Logical Volumes (LVs) an einem Beispiel erklärt.

Anlegen der Partitionen

Zu Beginn werden die Partitionen für die PVs angelegt. Folgende Dinge müssen dabei beachtet werden:

  • Partition Alignment
    • Anzeige umstellen auf Sektoren (Switch "-u")
    • DOS-compatible Mode ausschalten (Switch "-c")
  • Für späteres LVM-Management
    • System ID der Partition auf "8e" ändern (Switch "-t" bei fdisk)

Nach den Änderungen sieht die Partitionstabelle wie folgt aus:

root@ubuntu:/home/tktest# fdisk -lu

Disk /dev/sda: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders, total 10485760 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00051afd

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     9920511     4959232   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2         9922558    10483711      280577    5  Extended
Partition 2 does not end on cylinder boundary.
/dev/sda5         9922560    10483711      280576   82  Linux swap / Solaris

Disk /dev/sdb: 2147 MB, 2147483648 bytes
22 heads, 16 sectors/track, 11915 cylinders, total 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x1673663d

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     4194303     2096128   8e  Linux LVM

Disk /dev/sdc: 2147 MB, 2147483648 bytes
22 heads, 16 sectors/track, 11915 cylinders, total 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xbd277faf

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1            2048     4194303     2096128   8e  Linux LVM

Erstellung von PVs

PVs beinhalten auch immer Metadaten für die Verwaltung der Volumes (s.a. Artikel zu LVM Grundlagen). Standardmäßig werden für die Metadaten 255 Sektoren (á 512 Byte) angelegt. Eine zu kleine Metadaten-Area kann unter anderem dazuführen, dass z.B. keine Snapshots mehr erzeugt werden können: LVM VG vgname metadata too large for circular buffer beheben. Daher kann es durchaus sinnvoll sein, dass eine größere Metadaten-Area konfiguriert wird. Will man eine Vergrößerung der Metadaten-Area, so fügt man dem Kommando "pvcreate" den Parameter "--metadatasize" und anschließend die gewünschte Größe bei:

--metadatasize size

Anschließend werden die Partitionen als PV initialisiert.

root@ubuntu:~# pvcreate /dev/sdb1 
  Physical volume "/dev/sdb1" successfully created
root@ubuntu:~# pvcreate /dev/sdc1 
  Physical volume "/dev/sdc1" successfully created

Die Befehle "pvs" und "pvdisplay" bieten dabei zahlreiche Möglichkeiten sich den aktuellen Status der PVs anzeigen zu lassen.

root@ubuntu:~# pvs
  PV         VG   Fmt  Attr PSize PFree
  /dev/sdb1       lvm2 --   2.00g 2.00g
  /dev/sdc1       lvm2 --   2.00g 2.00g

Anlegen einer VG

Die zuvor angelegten PVs werden nun zu einer VG zusammengefasst.

root@ubuntu:~# vgcreate vg00 /dev/sdb1 /dev/sdc1 
  Volume group "vg00" successfully created

Der Befehl "pvdisplay" zeigt nun auch, dass eine VG mit den PVs angelegt wurde:

root@ubuntu:~# pvdisplay 
  --- Physical volume ---
  PV Name               /dev/sdb1
  VG Name               vg00
  PV Size               2.00 GiB / not usable 3.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              511
  Free PE               511
  Allocated PE          0
  PV UUID               fl9ipM-bhhQ-V46G-2iH3-R3yZ-9DsN-JbRmY9
   
  --- Physical volume ---
  PV Name               /dev/sdc1
  VG Name               vg00
  PV Size               2.00 GiB / not usable 3.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              511
  Free PE               511
  Allocated PE          0
  PV UUID               d1iY5L-ac3F-W5Sz-zyaE-uaT3-f66r-I3831o

vgdisplay zeigt außerdem die Informationen zur VG an:

root@ubuntu:~# vgdisplay 
  --- Volume group ---
  VG Name               vg00
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               3.99 GiB
  PE Size               4.00 MiB
  Total PE              1022
  Alloc PE / Size       0 / 0   
  Free  PE / Size       1022 / 3.99 GiB
  VG UUID               YTEj9f-9LCT-EOP5-JBEA-YHSz-c0R1-TMzVmy

Hier fällt auf, dass die PE Größe 4.00 MiB beträgt. Seit dem lvm2-Format ist die Anzahl der PEs nicht mehr beschränkt, laut Man-Page von vgcreate kann eine hohe Anzahl von PEs aber die Tools verlangsamen. Auf die I/O-Performanz der Logical Volumes wirkt sich die Anzahl der PEs aber nicht aus! Will man die PE-Größe ändern, so fügt man bei "vgcreate" den Parameter

-s, --physicalextentsize PhysicalExtentSize

hinzu.

Anlegen von LVs

Um die Größe des anzulegenden LVs zu spezifizieren gibt es verschiedene Möglichkeiten, alle benötigen aber den Parameter "-l" oder "-L".

  • Größenangabe in z.B. Gigabyte:
lvcreate -n data -L1G vg00
  • Angabe in Prozent des verfügbaren Speichers in der VG:
lvcreate -n data -l100%VG vg00
  • Angabe in Prozent des freien Speichers in der VG:
lvcreate -n data -l100%FREE vg00

Wir führen das begonnene Beispiel so weiter, dass wir die VG in zwei gleich große LV unterteilen:

root@ubuntu:~# lvcreate -n data -l50%VG vg00
  Logical volume "data" created
root@ubuntu:~# lvcreate -n data1 -l100%FREE vg00
  Logical volume "data1" created

Nun kann der Status der Logical Volumes begutachtet werden:

root@ubuntu:~# lvdisplay 
  --- Logical volume ---
  LV Name                /dev/vg00/data
  VG Name                vg00
  LV UUID                S1btrq-zQZQ-h9oU-2VE6-UNoT-hkqB-Fpv7pG
  LV Write Access        read/write
  LV Status              available
  # open                 0
  LV Size                2.00 GiB
  Current LE             511
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:0
   
  --- Logical volume ---
  LV Name                /dev/vg00/data1
  VG Name                vg00
  LV UUID                Syaml9-d1Ax-RYTs-tSZy-vEyq-yzqW-VoOddZ
  LV Write Access        read/write
  LV Status              available
  # open                 0
  LV Size                2.00 GiB
  Current LE             511
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:1

Anlegen eines Dateisystems

Nun können die LVs mit einem Dateisystem formatiert und anschließend gemountet werden:

mkfs.ext4 /dev/vg00/data
mkdir data
mount /dev/vg00/data data

Entfernen eines LVs

Soll ein LV wieder entfernt werden, so wird dies über das lvremove Kommando durchgeführt:

root@ubuntu:~# lvremove /dev/vg00/data_snap 
  Do you really want to remove active logical volume data_snap? [y/n]: y  
  Logical volume "data_snap" successfully removed 

Das LV data_snap scheint nun nicht mehr als LV auf. Als PV befindet es sich die darunterliegende Partition aber immer noch:

  --- Physical volume ---   
PV Name               /dev/sde1   
VG Name               vg00   
PV Size               2.00 GiB / not usable 3.00 MiB   
Allocatable           yes    
PE Size               4.00 MiB   
Total PE              511   
Free PE               511   
Allocated PE          0   
PV UUID               lKEW15-1YHu-dikC-S0Pm-72UJ-UMPg-fgiW0Y

Soll die Partition komplett freigegeben werden, so muss das PV zuerst aus der VG genommen werden:

root@ubuntu:~# vgreduce vg00 /dev/sde1   
  Removed "/dev/sde1" from volume group "vg00"
root@ubuntu:~# pvdisplay
 "/dev/sde1" is a new physical volume of "2.00 GiB"  
 --- NEW Physical volume ---
   PV Name               /dev/sde1
   VG Name                 
   PV Size               2.00 GiB
   Allocatable           NO
   PE Size               0
   Total PE              0 
   Free PE               0
   Allocated PE          0
   PV UUID               lKEW15-1YHu-dikC-S0Pm-72UJ-UMPg-fgiW0Y 

Nun kann auch das PV komplett gelöscht werden, um z.B. die Festplatte neu zu formatieren:

root@ubuntu:~# pvremove /dev/sde1
  Labels on physical volume "/dev/sde1" successfully wiped
Foto Georg Schönberger.jpg

Autor: Georg Schönberger

Georg Schönberger, Abteilung DevOps bei der XORTEX eBusiness GmbH, absolvierte an der FH OÖ am Campus Hagenberg sein Studium zum Bachelor Computer- und Mediensicherheit, Studium Master Sichere Informationssysteme. Seit 2015 ist Georg bei XORTEX beschäftigt und arbeitet sehr lösungsorientiert und hat keine Angst vor schwierigen Aufgaben. Zu seinen Hobbys zählt neben Linux auch Tennis, Klettern und Reisen.


Das könnte Sie auch interessieren

LVM Snapshots
LVM VG vgname metadata too large for circular buffer beheben
LVM Volume group vgname metadata is inconsistent beheben