Bug 1572831

Summary: windows 2016 vmdk based image can not boot
Product: Red Hat Enterprise Linux 7 Reporter: Chen <cchen>
Component: virtio-winAssignee: Vadim Rozenfeld <vrozenfe>
virtio-win sub component: virtio-win-prewhql QA Contact: Virtualization Bugs <virt-bugs>
Status: CLOSED NOTABUG Docs Contact:
Severity: medium    
Priority: unspecified CC: kchamart, lijin, michen, phou, srevivo, vrozenfe, wyu, xiagao
Version: 7.5   
Target Milestone: pre-dev-freeze   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2018-09-07 02:45:33 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:
Description Flags
windows 2016 can not boot
none
picture1
none
picture2
none
Code31_info none

Description Chen 2018-04-28 01:49:16 UTC
Created attachment 1427926 [details]
windows 2016 can not boot

Description of problem:

windows 2016 vmdk based image can not boot
The screenshot (attached) shows the VM can not find the device

Version-Release number of selected component (if applicable):

w2k16
virtio-win-1.9.4-2.el7.noarch

How reproducible:

100%

Steps to Reproduce:
1. Install a windows 2016 in VMware vsphere
2. Install virtio-win (viostor) in the VM
3. Dump the vmdk and create glance based on it
4. Boot the instance using that image

Actual results:

Windows 2016 can not find the device

Expected results:

Windows 2016 should be able to boot

Additional info:

If I set hw_disk_bus='ide' then the instance can boot successfully.

Comment 3 Chen 2018-05-02 01:00:32 UTC
Hi Vadim,

>If it is not an option for you, then try to run VM as IDE with a secondary 
>disk attached as virtio-blk device, install viostor device "normally",
>shutdown VM, change IDE to virtio-blk, and then run your VM again to give it a try.

This is exactly what I want.

VMware created IDE device for Windows 2016 but OpenStack (KVM based private cloud product) 
will use virtio-blk. I wanted to install viostor in an existing Windows 2016 to let OpenStack
identify the Windows's block device.

I'm not quite sure the exact steps to install viostor driver "normally". I provided 
my steps in comment #1. If there is something wrong, would you please point me the 
correct steps to install viostor in an existing Windows 2016 ?

Best Regards,
Chen

Comment 4 Vadim Rozenfeld 2018-05-02 04:22:31 UTC
(In reply to Chen from comment #3)
> Hi Vadim,
> 
> >If it is not an option for you, then try to run VM as IDE with a secondary 
> >disk attached as virtio-blk device, install viostor device "normally",
> >shutdown VM, change IDE to virtio-blk, and then run your VM again to give it a try.
> 
> This is exactly what I want.
> 
> VMware created IDE device for Windows 2016 but OpenStack (KVM based private
> cloud product) 
> will use virtio-blk. I wanted to install viostor in an existing Windows 2016
> to let OpenStack
> identify the Windows's block device.
> 
> I'm not quite sure the exact steps to install viostor driver "normally". I
> provided 
> my steps in comment #1. If there is something wrong, would you please point
> me the 
> correct steps to install viostor in an existing Windows 2016 ?
> 
> Best Regards,
> Chen

Hi Chen,
There are two different ways to do it - by using virt-v2v (https://access.redhat.com/articles/1353463) or do it manually (first you need to run your VM with IDE as the system disk and then convert it to virtio by following the steps described at http://setdosa.blogspot.com.au/2013/09/moving-your-windows-guest-from-ide-to.html).

btw, are you sure that VMware uses IDE? I was thinking that they prefer emulated  LSI SCSI HBA over IDE. In any case you should be able to run your VM with emulated IDE controller first, and then switch it to virtio by following the steps described in the article mentioned above.

But if you are thinking of some more or less massive VM migration from VMW to KVM, then virt-v2v looks to me as a way more appropriate solution to do it right  and simpler.   

Best,
Vadim.

Comment 11 Peixiu Hou 2018-05-07 09:48:34 UTC
Created attachment 1432545 [details]
picture1

Comment 12 Peixiu Hou 2018-05-07 09:49:21 UTC
Created attachment 1432546 [details]
picture2

Comment 13 Peixiu Hou 2018-05-07 09:54:13 UTC
Created attachment 1432548 [details]
Code31_info

The virtio-blk device properties. Shown error "This device is not working properly because Windows cannot load the drivers required for this device,(Code 31)
A device which does not exist was specified".

Comment 14 Chen 2018-05-07 10:39:13 UTC
Hi,

So sorry for the confusion. I revisited the case and the customer said both windows 2012 and 2016 were hitting this issue.

I also noticed that Code 31 error. I thought the error means windows didn't find a device which was suitable for the viostor driver. I personally thought that error can be ignored. 

Best Regards,
Chen

Comment 15 Vadim Rozenfeld 2018-09-07 02:45:33 UTC
I would suggest go through the formal v2v conversion procedure, which should work properly in this case.

Closing as notabug.
Vadim.