Files
homework05/README.md
2025-11-24 23:03:45 +03:00

7.9 KiB
Raw Permalink Blame History

Домашнее задание 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/