Product SiteDocumentation Site

26.4.7. Локальный ZFS

Примечание

Для работы с локальным ZFS необходимо установить модуль ядра (например, kernel-modules-zfs-6.12) и загрузить его:
# modprobe zfs
Чтобы модуль загружался автоматически, следует раскомментировать строку:
#zfs
в файле /etc/modules-load.d/zfs.conf.
Локальный ZFS позволяет получить доступ к локальным пулам ZFS (или файловым системам ZFS внутри таких пулов).
Данное хранилище поддерживает общие свойства хранилищ PVE (content, nodes, disable). Кроме того, для его настройки используются следующие параметры:
  • pool — имя пула или файловой системы ZFS;
  • blocksize — размер блока;
  • sparse — использовать тонкое выделение ресурсов;
  • mountpoint — точка монтирования пула/файловой системы ZFS. Изменение этого параметра не влияет на свойство mountpoint в ZFS. По умолчанию /<pool>.
Пул ZFS поддерживает следующие типы RAID:
  • RAID-0 (Single Disk) — размер такого пула — сумма емкостей всех дисков. RAID0 не добавляет избыточности, поэтому отказ одного диска делает том не пригодным для использования (минимально требуется один диск);
  • пул RAID-1 (Mirror) — данные зеркалируются на все диски (минимально требуется два диска);
  • пул RAID-10 — сочетание RAID0 и RAID1 (минимально требуется четыре диска);
  • пул RAIDZ-1 — одинарный паритет (аналог RAID-5, минимально требуется три диска);
  • пул RAIDZ-2 — двойной паритет (аналог RAID-5, минимально требуется четыре диска);
  • пул RAIDZ-3 — тройной паритет (аналог RAID-5, минимально требуется пять дисков).
Пример конфигурации (/etc/pve/storage.cfg):
zfspool: vmdata
    pool vmdata
    content images,rootdir
    mountpoint /vmdata
    nodes pve03
Допустимые типы содержимого:
  • rootdir — данные контейнеров LXC;
  • images — образы виртуальных дисков в формате raw или как subvol.
Используется следующая схема именования:
  • vm-<VMID>-<NAME> — диск ВМ;
  • base-<VMID>-<NAME> — шаблон (только для чтения);
  • subvol-<VMID>-<NAME> — файловая система ZFS для контейнеров.

Примечание

Если на ZFS-диске ВМ созданы разделы LVM, гипервизор не сможет удалить такой диск. Пример ошибки:
cannot destroy 'data/vm-101-disk-0': dataset is busy
Чтобы избежать конфликта, следует исключить ZFS-диски из области сканирования LVM, добавив в конфигурацию LVM (файл /etc/lvm/lvm.conf) в секцию devices{} строки:
# Do not scan ZFS zvols (to avoid problems on ZFS zvols snapshots)
filter = [ "r|^/dev/zd*|" ]
global_filter = [ "r|^/dev/zd*|" ]

26.4.7.1. Создание локального ZFS-хранилища в веб-интерфейсе

Для создания локального ZFS-хранилища:
  1. Выбрать узел, на котором будет создано хранилище.
  2. В разделе Диски выбрать пункт ZFS и нажать кнопку Создать: ZFS:
    Добавление ZFS хранилища
  3. В открывшемся окне задать параметры ZFS хранилища: имя хранилища, выбрать диски, уровень RAID и нажать кнопку Создать:
    Параметры ZFS хранилища
Статус пула можно просмотреть, выбрав его в списке и нажав кнопку Подробно:
Локальное ZFS хранилище
Для изменения параметров хранилища следует перейти в Центр обработки данныхХранилище, выбрать нужное хранилище и нажать кнопку Редактировать:
Выбор хранилища для редактирования
В открывшемся окне можно изменить тип содержимого контейнера, включить/отключить хранилище, включить дисковое резервирование:
Редактирование ZFS хранилища

26.4.7.2. Администрирование ZFS

Основными командами для управления ZFS являются zfs и zpool.
Для создания нового пула необходим как минимум один пустой диск.
Создание пула RAID-0 (минимум 1 диск):
# zpool create -f -o ashift=12 <pool> <device1> <device2>
Создание пула RAID-1 (минимум 2 диска):
# zpool create -f -o ashift=12 <pool> mirror <device1> <device2>
Создание пула RAID-10 (минимум 4 диска):
# zpool create -f -o ashift=12 <pool> mirror <device1> <device2> mirror <device3> <device4>
Создание пула RAIDZ-1 (минимум 3 диска):
# zpool create -f -o ashift=12 <pool> raidz1 <device1> <device2> <device3>
Создание пула RAIDZ-2 (минимум 4 диска):
# zpool create -f -o ashift=12 <pool> raidz2 <device1> <device2> <device3> <device4>
Замена диска:
# zpool replace -f <pool> <old device> <new device>
Включить сжатие:
# zfs set compression=on <pool>
Просмотр списка доступных файловых систем ZFS:
# pvesm zfsscan
Пример создания зеркала :
# zpool create -f vmdata mirror sdb sdc
Просмотр пулов:
# zpool list
NAME     SIZE  ALLOC   FREE  CKPOINT  EXPANDSZ   FRAG    CAP  DEDUP    HEALTH  ALTROOT
vmdata  17,5G   492K  17,5G        -         -     0%     0%  1.00x    ONLINE  -
Статус пула:
# zpool status
  pool: vmdata
 state: ONLINE
config:

    NAME        STATE     READ WRITE CKSUM
    vmdata      ONLINE       0     0     0
      mirror-0  ONLINE       0     0     0
        sdb     ONLINE       0     0     0
        sdc     ONLINE       0     0     0

errors: No known data errors