Derzeit werden Images in Unterverzeichnissen nicht angezeigt. Schön wäre es, wenn sämtliche Image Dateien angezeigt werden, inkl. Pfad, wodurch eine bessere Strukturierung möglich ist.
Das wird momentan nicht von dem FS/Dir Storage Backend in libvirt (0.8.3) unterstützt: /** * Iterate over the pool's directory and enumerate all disk images * within it. This is non-recursive. */ static int virStorageBackendFileSystemRefresh(virConnectPtr conn ATTRIBUTE_UNUSED, virStoragePoolObjPtr pool) Das Verzeichnis wird mit readdir ausgelesen
Das wird gerade bei DVS zum Problem: Die Instanzen sind komplette Verzeichnisse, in denen die Images liegen. Diese werden nach $dvs/desktop/directory=/var/lib/libvirt/images/ kopiert. Beim Anlegen der Instanz überprüft der UVMM, ob das Image bereits existiert. Vorher lagen diese außerhalb jedes Pools unter /var/lib/xen/, jetzt liegen sie in einem Unterverzeichnisses des default-Pools und werden nicht mehr durch conn.storageVolLookupByPath() gefunden. Erst später beim Anlegen tritt dann ein Fehler auf und es wird eine Exception libvirtError().get_error_code() == libvirt.VIR_ERR_NO_STORAGE_VOL geworfen. In svn:component/uvmm/univention-virtual-machine-manager-daemon r19644 existiert zumindest für dieses Problem jetzt ein Work-Around.
(In reply to comment #2) > Das wird gerade bei DVS zum Problem: Die Instanzen sind komplette > Verzeichnisse, in denen die Images liegen. Diese werden nach Müssen die Instanzen denn in eigenen Verzeichnissen liegen?
(In reply to comment #3) > (In reply to comment #2) > > Das wird gerade bei DVS zum Problem: Die Instanzen sind komplette > > Verzeichnisse, in denen die Images liegen. Diese werden nach > > Müssen die Instanzen denn in eigenen Verzeichnissen liegen? Derzeit wird pro DVS-Instanz einfach das Template-Verzeichnis kopiert: Darin können prinzipiell auch mehrere Festplattenimages pro Instanz vorhanden sein. Auch bei CoW werden pro Image 3 Verzeichniseinträge benötigt: 1* Diff-Datei, 1* Symlink auf DeviceMapper-Node, 1* Symlink auf original Master-Imagedatei. Der Inhalt eines Pools wird u.a. innerhalb des UMC-Modules beim Wiederverwenden von Images angezeigt: Derzeit werden Dateien, Symlinks, Character- und Block-Devices, aber keine Unterverzeichnisse angezeigt. Beim Anlegen per 'pool-create-as --name temp --type dir --target "/var/lib/libvirt/images/temp"' führen tote Symlinks zu einem Abbruch des Anlegevorgangs. Das ist damit für nicht-laufenden CoW-Instanzen Problem, da diese Verzeichnisse einen Symlink nach /dev/mapper/* enthalten.
DVS nutzt jetzt eine flache Hierarchie. Es ist fraglich, ob so eine Änderung jemals in libvirt einfließen würde. Vermutlich nicht, da für Unterverzeichnisse eine komplett neue Logik notwendig wird: Parsen von Pfaden, fallabhängig Verzeichnisse oder Dateien erstellen, leere Verzeichnisse löschen, Verzeichnisse traversieren, Symlink-Behandlung, Mount-Point Überschreitung (df ändert sich!)
UVMM überprüft nun vor dem Anlegen eines Images, ob es unter diesem Pfad schon ein Image gibt und führt einen Refresh der Pools durch. Das ist zwar nicht mehr so relevant, weil DVS nicht länger Unterverzeichnisse nutzt, führte aber trotzdem zu einigen Problemen, wenn an UVMM vorbei Images in den Verzeichnissen abgelegt wurden. In 2.4-1 übernommen. svn 21108+21113, univention-virtual-machine-manager-daemon_0.11.0-1 ChangeLog: \item Bei der Verwaltung von Images wurden einige Fehler behoben (\ucsBug{19342}) und Vorbereitungen zur Unterstützung weiterer Image-Formate getroffen (\ucsBug{18765}).
Beim Anlegen von Images wird nun auch überprüft, ob ein Image zwar bereis existiert, aber derzeit von keiner VM verwendet wird. svn21375, univention-virtual-machine-manager-daemon_0.10.11-5.113.201012031247
Verified: Wird beim Erstellen neuer Images geprüft
UCS 2.4-1 wurde veröffentlicht. Sollte der hier beschriebene Bug mit einer neueren Version von UCS erneut auftreten, so sollte der Bug dupliziert werden: "Clone This Bug".