silvesterlangen.de

Seite
Menü

Thin Provisioning

LVM bietet auch "thin provisioning" an, was gerade für die Virtualisierung sehr interessant ist. Hierbei wird nur so viel Platz im Logical Volume verwendet wie wirklich an Daten vorhanden ist. Legt man ein LV in der Größe 100 Gb an, dann sind eben auch diese 100 Gb von der Disk reserviert. Das macht man ein paar mal und schon ist der Platz aufgebraucht und es muss eine weitere Disk her.

Im Normalfall ist das kein Problem, da man weiß was man braucht. Spätestens bei der Virtualisierung wird es schwieriger. Wie viel Platz eine VM wirklich benötigt hängt vom Zweck ab. So plant man lieber etwas mehr Kapazität für die VM ein, aber 99 % der Zeit liegt eben der Großteil brach und wird nicht verwendet. Genau hier könnte man dafür sorgen, dass die Speicherkapazität bspw. 100 Gb maximal sein darf, aber tatsächlich vom Wirt nur so viel gebraucht wird, wie wirklich an Daten innerhalb der VMs vorhanen sind.

Das führt natürlich zu einer Überbelegung. Würden alle VMs nun ihr Maximum ausschöpfen, so würde die Überbuchung der Kapazität des Wirtes schnell zur Falle werden. Im Regelfall passiert so etwas aber nicht.

 

Vorbereitung:

Als Wirt nehme ich wieder meinen Virtualisierungs-Wirt mit KVM. Hier arbeite ich mit nur einer zusätzlichen SSD, da sie gerade frei ist und im Falle des Falles keine Daten enthält, die wichtig und erhaltenswert sind.

Es muss zunächst eine "physical Volume Group" erstellt werden. Da ich nur eine SSD für den Testzweck habe, bleibt die Zeile recht kurz. Ansonsten würden einfach mehrere Festplatten hintereinander aufgeführt werden, die zu dieser VG hinzugefügt werden sollen.

vgcreate myVG /dev/sdc1

Nun benötigen wir die Thin-Provisioning-Tools. Unter CentOS, Debian und Ubuntu wie folgt zu installieren:

which thin_check || apt-get install -y thin-provisioning-tools

which thin_check || yum install -y device-mapper-persistent-data

 

Thin Pool erstellen

LVM Thin Provisioning setzt voraus, dass die Thin Provisioning-Volumes in einem sogenannten Thin Pool vorhanden sind. Der Thin Pool ist eine spezielle Art logisches Volume. Der Thin Pool legt fest, wie viel Speicherplatz für Thin Provisioning-Volumes zur Verfügung steht. Es ist sehr wichtig den verfügbaren Platz in diesem Pool zu überwachen.

Mit der Option --thinpool wird der Thin Pool erstellt. Er wird in der Volume Group "vms" erstellt und "tpool" benannt.

lvcreate -L 500m --thinpool tpool vms

In diesem Beispiel zeige ich wie wichtig es ist den verfügbaren Platz innerhalb des Thin Pools zu überwachen. Um uns den Thin Pool tpool anzusehen kann lvdisplay verwendet werden. Genauer gesagt muss hier der Wert beobachtet  Allocated pool data werden. In diesem Fall ist er noch bei 0 Prozent, was aber daran liegt, weil noch kein Logical Volume erstellt wurde. Das wird sich jetzt ändern.

root@kvm:~# lvdisplay /dev/vms/tpool
  --- Logical volume ---
  LV Name                tpool
  VG Name                vms
  LV UUID                iFTO7i-wGte-gAAa-RoUx-EBq3-HsW7-7D0PWK
  LV Write Access        read/write
  LV Creation host, time kvm, 2019-08-16 14:02:52 +0200
  LV Pool metadata       tpool_tmeta
  LV Pool data           tpool_tdata
  LV Status              available
  # open                 0
  LV Size                500,00 MiB
  Allocated pool data    0,00%
  Allocated metadata     0,88%
  Current LE             125
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:2

 

Wir erinnern uns, dass wir einen Thin Pool in einer Größe von 500 Mb erstellt haben. Nun wollen wir ein Logical Volume erstellen, welches größer ist als die Kapazität, die vom Thin Pool bereitgestellt wird. Beim Erstellen des des LV wird LVM2 eine Warnung zurückgeben, dass das LV größer ist als der Thin Pool bereitstellen kann. Das, was wir jetzt machen, nennt sich Überbuchen (overprovisioning).

root@kvm:~# lvcreate -V 600m --thin -n thinvolume vms/tpool
Using default stripesize 64,00 KiB.
WARNING: Sum of all thin volume sizes (600,00 MiB) exceeds the size of thin pool vms/tpool (500,00 MiB).
WARNING: You have not turned on protection against thin pools running out of space.
WARNING: Set activation/thin_pool_autoextend_threshold below 100 to trigger automatic extension of thin pools before they get full.
Logical volume "thinvolume" created.

Gerade die letzte Warnung ist interessant, denn LVM2 kann den Thin Pool automatisch vergrößern, falls der Platz darin nicht mehr ausreicht. Wer dazu mehr wissen möchte, der kann hier mal reinschauen. Im Standard reicht die Einstellung und bedarf im Normalfall keiner Änderung.

 

Thin Pool überwachen

Wie bereits oben beschrieben muss der Wert Allocated pool data überwacht werden. Zwar greift das automatische Erweitern, aber es könnte ja sein, dass die Disk schon so gut wie voll ist und ein Erweitern nicht ausreicht, da eine weitere Disk hinzugefügt werden müsste.

Formatieren wir zunüchst das LV und schauen uns dann mit lvdisplay an was passiert ist:

mkfs.ext4 /dev/vg1/thin_volume

root@kvm:/home/silvester# lvdisplay /dev/vms/tpool
  --- Logical volume ---
  LV Name                tpool
  VG Name                vms
  LV UUID                iFTO7i-wGte-gAAa-RoUx-EBq3-HsW7-7D0PWK
  LV Write Access        read/write
  LV Creation host, time kvm, 2019-08-16 14:02:52 +0200
  LV Pool metadata       tpool_tmeta
  LV Pool data           tpool_tdata
  LV Status              available
  # open                 2
  LV Size                500,00 MiB
  Allocated pool data    3,33%
  Allocated metadata     1,17%
  Current LE             125
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:2

Wie hier gut zu sehen ist, hast das Formatieren des LV schon etwas Platz verbraucht und das LV ist nun zu 3,33 % mit Daten (das Format EXT4) gefüllt.

 

 

 

« vorige Seite Seitenanfang nächste Seite »
Seite
Menü
Earned Certificates:
LPIC-1 LPIC-1 LPIC-1
Powered by CMSimple | Template by CMSimple | Login