Назад | Перейти на главную страницу

Как я могу использовать виртуальную группу lvm ​​хоста в качестве пула kvm?

У меня есть машина с Centos6 в качестве хоста виртуализации. Он имеет один жесткий диск емкостью 250 ГБ, настроенный как одну группу томов lvm (vg_fluke). Теперь я хотел бы использовать 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 и теперь получаю следующую ошибку:

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. Нужно ли мне создавать вторую группу VG для libvirt, чтобы использовать ее для виртуальных машин? Как я могу настроить его использование LV в существующей VG?

По умолчанию libvirt использует имя пула как имя vg. Вы можете увидеть это с помощью /sbin/vgchange -ay lv_guest_vm команда, которую он пытался выполнить. Просто сделать:

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

и он должен работать.

Следующая команда неверна:

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

Это должно решить вашу проблему.

Еще несколько вещей, которые можно попробовать, если вы не можете заставить это работать:

Если --source-name (из ответа Уила Тана) не помогает, рассмотрите возможность --source-dev, чтобы явно установить соединение с уровнем ниже LVM:

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

Если у вас возникли проблемы, начните с наименования пула хранения, идентичного группе томов.

Кроме того, после создания пула посмотрите на него, например, ...

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

... что может дать вам дополнительные подсказки.

Вопрос также относится к совместное использование группы томов lvm между хостом и гостями. Однако, чтобы избежать проблем, обязательно используйте том lvm (не группу) хоста в качестве жесткого диска (не том lvm) на гостевой машине. Этот том может быть частью группы или пула хранения, пока они напрямую управляются только на хосте. А на гостевой системе вы можете построить слой lvm поверх этого жесткого диска, но он полностью отделен от lvm хоста. И для большей ясности укажите, выполняются ли команды (которые вы цитируете) на хосте или госте. Все команды, которые я здесь цитирую, выполняются на хосте.


По поводу вопроса ...

Нужно ли мне создавать вторую группу VG для libvirt, чтобы использовать ее для виртуальных машин?

Насколько я наткнулся на это случайно, Я не нашел причин отделять тома, известные libvirt, от томов не известны libvirt в отдельные группы томов.

Под «известными для libvirt» я имею в виду: libvirt показывает их как тома внутри пула хранения. Например. через...

virsh vol-list vg_fluke

Но опять же, если вы не можете заставить что-то работать, начните с отдельной группы томов, чтобы разобраться с другим возможным источником проблем.