Поиск по сайту:

Как изменить расположение пула хранения данных KVM Libvirt по умолчанию

В этом руководстве объясняется, что такое пулы хранения и тома в Libvirt и как изменить расположение пула хранения KVM по умолчанию в libvirt с помощью программы Virsh, Virt-manager и Cockpit. > в линуксе.

Пулы и тома хранения в Libvirt

Libvirt обеспечивает управление хранилищем в хост-системе KVM через пулы хранения и тома.

Пул хранения — это объем хранилища, выделенный на хосте KVM для использования виртуальными машинами. Пул носителей делится на тома хранения и назначается виртуальным машинам в качестве блочных устройств.

Другими словами, пул носителей — это ресурс хранения в хост-системе KVM, который можно использовать для хранения томов. А том хранилища — это устройство хранения, которое можно назначить виртуальной машине.

Том хранения может быть блочным устройством, например разделом, логическим томом или файлом. Виртуальные жесткие диски, устройства CD/DVD/дискеты и образы ISO, подключенные к гостевым машинам, являются примерами томов хранения.

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

По умолчанию все виртуальные машины, созданные с помощью libvirt, хранятся в папке /var/lib/libvirt/images/. Это пул хранения по умолчанию для образов виртуальных машин Libvirt.

Типы пулов хранения

Пул хранения может быть одного из следующих типов:

  1. Пул каталогов. Используйте каталог в качестве пула для размещения файлов изображений. Файлы могут иметь один из допустимых типов формата тома, например образы raw, qcow, qcow2, dmg, vmdk, vpc или ISO.
  2. Пул файловой системы. Используйте блочное устройство (например, раздел или группу LVM) в качестве пула вместо используемого каталога в существующей смонтированной файловой системе.
  3. Пул сетевой файловой системы. Используйте сетевую файловую систему (например, cifs, glusterfs, nfs и т. д.) в качестве пула для хранения томов хранения. Вместо каталога или блочного устройства требуется сетевой хост и путь к общему каталогу.
  4. Пул логических томов. Используйте группу томов LVM в качестве пула для хранения томов.
  5. Пул дисков. Используйте физический диск в качестве пула. Тома можно создавать путем добавления разделов на диск.
  6. Пул iSCSI. Используйте целевой объект iSCSI для хранения томов. Все тома должны быть предварительно выделены на сервере iSCSI.
  7. Прямой пул iSCSI. Это вариант пула iSCSI. Вместо использования iscsiadm используется libiscsi. Для этого требуется хост, путь, который является целевым IQN, и IQN инициатора.
  8. Пул SCSI. Используйте адаптер главной шины SCSI почти так же, как целевой объект iSCSI.
  9. Пул многопутевого доступа. В настоящее время многопутевой доступ не поддерживается.
  10. Пул RBD. Этот драйвер хранилища предоставляет пул, содержащий все образы RBD в пуле RADOS. RBD (RADOS Block Device) является частью проекта распределенного хранилища Ceph.
  11. Пул Sheepdog — используйте кластер Sheepdog в качестве пула для хранения томов.
  12. Пул Gluster — используйте распределенную файловую систему Gluster в качестве пула.
  13. Пул ZFS. Используйте файловую систему ZFS в качестве пула.
  14. Пул 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-файл виртуальной машины в редакторе по умолчанию.

Найдите строку "/var/lib/libvirt/images" под директивой 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.

Статьи по данной тематике