Created attachment 1074728 [details] Conversion logs Description of problem: Parameter '--no-trim all' doesn't work when converting guest via virt-v2v command Version-Release number of selected component (if applicable): virt-v2v-1.28.1-1.55.el7.x86_64 libvirt-1.2.17-9.el7.x86_64 libguestfs-1.28.1-1.55.el7.x86_64 host:rhel7.2-x64-20150910.2(3.10.0-315.el7.x86_64) How reproducible: 100% Steps to Reproduce: 1. Convert a guest from Xen server to local kvm using parameter '--no-trim all' # virt-v2v -ic xen+ssh://10.66.106.64 -b virbr0 rhel6.7-mxie -on rhel6.7-have-para --no-trim all -of raw [ 0.0] Opening the source -i libvirt -ic xen+ssh://10.66.106.64 rhel6.7-mxie [ 0.0] Creating an overlay to protect the source from being modified [ 1.0] Opening the overlay [ 5.0] Initializing the target -o libvirt -os default [ 5.0] Inspecting the overlay [ 21.0] Checking for sufficient free disk space in the guest [ 21.0] Estimating space required on target for each disk [ 21.0] Converting Red Hat Enterprise Linux Server release 6.7 Beta (Santiago) to run on KVM virt-v2v: This guest has virtio drivers installed. [ 68.0] Closing the overlay [ 69.0] Checking if the guest needs BIOS or UEFI to boot [ 69.0] Copying disk 1/1 to /var/lib/libvirt/images/rhel6.7-have-para-sda (raw) (100.00/100%) [ 314.0] Creating output metadata Pool default refreshed Domain rhel6.7-have-para defined from /tmp/v2vlibvirt5e3fe1.xml [ 314.0] Finishing off 2. Convert a guest from Xen server to local kvm without parameter '--no-trim all' # virt-v2v -ic xen+ssh://10.66.106.64 -b virbr0 rhel6.7-mxie -on rhel6.7-no-para -of raw [ 0.0] Opening the source -i libvirt -ic xen+ssh://10.66.106.64 rhel6.7-mxie [ 2.0] Creating an overlay to protect the source from being modified [ 3.0] Opening the overlay [ 7.0] Initializing the target -o libvirt -os default [ 7.0] Inspecting the overlay [ 24.0] Checking for sufficient free disk space in the guest [ 24.0] Estimating space required on target for each disk [ 24.0] Converting Red Hat Enterprise Linux Server release 6.7 Beta (Santiago) to run on KVM virt-v2v: This guest has virtio drivers installed. [ 71.0] Mapping filesystem data to avoid copying unused and blank areas [ 72.0] Closing the overlay [ 72.0] Checking if the guest needs BIOS or UEFI to boot [ 72.0] Copying disk 1/1 to /var/lib/libvirt/images/rhel6.7-no-para-sda (raw) (100.00/100%) [ 318.0] Creating output metadata Pool default refreshed Domain rhel6.7-no-para defined from /tmp/v2vlibvirt27579d.xml [ 318.0] Finishing off 3. Comparing two guests'disk # ls -lsh rhel6.7-have-para-sda 3.2G -rw-r--r--. 1 root root 5.9G Sep 18 11:25 rhel6.7-have-para-sda # ls -lsh rhel6.7-no-para-sda 3.2G -rw-r--r--. 1 root root 5.9G Sep 18 11:33 rhel6.7-no-para-sda 4. We can find the parameter '--no-trim all' doesn't work when converting guest via virt-v2v command on rhel7.2 Actual results: As above steps Expected results: The guest's disk converted using --no-trim all option is larger than without --no-trim all option. Additional info: Verify With the packages version: virt-v2v-1.28.1-1.18.el7.x86_64 libvirt-1.2.8-16.el7.x86_64 libguestfs-1.28.1-1.18.el7.x86_64 host:rhel7.1-x64(3.10.0-229.el7.x86_64) 1.Convert a guest from Xen server to local kvm using parameter '--no-trim all' # virt-v2v -ic xen+ssh://10.66.106.64 -b virbr0 rhel6.7-mxie -on rhel6.7-have-para --no-trim all -of raw [ 0.0] Opening the source -i libvirt -ic xen+ssh://10.66.106.64 rhel6.7-mxie [ 0.0] Creating an overlay to protect the source from being modified [ 1.0] Opening the overlay [ 5.0] Initializing the target -o libvirt -os default [ 5.0] Inspecting the overlay [ 22.0] Checking for sufficient free disk space in the guest [ 22.0] Estimating space required on target for each disk [ 22.0] Converting Red Hat Enterprise Linux Server release 6.7 Beta (Santiago) to run on KVM virt-v2v: This guest has virtio drivers installed. [ 69.0] Closing the overlay [ 69.0] Copying disk 1/1 to /var/lib/libvirt/images/rhel6.7-have-para-sda (raw) (100.00/100%) [ 259.0] Creating output metadata Pool default refreshed Domain rhel6.7-have-para defined from /tmp/v2vlibvirt7725cc.xml [ 259.0] Finishing off 2.Convert a guest from Xen server to local kvm without parameter '--no-trim all' # virt-v2v -ic xen+ssh://10.66.106.64 -b virbr0 rhel6.7-mxie -on rhel6.7-no-para -of raw [ 0.0] Opening the source -i libvirt -ic xen+ssh://10.66.106.64 rhel6.7-mxie [ 1.0] Creating an overlay to protect the source from being modified [ 1.0] Opening the overlay [ 182.0] Initializing the target -o libvirt -os default [ 182.0] Inspecting the overlay [ 200.0] Checking for sufficient free disk space in the guest [ 200.0] Estimating space required on target for each disk [ 200.0] Converting Red Hat Enterprise Linux Server release 6.7 Beta (Santiago) to run on KVM virt-v2v: This guest has virtio drivers installed. [ 247.0] Mapping filesystem data to avoid copying unused and blank areas [ 248.0] Closing the overlay [ 248.0] Copying disk 1/1 to /var/lib/libvirt/images/rhel6.7-no-para-sda (raw) (100.00/100%) [ 373.0] Creating output metadata Pool default refreshed Domain rhel6.7-no-para defined from /tmp/v2vlibvirt044e66.xml [ 375.0] Finishing off 3. Comparing two guests'disk # ls -lsh rhel6.7-have-para-sda 3.2G -rw-r--r--. 1 root root 5.9G Sep 17 23:13 rhel6.7-have-para-sda # ls -lsh rhel6.7-no-para-sda 2.9G -rw-r--r--. 1 root root 5.9G Sep 17 23:07 rhel6.7-no-para-sda 4. We can find the guest's disk converted using --no-trim all option is larger than without --no-trim all option.
I think you've attached the wrong log files for the rhel7u2 conversions, because: $ grep "virt-v2v: error" * convert guest without parameter --no-trim all on rhel7u2.log:virt-v2v: error: a libvirt domain called 'rhel6.7-no-para' already exists convert guest with parameter --no-trim all on rhel7u2.log:virt-v2v: error: a libvirt domain called 'rhel6.7-have-para' already exists
Created attachment 1074763 [details] new conversion logs
I think the issue is probably this difference between your RHEL 7.1 and RHEL 7.2 test: -libguestfs: qemu version 2.1 +libguestfs: qemu version 1.5 Probably old qemu didn't support discard (or maybe not in all circumstances). I think we need an extra test to make sure that trimming doesn't regress.
(In reply to Richard W.M. Jones from comment #4) > I think the issue is probably this difference between your > RHEL 7.1 and RHEL 7.2 test: > > -libguestfs: qemu version 2.1 > +libguestfs: qemu version 1.5 > > Probably old qemu didn't support discard (or maybe not in all > circumstances). I think we need an extra test to make sure > that trimming doesn't regress. yes, I also think the qemu-kvm version 1.5 is not support parameter"--no-trim all" Verify parameter'--no-trim all' With below packages version virt-v2v-1.28.1-1.55.el7.x86_64 libvirt-1.2.17-9.el7.x86_64 libguestfs-1.28.1-1.55.el7.x86_64 qemu-kvm-rhev-2.3.0-24.el7.x86_64 Host:rhel7.2-x64-20150917.0(3.10.0-316.el7.x86_64) Comparing two guests'disk as below and we can find the guest's disk converted using --no-trim all option is larger than without --no-trim all option. more details pls refer to attachment log: # ls -lsh have-parameter-sda 3.2G -rw-r--r--. 1 root root 5.9G Sep 21 15:48 have-parameter-sda # ls -lsh no-parameter-sda 2.9G -rw-r--r--. 1 root root 5.9G Sep 21 15:42 no-parameter-sda
Created attachment 1075419 [details] conversion logs on qemu-kvm-2.3.0-24.zip
FWIW I've proposed that we remove the --no-trim option entirely in RHEL 7.4. See: https://www.redhat.com/archives/libguestfs/2016-April/msg00178.html
Patch posted: https://www.redhat.com/archives/libguestfs/2016-April/msg00184.html
Try to reproduce the bug with builds virt-v2v-1.28.1-1.55.el7.x86_64 libguestfs-1.28.1-1.55.el7.x86_64 qemu-kvm-1.5.3-104.el7.x86_64 Reproduce steps: 1.Convert a guest from Xen server without parameter '--no-trim all' # virt-v2v -ic xen+ssh://10.73.3.21 -b virbr0 xen-hvm-win7-x86_64 -on no-para -of raw 2.Convert a guest from Xen server with parameter '--no-trim all' # virt-v2v -ic xen+ssh://10.73.3.21 -b virbr0 xen-hvm-win7-x86_64 -on have-para --no-trim all -of raw 3.Comparing two guests'disk as below, different size is about 8M # ls -ls have-para-sda 7979320 -rw-r--r--. 1 root root 10485760000 Jun 23 12:07 have-para-sda # ls -ls no-para-sda 7970748 -rw-r--r--. 1 root root 10485760000 Jun 23 12:10 no-para-sda Try to verify the bug with builds virt-v2v-1.32.5-5.el7.x86_64 libguestfs-1.32.5-5.el7.x86_64 qemu-kvm-1.5.3-113.el7.x86_64 Verify Steps: 1.Convert a guest from Xen server without parameter '--no-trim all' # virt-v2v -ic xen+ssh://10.73.3.21 -b virbr0 xen-hvm-win7-x86_64 -on no-para -of raw 2.Convert a guest from Xen server with parameter '--no-trim all' # virt-v2v -ic xen+ssh://10.73.3.21 -b virbr0 xen-hvm-win7-x86_64 -on have-para --no-trim all -of raw 3.Comparing two guests'disk as below, different size is about 8M # ls -ls no-para-sda 7970720 -rw-r--r--. 1 root root 10485760000 Jun 23 10:18 no-para-sda # ls -ls have-para-sda 7979288 -rw-r--r--. 1 root root 10485760000 Jun 23 10:31 have-para-sda Hi rjones According to above reproduce result and verify result,I didn't find any change between libguestfs-1.32.5-1.el7 and libguestfs-1.28.1-1.55.el7.x86_64 for this bug, I also see the patch https://www.redhat.com/archives/libguestfs/2016-April/msg00184.html said that " We're expecting the image to grow a bit because of the changes made by conversion (I observed growth of about 9MB). That's OK. If it grows by ~ 500 + 100 MB, then that's not OK. So choose a threshold of 300 MB" But if convert a guest whose size is about 6G respectively with --no-trim all or without --no-trim all, it will have about 2MB difference in size and there also no difference between libguestfs-1.32.5-1.el7 and libguestfs-1.28.1-1.55.el7.x86_64, such as below Using libguestfs-1.32.5-1.el7 # ls -ls rhel6.7-no-sda 3306208 -rw-r--r--. 1 root root 6291456000 Jun 22 17:28 rhel6.7-no-sda # ls -ls rhel6.7-have-para-sda 3308112 -rw-r--r--. 1 root root 6291456000 Jun 22 17:14 rhel6.7-have-para-sda Using libguestfs-1.28.1-1.55.el7.x86_64 # ls -ls no-sda 3306228 -rw-r--r--. 1 root root 6291456000 Jun 23 14:57 no-sda # ls -ls have-sda 3314384 -rw-r--r--. 1 root root 6291456000 Jun 23 14:42 have-sda I'm not sure whether this bug is fixed, pls give me some suggestion, thanks
Honestly I can't really understand what this bug is about. However looking at the procedure in comment 11, I think you need to use qemu-kvm-rhev. qemu-kvm 1.5 didn't support trimming, or only supported trimming in limited circumstances. qemu-kvm-rhev has full support for trimming (except over NFS).
(In reply to Richard W.M. Jones from comment #12) > Honestly I can't really understand what this bug is about. > > However looking at the procedure in comment 11, I think you need > to use qemu-kvm-rhev. qemu-kvm 1.5 didn't support trimming, or only > supported trimming in limited circumstances. qemu-kvm-rhev has > full support for trimming (except over NFS). Hi rjones, Thanks for you quickly reply, but virt-v2v is released with qemu-kvm on rhel, we need to test virt-v2v with qemu-kvm rather than qemu-kvm-rhev, if qemu-kvm 1.5 doesn't support trimming, could we remove parameter --no-trim all in virt-v2v directly?
Since the --no-trim option is going to be removed in RHEL 7.4 (or rather, turned into a warning and no-op), I don't think we should spend too much time on this bug. I've added a test upstream to ensure that trimming doesn't regress.
Hi rjones, Because --no-trim all parameter has no obvious effect for virt-v2v which is tested with qemu-kvm , could we move the bug to close currentrelease status, thanks
Closing this bug since in RHEL 7.4 the --no-trim parameter will be turned into a warning and no-op.