我如何使用主机的lvm VG作为kvm池?

我有一个Centos6作为虚拟主机的机器设置。 它有一个configuration为单个lvm卷组(vg_fluke)的单个250G硬盘驱动器。 现在我想使用主机的lvm作为KVM的存储池。

我在SF上发现了这个问题 ,方法一描述了我想实现的。 但是我找不到一个办法。

我尝试了以下,但由于文档粗略,我确信我做错了什么。

virsh # pool-define-as guest_images_lvm logical - - - - /dev/vg_fluke Pool guest_images_lvm defined 

随之而来,

 virsh # pool-start guest_images_lvm error: Failed to start pool guest_images_lvm error: internal error Child process (/sbin/vgchange -ay -) status unexpected: exit status 5 

有关LVM设置的更多信息:

 [root@fluke ~]# pvs PV VG Fmt Attr PSize PFree /dev/sdb2 vg_fluke lvm2 a-- 232.39g 125.45g [root@fluke ~]# lvs LV VG Attr LSize Origin Snap% Move Log Copy% Convert lv_home vg_fluke -wi-ao 5.00g lv_root vg_fluke -wi-ao 100.00g lv_swap vg_fluke -wi-ao 1.94g [root@fluke ~]# vgs VG #PV #LV #SN Attr VSize VFree vg_fluke 1 3 0 wz--n- 232.39g 125.45g 

更新:

遵循@ sitaktif的build议,现在得到以下错误:

 virsh # pool-define-as lv_guest_vm logical --target /dev/vg-main Pool lv_guest_vm defined virsh # pool-start lv_guest_vm error: Failed to start pool lv_guest_vm error: internal error '/sbin/vgchange -ay lv_guest_vm' exited with non-zero status 5 and signal 0: Volume group "lv_guest_vm" not found 

注意:我正在VG为vg-main的另一台机器上尝试此操作。 我是否必须为libvirt创build第二个VG以用于虚拟机? 如何在现有的VG中使用LV?

以下命令是不正确的:

 virsh # pool-define-as guest_images_lvm logical - - - - /dev/vg_fluke 

…因为它执行:

 /sbin/vgchange -ay - 

…代替:

 /sbin/vgchange -ay /dev/vg_fluke 

只是明确地命名参数,而不是使用破折号:

 pool-define-as guest_images_lvm logical --target /dev/vg_fluke 

这应该可以解决你的问题。

默认情况下,libvirt使用池名称作为vg的名称。 你可以看到它正在用它试图执行的/sbin/vgchange -ay lv_guest_vm命令。 做就是了:

 pool-define-as lv_guest_vm logical --source-name vg-main --target /dev/vg-main 

它应该工作。

如果你不能得到这个工作,还有更多的事情要做:

如果–source-name(来自Wil Tan的答案)不起作用,请考虑–source-dev显式连接到LVM下的图层:

 virsh pool-define-as vg_fluke logical --target /dev/vg_fluke --source-dev /dev/md999 

如果遇到问题,请首先命名与卷组相同的存储池。

另外,在创build池后,用例如…

 virsh pool-list --all virsh pool-info vg_fluke 

…这可能会给你额外的线索。

问题还在于在主机和来宾之间共享lvm卷组 。 为避免出现问题,请确保在主机上使用主机的lvm卷(不是组)作为硬盘(而不是lvm卷)。 这个卷可能是组或存储池的一部分,只要这些只能在主机上直接操作。 在客人身上,你可以在这个硬盘上build立一个lvm层,但是这完全与主机的lvm分离。 为了更加清晰,请说明(您引用的)命令是在主机还是来宾上完成的。 我在这里引用的命令全部在主机上执行。


关于这个问题

我是否必须为libvirt创build第二个VG以用于虚拟机?

据我偶然发现,我发现没有理由将libvirt已知的卷与libvirt未知的卷分离成单独的卷组。

“已知libvirt”是指:libvirt将它们显示为存储池中的卷。 例如通过…

 virsh vol-list vg_fluke 

但是,如果你不能使事情发挥作用,那就从一个单独的卷组开始,整理出另一个可能的问题来源。