Домашнее задание 5
Работа с ZFS
Для выполнение задания используется Ubuntu Server 24.04
Добавляем 8 hdd в VM
Для выполнения домашнего задания добавил в VM 8 дисков по 200Mb
Проверяем через lsblk, что диски присутствуют в системе
nimda@ubuntu:~$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 1.8G 0 part /boot
└─sda3 8:3 0 18.2G 0 part
└─ubuntu--vg-ubuntu--lv 252:0 0 16G 0 lvm /
sdb 8:16 0 204M 0 disk
sdc 8:32 0 204M 0 disk
sdd 8:48 0 204M 0 disk
sde 8:64 0 204M 0 disk
sdf 8:80 0 204M 0 disk
sdg 8:96 0 204M 0 disk
sdh 8:112 0 204M 0 disk
sdi 8:128 0 204M 0 disk
sr0 11:0 1 3.1G 0 rom
Для дальнейших действий перейдем сразу в суперпользователя
nimda@ubuntu:~$ sudo su
[sudo] password for nimda:
root@ubuntu:/home/nimda#
Установка утилит для ZFS
Устанавливаем утилиты ZFS
root@ubuntu:/home/nimda# apt install zfsutils-linux -y
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
libnvpair3linux libuutil3linux libzfs4linux libzpool5linux zfs-zed
...
...
No VM guests are running outdated hypervisor (qemu) binaries on this host.
root@ubuntu:/home/nimda#
Создание пулов ZFS
Создаем 4 пула ZFS в режиме raid 1
root@ubuntu:/home/nimda# zpool create pool_1 mirror /dev/sdb /dev/sdc
root@ubuntu:/home/nimda# zpool create pool_2 mirror /dev/sdd /dev/sde
root@ubuntu:/home/nimda# zpool create pool_3 mirror /dev/sdf /dev/sdg
root@ubuntu:/home/nimda# zpool create pool_4 mirror /dev/sdh /dev/sdi
посмотрим вывод zpool list
root@ubuntu:/home/nimda# zpool list
NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
pool_1 176M 110K 176M - - 1% 0% 1.00x ONLINE -
pool_2 176M 108K 176M - - 1% 0% 1.00x ONLINE -
pool_3 176M 105K 176M - - 1% 0% 1.00x ONLINE -
pool_4 176M 102K 176M - - 1% 0% 1.00x ONLINE -
Для каждого пула включим сжатие данных, и применим разные алгоритмы сжатия
root@ubuntu:/home/nimda# zfs set compression=lzjb pool_1
root@ubuntu:/home/nimda# zfs set compression=lz4 pool_2
root@ubuntu:/home/nimda# zfs set compression=gzip-9 pool_3
root@ubuntu:/home/nimda# zfs set compression=zle pool_4
Проверка сжатие файлов разными алгоритмами
Выполним небольшой скрипт, который скачает один и тот же файл на все на пулы
root@ubuntu:/home/nimda# for i in {1..4}; do wget -P /pool_$i https://gutenberg.org/cache/epub/2600/pg2600.converter.log; done
С помощью zpool list посмотрим, сколько занято место в пулах
root@ubuntu:/home/nimda# zpool list
NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
pool_1 176M 21.7M 154M - - 4% 12% 1.00x ONLINE -
pool_2 176M 17.7M 158M - - 4% 10% 1.00x ONLINE -
pool_3 176M 10.8M 165M - - 3% 6% 1.00x ONLINE -
pool_4 176M 39.5M 137M - - 7% 22% 1.00x ONLINE -
Мы видим, что меньше всего занято в pool_3, там применялся метод сжатия gzip-9
Определение настроек пула
Скачиваем архив в каталог /tmp
root@ubuntu:/home/nimda# wget -O /tmp/archive.tar.gz --no-check-certificate 'https://drive.usercontent.google.com/download?id=1MvrcEp-WgAQe57aDEzxSRalPAwbNN1Bb&export=download'
...
...
/tmp/archive.tar.gz 100%[=======================================================>] 6.94M 9.97MB/s in 0.7s
2025-11-22 19:34:08 (9.97 MB/s) - ‘/tmp/archive.tar.gz’ saved [7275140/7275140]
root@ubuntu:/home/nimda# ls
распаковываем скаченный архив
root@ubuntu:/home/nimda# tar -xzvf /tmp/archive.tar.gz
zpoolexport/
zpoolexport/filea
zpoolexport/fileb
Проверим возможность импорта
root@ubuntu:/home/nimda# zpool import -d zpoolexport/
pool: otus
id: 6554193320433390805
state: ONLINE
status: Some supported features are not enabled on the pool.
(Note that they may be intentionally disabled if the
'compatibility' property is set.)
action: The pool can be imported using its name or numeric identifier, though
some features will not be available without an explicit 'zpool upgrade'.
config:
otus ONLINE
mirror-0 ONLINE
/home/nimda/zpoolexport/filea ONLINE
/home/nimda/zpoolexport/fileb ONLINE
Сделаем импорт пула
root@ubuntu:/home/nimda# zpool import -d zpoolexport/ otus
проверяем
root@ubuntu:/home/nimda# zpool status otus
pool: otus
state: ONLINE
status: Some supported and requested features are not enabled on the pool.
The pool can still be used, but some features are unavailable.
action: Enable all features using 'zpool upgrade'. Once this is done,
the pool may no longer be accessible by software that does not support
the features. See zpool-features(7) for details.
config:
NAME STATE READ WRITE CKSUM
otus ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
/home/nimda/zpoolexport/filea ONLINE 0 0 0
/home/nimda/zpoolexport/fileb ONLINE 0 0 0
errors: No known data errors
Посмотрим сколько файлов и папок храниться в импортируемом пуле
root@ubuntu:/home/nimda# find /otus -type d | wc -l
17538
root@ubuntu:/home/nimda# find /otus -type f | wc -l
0
Видим, что имеется 17538 папок, и нет ни одного файла
Работа со снапшотами
Скачаем отдельно файл снапшота
root@ubuntu:/home/nimda# wget -O /tmp/otus_task2.file --no-check-certificate https://drive.usercontent.google.com/download?id=1wgxjih8YZ-cqLqaZVa0lA3h3Y029c3oI&export=download
[2] 4835
root@ubuntu:/home/nimda#
Redirecting output to ‘wget-log.1’.
[2]- Done wget -O /tmp/otus_task2.file --no-check-certificate https://drive.usercontent.google.com/download?id=1wgxjih8YZ-cqLqaZVa0lA3h3Y029c3oI
Восстановим пул otus из скаченного снапшота
root@ubuntu:/home/nimda# zfs receive otus/test@today < /tmp/otus_task2.file
Ищем секретное сообщение
root@ubuntu:/home/nimda# find /otus/test -name "secret_message"
/otus/test/task1/file_mess/secret_message
Смотрим содержимое файла
root@ubuntu:/home/nimda# cat /otus/test/task1/file_mess/secret_message
https://otus.ru/lessons/linux-hl/
Видим, что там ссылка на https://otus.ru/lessons/linux-hl/