Bug 1232192
| Summary: | Virt-v2v gives an error on a blank disk: part_get_parttype: unknown signature, of the output: BYT; | ||||||
|---|---|---|---|---|---|---|---|
| Product: | Red Hat Enterprise Linux 7 | Reporter: | zhoujunqin <juzhou> | ||||
| Component: | libguestfs | Assignee: | Richard W.M. Jones <rjones> | ||||
| Status: | CLOSED ERRATA | QA Contact: | Virtualization Bugs <virt-bugs> | ||||
| Severity: | medium | Docs Contact: | |||||
| Priority: | medium | ||||||
| Version: | 7.2 | CC: | mzhan, ptoscano, tzheng, xiaodwan | ||||
| Target Milestone: | rc | ||||||
| Target Release: | --- | ||||||
| Hardware: | x86_64 | ||||||
| OS: | Unspecified | ||||||
| Whiteboard: | V2V | ||||||
| Fixed In Version: | libguestfs-1.28.1-1.39.el7 | Doc Type: | Bug Fix | ||||
| Doc Text: | Story Points: | --- | |||||
| Clone Of: | Environment: | ||||||
| Last Closed: | 2015-11-19 07:01:55 UTC | Type: | Bug | ||||
| Regression: | --- | Mount Type: | --- | ||||
| Documentation: | --- | CRM: | |||||
| Verified Versions: | Category: | --- | |||||
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||
| Cloudforms Team: | --- | Target Upstream Version: | |||||
| Embargoed: | |||||||
| Attachments: |
|
||||||
The bug is that virt-v2v chokes on a blank disk. Here's an
easier way to reproduce it that doesn't require root or VMware:
$ virt-builder centos-6
$ rm -f blank.img
$ truncate -s 1G blank.img
Put the following XML into a file called 'test.xml':
<domain type='kvm'>
<name>test</name>
<memory>1048576</memory>
<vcpu>2</vcpu>
<os>
<type>hvm</type>
<boot dev='hd'/>
</os>
<features>
<acpi/>
<apic/>
<pae/>
</features>
<devices>
<disk type='file' device='disk'>
<driver name='qemu' type='raw'/>
<source file='centos-6.img'/>
<target dev='hda' bus='ide'/>
</disk>
<disk type='file' device='disk'>
<driver name='qemu' type='raw'/>
<source file='blank.img'/>
<target dev='hdb' bus='ide'/>
</disk>
<interface type='network'>
<mac address='52:54:00:01:02:03'/>
<source network='default'/>
<model type='rtl8139'/>
</interface>
</devices>
</domain>
Then run virt-v2v:
$ virt-v2v -i libvirtxml test.xml -o null
[ 0.0] Opening the source -i libvirtxml test.xml
[ 0.0] Creating an overlay to protect the source from being modified
[ 0.6] Opening the overlay
[ 11.7] Initializing the target -o null
[ 11.7] Inspecting the overlay
virt-v2v: error: libguestfs error: part_get_parttype: unknown signature,
of the output:
BYT;
If reporting bugs, run virt-v2v with debugging enabled and include the
complete output:
virt-v2v -v -x [...]
The reason the error message is oddly corrupted, is because of a further and unrelated bug in parted. I filed that separately (bug 1232241). Upstream fix: https://github.com/libguestfs/libguestfs/commit/4c73d1d4f142c6f6211c963beea68773e11fd3ef I can reproduce this issue with old package in a simple way:
virt-v2v-1.28.1-1.38.el7.x86_64
libguestfs-1.28.1-1.38.el7.x86_64
libvirt-1.2.16-1.el7.x86_64
Steps to reproduce:
1. On you local host, there is a health guest.
# virsh list --all
Id Name State
----------------------------------------------------
- rhel6.7-snap5-clone1 shut off
2. Create a empty disk and add it to this guest.
# truncate -s 1G /tmp/blank.img
# virsh dumpxml rhel6.7-snap5-clone1
...
<disk type='file' device='disk'>
<driver name='qemu' type='raw'/>
<source file='/var/lib/libvirt/images/rhel6.7-snap5-clone1.img'/>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
</disk>
<disk type='file' device='disk'>
<driver name='qemu' type='raw'/>
<source file='/tmp/blank.img'/>
<target dev='vdb' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/>
</disk>
...
3. Save guest xml file then undefine guest.
# virsh dumpxml rhel6.7-snap5-clone1 >rhel6.7-snap5-clone1.xml
# virsh undefine rhel6.7-snap5-clone1
4. Run virt-v2v cmd:
# virt-v2v -i libvirtxml rhel6.7-snap5-clone1.xml -o null
[ 0.0] Opening the source -i libvirtxml rhel6.7-snap5-clone1.xml
[ 0.0] Creating an overlay to protect the source from being modified
[ 1.0] Opening the overlay
[ 163.0] Initializing the target -o null
[ 163.0] Inspecting the overlay
virt-v2v: error: libguestfs error: part_get_parttype: unknown signature,
of the output:
BYT;
If reporting bugs, run virt-v2v with debugging enabled and include the
complete output:
virt-v2v -v -x [...]
Then try to verify this bug with new build:
virt-v2v-1.28.1-1.40.el7.x86_64
libguestfs-1.28.1-1.40.el7.x86_64
libvirt-1.2.16-1.el7.x86_64
Steps as above:
1.
# virt-v2v -i libvirtxml rhel6.7-snap5-clone1.xml -o null
[ 0.0] Opening the source -i libvirtxml rhel6.7-snap5-clone1.xml
[ 0.0] Creating an overlay to protect the source from being modified
[ 0.0] Opening the overlay
[ 107.0] Initializing the target -o null
[ 107.0] Inspecting the overlay
[ 118.0] Checking for sufficient free disk space in the guest
[ 118.0] Estimating space required on target for each disk
[ 118.0] Converting Red Hat Enterprise Linux Server release 6.7 Beta (Santiago) to run on KVM
virt-v2v: This guest has virtio drivers installed.
[ 161.0] Mapping filesystem data to avoid copying unused and blank areas
[ 161.0] Closing the overlay
[ 161.0] Copying disk 1/2 to /var/tmp/null.tp85vi/sda (raw)
(100.00/100%)
[ 235.0] Copying disk 2/2 to /var/tmp/null.tp85vi/sdb (raw)
(100.00/100%)
[ 237.0] Creating output metadata
[ 237.0] Finishing off
2. Always test again with guest on Comment 0:
# virt-v2v -ic vpx://root.72.112/data/10.66.72.49/?no_verify=1 test-juzhou --password-file /tmp/passwd2
[ 0.0] Opening the source -i libvirt -ic vpx://root.72.112/data/10.66.72.49/?no_verify=1 test-juzhou
[ 1.0] Creating an overlay to protect the source from being modified
[ 2.0] Opening the overlay
[ 106.0] Initializing the target -o libvirt -os default
[ 106.0] Inspecting the overlay
[ 163.0] Checking for sufficient free disk space in the guest
[ 163.0] Estimating space required on target for each disk
[ 163.0] Converting Red Hat Enterprise Linux Server release 6.6 (Santiago) to run on KVM
virt-v2v: This guest has virtio drivers installed.
[ 530.0] Mapping filesystem data to avoid copying unused and blank areas
[ 532.0] Closing the overlay
[ 532.0] Copying disk 1/2 to /var/lib/libvirt/images/test-juzhou-sda (raw)
(100.00/100%)
[ 598.0] Copying disk 2/2 to /var/lib/libvirt/images/test-juzhou-sdb (raw)
(100.00/100%)
[ 618.0] Creating output metadata
Pool default refreshed
Domain test-juzhou defined from /tmp/v2vlibvirt03b511.xml
[ 620.0] Finishing off
Since virt-v2v can convert guest with no error, move this bug from ON_QA to VERIFIED.
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://rhn.redhat.com/errata/RHBA-2015-2183.html |
Created attachment 1039343 [details] virt-v2v debug info Description of problem: Virt-v2v failed to convert Esx guest with 2 disks configured Version-Release number of selected component (if applicable): libvirt-1.2.16-1.el7.x86_64 libguestfs-1.28.1-1.38.el7.x86_64 virt-v2v-1.28.1-1.38.el7.x86_64 How reproducible: 100% Steps to Reproduce: 1. Prepare a health guest on Esx server, and add another hard disk for it: # virsh -c vpx://root.72.112/data/10.66.72.49/?no_verify=1 dumpxml test-juzhou Enter root's password for 10.66.72.112: ... <disk type='file' device='disk'> <source file='[datastore1] test-juzhou/test-juzhou.vmdk'/> <target dev='sda' bus='scsi'/> <address type='drive' controller='0' bus='0' target='0' unit='0'/> </disk> <disk type='file' device='disk'> <source file='[datastore1] test-juzhou/test-juzhou_1.vmdk'/> <target dev='sdb' bus='scsi'/> <address type='drive' controller='0' bus='0' target='0' unit='1'/> </disk> ... 2. Use virt-v2v convert this guest to local kvm host: # virt-v2v -ic vpx://root.72.112/data/10.66.72.49/?no_verify=1 test-juzhou --password-file /tmp/passwd2 [ 0.0] Opening the source -i libvirt -ic vpx://root.72.112/data/10.66.72.49/?no_verify=1 test-juzhou [ 1.0] Creating an overlay to protect the source from being modified [ 2.0] Opening the overlay [ 201.0] Initializing the target -o libvirt -os default [ 201.0] Inspecting the overlay virt-v2v: error: libguestfs error: part_get_parttype: unknown signature, of the output: BYT; If reporting bugs, run virt-v2v with debugging enabled and include the complete output: virt-v2v -v -x [...] Actual results: Convert guest failed as above. Expected results: Can convert guest to local kvm successfully. Additional info: I will attach virt-v2v debug info.