notes/zfs.md

154 lines
7.9 KiB
Markdown
Raw Normal View History

2024-04-03 13:16:43 +03:00
# ZFS в ОС Альт 10.2
- [ZFS в ОС Альт 10.2](#zfs-в-ос-альт-102)
2024-04-03 13:58:23 +03:00
- [Введение](#введение)
- [Возможности ZFS](#возможности-zfs)
- [Уровни абстракции ZFS](#уровни-абстракции-zfs)
- [Virtual Devices](#virtual-devices)
- [Pool](#pool)
2024-04-03 13:16:43 +03:00
- [Установка](#установка)
- [Подготовка](#подготовка)
- [Установка модуля ядра и утилиты командной строки](#установка-модуля-ядра-и-утилиты-командной-строки)
- [Загрузка модуля ядра](#загрузка-модуля-ядра)
- [Автозагрузка модуля ядра](#автозагрузка-модуля-ядра)
- [Создание пула](#создание-пула)
2024-04-03 13:58:23 +03:00
## Введение
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
Размер пула невозможно уменьшить, только увеличить
2024-04-03 13:16:43 +03:00
## Установка
### Подготовка
Для включения поддержки ZFS в ОС Альт 10.2 необходимо загрузить соответствующий модуль ядра и утилиту командной строки
```bash
[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
```
```bash
[root@zfs ~]# apt-cache search zfs | grep utils
zfs-utils - Native OpenZFS management utilities for Linux
```
В репозитории есть модуль для двух веток ядер: `std-def`, `un-def`. Для того, чтобы понять какой модуль необходим, нужно уточнить какое ядро используется на узле
```bash
[root@zfs ~]# uname -r
6.1.83-un-def-alt1
```
Таким образом для включения поддержки на уровне ядра необходимо установить модуль. Т.к. из репозитория будет установлен модуль для актуальной версии ядра, необходимо на узле также выполнить обновление ядра, как и всей системы
```bash
apt-get update && apt-get dist-upgrade -y
update-kernel -y
reboot
```
### Установка модуля ядра и утилиты командной строки
```bash
apt-get install kernel-modules-zfs-un-def zfs-utils -y
reboot
```
### Загрузка модуля ядра
Если на узле уже имеются zfs пулы, система их увидит и автоматически загрузит необходимый модуль, если же пулов ещё нет, модуль нужно загрузить
```bash
[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`
```bash
[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
```bash
[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
```
2024-04-03 13:17:50 +03:00
[вверх](#zfs-в-ос-альт-102)
2024-04-03 13:16:43 +03:00
## Создание пула
2024-04-03 13:58:23 +03:00
В общем виде создание пула
zpool create -f -m <mount> <pool> [raidz(2|3)|mirror] <ids>