Virtuelle Maschinenverwaltung - VMs lassen sich nicht starten oder importieren

Ich wollte von VirtualBox zum virt-manager wechseln, bekomme die Anwendung aber nicht zum Laufen.

Ich bin nach dieser Anleitung vorgegangen.

Der Ordner mit den VMs liegt auf einer zweiten Festplatte und aus irgendeinem Grund mag das der virt-manager so gar nicht. Ich habe noch einen alten Backup-Rechner auf dem auch Manjaro installiert ist und hier gibt es keinerleit Probleme, hier liegen die VMs aber auf der Systemplatte.

Mein User ist in den richten Gruppen enthalten:

Versuche ich nun eine bestehende VM zu importieren oder eine neue anzulegen, kommt es zu folgender Meldung:

Ich habe schon im Netz nachgeschaut und bin auf folgenden Post gestoßen, kann damit aber nicht wirklich was anfangen und bräuchte hier etwas Unterstützung was und wo genau hier etwas zu machen ist.

Vielleicht kennt ja auch jemand von euch eine bessere Lösung.

ls -hl /run/media/blabla...
um nach dem und den Rechten zu schauen

aber sehen kann man sie ja offenbar - Du hast sie ja gesucht, gefunden und ausgewählt

Vielleicht hilft das:

Virt-manager - ArchWiki

Abschnitt 2.1

Oder die VM “von Hand” an die richtige Stelle kopieren?

1 Like

Lass die Finger von temporären Mounts in /run/media, das ist gut für USB-Sticks aber nicht für interne Datenträger.

Mounte die Partition mit einem Systemd-Mount oder traditionell mit der fstab.

Es versteht sich von selbst, aber zur Sicherheit, Libvirt benötigt ein natives Linux Dateisystem für die Images. Wenn deine zweite Festplatte mit NTFS oder ähnlichem formatiert ist, klappt das auch nicht, fast egal was du macht.

1 Like

Ich dachte er wollte die VM nur importieren - das hat fĂĽr mich impliziert, daĂź die .qcow2 Datei an die richtige Stelle verfrachtet wird.
Ist wohl nicht so.
Ich hab auf jeden Fall schon VM’s importiert, deren Dateien in meinem $HOME lagen - oder auf einem kurzfristig angesteckten Datenträger (Backup).

1 Like

The issue is with the location of your virtual harddisk the .qcow2 file.

When creating a virtual machine by importing a .qcow2 the virtual disk is used as-is, it is not moved or copied anywhere - you need to manually place it in the virtual machine image storage pool.

Because your /run tree is volatile - it on exist in RAM - it is recreated on every run.

Virtual disks is default stored in /var/lib/libvirt/images so I suggest you copy the file to that location (use sudo cp <name>.qcow2 /var/lib/libvirt/images).

It is possible to maintain libraries - custom storage locations - maintained by accessing the properties of QEMU/KVM entry in Virtual Machine Manager. Rightclick → Details or double-click the entry → Storage tab.

Maschinelle Ăśbersetzung

Das Problem liegt am Speicherort Ihrer virtuellen Festplatte, der Datei „.qcow2“.

Beim Erstellen einer virtuellen Maschine durch Importieren einer „.qcow2“ wird die virtuelle Festplatte so wie sie ist verwendet, sie wird nirgendwo verschoben oder kopiert – Sie müssen sie manuell im Bildspeicherpool der virtuellen Maschine platzieren.

Da Ihr „/run“-Baum volatil ist – er existiert im RAM – wird er bei jedem Lauf neu erstellt.

Virtuelle Datenträger werden standardmäßig in „/var/lib/libvirt/images“ gespeichert, daher schlage ich vor, dass Sie die Datei an diesen Speicherort kopieren (verwenden Sie „sudo cp .qcow2/var/lib/libvirt/images“).

Es ist möglich, Bibliotheken – benutzerdefinierte Speicherorte – zu verwalten, indem Sie auf die Eigenschaften des QEMU/KVM-Eintrags im Virtual Machine Manager zugreifen. Klicken Sie mit der rechten Maustaste auf → Details oder doppelklicken Sie auf den Eintrag → Registerkarte „Speicher“.

Screenshots



1 Like

Danke, ich werde das erstmal in einer VM nachstellen da meine SSD mit LUKS verschlüsselt ist, nicht dass ich mir da noch was total vermurkse. Wen es noch interessiert, in diesem Video hier wird sehr gut erklärt, wie man eine zweite Festplatte die verschlüsselt ist, in die fstab einträgt und autom. beim Booten freitschaltet und einhängt.

Ich wĂĽrde das hier machen:

Es sei denn, Du willst jedesmal die externe Platte anstecken, um die VM nutzen zu können.

Man kann auch (problemlos) weitere storage pools definieren und die VM’s dann dort “lagern”.
Ich hatte z.B. ein Verzeichnis in $HOME angelegt und das als weiteren storage pool in den Einstellungen von virt-manager definiert.
Warum?
Weil ich eine separate $HOME Partition hatte auf der fast der gesamte Platz war -
der Rest des Systems (einschlieĂźlich des Standard-Speicherortes /var/lib/libvirt/images)
war einfach nicht groĂź genug (nur etwa 20 GB),
um dort mehrere je 20 GB bis 50 GB große Virtuelle Maschinen ablegen zu können.

Die .qcow2 Datei einmal an einen Ort kopieren, der als storage pool in virt-manager definiert ist und wo genug Platz ist - fertig.

So hatte ich das auch gemacht, also einen zweiten Storage Pool angelegt, da meine zweite interne SSD einfach viel größer ist als meine relativ kleine NVME mit 240GB. Hierbei sind dann halt die Probleme mit der Berechtigung (ISO und .qcow2 Dateien) aufgetreten.

Installation konnte nicht fertiggestellt werden: «Cannot access storage file '/run/media/test/DATEN/VMs_und_ISOs/VMs/Win11Light_SSD.qcow2' (as uid:955, gid:955): Keine Berechtigung»

Traceback (most recent call last):
  File "/usr/share/virt-manager/virtManager/asyncjob.py", line 67, in cb_wrapper
    callback(asyncjob, *args, **kwargs)
    ~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/share/virt-manager/virtManager/createvm.py", line 1969, in _do_async_install
    installer.start_install(guest, meter=meter)
    ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^
  File "/usr/share/virt-manager/virtinst/install/installer.py", line 722, in start_install
    domain = self._create_guest(guest, meter, initial_xml, final_xml, doboot, transient)
  File "/usr/share/virt-manager/virtinst/install/installer.py", line 664, in _create_guest
    domain = self.conn.createXML(initial_xml or final_xml, 0)
  File "/usr/lib/python3.13/site-packages/libvirt.py", line 4594, in createXML
    raise libvirtError('virDomainCreateXML() failed')
libvirt.libvirtError: Cannot access storage file '/run/media/test/DATEN/VMs_und_ISOs/VMs/Win11Light_SSD.qcow2' (as uid:955, gid:955): Keine Berechtigung

Ich habe jetzt erstmal meine beiden virtuellen Testmaschinen unter /home/test/VMs_und_ISOs/VMs auf der kleinen NVME erstellt, dort gibt es keine Probleme mit fehlenden Berechtigungen.

→ [root tip] [How To] Use systemd to mount ANY device
→ [root tip] [How To] systemd mount unit samples

It appears you have a need to store your virtual machine images on a removable disk, am I correct in the assumption?

If yes, then - to avoid the error message about the volatile path /run/.... - I recommend creating two systemd mount units to handle mounting the device on a static mount file system folder.

The units will serve the function of defining the folder to use for mounting and mount only when accessing the folder.

Es scheint, dass Sie die Bilder Ihrer virtuellen Maschine auf einer Wechseldiskette speichern mĂĽssen. Liege ich mit meiner Annahme richtig?

Wenn ja, dann - um die Fehlermeldung über den flüchtigen Pfad /run/... zu vermeiden - Ich empfehle die Erstellung von zwei systemd-Mount-Einheiten, um die Montage des Geräts in einem Systemordner mit statischer Mount-Datei zu übernehmen.

Die Einheiten dienen dazu, den fĂĽr die Montage zu verwendenden Ordner zu definieren und nur beim Zugriff auf den Ordner zu mounten.

Das habe ich übersehen – als Däne sollte ich besser Deutsch können, bin es aber nicht – Sie verwenden keine externe Festplatte, sondern eine interne.

Das macht es einfacher - erstellen Sie einen Eintrag in fstab, der auf einen festen Ordner verweist.

Wenn der Ordner `/var/lib/libvirt/images` leer ist

Berechtigungen fĂĽr den Ordner festlegen

sudo chown root:$USER /var/lib/libvirt/images
sudo chmod g+w /var/lib/libvirt/images

Legen Sie eine Beschriftung auf der Partition fest – Beispiel /dev/sda1

sudo e2label /dev/sda1 qemu_libvirt

FĂĽgen Sie die Zeile hinzu zu /etc/fstab

LABEL=qemu_libvirt   /var/lib/libvirt/images   ext4    defaults,rw    0 1 

Dann lauf

sudo mount -a
Wenn der Ordner `/var/lib/libvirt/images` nicht leer ist
sudo mkdir /a/qemu_libvirt

Berechtigungen fĂĽr den Ordner festlegen

sudo chown root:$USER /a/qemu_libvirt
sudo chmod g+w /a/qemu_libvirt

Legen Sie eine Beschriftung auf der Partition fest – Beispiel /dev/sda1

sudo e2label /dev/sda1 qemu_libvirt

FĂĽgen Sie die Zeile hinzu zu /etc/fstab

LABEL=qemu_libvirt   /a/qemu_libvirt   ext4    defaults,rw    0 1

Dann lauf

sudo mount -a
Anleitung für abnehmbares Gerät

Erstellen Sie zunächst den Ordner

sudo mkdir -p /a/qemu_libvirt

Then set permissions on the folder
Legen Sie dann Berechtigungen fĂĽr den Ordner fest

sudo chown root:$USER /a/qemu_libvirt
sudo chmod g+w /a/qemu_libvirt

Attach your removable disk to the system, locate the device and set a file system label. Using a unique label will help when writing the mount unit targeting the partition, as it is easier when you have a name instead of the UUID.

In the example the device is /dev/sdc1 and the disk is already labelled.

Schließen Sie Ihre Wechseldatenträger an das System an, lokalisieren Sie das Gerät und legen Sie eine Dateisystembezeichnung fest. Die Verwendung einer eindeutigen Beschriftung ist beim Schreiben der Mount-Einheit hilfreich, die auf die Partition abzielt, da es einfacher ist, wenn Sie einen Namen anstelle der UUID haben.

Im Beispiel ist das Gerät /dev/sdc1 und die Festplatte ist bereits beschriftet.

 $ lsblk -f
...
sdc                                                                                       
└─sdc1      ext4   1.0   seagate-usb  b925148a-0729-447a-ad95-4d9e27dcb442 
...

To set a name for a partition formatted with ext (continuing the <example)

So legen Sie einen Namen fĂĽr eine mit ext formatierte Partition fest (Fortsetzung des Beispiels)

sudo e2label /dev/sdc1 qemu_libvirt

Listing the device again
Das Gerät erneut auflisten

 $ lsblk -f
...
sdc                                                                                       
└─sdc1      ext4   1.0   qemu_libvirt b925148a-0729-447a-ad95-4d9e27dcb442 
...

Then proceed to create the units controlling (continue with the example, using the qemu-libvirt label) the device

Erstellen Sie dann die Einheiten, die das Gerät steuern (fahren Sie mit dem Beispiel fort und verwenden Sie das Label „qemu-libvirt“)

  1. Mount-Einheit
    Create a new file at /etc/systemd/system with the name a-qemu_libvirt.mount and paste the following content and save the file.
    Erstellen Sie unter /etc/systemd/system eine neue Datei mit dem Namen a-qemu_libvirt.mount, fĂĽgen Sie den folgenden Inhalt ein und speichern Sie die Datei.

    [Unit]
    Description=Virtual Machine Images
    
    [Mount]
    What=/dev/disk/by-partlabel/qemu_libvirt
    Where=/a/qemu_libvirt
    Type=ext4
    Options=defaults,rw,noatime
    
    [Install]
    WantedBy=multi-user.target
    
    
  2. Automount-Einheit
    Create a new file at /etc/systemd/system with the name a-qemy_libvirt.automount and past the following content and save the file
    Erstellen Sie eine neue Datei unter /etc/systemd/system mit dem Namen a-qemy_libvirt.automount und fĂĽgen Sie den folgenden Inhalt ein und speichern Sie die Datei

    [Unit]
    Description=Virtual Machine Images
    ConditionPathExists=/a/qemu_libvirt
    
    [Automount]
    Where=/a/qemu_libvirt
    TimeoutIdleSec=3600
    
    [Install]
    WantedBy=multi-user.target
    
    
  3. Aktivieren Sie nur die Automount-Einheit

    sudo systemctl enable --now a-qemu_libvirt.automount
    

Attach your disk and use the file manager to navigate to the folder, if you did it right, you should see the content of your removable disk.

With this in place, keep the disk attached and open the Virtual Machine Manager application, and navigate to the QEMU/KVM Storage tab as described above
Hängen Sie Ihre Festplatte an und navigieren Sie mit dem Dateimanager zum Ordner. Wenn Sie es richtig gemacht haben, sollten Sie den Inhalt Ihrer Wechselfestplatte sehen.

Halten Sie die Festplatte angeschlossen, öffnen Sie die Anwendung Virtual Machine Manager und navigieren Sie wie oben beschrieben zur Registerkarte QEMU/KVM Storage

Registerkarte „Speicher“ – klicken Sie auf die Schaltfläche „Pool hinzufügen“

Continuing the example
Fortsetzung des Beispiels

Erstellen Sie einen neuen Speicherpool

- Name the pool **removable pool** or **qemu libvirt pool** something memorable - Set the type to be **dir: Filesystem Directory** - Set the target path to your mount folder **`/a/qemu_libvirt`**

Then click the Finish button

  • Nennen Sie den Pool entfernbarer Pool oder qemu libvirt Pool etwas Einprägsames
  • Legen Sie den Typ auf dir: Dateisystemverzeichnis fest
  • Legen Sie den Zielpfad zu Ihrem Mount-Ordner fest /a/qemu_libvirt

Klicken Sie dann auf die Schaltfläche Fertigstellen

Create a new virtual machine by import and point the process to use the newly created pool and select the relevant qcow2 image from that pool.

Erstellen Sie eine neue virtuelle Maschine, indem Sie importieren und den Prozess so ausrichten, dass er den neu erstellten Pool verwendet und das entsprechende „qcow2“-Bild aus diesem Pool auswählt.

1 Like

Warum kopierst Du nicht die .qcow2 Datei von der externen Platte
in Deinen Storage Pool?
Dahin, wo sie hingehört.
Von wo aus Du sie ja wohl auch später benutzen willst.
Wo es keine Probleme mit Berechtigungen geben wird …

Von da aus kannst Du sie dann “importieren”.

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.