Wie importiere ich ein Disk-Image in libvirt?


12

Kann jemand die richtige Syntax posten? Ich habe versucht, den Befehl chmod zu verwenden, aber ich mache etwas falsch. Ich versuche nur, eine Centos-ISO-Datei nach / images zu verschieben, um eine Test-VM einzurichten


Können Sie die Befehle veröffentlichen, die Sie ausführen möchten? Und wie lautet die Fehlermeldung?
Eric Carvalho

Antworten:


16

Sie sollten das eigentlich nicht so "tun", da libvirt sich um seine eigenen Volume-Pools kümmert. Verwenden:

size=$(stat -Lc%s centos.iso)
virsh vol-create-as default centos $size --format raw
virsh vol-upload --pool default centos centos.iso

Dadurch wird ein Virsh-Volume erstellt, das centosim Standardpool mit dem Inhalt von aufgerufen wird centos.iso.

Auf diese Weise kümmert sich libvirt selbst um alle erforderlichen Berechtigungen und Eigentumsrechte.


1
Zum ersten Mal habe ich das Forum benutzt. Exzellente Beratung.
Fmoov

2

Ich nehme zwei Dinge an: /var/lib/libvirt/images/ gehört rootund du bist es nicht root. Das ist in Ordnung, aber man muss respektieren, dass das das Problem ist.

Es wäre wahrscheinlich am sinnvollsten, die Datei einfach als root zu kopieren , indem Sie verwenden sudo:

sudo cp my-image /var/lib/libvirt/images/

Alternativ können Sie übernehmen /var/lib/libvirt/images/ :

sudo chown $USER /var/lib/libvirt/images/

Oder (am wenigsten gut) Sie könnten es einfach global beschreibbar machen:

sudo chmod 755 $USER /var/lib/libvirt/images/

Ich würde der Logik folgen, dass es aus einem bestimmten Grund eine Wurzel ist, aber wenn Sie nur herumspielen und dies niemals eine Produktionsmaschine sein wird, müssen Sie wahrscheinlich nicht so vorsichtig sein.


Ich gehe wahrscheinlich mit dem letzten Befehl, da ich diesen verstehe und es sich um eine Testumgebung handelt.
Fmoov

1

Sie können versuchen, es in Nautilus zu tun, geben Sie einfach

sudo -i nautilus

und kopieren Sie danach die Datei wie gewohnt.


Nehme ich an, dass Nautilus geladen ist?
Fmoov

nautilus ist der Standard-Dateimanager für Ubuntu. Ich glaube nicht, dass ich deine Frage wirklich verstehe.
Mihai

2
@ Rat2000 FYI
Oli

1
Oli ja, du hast recht gksudo ist nicht standardmäßig installiert, also habe ich den befehl in sudo -i geändert, das sollte den job machen.
Mihai

1

Ich weiß, dass es ein alter Beitrag ist, aber ich wollte mitteilen, was ich getan habe.

In meinem Fall musste ich ein qcow2-Image in ein Volume importieren. Ich habe jq, qemu-img und und bash verwendet:

# export IMGSIZE=$(qemu-img info --output json /data/myfile.qcow2 | jq -r .[\"virtual-size\"])
# export IMGFMT=$(qemu-img info --output json /data/myfile.qcow2 | jq -r .format)

Listen Sie die Pools auf und wählen Sie den gewünschten aus:

# virsh pool-list --all
 Name                 State      Autostart
-------------------------------------------
 default              active     yes

# export IMGPOOL=default

Erstellen Sie das Volume:

# virsh vol-create-as $IMGPOOL myvolume $IMGSIZE --format $IMGFMT
Vol myvolume created

Und lade das Bild hoch:

# virsh vol-upload --pool $IMGPOOL myvolume /data/myfile.qcow2

Ich weiß nicht, ob Sie qemu-img an virsh weiterleiten können, ähnlich wie 'qemu-img dd ... | virsh vol-upload ... 'aber das wäre praktisch :-)

Vielen Dank an @Robie Basak für seinen Beitrag. Ich habe ihn verwendet, um die obigen Informationen zu schreiben.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.