Table of Contents

Ziele - Vorteile - scheinbare Vorteile

  • Server-Konsolidierung ist eher interessant für Betriebsysteme, die einzelne Anwendungen nicht vernünftig trennen können - bessere Lösung unter UNIX sind hier IMHO BSD-Jails oder neue Virtualisierungsansätze wie VServer oder OpenVZ
  • Es ist fürs Load-Balancing meistens einfacher, kleine Serverimages zwischen verschiedenen Maschinen zu verschieben als Services auf anderen Computern neu zu konfigurieren; wenn man die ConfigurationEngine konsequent benutzt, hat man hier aber keinen großer Vorteil.
  • Backup: es ist einfacher, ein Image mit einer komplizierten Serverinstallation zu sichern und auf einen 2. Server zu schieben, als ein bare metal recovery zu machen.
  • Testinstallation sind einfacher

allgemeine Informationen

Server-Virtualisierung

Um die öffentlich zugänglichen Services in virtuellen Servern unterzubringen, eignen sich Vitualisierungslösungen auf Basis von Containern wie VServer und OpenVZ wegen des niedrigen zusätzlichen Resourcenverbrauchs besonders gut. Leider sind diese beiden Varianten derzeit nicht vollständig in den Kernel integriert - lguest und KVM dagegen schon.

Wichtig ist am Institut der effiziente Zugriff auf das AndrewFileSystem als Client - AFS-Serverfunktionen sind vorläufig nicht notwendig - eventuell aber die Verwendung als AFS Datenbank Server

Kandidaten für virtualisierte Services:

  • Web
  • Mail
  • Drucken / CUPS
  • Matlab-Tutor
  • AFS Datenbank Server

Eher ungeeignet sind vermutlich:

  • AFS File Server: braucht möglichst direkten Zugang zur Hardware (vor allem große Partition der Festplattn), im Fehlerfall relativ leicht neu zu installieren
  • Kerberos: sollte aus Sicherheitsüberlegungen weiter mit dedizierten KerberosServern laufen.

Container

VServer

Linux-Vserver (http://linux-vserver.org/) virtuellen Maschine, ähnlich den BSD-Jails. Es git seit längerem Kein release für aktuelle Kernel (nur “experimental patches”) und wird in Debian nach Squeeze vermutlich nicht mehr unterstützt werden.

FreeVPS

Fork von Vserver - Vorteile unklar? Diese Projekt scheint eingestellt zu sein.

volle Virtualisierung

Lguest: The Simple x86 Hypervisor

  • im Kernel integriert

KVM

KVM ist bereits komplett im Linux-Kernel integriert; das Gehampel mit zusätzlichen Patches, die immer veraltet und für aktuelle Kernel nicht verfügbar sind entfällt daher.

Aber es funktioniert und wird durch libvirt aus lenny-backports gut unterstützt.

Desktop-Virtualisierung

  • VirtualBox (http://www.virtualbox.org/) funktioniert, ist aber mit etwas Zusatzaufwand wegen der notwendigen Kernelpatches verbunden.

Aus technischen Gründen (Aufwand f. Support) weniger interessant sind:


Arbeit mit Virtuellen Maschinen

  • in der virtuellen Maschine sollte acpid installiert sein, damit libvirt den Rechner stoppen kann
  • beim Clonen einer VM auf die Datei /etc/udev/rules.d/70-persistent-net.rules achten, sonst funktioniert das Netz nicht :)

Vergrößern von Partitionen

guestfish

nicht getestet, benötigt meiner Meinung nach zu viel Handarbeit

virt-resize

Funktioniert nicht mit Debian Squeeze, benötigt zu viele Backports, aber auf einem neueren Rechner wär das möglich.

Funktioniert (hier) nicht mit Debian Jessie:

# virt-filesystems  --long -h --all -a faepkrb2.img
libguestfs: error: appliance closed the connection unexpectedly.
This usually means the libguestfs appliance crashed.
See http://libguestfs.org/guestfs-faq.1.html#debugging-libguestfs
for information about how to debug libguestfs and report bugs.
libguestfs: error: guestfs_launch failed.
This usually means the libguestfs appliance failed to start or crashed.
See http://libguestfs.org/guestfs-faq.1.html#debugging-libguestfs
or run 'libguestfs-test-tool' and post the *complete* output into a
bug report or message to the libguestfs mailing list.

# libguestfs-test-tool
...
supermin: waiting another 262144000000 ns for /sys/block/sdb/dev to appear
supermin: no ext2 root device found
Please include FULL verbose output in your bug report.
[  524.602180] Kernel panic - not syncing: Attempted to kill init! exitcode=0x000001
...

Ich vermute, daß liegt an dem selbst kompilierten Kernel 4.1.xx.

manuell mit truncate und resize2fs

truncate --size=+1G <imagefile> 
  • Partitionen bearbeiten. (parted/gparted direkt am Host gerufen funktioniert nicht, weil ext3 wegen des Journals nicht bearbeitet werden kann, aber eventuell kan man das mit kpartx und tune2fs was machen)

Aber das sollte funktionieren:

  • losetup -f (we will assume it returns /dev/loop0)
  • losetup /dev/loop0 ./ubuntu-dev.img
  • fdisk /dev/loop0,
  • then use fdisk to delete and re-create your partitions, take care to ensure the partition numbers are the same and that the boot partition starts on the same block number, also remember to mark your swap partition as swap (type 82) and make the boot partition bootable.
  • kpartx -av /dev/loop0
  • e2fsck -f /dev/mapper/loop0p1 (assuming this is the partition we are extending)
  • resize2fs /dev/mapper/loop0p1 (assuming this is the partition we are extending)
  • mkswap /dev/mapper/loop0p2 (assuming you moved the swap partition which you probably did to make space)
  • mount /dev/mapper/loop0p1 /mnt (to check that everything is okay before booting)
  • df -h mnt
  • umount /mnt
  • kpartx -dv /dev/loop0
  • losetup -d /dev/loop0
  • boot up and correct the UUIDs or just remove them and reference the swap and other partition(s) directly. I just removed the UUID markers assuming that since the disk is already virtualised through KVM then I would use this type of technique to keep the partition names consistent.

Funktioniert im ersten Anlauf ebenfalls nicht, weil die vorhandene Partition bei Sektor 63 beginnt und fdisk den Start auf Sektoren >= 2018 legen will.

255 heads, 63 sectors/track, 391 cylinders, total 6291456 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: 0x0008883a

      Device Boot      Start         End      Blocks   Id  System
/dev/loop0p1   *          63     1863539      931738+  83  Linux

Aber es funktioniert mit “fdisk -c=dos”:

IMAGE=faepafs3.img
cd /var/lib/libvirt/images/
cp $IMAGE $IMAGE.BAK
truncate --size=+1G $IMAGE
ls -lh
losetup -f                            # we will assume it returns /dev/loop0
losetup /dev/loop0  $IMAGE
fdisk -c=dos /dev/loop0
kpartx -av /dev/loop0
e2fsck -f /dev/mapper/loop0p1
resize2fs /dev/mapper/loop0p1
mount /dev/mapper/loop0p1 /mnt        # check!
df -h /mnt/; ls -l /mnt/
umount /mnt
kpartx -dv /dev/loop0
losetup -d /dev/loop0
chown libvirt-qemu.libvirt-qemu $IMAGE

Author: Andreas Hirczy

Created: 2017-11-08 Mit 18:19

Validate XHTML 1.0