Ich habe ein CentOS 6.4-Image per KVM auf einem Ubuntu 12.04 amd64-Host installiert. Hier ist das Festplattenlayout von centos.img
# virt-filesystems --long -h --all -a centos.img
Name Type VFS Label MBR Size Parent
/dev/sda1 filesystem ext4 - - 500M -
**/dev/vg_centos/lv_root filesystem ext4 - - 2.5G -**
/dev/vg_centos/lv_swap filesystem swap - - 2.0G -
/dev/vg_centos/lv_root lv - - - 2.5G /dev/vg_centos
/dev/vg_centos/lv_swap lv - - - 2.0G /dev/vg_centos
/dev/vg_centos vg - - - 4.5G -
/dev/sda2 pv - - - 4.5G -
/dev/sda1 partition - - 83 500M /dev/sda
/dev/sda2 partition - - 8e 4.5G /dev/sda
/dev/sda device - - - 5.0G -
Ich möchte /root mehr Speicherplatz hinzufügen, also habe ich versucht, virt-resize zu verwenden. Ich erstelle ein 20-GB-IMG und ändere dann die Größe von /root wie folgt:
# truncate -s 20G centos-new.img
# virt-resize centos.img centos-new.img --expand /dev/sda2 --LV-expand /dev/vg_centos/lv_root
Die Ausgabe scheint in Ordnung zu sein
**********
Setting up initial partition table on centos-new.img ...
Copying /dev/sda1 ...
100% ⟦▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓⟧ 00:00
Copying /dev/sda2 ...
100% ⟦▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓⟧ 00:00
Expanding /dev/sda2 using the 'pvresize' method ...
Expanding /dev/vg_centos/lv_root using the 'resize2fs' method ...
Ich habe das Layout der neuen VM überprüft und es ist ok:
# virt-filesystems --long -h --all -a centos-new.img
Name Type VFS Label MBR Size Parent
/dev/sda1 filesystem ext4 - - 500M -
**/dev/vg_centos/lv_root filesystem ext4 - - 18G -**
/dev/vg_centos/lv_swap filesystem swap - - 2.0G -
/dev/vg_centos/lv_root lv - - - 18G /dev/vg_centos
/dev/vg_centos/lv_swap lv - - - 2.0G /dev/vg_centos
/dev/vg_centos vg - - - 20G -
/dev/sda2 pv - - - 20G -
/dev/sda1 partition - - 83 500M /dev/sda
/dev/sda2 partition - - 8e 20G /dev/sda
/dev/sda device - - - 20G -
Der Größenänderungsvorgang wurde ohne Fehler abgeschlossen. Überprüfen Sie vor dem Löschen der alten Festplatte sorgfältig, ob die Festplatte mit geänderter Größe bootet und ordnungsgemäß funktioniert.
Dann definiere ich eine neue VM auf KVM mit virsh. Ich kopiere die Konfigurationsdatei des aktuellen centos.img in /var/libvirt/qemu und bearbeite diese, dann definiere ich die VM. Alles ist OK, aber ich kann centos-new nicht starten. Hier ist das Protokoll
# virsh start centos-new
error: Failed to start domain centos-new
error: internal error process exited while connecting to monitor: char device redirected to /dev/pts/13
kvm: -drive file=/home/tungns/VirtualBox VMs/centos-new.img,if=none,id=drive-ide0-0-0,format=qcow2: could not open disk image /home/tungns/VirtualBox VMs/centos-new.img: Invalid argument
Hier ist der letzte Teil von/var/log/libvirt/libvirtd.log:
2013-06-07 10:59:33.391+0000: 5553: error : qemuMonitorOpenUnix:295 : failed to connect to monitor socket: No such process
2013-06-07 10:59:33.392+0000: 5553: error : qemuProcessWaitForMonitor:1301 : internal error process exited while connecting to monitor: char device redirected to /dev/pts/13
kvm: -drive file=/home/tungns/VirtualBox VMs/centos-new.img,if=none,id=drive-ide0-0-0,format=qcow2: could not open disk image /home/tungns/VirtualBox VMs/centos-new.img: Invalid argument
und von/var/log/libvirt/qemu/centos-new.log:
2013-06-07 10:59:32.712+0000: starting up
LC_ALL=C PATH=/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/sbin:/sbin:/bin QEMU_AUDIO_DRV=none /usr/bin/kvm -S -M pc-1.0 -enable-kvm -m 1024 -smp 1,sockets=1,cores=1,threads=1 -name centos-new -uuid 1acf632e-cea2-4754-8f36-30799fecc3d0 -nodefconfig -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/centos-new.monitor,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc -no-shutdown -drive file=/home/tungns/VirtualBox VMs/centos-new.img,if=none,id=drive-ide0-0-0,format=qcow2 -device ide-drive,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=1 -drive if=none,media=cdrom,id=drive-ide0-1-0,readonly=on,format=raw -device ide-drive,bus=ide.1,unit=0,drive=drive-ide0-1-0,id=ide0-1-0 -netdev tap,fd=18,id=hostnet0 -device rtl8139,netdev=hostnet0,id=net0,mac=00:16:3e:76:04:23,bus=pci.0,addr=0x3 -chardev pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0 -usb -vnc 0.0.0.0:0 -vga cirrus -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x4
char device redirected to /dev/pts/13
kvm: -drive file=/home/tungns/VirtualBox VMs/centos-new.img,if=none,id=drive-ide0-0-0,format=qcow2: could not open disk image /home/tungns/VirtualBox VMs/centos-new.img: Invalid argument
2013-06-07 10:59:33.392+0000: shutting down
Zwei VMs befinden sich im selben Ordner mit derselben Berechtigung + demselben Besitzer. Das centos.img wird wie gewohnt gebootet.
784460 -rw-r--r-- 1 root root 803405824 Jun 7 16:20 centos.img
5468088 -rw-r--r-- 1 root root 21474836480 Jun 7 17:17 centos-new.img
Ich habe viele Anleitungen wie diese gelesen:http://n40lab.wordpress.com/2013/05/29/resizing-a-qemu-kvm-linux-image-using-virt-resize-in-centos-6-4/und die Anweisungen sind dieselben.
Irgendwelche Vorschläge? Vielen Dank euch allen.
Antwort1
Ich konnte das Problem lösen, indem ich den Truncate-Befehl für qemu-create änderte. Beispiel: Statt
# truncate -s 20G centos-new.img
Verwenden:
# qemu-img create -f qcow2 centos-new.img 20G
Ohne diese Änderung war die Quellfestplatte qcow2, die neue Platte jedoch raw. Dies verwirrte qemu.