notes/zfs.md

7.9 KiB
Raw Blame History

ZFS в ОС Альт 10.2

Введение

ZFS - это современная файловая система и одновременно логический менеджер томов, изначально разработана компанией SUN, далее Oracle

Возможности ZFS

  • масштабируемость
  • защита от потерь данных, программная отказоустойчивость
  • поддержка больших объемов данных
  • интеграция управления логическими томами с файловой системой
  • поддержка снимков и CoW клонирования
  • непрерывный контроль целостности
  • автоматическое восстановление

Уровни абстракции ZFS

  • Virtual Devices. VDEVs. Виртуальные устройства.
  • Pool. Пулы.
  • DataSet. Файловая система внутри пула

Virtual Devices

VDEVs. Виртуальные устройства. Используются для размещения данных или в служебных целях для тонкой настройки ZFS

  • физические диски
  • разделы дисков
  • файл образа диска с указанием полного пути

Использование виртуальных устройств

  • без явного указания виртуальные устройства объединяются пул уровня RAID0 - запись с чередованием для повышения скорости. Без избыточности и отказоустойчивости.
  • mirror - програмный массив RAID1
  • raidz1/2/3 - RAID-массивы с контролем четности
  • spare - диски горячего запаса для RAID. На них не хранятся данные, эти диски включаются в работу в случае выхода из строя диска в пуле
  • cache - устройство для кэша 2го уровня (L2ARC). Рекомендуется использовать на быстрых SSD дисках. Если скорость дисков с данным не отличается от скорости дисков с кешем, смысл выделения отдельных дисков по кеш пропадает. КРАЙНЕ ЧУВСТВИТЕЛЕН К ПОТЕРЕ ДАННЫХ
  • log - отдельный журнал (SLOG), содержащий ZFS Intent Log (ZIL). Так же как и кеш есть смысл использовать только для ускорения работы на быстрых дисках

Pool

Тип пула Опция Мин.дисков/VDEVs Описание
RAID-0 по-умолчанию 1/1 сумма дисков, нет избыточности
RAID-1 mirror 2/1 данные зеркалируются на все диски
RAID-10 mirror 4/2 сочетание RAID0 и RAID1
RAIDZ-1 raidz 3/1 аналог RAID5, одинарная четность
RAIDZ-2 raidz2 4/1 аналог RAID6, двойная четность
RAIDZ-3 raidz3 5/1 тройная четность

RAID0 быстрее RAID1, кот. быстрее RAIDZ-1, кот. быстрее RAIDZ-2, кот. быстрее RAIDZ-3

Размер пула невозможно уменьшить, только увеличить

Установка

Подготовка

Для включения поддержки ZFS в ОС Альт 10.2 необходимо загрузить соответствующий модуль ядра и утилиту командной строки

[root@zfs ~]# apt-get update && apt-cache search zfs | grep kernel
...
kernel-modules-zfs-std-def - ZFS Linux modules
kernel-modules-zfs-un-def - ZFS Linux modules
kernel-source-zfs - ZFS modules sources for Linux kernel
[root@zfs ~]# apt-cache search zfs | grep utils
zfs-utils - Native OpenZFS management utilities for Linux

В репозитории есть модуль для двух веток ядер: std-def, un-def. Для того, чтобы понять какой модуль необходим, нужно уточнить какое ядро используется на узле

[root@zfs ~]# uname -r
6.1.83-un-def-alt1

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

apt-get update && apt-get dist-upgrade -y
update-kernel -y
reboot

Установка модуля ядра и утилиты командной строки

apt-get install kernel-modules-zfs-un-def zfs-utils -y
reboot

Загрузка модуля ядра

Если на узле уже имеются zfs пулы, система их увидит и автоматически загрузит необходимый модуль, если же пулов ещё нет, модуль нужно загрузить

[root@zfs ~]# modprobe zfs
[root@zfs ~]# lsmod | grep zfs
zfs                  3678208  0
zunicode              335872  1 zfs
zzstd                 581632  1 zfs
zlua                  176128  1 zfs
zavl                   16384  1 zfs
icp                   307200  1 zfs
zcommon                94208  2 zfs,icp
znvpair                94208  2 zfs,zcommon
spl                   110592  6 zfs,icp,zzstd,znvpair,zcommon,zavl

Автозагрузка модуля ядра

Вместе с модулем ядра будет установлен соответствующий конфигурационный файл для автозагрузки /etc/modules-load.d/zfs.conf

[root@zfs ~]# cat /etc/modules-load.d/zfs.conf
# The default behavior is to allow udev to load the kernel modules on demand.
# Uncomment the following line to unconditionally load them at boot.
#zfs

В нём необходимо раскоментировать строку zfs

[root@zfs ~]# cat /etc/modules-load.d/zfs.conf
# The default behavior is to allow udev to load the kernel modules on demand.
# Uncomment the following line to unconditionally load them at boot.
zfs

вверх

Создание пула

В общем виде создание пула

zpool create -f -m [raidz(2|3)|mirror]