Работа с ZFS
Информация на этой странице находится в доработке. Информация может добавляться и изменяться.
Я всё чаще стал использовать файловую систему #ZFS и для себя составил шпаргалку по работе с ней. Может быть, кому то ещё пригодится.
Вводные данные
В работе с #ZFS я использую ОС #Debian и пути к дискам (by-path
). Если кто-то захочет использовать идентификаторы (by-id
) дисков, то просто замените в командах пути на идентификаторы. В командах этой статьи я работаю в пулом под названием data
.
Названия переменных
В командах я использую следующие переменные:
p
- название пула.v
- название тома.d
- устройство (диск).b
- устройство (блочное устройство).o
- свойство пула.O
- свойство тома.s
- название снимка.r*
- работа с устройствами RAID-массива.rz*
- работа с устройствами RAIDZ-массива.
Список дисков и их расположение
Вывести список дисков и их расположение (путь) в системе:
Список дисков и их идентификаторы
Вывести список дисков и их идентификаторы в системе:
Пулы
Рассмотрим различные варианты работы с пулами #ZFS.
Создание пула
- Создать обычный пул
data
из одного дискаpci-0000:01:00.0-scsi-0:1:0:0
:
Расширение пула
Расширение пула происходит путём добавления дополнительного диска или увеличением размера виртуального диска.
Добавление диска в пул
- Добавить диск
pci-0000:01:00.0-scsi-0:1:1:0
в пулdata
:
Расширение диска в пуле
- Обновить информацию об устройстве
sdb
, на котором располагается пулdata
и расширить его:
Подключение и отключение дисков
Подключение и отключение дисков осуществляются командами attach
и detach
, соответственно.
Подключение второго диска (для создания зеркала)
- Подключить новый диск
pci-0000:03:00.0-scsi-0:1:1:0
к существующему дискуpci-0000:03:00.0-scsi-0:1:0:0
в пулеdata
для создания зеркала:
Отключение второго диска
- Отключить диск
pci-0000:03:00.0-scsi-0:1:1:0
в пулеdata
:
Экспортирование пула
- Экспортировать все пулы:
- Экспортировать пул
data
:
Импортирование пула
- Посмотреть список пулов для импорта:
- Импортировать пул
data
:
- Импортировать пул
data
с новым именемdata_NEW
:
- Импортировать пул
data
, состоящий из дисковpci-0000:01:00.0-scsi-0:1:0:0
иpci-0000:01:00.0-scsi-0:1:1:0
:
- …или можно разрешить #ZFS автоматически поискать диски пула
data
:
Переименования пула
- Экспортировать пул
data
:
- Импортировать пул
data
с новым именемdata_NEW
:
Обновление пула
- Проверить необходимость обновления пула
data
:
- При появлении надписи
status: Some supported features are not enabled on the pool...
запустить обновление пулаdata
:
- …или обновить сразу все пулы:
Удаление пула
- Удалить пул
data
:
Восстановление пула
- Показать список уничтоженных пулов:
- Восстановить уничтоженный пул
data
:
Список пулов
Вывести список всех пулов в системе:
Статус пула
- Проверить статус пула
data
:
Свойства пула
- Показать все свойства всех пулов:
- Показать все свойства пула
data
:
- Показать свойства
autoexpand
,ashift
иfragmentation
всех пулов:
- Показать свойства
autoexpand
,ashift
иfragmentation
пулаdata
:
- Установить свойство
autoexpand
вon
пулаdata
:
Работа с RAID
Рассмотрим команды создания пула #ZFS из нескольких дисков.
Stripe (RAID0)
- Создать RAID-0 из дисков
pci-0000:01:00.0-scsi-0:1:0:0
иpci-0000:01:00.0-scsi-0:1:1:0
:
Mirror (RAID1)
- Создать зеркало (RAID-1) из дисков
pci-0000:01:00.0-scsi-0:1:0:0
иpci-0000:01:00.0-scsi-0:1:1:0
:
RAID10
- Создать RAID-10 из дисков
pci-0000:01:00.0-scsi-0:1:0:0
,pci-0000:01:00.0-scsi-0:1:1:0
,pci-0000:01:00.0-scsi-0:1:2:0
иpci-0000:01:00.0-scsi-0:1:3:0
:
RAIDZ-1 (RAID5)
- Создать RAID-5 из дисков
pci-0000:01:00.0-scsi-0:1:0:0
,pci-0000:01:00.0-scsi-0:1:1:0
иpci-0000:01:00.0-scsi-0:1:2:0
:
RAIDZ-2 (RAID6)
- Создать RAID-6 из дисков
pci-0000:01:00.0-scsi-0:1:0:0
,pci-0000:01:00.0-scsi-0:1:1:0
,pci-0000:01:00.0-scsi-0:1:2:0
иpci-0000:01:00.0-scsi-0:1:3:0
RAIDZ-3
- Создать RAIDZ-3 из дисков
pci-0000:01:00.0-scsi-0:1:0:0
,pci-0000:01:00.0-scsi-0:1:1:0
,pci-0000:01:00.0-scsi-0:1:2:0
,pci-0000:01:00.0-scsi-0:1:3:0
иpci-0000:01:00.0-scsi-0:1:4:0
:
Работа с ARC и ZIL
Добавляем отдельные устройства для работы с ARC и ZIL.
ARC
- Добавить отдельный диск (L2ARC)
pci-0000:01:00.0-scsi-0:1:4:0
для работы с ARC в пулdata
:
ZIL
- Добавить отдельный диск (SLOG)
pci-0000:01:00.0-scsi-0:1:5:0
для работы с ZIL в пулdata
:
Тома
Создание тома
- Создать том
cloud
в пулеdata
:
- Создать том
cloud
с точкой монтирования/opt/cloud
в пулеdata
:
- Создать том
cloud
с алгоритмом компрессииzstd
в пулеdata
:
- Создать том
cloud
с алгоритмом компрессииzstd
и точкой монтирования/opt/cloud
в пулеdata
:
Удаление тома
- Удалить том
cloud
в пулеdata
:
Создание зашифрованного тома
- Создать том
secret
и зашифровать его парольной фразой в пулеdata
:
Где:
encryption=on
- включение шифрования.keyformat=passphrase
- тип шифрования “парольная фраза”.
При создании тома secret
ZFS попросит ввести парольную фразу для шифрования данных.
Свойства тома
- Показать все свойства всех томов:
- Показать все свойства тома
cloud
в пулеdata
:
- Показать свойства
compressratio
,compression
,mountpoint
иatime
томаcloud
в пулеdata
:
- Показать свойства
compressratio
,compression
,mountpoint
иatime
томаcloud
и во всех его под-томах в пулеdata
:
- Установить свойство
compression
вzstd
томаcloud
в пулеdata
:
- Вернуть свойство
compression
к стандартному наследуемому значению томаcloud
в пулеdata
:
- Вернуть свойство
compression
к стандартному наследуемому значению томаcloud
и во всех его под-томах в пулеdata
:
Снимки
Список снимков
- Показать список всех снимков:
- Показать список снимков тома
cloud
в пулеdata
:
Создание снимков
- Создать снимок
2024-08-21.19-32-02
томаcloud
в пулеdata
:
- Создать снимок
2024-08-21.19-32-02
томаcloud
и всех его дочерних томов в пулеdata
:
Переименование снимков
- Переименовать снимок
name_OLD
томаcloud
в пулеdata
:
- Переименовать снимок
name_OLD
томаcloud
и во всех его дочерних томов в пулеdata
:
Откат данных к снимку
- Выполнить откат данных к снимку
2024-08-21.19-32-02
томаcloud
в пулеdata
:
Удаление снимков
- Удалить снимок
2024-08-21.19-32-02
томаcloud
в пулеdata
:
Оптимизации
Специализированные настройки #ZFS под конкретные задачи.
PostgreSQL
- Создать основной том
pgsql
с алгоритмом компрессииzstd
:
- Создать специальный том
pgsql/main
с алгоритмом компрессииzstd
и размером блока32K
для баз данных:
- Создать специальный том
pgsql/wal
с алгоритмом компрессииzstd
и размером блока32K
для WAL:
- Откорректировать настройки #PostgreSQL:
MySQL
- Создать основной том
mysql
с алгоритмом компрессииzstd
:
- Создать специальный том
mysql/main
с алгоритмом компрессииzstd
и размером блока16K
для баз данных:
- Создать специальный том
mysql/log
с алгоритмом компрессииzstd
для логирования:
- Откорректировать настройки MySQL: