[Openstack] [Nova] KVM Windows Guest disk hot plugging support.

Wangpan hzwangpan at corp.netease.com
Thu Feb 27 02:21:26 UTC 2014


I have see this same error on my debian OS(2.6.X kernel) without acpiphp and pci_hotplug modules,
after I insert these two modules, the re-attachment works ok.

With Windows OS, do you have install the virtio drivers(pci and disk)?
because in my windows 7 the re-attachment works ok, too.
I thought windows 2008 has the same kernel with windows 7 (may be).

2014-02-27



Wangpan



发件人:Zuo Changqian <dummyhacker85 at gmail.com>
发送时间:2014-02-27 09:53
主题:Re: [Openstack] [Nova] KVM Windows Guest disk hot plugging support.
收件人:"Zhangleiqiang"<zhangleiqiang at huawei.com>
抄送:"Openstack at lists.openstack.org"<openstack at lists.openstack.org>

I have tried, it would still fail. 

Also I got something new this morning, If I first remove the device (attached disk) inside Windows 2008, and then call detach-volume command, the reattching will succeed.

I think this is not a problem of Libvirt of KVM (Linux guest works perfectly), but a problem of Windows operating system. That's why I asked whether Windows itself support this disk hot plug in-and-out feature or not, if it can, how.



The following "newdisk.img" has been formatted with as a NTFS disk, and there is some data inside. "instance-0000000d" is a Windows 2008 instance (I reboot it before every test).


------------------------------------------------------------
[root at nova02 temp]# ll
total 1048584
-rw-r--r-- 1 root root 1073741824 Feb 27 09:19 newdisk.img
-rw-r--r-- 1 root root        120 Feb 25 16:12 newdisk.xml

[root at nova02 temp]# cat newdisk.xml 
<disk type='file' device='disk'>
   <source file='/home/temp/newdisk.img'/>
   <target dev='vdb' bus='virtio'/>
</disk>
[root at nova02 temp]# virsh attach-device instance-0000000d newdisk.xml 
Device attached successfully

[root at nova02 temp]# virsh detach-device instance-0000000d newdisk.xml 
Device detached successfully

[root at nova02 temp]# virsh attach-device instance-0000000d newdisk.xml 
error: Failed to attach device from newdisk.xml
error: internal error unable to execute QEMU command '__com.redhat_drive_add': Duplicate ID 'drive-virtio-disk1' for drive
-----------------------------------------------------------


I got same result with "virsh attach-disk" command:

-----------------------------------------------------------
[root at nova02 temp]# virsh attach-disk instance-0000000d /home/temp/newdisk.img vdb
Disk attached successfully

[root at nova02 temp]# virsh detach-disk instance-0000000d vdb
Disk detached successfully

[root at nova02 temp]# virsh attach-disk instance-0000000d /home/temp/newdisk.img vdb
error: Failed to attach disk
error: internal error unable to execute QEMU command '__com.redhat_drive_add': Duplicate ID 'drive-virtio-disk1' for drive
----------------------------------------------------------







2014-02-26 17:40 GMT+08:00 Zhangleiqiang <zhangleiqiang at huawei.com>:

Hi, Changqian:

I think it’s better to try using the corresponding detach command of libvirt (virsh detach-disk or virsh detach-device) first, and see if the behavior is expected. 



----------
Leiqzhang

Best Regards

From: Zuo Changqian [mailto:dummyhacker85 at gmail.com] 
Sent: Wednesday, February 26, 2014 3:49 PM
To: Gangur, Hrushikesh (R & D HP Cloud)
Cc: Openstack at lists.openstack.org
Subject: Re: [Openstack] [Nova] KVM Windows Guest disk hot plugging support.

By the way, it's Havana release.
We first found this problem in Ubuntu 12.04 LTS guest, after loading "acpiphp" kernel module at instance boot time, the problem solved.
Then we tested using CentOS 6.x guest, it seems the code of "acpiphp" module has been integrated into Linux kernel at compilation time. Nothing needs to been done, it just works very well. You can freely attach and detach volumes when instance is running.
But this does not work for Windows guest, you can attach volumes, and you can detach, but it seems still some information of disk remain in Windows guest, and you can not attach a second time.
A reboot do cleanup those remained infomation, and we know this. I am wondering if this attach/detach can be all done when Windows guest is running, just like it is done in Linux guest.


2014-02-26 15:07 GMT+08:00 Gangur, Hrushikesh (R & D HP Cloud) <hrushikesh.gangur at hp.com>:
I have seen this issue on Linux VMs too. A reboot of the VM instance helps workaround this.

From: Zuo Changqian [mailto:dummyhacker85 at gmail.com] 
Sent: Tuesday, February 25, 2014 10:34 PM
To: Openstack at lists.openstack.org
Subject: [Openstack] [Nova] KVM Windows Guest disk hot plugging support.

Hi

Currently we use Cpeh RBD as cinder volume. According to http://www.linux-kvm.org/page/Hotadd_pci_devices, we have Linux KVM guest (both CentOS 6.x and Ubuntu 12.04) support disk hot plugging, it works well.
But there is problem with Windows 2008 guest (2003 not tested). Described below:

1) Launch an Windows 2008 instance (with RedHat Virtio Driver installed), and attach a volume (newly created with nothing inside) to it, the volume would be successfully attached to /dev/vdb.
2) In Windows (guest machine), format this newly added disk. After formatting, it will show up in "My Computer" windows. Create any file (readme.txt with some text in it for example) inside the new disk. Then deatch the volume.

After about one or two minute, a message box would show up in Windows, saying that the device not properly removed, and the newly added disk would still show in "My Computer" window. But with "cinder list" command, we can see that the volume was successfully detached.

3) Now reattach to volume to instance, it would failed.

Libvirt log shows: 
error : qemuMonitorJSONCheckError:357 : internal error unable to execute QEMU command '__com.redhat_drive_add': Duplicate ID 'drive-virtio-disk1' for drive
I googled yesterday afternoon, didn't find useful information. Would any one tell me whether Windows 2003/2008 as kvm fully virtualized guest supports disk hot plugging and removing or not? Or any possibility I have got something wrong?

Thanks for help!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack/attachments/20140227/013c8fdb/attachment.html>


More information about the Openstack mailing list