Virtualisierung bietet beim Management von IT-Umgebungen eine Reihe von Vorteilen. Richtig eingesetzt, vereinfacht sich die Bereitstellung neuer Server und Dienste, das Backup und Disaster Recovery im Fehlerfall. Auch Lastverteilung ist je nach Service mit virtuellen Maschinen einfacher umzusetzen als mit physischer Hardware.
Für Redundanz und Lastverteilung bedarf es aber mehrerer VM-Hosts, die Zugriff auf Massenspeicher im Netz besitzen, auf denen die virtuellen Disks der VMs liegen. Der Linux-Hypervisor KVM bietet dazu einige Optionen, etwa iSCSI, Samba-Shares oder NFS. Letzteres ist eine gute Option, den aktuellen NFS-Versionen sind zuverlässig, einfach aufzusetzen und verbreitet. So bieten beispielsweise auch Netapp-Filer das NFS-Protokoll.
Die Libvirt übernimmt selbständig das Mounten eines NFS-Share, wenn sie entsprechend konfiguriert ist. Dazu ist es zunächst nötig, einen Storage-Pool zu definieren, beispielsweise mit dem Commandline-Tool "virsh". Das wiederum benötigt eine XML-Datei, die Ort und Format des Storage bestimmt. Ein Beispiel dafür sieht so aus:
<pool type='netfs'> <name>virtimages</name> <source> <host name='10.0.0.20'/> <dir path='/nfs'/> <format type='nfs'/> </source> <target> <path>/virtimages</path> <permissions> <mode>0755</mode> <owner>-1</owner> <group>-1</group> </permissions> </target> </pool>
Mit dieser XML-Datei, als "virtimages.xml" gespeichert, lässt sich ein Storage-Pool mit dem Namen "virtimages" definieren:
virsh pool-define virtimages.xml
Der folgende Befehl legt fest, dass der Storage-Pool automatisch startet:
virsh pool-autostart virtimages
Je nach Linux-Distribution sind noch die Eigentümer und Rechte der Dateien anzupassen. Wer SELinux mit Red-Hat und Co verwendet, kann eine spezielle SEBool-Einstellung verwenden, die den Zugriff ermöglicht:
setsebool virt_use_nfs 1
Wer experimentierfreudig ist, kann die Storage-Backends für die verteilten Dateisysteme GlusterFS , RADOS (Ceph) , Sheepdog ausprobieren, die Libvirt ebenfalls unterstützt.