weidner/archives/2014/01/

Plattenplatz für Xen-DomU vergrößern

Wie bei einem "normalen" Linux-Rechner auf Blech, so kommt auch bei einem virtualisierten System irgendwann der Tag, an dem der Plattenplatz nicht mehr reicht und erweitert werden muss.

Da ich meine Xen-DomUs auf LVM-Volumes angelegt habe, ist das reine Vergrößern des Plattenplatzes kein Problem. Solange noch Plattenplatz auf dem Hostsystem verfügbar ist, reicht ein lvextend um das Volume zu vergrößern. Ist auf dem Host auch kein Platz mehr, stecke ich eine zusätzliche Platte ein, füge diese zur Volume-Group hinzu und schon ist wieder Platz da.

Bevor ich beginne, mache ich auf jeden Fall ein Backup des betroffenen Systems!

Zu Hause verwende ich den Default-Toolstack für Xen mit xm als Kommandozeilenprogramm. Bei diesem ist die Konfiguration für die DomUs im Verzeichnis /etc/xen/ zu finden, jeweils in einer Datei, benannt nach der DomU mit dem Suffix .cfg.

Die verfügbaren Plattenbereiche sind beim Eintrag disk angegeben.

Hier gibt es bereits einige Unterschiede, die ich beachten muss.

Auf älteren Systemen habe ich die Plattenpartitionen einzeln direkt angegeben, so wie sie in der DomU eingebunden werden:

disk = [
   'phy:/dev/vg0/apt-proxy-swap,xvda1,w',
   'phy:/dev/vg0/apt-proxy-disk,xvda2,w',
   ]

In letzter Zeit habe ich hingegen meist nur ein LVM-Volume angegeben, das in der DomU als gesamte Platte verwendet und dort partitioniert wird.

disk = ['phy:/dev/camion/netinfo3,xvda,w']

Beim ersten System entsprechen /dev/xvda1 und /dev/xvda2 direkt den beiden Volumes apt-proxy-swap und apt-proxy-disk im LVM.

Beim zweiten System sind /dev/xvda1 und /dev/xvda2 Partitionen im Volume netinfo3 im LVM des Hosts.

Dementsprechend muss ich unterschiedlich vorgehen, um den Plattenplatz zu vergrößern.

Bei den DomUs, die Partitionen wie das erste System nutzen, kann ich alles vom Host aus erledigen:

$ XENDOMAIN="apt-proxy"
$ LVMVOLUME="/dev/vg0/${XENDOMAIN}-disk"
$ SIZE=20G

$ sudo xm shutdown -w ${XENDOMAIN}
$ sudo lvextend -L ${SIZE} ${LVMVOLUME}
$ sudo e2fsck -f ${LVMVOLUME}
$ sudo resize2fs ${LVMVOLUME}
$ sudo e2fsck -f ${LVMVOLUME}
$ sudo xm create ${XENDOMAIN}.cfg

Anschließend kann die DomU sofort den zusätzlichen Platz nutzen.

Bei den Systemen mit vollständigem Festplattenimage muss ich einen Teil in der DomU erledigen. Zunächst vergrößere ich das Image der Festplatte:

$ XENDOMAIN="netinfo3"
$ LVMVOLUME="/dev/camion/${XENDOMAIN}"
$ SIZE=20G

$ sudo xm shutdown -w ${XENDOMAIN}
$ sudo lvextend -L ${SIZE} ${LVMVOLUME}
$ sudo xm create ${XENDOMAIN}.cfg

Anschließend melde ich mich an der DomU an und bearbeite das Festplattenimage mit fdisk. Dazu wechsle ich in den Single-User-Modus. Will ich nur die letzte Partition vergrößern, entferne ich sie und lege sie gleich darauf neu an. Dazu sollte die Partition ausgehängt oder wenigstens read-only eingehängt sein. Anschließend folgt:

# e2fsck -f /dev/xvda5
# resize2fs /dev/xvda5
# e2fsck -f /dev/xvda5

Alternativ lege ich eine neue Partition an, formatiere diese, hänge sie an geeigneter Stelle im Dateibaum ein und verschiebe die zugehörigen Daten von der alten Partition auf die neue.

Nach einem Neustart kann ich den zusätzlichen Plattenplatz auch hier nutzen.

Posted 2014-01-24
Tags: