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

264 lines
7.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Домашнее задание 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/