Добавить README.md
This commit is contained in:
263
README.md
Normal file
263
README.md
Normal file
@@ -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/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user