Пулы и тома стораджей не требуются для нормальной работы ВМ, но желательны, так как дают важные преимущества. За счет возможности удаленного сетевого доступа к libvirt появляется возможность удаленного управления всеми аспектами жизненного цикла ВМ в пределах функциональности libvirt API.
Использование libvirt стораджей например избавляет от нужды по настройке монтирования NFS шар и необходимости в ручной правке fstab файла и т.д. Например если определенный пул настроен на автозапуск, то libvirt автоматически замонтирует необходимый ему раздел.
Пулы бывают следующих типов:
Directory - данный тип пула предназначен для работы с файлами образов в форматах raw, qcow2, qcow, cow, vmdk, bochs, cloop, dmg, iso, qed, vpc, ... (т.е. всех форматах поддерживаемых утилитой qemu-img) при размещении в директории. Если каталог отсутствует в момент запуска пула, то с помощью операции "build" утилиты virsh его можно создать
Local filesystem - разновидность предыдущего типа пула, но вместо создания каталога на уже существующей примонтированной файловой системе, используется блочное устройство. Устройство будет примонтировано при работе с ним. По умолчанию хост-система автоматически определяет тип ФС на устройстве, но при желании его можно указать вручную
Поддерживаемые ФС:
auto (автоматическое определение формата), ext2, ext3, ext4, ufs, iso9660, udf, gfs, gfs2, vfat, hfs+, xfs, ocfs2
NFS - тоже самое что и local filesystem, только вместо обращения к локальному блочному устройству, необходимо указать хост и название экспортируемого каталога. Libvirt примонтирует сетевую ФС в указанном каталоге при работе с ней. По умолчанию в качестве протокола передачи данных используется NFS, так же поддерживается glusterfs, cifs
Logical - пул на базе LVM volume group. Для уже созданных LVM групп достаточно указать имя группы, но для создания новой группы требуется передать список устройств источников, которые будут выступать в качестве LVM PV
Disk - тип пула на основе физического диска. Тома создаются путем добавления разделов на диск. Пулы имеют ограничения по размеру и по размещению томов. Данный тип пула поддерживает следующие форматы таблиц разделов: dos, dvh, gpt, mac, bsd, pc98, sun, lvm2
iSCSI - пул на базе iSCSI устройства. Том должен быть предварительно создан на iSCSI сервере и не может быть создан через Libvirt API. Из-за того что /dev/xxx имена могут меняться, рекомендуется настраивать том на использование таких путей как /dev/disk/by-path или /dev/disk/by-id. Они обеспечивают постоянное, стабильное именование логических устройств.
SCSI - пул на базе SCSI. Том должен быть предварительно создан на iSCSI сервере и не может быть создан через Libvirt API. Из-за того что /dev/xxx имена могут меняться, рекомендуется настраивать том на использование таких путей как /dev/disk/by-path или /dev/disk/by-id. Они обеспечивают постоянное, стабильное именование логических устройств.
Miltipath -
RADOS block device -
Sheepdog -
Больше информации здесь: http://libvirt.org/storage.html http://libvirt.org/formatstorage.html
Синтаксис команды для создания нового пула:
virsh pool-create-as name --print-xml type [source-host] [source-path] [source-dev] [source-name] [<target>] [--source-format format]
mkdir -p /pools/directory_backend
генерируем конфиг для пула и складываем соответствующую пулу xml'ку в каталог с конфиг.файлами libvirtd
virsh pool-define-as directory_backend --print-xml dir - - - - /pools/directory_backend > /etc/libvirt/qemu/directory_backend.xml
содержимое xml:
<pool type='dir'>
<name>directory_backend</name>
<source>
<host name='-'/>
<dir path='-'/>
<device path='-'/>
<name>-</name>
</source>
<target>
<path>/pools/directory_backend</path>
</target>
</pool>
на основе конфига создаем пул
virsh pool-define /etc/libvirt/qemu/directory_backend.xml
и запускаем его
virsh pool-start directory_backend
выводим информацию о новом пуле
virsh pool-list --details --all
Name State Autostart Persistent Capacity Allocation Available
----------------------------------------------------------------------------------
directory_backend running no yes 92.98 GB 13.15 GB 79.82 GB
После того как заведен пул, появляется возможность создания томов для него
синтаксис команды создания томов
virsh vol-create-as pool-or-uuid name capacity [--allocation size] [--format string] [--backing-vol vol-name-or-key-or-path] [--backing-vol-format string]
pool-or-uuid - имя пула или uuid
name - название тома
capacity - размер тома
--allocation - предположительно, размер одномоментно аллоцированного под том, дискового пространства на хост-системе
--format - значение используемое с файлоориентированными пулами для определения используемого формата файлов raw, bochs, qcow, qcow2, vmdk
--backing-vol - том который будет использован при снятии snapshot'а с существующего тома
--backing-vol-format - формат backing тома, raw, bochs, qcow, qcow2, vmdk, host_device
Для возможности снятия snapshot'ов с будущего создаваемого тома, вначале создадим том для использования опций "--backing-vol" и "--backing-vol-format"
virsh vol-create-as directory_backend backing_vol 10G
теперь создадим непосредственно сам рабочий том
virsh vol-create-as directory_backend new_vol 40G --allocation 10G --format raw --backing-vol backing_vol --backing-vol-format raw
смотрим информацию о пулах
virsh vol-list directory_backend --details
Name Path Type Capacity Allocation
-----------------------------------------------------------------------------
backing_vol /pools/directory_backend/backing_vol file 10.00 GB 10.00 GB
new_vol /pools/directory_backend/new_vol file 40.00 GB 40.00 GB
на диске это все выглядит примерно так
[root@laborant directory_backend]# ls -lh /pools/directory_backend/
total 21G
-rw------- 1 libvirt-qemu kvm 10G Jul 30 11:23 backing_vol
-rw------- 1 libvirt-qemu kvm 40G Jul 30 12:48 new_vol
создание ВМ с томом new_vol:
virt-install --name nfs1.local.lan --arch x86_64 --ram 1024 --disk vol=directory_backend/new_vol --cdrom /images/ubuntu-12.04.2-server-amd64.iso --graphics vnc,listen=0.0.0.0,port=5901,password=secret --network bridge=br0 --virt-type kvm --cpu Nehalem --description "test machine"
...
Пулы бывают следующих типов:
Directory - данный тип пула предназначен для работы с файлами образов в форматах raw, qcow2, qcow, cow, vmdk, bochs, cloop, dmg, iso, qed, vpc, ... (т.е. всех форматах поддерживаемых утилитой qemu-img) при размещении в директории. Если каталог отсутствует в момент запуска пула, то с помощью операции "build" утилиты virsh его можно создать
Local filesystem - разновидность предыдущего типа пула, но вместо создания каталога на уже существующей примонтированной файловой системе, используется блочное устройство. Устройство будет примонтировано при работе с ним. По умолчанию хост-система автоматически определяет тип ФС на устройстве, но при желании его можно указать вручную
Поддерживаемые ФС:
auto (автоматическое определение формата), ext2, ext3, ext4, ufs, iso9660, udf, gfs, gfs2, vfat, hfs+, xfs, ocfs2
NFS - тоже самое что и local filesystem, только вместо обращения к локальному блочному устройству, необходимо указать хост и название экспортируемого каталога. Libvirt примонтирует сетевую ФС в указанном каталоге при работе с ней. По умолчанию в качестве протокола передачи данных используется NFS, так же поддерживается glusterfs, cifs
Logical - пул на базе LVM volume group. Для уже созданных LVM групп достаточно указать имя группы, но для создания новой группы требуется передать список устройств источников, которые будут выступать в качестве LVM PV
Disk - тип пула на основе физического диска. Тома создаются путем добавления разделов на диск. Пулы имеют ограничения по размеру и по размещению томов. Данный тип пула поддерживает следующие форматы таблиц разделов: dos, dvh, gpt, mac, bsd, pc98, sun, lvm2
iSCSI - пул на базе iSCSI устройства. Том должен быть предварительно создан на iSCSI сервере и не может быть создан через Libvirt API. Из-за того что /dev/xxx имена могут меняться, рекомендуется настраивать том на использование таких путей как /dev/disk/by-path или /dev/disk/by-id. Они обеспечивают постоянное, стабильное именование логических устройств.
SCSI - пул на базе SCSI. Том должен быть предварительно создан на iSCSI сервере и не может быть создан через Libvirt API. Из-за того что /dev/xxx имена могут меняться, рекомендуется настраивать том на использование таких путей как /dev/disk/by-path или /dev/disk/by-id. Они обеспечивают постоянное, стабильное именование логических устройств.
Miltipath -
RADOS block device -
Sheepdog -
Больше информации здесь: http://libvirt.org/storage.html http://libvirt.org/formatstorage.html
Cоздание пула директорий на локальной хост-системе
Синтаксис команды для создания нового пула:
virsh pool-create-as name --print-xml type [source-host] [source-path] [source-dev] [source-name] [<target>] [--source-format format]
mkdir -p /pools/directory_backend
генерируем конфиг для пула и складываем соответствующую пулу xml'ку в каталог с конфиг.файлами libvirtd
virsh pool-define-as directory_backend --print-xml dir - - - - /pools/directory_backend > /etc/libvirt/qemu/directory_backend.xml
содержимое xml:
<pool type='dir'>
<name>directory_backend</name>
<source>
<host name='-'/>
<dir path='-'/>
<device path='-'/>
<name>-</name>
</source>
<target>
<path>/pools/directory_backend</path>
</target>
</pool>
на основе конфига создаем пул
virsh pool-define /etc/libvirt/qemu/directory_backend.xml
и запускаем его
virsh pool-start directory_backend
выводим информацию о новом пуле
virsh pool-list --details --all
Name State Autostart Persistent Capacity Allocation Available
----------------------------------------------------------------------------------
directory_backend running no yes 92.98 GB 13.15 GB 79.82 GB
синтаксис команды создания томов
virsh vol-create-as pool-or-uuid name capacity [--allocation size] [--format string] [--backing-vol vol-name-or-key-or-path] [--backing-vol-format string]
pool-or-uuid - имя пула или uuid
name - название тома
capacity - размер тома
--allocation - предположительно, размер одномоментно аллоцированного под том, дискового пространства на хост-системе
--format - значение используемое с файлоориентированными пулами для определения используемого формата файлов raw, bochs, qcow, qcow2, vmdk
--backing-vol - том который будет использован при снятии snapshot'а с существующего тома
--backing-vol-format - формат backing тома, raw, bochs, qcow, qcow2, vmdk, host_device
Для возможности снятия snapshot'ов с будущего создаваемого тома, вначале создадим том для использования опций "--backing-vol" и "--backing-vol-format"
virsh vol-create-as directory_backend backing_vol 10G
теперь создадим непосредственно сам рабочий том
virsh vol-create-as directory_backend new_vol 40G --allocation 10G --format raw --backing-vol backing_vol --backing-vol-format raw
смотрим информацию о пулах
virsh vol-list directory_backend --details
Name Path Type Capacity Allocation
-----------------------------------------------------------------------------
backing_vol /pools/directory_backend/backing_vol file 10.00 GB 10.00 GB
new_vol /pools/directory_backend/new_vol file 40.00 GB 40.00 GB
[root@laborant directory_backend]# ls -lh /pools/directory_backend/
total 21G
-rw------- 1 libvirt-qemu kvm 10G Jul 30 11:23 backing_vol
-rw------- 1 libvirt-qemu kvm 40G Jul 30 12:48 new_vol
создание ВМ с томом new_vol:
virt-install --name nfs1.local.lan --arch x86_64 --ram 1024 --disk vol=directory_backend/new_vol --cdrom /images/ubuntu-12.04.2-server-amd64.iso --graphics vnc,listen=0.0.0.0,port=5901,password=secret --network bridge=br0 --virt-type kvm --cpu Nehalem --description "test machine"
...
Комментариев нет:
Отправить комментарий