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