From 97855fb66407c36803f4b7c7cfc80a7d0ac7540d Mon Sep 17 00:00:00 2001 From: admin Date: Mon, 24 Nov 2025 23:03:45 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 263 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 263 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..4d94c7e --- /dev/null +++ b/README.md @@ -0,0 +1,263 @@ +# Домашнее задание 5 + +## Работа с ZFS + +Для выполнение задания используется Ubuntu Server 24.04 + +### Добавляем 8 hdd в VM + +Для выполнения домашнего задания добавил в VM 8 дисков по 200Mb + +Проверяем через lsblk, что диски присутствуют в системе + + +```bash +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 + +``` + + + +Для дальнейших действий перейдем сразу в суперпользователя + + +```bash +nimda@ubuntu:~$ sudo su +[sudo] password for nimda: +root@ubuntu:/home/nimda# +``` + + +### Установка утилит для ZFS + +Устанавливаем утилиты ZFS + +```bash +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 + +```bash +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 +```bash +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 - + +``` + + + +Для каждого пула включим сжатие данных, и применим разные алгоритмы сжатия + +```bash +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 + +``` + + +### Проверка сжатие файлов разными алгоритмами + + +Выполним небольшой скрипт, который скачает один и тот же файл на все на пулы +```bash +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 посмотрим, сколько занято место в пулах + +```bash +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 + +```bash +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 +``` + + +распаковываем скаченный архив + +```bash +root@ubuntu:/home/nimda# tar -xzvf /tmp/archive.tar.gz +zpoolexport/ +zpoolexport/filea +zpoolexport/fileb + +``` + + +Проверим возможность импорта + +```bash +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 + +``` + + +Сделаем импорт пула + +```bash +root@ubuntu:/home/nimda# zpool import -d zpoolexport/ otus + +``` + + +проверяем + +```bash +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 + +``` + +Посмотрим сколько файлов и папок храниться в импортируемом пуле + +```bash +root@ubuntu:/home/nimda# find /otus -type d | wc -l +17538 +root@ubuntu:/home/nimda# find /otus -type f | wc -l +0 + +``` +Видим, что имеется 17538 папок, и нет ни одного файла + + + +### Работа со снапшотами + +Скачаем отдельно файл снапшота +```bash +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 из скаченного снапшота + +```bash +root@ubuntu:/home/nimda# zfs receive otus/test@today < /tmp/otus_task2.file +``` + +Ищем секретное сообщение + +```bash +root@ubuntu:/home/nimda# find /otus/test -name "secret_message" +/otus/test/task1/file_mess/secret_message +``` + +Смотрим содержимое файла + +```bash +root@ubuntu:/home/nimda# cat /otus/test/task1/file_mess/secret_message +https://otus.ru/lessons/linux-hl/ + + +``` + +Видим, что там ссылка на https://otus.ru/lessons/linux-hl/ + + + + + + + +