
ストレージ デバイスは次のようにマウントされています。
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/md2 193G 35G 148G 19% /
/dev/md4 492G 73M 466G 1% /mnt
私のKVMイメージは/kvm/vhdd/
パーティション上のにあります/dev/md2
ls -l /kvm/vhdd/wwe.img
-rw------- 1 libvirt-qemu kvm 163611607040 Mar 9 09:12 /kvm/vhdd/wwe.img
/dev/md4
このイメージ パーティション、つまりディレクトリを移動する必要があります/mnt
。
どうすればいいですか?仮想マシンを停止できます。しかし、停止した後は何をすればいいですか? 単に作成するだけですかcp
?それとも構成を編集する必要がありますか?私は
grep -R "/kvm" /etc/
/etc/libvirt/qemu.conf:# "/dev/ptmx", "/dev/kvm", "/dev/kqemu",
/etc/libvirt/storage/autostart/iso.xml: <path>/kvm/iso</path>
/etc/libvirt/storage/autostart/vhdd.xml: <path>/kvm/vhdd</path>
/etc/libvirt/storage/iso.xml: <path>/kvm/iso</path>
/etc/libvirt/storage/vhdd.xml: <path>/kvm/vhdd</path>
/etc/libvirt/qemu/wwe.xml: <emulator>/usr/bin/kvm-spice</emulator>
/etc/libvirt/qemu/wwe.xml: <source file='/kvm/vhdd/wwe.img'/>
/etc/libvirt/qemu/autostart/wwe.xml: <emulator>/usr/bin/kvm-spice</emulator>
/etc/libvirt/qemu/autostart/wwe.xml: <source file='/kvm/vhdd/wwe.img'/>
/etc/default/libvirtd:# Start libvirtd to handle qemu/kvm:
/etc/default/qemu-kvm:# /run/hugepages/kvm
/etc/apparmor.d/libvirt/libvirt-68d2ecf6-4569-49cc-871f-042a42ad1c03.files: "/kvm/vhdd/wwe.img" rwk,
/kvm/vhdd/
構成でこのパスを置き換える必要がありますか? 助けてください。サービスがクラッシュするのではないかと心配です。よろしくお願いします。
答え1
元の VM をバックアップ:
- ヴァーシュがWWEを閉鎖
- virsh リスト --all
- /etc/libvirt/qemu/wwe.xml をコピー /etc/libvirt/qemu/orig-wwe.xml
- cp /kvm/vhdd/wwe.img /kvm/vhdd/orig-wwe.img
VM イメージをパーティション /mnt/kvm に移動します。
mkdir /mnt/kvm
mv /kvm/vhdd/wwe.img /mnt/kvm/wwe.img
XML ファイルを編集: vim /etc/libvirt/qemu/wwe.xml
From: <source file='/kvm/vhdd/wwe.img'/> To: <source file='/mnt/kvm/wwe.img'/>
ヴァーシュがWWEを始める
注記:元のファイルを使用していつでも元の状態に復元できますが、以下は KVM インフラで VM を複製および移動するために使用される別の方法です。
KVM - 利用可能なイメージからゲストを複製:
1-ベースVMを作成してOSをインストールし、ベースVMをシャットダウンします
virsh shutdown basevm
2- XMLファイルをtemplate.xmlにダンプし、そのイメージをtemplate.qcow2にコピーします。
virsh dumpxml basevm > /etc/libvirt/qemu/template.xml
cp /home/kvm/images/basevm.qcow2 /home/kvm/images/template.qcow2
3- template.xmlでディスクソースファイルをtemplate.qcow2に指定します。
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2' cache='none'/>
<source file='/home/kvm/images/template.qcow2'/>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</disk>
4- template.qcow2 で virt-sysprep を実行してイメージをリセットします。たとえば、SSH キーの削除、新しい MAC アドレスの作成、ログ ファイルのクリーンアップなどを行います。
virt-sysprep -a /home/kvm/images/template.qcow2
5- この時点以降、ベース VM は不要になります。使用していない場合は削除してください。
virsh undefine basevm
rm /home/kvm/images/basevm.qcow2
6- テンプレートから新しい VM を複製する: template.xml および template.qcow2
virt-clone --connect qemu:///system --original-xml /etc/libvirt/qemu/template.xml --name server --file /home/kvm/images/template.qcow2
KVM - ゲストを別のホストに移動する:
1- 上記の手順の後、xml とイメージ ファイルを新しいホスト KVM に転送します。
scp /etc/libvirt/qemu/template.xml kvm02:/etc/libvirt/qemu/template.xml
scp /home/kvm/images/template.qcow2 kvm02:/home/kvm/images/template.qcow2
virt-sysprep -a /home/kvm/images/template.qcow2
virsh define /etc/libvirt/qemu/template.xml
virsh start vm
答え2
私の理解では、/kvm/vhdd/wwe.img を /mnt 内のどこか (たとえば /mnt/kvm/vhdd/wwe.img ) に移動する必要があるということでしょうか?
もしそうなら、私はこうします:
仮想マシンを停止し(VM自体のpoweroffまたはその他のコマンドを使用)、virt-manager(またはvirsh)で停止状態になるまで待機します。
画像ファイルを新しい場所に移動する
VM定義内のイメージの場所を変更します:
virt-manager GUIを使用する(VM定義からHDDを削除し、新しい場所から再度追加する)
または、virsh を使用する場合 (VM 名が 'wwe' であると仮定)、例:
~# virsh dumpxml wwe > wwe.xml ~# sed "s[file='/kvm/vhdd/wwe.img'[file='/mnt/kvm/vhdd/wwe.img'[" wwe.xml > wwe_new.xml ~# diff wwe.xml wwe_new.xml
(ファイルの場所の変更のみが差異として表示されます)
~# virsh undefine wwe ~# virsh define wwe_new.xml
VMを再起動します。
答え3
すでに述べたことに加えて、virsh edit
/etc 内の xml ファイルを直接編集するのではなく、 を使用することをお勧めします。このファイル内のコメントには次のように書かれています。
<!--
WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:
virsh edit vmname
or other application using the libvirt API.
-->
実際の手順は次のようになります。
virsh shutdown <vmname>
mv oldpath/image.qcow newpath/image.qcow
virsh edit <vmname>
タグ tag を検索し<source file="...">
、それに応じてパスを変更します。virsh start <vmname>