1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
ZFS — относительно новая система, разработанная Sun для Solaris. Поскольку код ZFS не соответствует лицензии GPL, ее нельзя интегрировать с ядром Linux. По этой причине Linux поддерживает эту файловую систему лишь опосредованно, через FUSE. $ man zpool $ man zfs Более подробная информация дается здесь: http://zfs-fuse.net http://www.nas-faq.ml/zfs/ https://www.gotoadm.ru/basic-commands-for-zfs/ https://blog.denisbondar.com/post/zfs-manual-rus https://linuxhint.com/install-zfs-debian/ https://unixhelp.org/how-to-install-add-apt-repository-on-debian-9-10-ubuntu-18-04-16-04/ https://neoserver.ru/help/uvelichenie_diskovogo_prostranstva_v_os_freebsd https://xakep.ru/2014/07/08/zfs-at-home/ |
install zfs debian 10
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
0. добавляем репозиторий contrib apt update apt -y install software-properties-common dirmngr apt-transport-https lsb-release ca-certificates add-apt-repository contrib apt update 1. cтавим необходимые пакеты для дальнейшей установки apt install Linux-headers-$(uname -r) Linux-image-amd64 spl kmod 2. устанавливаем zfs (установка вылетит не переживаем) apt install zfsutils-linux zfs-dkms zfs-zed 3. включаем модуль zfs modprobe zfs 4. исправляем ошибки и до установим zfs apt -f install 5. добавляем модуль в автозагрузку создав файл nano /etc/modules-load.d/zfs.conf --------------------------------- zfs --------------------------------- 6. перезагружаем и проверяем reboot - перезагрузка lsmod | grep zfs - проверяем что модуль загрузился после перезагрузки |
Создание файлов для тестов:
1 2 3 4 5 6 7 8 9 |
dd if=/dev/zero of=/mnt/file5gb.img bs=1M count=5000 cd /mnt - переходим в каталог mnt fallocate -l 1G /disk_name.img mkfile 100m disk1 disk2 disk3 disk5 mkfile 50m disk4 |
zpool
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
zpool - это основной инструмент управления разделами и функциональными возможностями ZFS. $ zpool команда параметры опции устройства add - добавить раздел к существующему пулу attach - добавить раздел или жесткий диск к пулу файловой системы clean - очистить все ошибки дисков create - создать новый пул из физического раздела, на котором будут размещены виртуальные диски destroy - удалить пул разделов zfs detach - отключить физический раздел от пула events - посмотреть сообщения ядра, отправленные модулем zfs export - экспортировать пул для переноса в другую систему get - посмотреть параметры пула set - установить значение переменной history - отобразить историю команд zfs import - импортировать пул iostat - отобразить статистику ввода/вывода для выбранного пула zfs list - вывести список всех пулов offline/online - выключить/включить физическое устройство, данные на нем сохраняются, но их нельзя прочитать или изменить remove - удалить устройство из пула replace - перенести все данные со старого устройства не новое scrub - проверка контрольных сумм для всех данных status - вывести статус пула |
примеры использования zpool
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
zpool list - вывести список всех пулов zpool status - вывести статус пула stripe - страйп, нечто среднее между RAID0 и JBOD. Не имеет избыточности, вся информация теряется при смерти любого из дисков. mirror - зеркало, примерный аналог RAID1. Каждый диск зеркала содержит полную копию всей информации. Выдерживает смерть одного любого диска. Возможно и тройное зеркало. raidz1 - примерный аналог RAID5, требует минимум 3 дисков, объем одного диска уходит на избыточность. Выдерживает смерть одного любого диска. raidz2 - примерный аналог RAID6, требует минимум 4 диска, объем двух дисков уходит на избыточность. Выдерживает смерть двух любых дисков. raidz3 - требует минимум 5 дисков, объем трёх дисков уходит на избыточность. Выдерживает смерть трёх любых дисков. zraid - аналог raid5 zraid2 - аналог raid6 zpool create -f pool0 /dev/sda7 - создадим пул на основе существующего раздела /dev/sda7 zpool create pool0 zraid /dev/sda /dev/sdb /dev/sdc - создадим zraid из дисков (sda,sdb,sdc), диски должны иметь одинаковый размер zpool create pool0 mirror sda sdb - создадим raid1 из двух дисков (sda,sdb) zpool attach pool0 /dev/sdd - добавить новый жесткий диск(/dev/sdd) или раздел к пулу (pool0) zpool detach pool0 /dev/sdd - удалить устройство (/dev/sdd) из пула (pool0) zpool destroy pool0 - удалить пул (pool0) zpool scrub pool0 - проверка пула (pool0) на ошибки zpool iostat pool0 - статистику использования пула (pool0) |
Файловая система zfs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
Cоздание файловых систем в zfs: zfs create pool0/data - создадим в пуле (pool0) data zfs create pool0/files - создадим в пуле (pool0) files zfs create pool0/media - создадим в пуле (pool0) media Точка монтирования для пула и для каждой созданной в нем файловой системы создается в корневом каталоге (/pool0) zfs mount pool0/data - монтирование zfs umount /pool0/data - от монтирование Параметры файловой системы zfs zfs get all pool0/files - посмотреть все текущие параметры ФС zfs zfs set compression=gzip pool0/files - включим сжатие zfs set checksum=off pool0/files - отключим проверку контрольных сумм zfs get mountpoint pool0/files - смотрим точку монтирования zfs set mountpoint=/mnt pool0/files - установим свою точку монтирования zfs mount - показать точки монтирования |
Снимки zfs
1 2 3 4 5 6 7 |
zfs snapshot pool0/files pool0/files@shot1 - создания снимка zfs rollback pool0/files@shot1 - восстановление из снимка zfs list -t snapshot - посмотреть список снимков zfs destory pool0/files@shot1 - удалить ненужный снимок |
Удалить пул myzfs:
1 2 |
zpool destroy myzfs - удаляем пул myzfs zpool list - проверяем |
Пример работы с raid1 \ удаление \ spare array \ добавление дисков:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
Создаем пул из трех дисков RAID1: zpool create myzfs mirror /disk1 /disk2 /disk3 - создаем raid1 zpool list - смотрим что получилось Исключаем диск disk3 из пула myzfs: !!! zpool remove myzfs /disk3 - удаление диска, не возможно применить к зеркалам (raid1) zpool detach myzfs /disk3 - удаляем диск /disk3 из пула zpool status -v - смотрим что получилось Добавить диск горячей замены: zpool add myzfs spare /disk3 - добавляем в пул myzfs диск /disk3 как spare array zpool status -v - смотрим что получилось Отключение пула: zpool offline myzfs /disk1 Включить пул: zpool online myzfs /disk1 Очистка хранилища: zpool scrub myzfs - чистка хранилища Экспорт хранилища: zpool export myzfs - экспорт хранилища для использования на другой системе Импортирование хранилища: zpool import -d / myzfs - импортировать хранилище на другой системе Получить статистику по операциям ввода/вывода: zpool iostat Показать историю команд: zpool history Показать состояние пула: zpool status -v Показать пулы: zpool list Показать включенные опции: zpool list -o Включить квоту: zfs set quota=20m myzfs/disk zfs list -o quota myzfs/disk zfs get quota myzfs/disk |
Увеличение / расширение пула:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
zpool history - посмотреть историю выполненных команд zpool list - показать пулы zpool list -a zpool list -o zpool list pool0 zpool status - показать состояние пулов zpool status -a zpool create -f pool0 /dev/vdb - создаем zfs из одного диска !!! zpool scrub pool0 - выполнить сборку мусора Включение опций: zpool set autoexpand=on pool0 zpool set expandsize=yes pool0 zpool set readonly=off pool0 zpool get autoexpand - проверяем включена опция autoexpand zpool -e pool0 /dev/vdb - выполняем расширение пула, после изменения размера диска /dev/vdb |