Как изменить расположение пула хранения данных KVM Libvirt по умолчанию
В этом руководстве объясняется, что такое пулы хранения и тома в Libvirt и как изменить расположение пула хранения KVM по умолчанию в libvirt с помощью программы Virsh, Virt-manager и Cockpit. > в линуксе.
Пулы и тома хранения в Libvirt
Libvirt обеспечивает управление хранилищем в хост-системе KVM через пулы хранения и тома.
Пул хранения — это объем хранилища, выделенный на хосте KVM для использования виртуальными машинами. Пул носителей делится на тома хранения и назначается виртуальным машинам в качестве блочных устройств.
Другими словами, пул носителей — это ресурс хранения в хост-системе KVM, который можно использовать для хранения томов. А том хранилища — это устройство хранения, которое можно назначить виртуальной машине.
Том хранения может быть блочным устройством, например разделом, логическим томом или файлом. Виртуальные жесткие диски, устройства CD/DVD/дискеты и образы ISO, подключенные к гостевым машинам, являются примерами томов хранения.
Невозможно иметь том хранения без пула хранения. Сначала вам необходимо создать пул носителей, а затем создать тома хранения внутри пула.
По умолчанию все виртуальные машины, созданные с помощью libvirt, хранятся в папке /var/lib/libvirt/images/
. Это пул хранения по умолчанию для образов виртуальных машин Libvirt.
Типы пулов хранения
Пул хранения может быть одного из следующих типов:
- Пул каталогов. Используйте каталог в качестве пула для размещения файлов изображений. Файлы могут иметь один из допустимых типов формата тома, например образы raw, qcow, qcow2, dmg, vmdk, vpc или ISO.
- Пул файловой системы. Используйте блочное устройство (например, раздел или группу LVM) в качестве пула вместо используемого каталога в существующей смонтированной файловой системе.
- Пул сетевой файловой системы. Используйте сетевую файловую систему (например,
cifs
,glusterfs
,nfs
и т. д.) в качестве пула для хранения томов хранения. Вместо каталога или блочного устройства требуется сетевой хост и путь к общему каталогу. - Пул логических томов. Используйте группу томов LVM в качестве пула для хранения томов.
- Пул дисков. Используйте физический диск в качестве пула. Тома можно создавать путем добавления разделов на диск.
- Пул iSCSI. Используйте целевой объект iSCSI для хранения томов. Все тома должны быть предварительно выделены на сервере iSCSI.
- Прямой пул iSCSI. Это вариант пула iSCSI. Вместо использования iscsiadm используется
libiscsi
. Для этого требуется хост, путь, который является целевым IQN, и IQN инициатора. - Пул SCSI. Используйте адаптер главной шины SCSI почти так же, как целевой объект iSCSI.
- Пул многопутевого доступа. В настоящее время многопутевой доступ не поддерживается.
- Пул RBD. Этот драйвер хранилища предоставляет пул, содержащий все образы RBD в пуле RADOS. RBD (RADOS Block Device) является частью проекта распределенного хранилища Ceph.
- Пул Sheepdog — используйте кластер Sheepdog в качестве пула для хранения томов.
- Пул Gluster — используйте распределенную файловую систему Gluster в качестве пула.
- Пул ZFS. Используйте файловую систему ZFS в качестве пула.
- Пул Vstorage — использование распределенного программно-определяемого хранилища Virtuozzo в качестве пула.
Для целей данного руководства мы будем использовать Пул каталогов
.
1. Измените расположение пула хранения данных KVM Libvirt по умолчанию.
Как уже говорилось, все изображения KVM/Libvirt по умолчанию хранятся в папке /var/lib/libvirt/images/
. Поскольку это местоположение находится в разделе rootfs
, вы можете переместить его в другое место, например в каталог $HOME
.
Мы можем изменить расположение образов виртуальных машин KVM Libvirt по умолчанию с помощью программы командной строки virsh
и ее графического интерфейса под названием Virt-manager, а также Cockpit. > веб-консоль.
Сначала мы увидим, как изменить путь к пулу хранения данных Libvirt по умолчанию с помощью программы virsh
.
1.1. Измените расположение пула хранения KVM Libvirt по умолчанию с помощью программы virsh
1.1.1. Войдите в свою хост-систему KVM и отключите всех работающих гостей.
Чтобы найти список запущенных виртуальных машин, просто выполните:
virsh list --all
Выключение, если какие-либо виртуальные машины работают.
$virsh Shutdown <имя-VM>
1.1.2. Перечислите все настроенные пулы хранения на вашем хост-компьютере KVM:
virsh pool-list
Пример вывода:
Name State Autostart
default active no
Как видите, у меня есть только один пул хранения, который является default
. Он создается автоматически при установке kvm/libvirt
.
1.1.3. Давайте посмотрим подробную информацию о пуле хранения по умолчанию с помощью команды:
virsh pool-info default
Пример вывода:
Name: default
UUID: 76f47a3c-7656-4c34-9ab5-c87e5136d532
State: running
Persistent: yes
Autostart: no
Capacity: 369.22 GiB
Allocation: 65.60 GiB
Available: 303.62 GiB
Отобразить подробную информацию о пуле хранения данных libvirt по умолчанию.
В приведенных выше выводах перечислены такие сведения, как имя пула носителей, UUID, состояние, постоянство, автозапуск, емкость, выделенное пространство пула носителей и оставшееся доступное пространство.
Поскольку мы собираемся изменить путь к пулу носителей, нам также необходимо его найти.
1.1.4. Чтобы отобразить путь к пулу носителей по умолчанию, мы используем команду grep с virsh
, как показано ниже:
virsh pool-dumpxml default | grep -i path
Пример вывода:
<path>/var/lib/libvirt/images</path>
Как видно из приведенного выше вывода, пулом хранения по умолчанию является /var/lib/libvirt/images/
. Мы собираемся изменить его на следующих шагах.
1.1.5. Перечислите все существующие образы виртуальных машин, хранящиеся в пуле носителей по умолчанию, с помощью virsh
, как показано ниже:
virsh vol-list default | grep "/var/lib/libvirt/images/"
Пример вывода:
archlinux.img /var/lib/libvirt/images/archlinux.img
У меня есть один образ виртуальной машины Arch Linux в пуле хранения по умолчанию.
1.1.6. Остановите и отмените определение пула хранения по умолчанию с помощью команды:
virsh pool-destroy default
virsh pool-undefine default
1.1.7. Измените пул носителей по умолчанию с помощью команды:
virsh pool-edit default
Это откроет XML-файл виртуальной машины в редакторе по умолчанию.
Найдите строку "
под директивой target
и измените ее на новый путь по вашему выбору. .
В моем случае я изменил элемент <path>
с /var/lib/libvirt/images
на /home/sk/.local/share/libvirt. /изображения
.
<pool type='dir'>
<name>default</name>
<uuid>76f47a3c-7656-4c34-9ab5-c87e5136d532</uuid>
<capacity unit='bytes'>396452147200</capacity>
<allocation unit='bytes'>71178977280</allocation>
<available unit='bytes'>325273169920</available>
<source>
</source>
<target>
<path>/home/sk/.local/share/libvirt/images</path>
<permissions>
<mode>0755</mode>
<owner>1000</owner>
<group>1000</group>
<label>unconfined_u:object_r:svirt_home_t:s0</label>
</permissions>
</target>
</pool>
Измените расположение пула хранения данных KVM Libvirt по умолчанию с помощью команды virsh.
Просто убедитесь, что новый путь существует. Если он существует, просто создайте его и назначьте достаточные разрешения для нового каталога пути. Сохраните файл и закройте его.
СОВЕТ:
Если по какой-либо причине пул хранения по умолчанию не существует, вы можете создать его, как показано ниже:
virsh pool-define-as --name default --type dir --target /home/sk/.local/share/libvirt/images/
Замените путь хранения на свой.
1.1.8. Наконец, запустите пул носителей по умолчанию:
virsh pool-start default
1.1.9. Настройте автоматический запуск пула носителей при загрузке системы:
virsh pool-autostart default
1.1.10. Проверьте, был ли изменен путь к пулу хранения libvirt, с помощью команды:
virsh pool-dumpxml default | grep -i path
Теперь вы должны увидеть новый путь.
/home/sk/.local/share/libvirt/images
С этого момента виртуальные образы будут сохраняться в новом пуле хранения.
1.1.11. Проверьте состояние пула носителей:
virsh pool-list
Name State Autostart
-------------------------------
default active yes
1.1.12. Перезапустите службу libvirtd:
sudo systemctl restart libvirtd
1.1.13. Нам нужно сделать последнее. Скопируйте все образы виртуальных машин из старого пути хранения в новый:
sudo mv /var/lib/libvirt/images/archlinux.qcow2 /home/sk/.local/share/libvirt/images/
Все сделано!
Вот как мы меняем расположение пула хранения данных KVM Libivrt по умолчанию на новое из командной строки с помощью программы Virsh
. Как видите, изменить путь к хранилищу по умолчанию для гостей KVM/Libvirt довольно просто!
Теперь давайте посмотрим, как изменить путь к пулу хранения данных Libvirt по умолчанию с помощью графического приложения с именем Virt-manager
.
1.2. Измените местоположение пула хранения KVM Libvirt по умолчанию с помощью Virt-manager
Virt-manager, сокращение от Virtual Machine Manager, представляет собой приложение с графическим пользовательским интерфейсом, используемое для управления виртуальными машинами через libvirt
. Другими словами, Virt-manager — это просто графический интерфейс для libvirt
.
1.2.1. Откройте приложение Вирт-менеджер. Щелкните правой кнопкой мыши QEMU/KVM и выберите параметр Подробнее.
Просмотр сведений о подключении KVM
Вы также можете нажать Изменить-> Детали подключения в интерфейсе вирт-менеджера.
1.2.2. В разделе Хранилище вы увидите расположение пула хранения по умолчанию.
Расположение пула хранения KVM Libvirt по умолчанию
1.2.3. Нажмите Остановить пул, а затем выберите Удалить пул на левой нижней панели.
Остановить и удалить пул хранения по умолчанию KVM Libvirt
Это деактивирует и удалит пул по умолчанию.
1.2.4. Нажмите знак плюс (+) в нижней левой панели, чтобы создать новый пул носителей для использования виртуальными машинами.
Введите имя пула носителей (например, default
в моем случае). Выберите тип бассейна. В нашем случае я выбрал Каталог файловой системы. Укажите целевое расположение и нажмите «Готово».
Создайте новый пул хранения KVM Libvirt.
1.2.5. Теперь новое хранилище активно. Установите флажок Автозапуск, чтобы автоматически запускать новый пул носителей при загрузке системы.
Новое расположение пула хранения KVM Libvirt
1.2.6. Переместите все образы виртуальных машин из старого каталога хранилища в новый.
sudo mv /var/lib/libvirt/images/archlinux.qcow2 /home/sk/.local/share/libvirt/images/
1.2.7. Наконец, перезапустите службу libvirtd:
sudo systemctl restart libvirtd
1.3. Измените расположение пула хранения KVM Libvirt по умолчанию с помощью Cockpit
Cockpit — это бесплатный веб-инструмент администрирования серверов, предназначенный для мониторинга и администрирования серверов Linux через веб-браузер.
1.3.1 Откройте веб-браузер и войдите в консоль Cockpit, перейдя по адресу http://localhost:9090 или http://IP-адрес:9090. из адресной строки.
Войдите в веб-консоль Cockpit
1.3.2. Нажмите вкладку Виртуальные машины на левой панели. С правой стороны выберите параметр Пул хранения.
Перейдите в раздел «Пул носителей» в Cockpit.
1.3.3. В разделе «Пулы хранения» вы увидите пул хранения по умолчанию. Нажмите маленькую стрелку, чтобы развернуть вкладку «Пулы носителей», и нажмите кнопки Деактивировать и Удалить.
Деактивировать и удалить пул хранения по умолчанию в Cockpit
Примечание. Поскольку я уже изменил место хранения по умолчанию, отображается новый путь. В вашей системе будет показан старый путь по умолчанию, то есть /var/lib/libvirt/images
.
1.3.4. Введите имя пула носителей, тип и целевой путь и нажмите Создать. Убедитесь, что флажок «Запуск» установлен.
Создайте новый пул хранения KVM Libvirt в Cockpit.
1.3.5. Нажмите кнопку Активировать, чтобы запустить пул.
Активируйте пул хранения KVM Libvirt в Cockpit
1.3.6. Переместите все образы виртуальных машин из старого каталога хранилища в новый.
sudo mv /var/lib/libvirt/images/archlinux.qcow2 /home/sk/.local/share/libvirt/images/
1.3.7. Перезапустите службу libvirtd:
sudo systemctl restart libvirtd
Поиск неисправностей
После изменения пути к пулу носителей вы, вероятно, столкнетесь со следующей ошибкой при запуске виртуальной машины:
Failed to start domain 'Archlinux_default' error: Cannot access storage file '/home/sk/.local/share/libvirt/images/Archlinux_default.img' (as uid:107, gid:107): Permission denied.
Это связано с тем, что пользователь qemu
может не иметь разрешения на чтение каталога хранения. Чтобы исправить это, перейдите по следующей ссылке:
- [Решено] Невозможно получить доступ к файлу хранилища, в разрешении отказано. Ошибка в KVM Libvirt
Заключение
В этом руководстве мы обсудили важную тему KVM/Libvirt — Пулы хранения. Мы узнали, что такое пулы хранения и тома, а также как изменить расположение пула хранения данных по умолчанию в kvm libvirt с помощью трех программ, а именно VIrsh, Virt-manager и Cockpit. Надеюсь, вы найдете это полезным.
Ресурс:
- Документация по хранилищу Libvirt
Избранное изображение Мохамеда Хасана с сайта Pixabay.