Die nachfolgenden Angaben wurden unter folgender Umgebung getestet: Scientific Linux 6.1, Virtualisierung mit KVM.
Kommandozeilen-Werkzeuge im Paket libguestfs-tools
Das Paket libguestfs-tools enthält einige Werkzeuge mit der Dateisysteme virtueller Maschinen analysiert oder verändert werden können. Insbesondere die Größenänderung einers Plattenimages und der enthaltenen Dateisysteme wird damit leicht ermöglicht. Es enthält auch Werkzeuge um Dateien in diesen Dateisystemen anzuzeigen, zu editieren, zu sichern, … . Nachfolgend ein kurzer Überblick in dem die Anwendung einiger der Werkzeuge kurz demonstriert wird – und eine Demonstration einer Plattenimage-Größenänderung.
virt-df
zeigt den freien Platz in den Dateisystemen einer virtuellen Maschine an. Im Gegensatz zu anderen Werkzeugen zeigt es nicht nur den einer virtuellen Maschine zugeordneten Plattenplatz an, sondern kann in die virtuelle Maschine „hineinsehen“ um den dort wirklich belegten Platz anzuzeigen. Es ist mit dem Kommando df(1)
vergleichbar, arbeitet aber auf dem Dateisystem virtueller Maschinen und arbeitet sogar für virtuelle Windows-Maschinen.
Beispiel:
[root@dellserv ~]# virt-df -d test.serv.private
Using CPU model "cpu64-rhel6"
Filesystem 1K-blocks Used Available Use%
test.serv.private:/dev/sda1 154691 29539 117165 20%
test.serv.private:
/dev/system/root 4725116 3756100 728992 80%
virt-filesystems
ist ein Kommandozeilen-Werkzeug um die Dateisysteme, Partitionen, Block-Geräte, logischen Volumes (LVs), Volume-Gruppen (VGs) und physikalischen Volumes (PVs) im Plattenimage einer virtuellen Maschine anzuzeigen.
Beispiel:
[root@dellserv ~]# virt-filesystems --long -h --all -d
test.serv.private
Using CPU model "cpu64-rhel6"
/dev/sda1 filesystem ext4 - 156M -
Name Type VFS Label Size Parent
/dev/system/root filesystem ext4 - 4,6G -
/dev/system/swap filesystem swap - 148M -
/dev/system/root lv - - 4,6G /dev/system
/dev/system/swap lv - - 148M /dev/system
/dev/system vg - - 4,7G -
/dev/sda2 pv - - 4,7G -
/dev/sda1 partition - - 156M /dev/sda
/dev/sda2 partition - - 4,7G /dev/sda
/dev/sda device - - 4,9G -
Mit virt-ls
können Dateilistings innerhalb einer virtuellen Maschine angezeigt werden.
Beispiel:
[root@dellserv ~]# virt-ls -d
test.serv.private
-l /boot
Using CPU model "cpu64-rhel6"
total 23722
drwxr-xr-x 4 root root 1024 Nov 4 10:40 .
drwxr-xr-x 23 root root 4096 Nov 5 10:03 ..
-rw-r--r-- 1 root root 2247048 Jul 26 19:12 System.map-2.6.37.6-0.7-desktop
-rw------- 1 root root 512 Aug 21 17:26 backup_mbr
lrwxrwxrwx 1 root root 1 Mar 2 2011 boot -> .
-rw-r--r-- 1 root root 1236 Feb 21 2011 boot.readme
-rw-r--r-- 1 root root 120322 Jul 26 18:24 config-2.6.37.6-0.7-desktop
drwxr-xr-x 2 root root 1024 Aug 21 17:51 grub
lrwxrwxrwx 1 root root 27 Aug 21 17:53 initrd -> initrd-2.6.37.6-0.7-desktop
-rw-r--r-- 1 root root 11299312 Aug 21 17:53 initrd-2.6.37.6-0.7-desktop
drwx------ 2 root root 12288 Aug 21 17:13 lost+found
-rw-r--r-- 1 root root 553984 Nov 4 10:40 message
-rw-r--r-- 1 root root 196515 Jul 26 19:23 symvers-2.6.37.6-0.7-desktop.gz
-rw-r--r-- 1 root root 5294771 Jul 26 19:22 vmlinux-2.6.37.6-0.7-desktop.gz
lrwxrwxrwx 1 root root 28 Aug 21 17:51 vmlinuz -> vmlinuz-2.6.37.6-0.7-desktop
-rw-r--r-- 1 root root 4555104 Jul 26 19:12 vmlinuz-2.6.37.6-0.7-desktop
Mit virt-cat
kann der Inhalt einer Datei im Plattenimage einer virtuellen Maschine angezeigt werden.
Beispiel:
[root@dellserv ~]# virt-cat
test.serv.private
/boot/boot.readme
Using CPU model "cpu64-rhel6"
This file is for first help if you occur some problems during booting.
FAQ
…
Aber nicht nur das Anzeigen eines Datei-Inhalts ist möglich. Mit virt-edit
können Dateien im Dateisystem einer virtuellen Maschine auch direkt vom Host-System aus editiert werden. ACHTUNG: Das sollte Sie auf keinen Fall in einer laufenden VM durchführen – Sie sollten die VM vorher immer herunter fahren.
Beispiel:
[root@dellserv ~]# virt-edit
test.serv.private
/boot/boot.readme
Dieses Kommando öffnet die Datei /boot/boot.readme
der VM entweder in vi
oder im Editor der durch die Umgebungsvariable EDITOR
festgelegt ist.
virt-rescue
stellt eine Rettungs-Shell bzw. ein Rettungssystem für interaktive Fixes an einer virtuellen Maschine zur Verfügung. Nach einem kurzen „Bootvorgang“ eines „Rettungs-Systems“ steht eine virtuelle Rettungs-Shell zur Verfügung. Mit dem mount
-Befehl kann dann z.B. die Systemplatte der virtuellen Maschine nach /sysroot
gemountet und anschließend bearbeitet werden.
Resizing eines Platten-Images eine virtuellen Maschine
Hierfür wird virt-resize
verwendet. Dieses Werkzeug verändert aber nie das Original-Plattenimage! Sie müssen deshalb vorab ein neues Plattenimage in der gewünschten Größe anlegen. Damit das neue Plattenimage dann aber direkt in der bereits definierten VM verwendet werden kann, sollte es den gleichen Namen haben wie das bisherige. Deshalb wird zuerst das alte Image umbenannt. Im Fall eines Logical Volumes (LV) als Plattenimage geht das so:
[root@dellserv ~]# lvrename /dev/dataraid/test.serv.private \
/dev/dataraid/test.serv.private.bak
Renamed "test.serv.private" to "test.serv.private.bak" in volume group "dataraid"
Anschließend wird das neue Plattenimage als neues Logical Volume in der gewünschten Größe erstellt. Hier wird dafür der Name des bisherigen Plattenimages (test.serv.private
) verwendet und das neue Volume in der gleichen Volume Group (VG dataraid
) erstellt:
[root@dellserv ~]# lvcreate -L 6GB -n test.serv.private dataraid
Logical volume "test.serv.private" created
Anschließend wird das alte Plattenimage /dev/dataraid/test.serv.private.bak
in das neue Plattenimage /dev/dataraid/test.serv.private
übertragen. Der--expand
-Parameter sorgt in diesem Beispiel dafür, dass der neu zur Verfügung stehende Platz komplett der Partition /dev/sda2
zugeschlagen wird. Da /dev/sda2
außerdem ein Physical Volume der virtuellen Maschine ist, wird dieses (virtuelle) Physical Volume gleich ebenfalls in der Größe verändert.
[root@dellserv ~]# virt-resize --expand /dev/sda2 \
/dev/dataraid/test.serv.private.bak \
/dev/dataraid/test.serv.private
Using CPU model "cpu64-rhel6"
Summary of changes:
/dev/sda1: partition will be left alone
/dev/sda2: partition will be resized from 4.7G to 5.8G
/dev/sda2: content will be expanded using the 'pvresize' method
Copying /dev/sda1 ...
[############################################################################]
Copying /dev/sda2 ...
[############################################################################]
Using CPU model "cpu64-rhel6"
Expanding /dev/sda2 using the 'pvresize' method
Damit wurde das Plattenimage und das in /dev/sda2
enthaltene Physical Volume vergrößert. Das Logical Volume der virtuellen Maschine allerdings noch nicht. Nach dem Booten der virtuellen Maschine kann dies z.B. wie folgt erfolgen:
test:/usr/share/man # lvresize -l +100%FREE /dev/system/root
Extending logical volume root to 5,70 GiB
Logical volume root successfully resized
Eine Kontrolle der Auswirkung im Dateisystem zeigt aber erst keine Änderung an – der neue Platz ist nicht verfügbar.
test:~ # df -h
Dateisystem Größe Benut Verf Ben%% Eingehängt auf
rootfs 4,6G 3,6G 712M 84% /
devtmpfs 493M 116K 493M 1% /dev
tmpfs 499M 4,0K 499M 1% /dev/shm
/dev/mapper/system-root
4,6G 3,6G 712M 84% /
/dev/vda1 152M 29M 115M 21% /boot
Dazu muss erst noch das enthaltene Dateisystem in der Größe geändert werden (siehe dazu auch den LVM Resizing Guide von Tom Hirt).
test:~ # resize2fs -p /dev/mapper/system-root
resize2fs 1.41.14 (22-Dec-2010)
Das Dateisystem auf /dev/mapper/system-root ist auf / eingehängt; Online-Grössenveränderung nötig
old desc_blocks = 1, new_desc_blocks = 1
Führe eine Online-Grössenänderung von /dev/mapper/system-root auf 1494016 (4k) Blöcke durch.
Das Dateisystem auf /dev/mapper/system-root ist nun 1494016 Blöcke groß.
Anschließend ist der freie Platz auch im Dateisystem sicht- und verfügbar.
test:~ # df -h
Dateisystem Größe Benut Verf Ben%% Eingehängt auf
rootfs 5,7G 3,6G 1,8G 68% /
devtmpfs 493M 116K 493M 1% /dev
tmpfs 499M 4,0K 499M 1% /dev/shm
/dev/mapper/system-root
5,7G 3,6G 1,8G 68% /
/dev/vda1 152M 29M 115M 21% /boot
Weitere Werkzeuge im Paket libguestfs-tools
:
virt-inspector
untersucht eine virtuelle Maschine und versucht Details der VM zu erkennen. Dies beinhaltet die Betriebssystem-Version, die Kernel-Version, die installierten Treiber, ob die VM voll-virtualisiert (FV) oder teil-virtualisiert (PV) ist, welche Anwendungen installiert sind und weiteres.virt-list-filesystems
kann dazu verwendet werden die Dateisysteme im Platten-Image einer virtuellen Maschine aufzulisten (z.B. für die Weiterverwendung in Shell-Skripten, … ).virt-list-partitions
kann dazu verwendet werden die Partitionen im Platten-Image einer virtuellen Maschine aufzulisten.virt-make-fs
erlaubt auf Basis einer Dateisammlung oder eines tar-Archivs die Erstellung eines Dateisystems.virt-tar
ist ein Archivierungs-, Backup- und Upload-Werkzeug für das Dateisystem virtueller Maschinen.virt-win-reg
erlaubt es Ihnen in die Windows Registry von virtuellen Windows Maschinen hinein zu sehen.