# Задания

## 0. Подготовка виртуальной машины
### 0.1
Загрузите виртуальную машину `bios` или `uefi` с подключенным диском `gparted-live-*.iso` и загрузите debian с gparted. Зайдите в gparted найдите в интерфейсе все подключенные диски и их разметку. 

### 0.2
Добавьте к оборудованию виртуальной машины 15 новых дисков по 0.1ГБ, обновите список устройств в интерфейсе gparted. Создайте snapshot виртуальной машины на случай ошибок в конфигурации.

Далее создадим несколько RAID массивов и логических томов LVM. Обе техники, RAID и LVM, абстрагируют примонтированные дисковые устройства от физических дисков. В обоих случаях в системе появляются новые блочные устройства в `/dev/`, которые можно использовать для создания файловых систем. В последнем задании попробуем современный подход к организации хранения данных с помощью ZFS или btrfs.

## 1. Программный RAID 

### 1.1 RAID 0
#### 1.1.1 
Зайдите в терминал. Изучите документацию `mdadm`: `man mdadm` и `mdadm --help`. Создайте программный raid массив типа 0 (чередование записи разбитого на блоки потока данных) на основе первых 2 созданных дисков по 0.1ГБ. Используйте сырые диски, например `/dev/sdc /dev/sdd`.

#### 1.1.2
Изучите документацию `mkfs.ext4`. Отформатируйте raid `/dev/md0` командой `mkfs.ext4` с опцией указания метки `-L raid0`. 

#### 1.1.3
Примонтируйте файловую систему на `/dev/md0` в папку `/raid0`, предварительно её создав. Проверьте, что запись и чтение работают для этой директории. Проверьте размер диска, общий объем должен составлять 0.2GB.

#### 1.1.4
Отключите live диск с gparted, перезагрузите машину и зайдите в одну из ОС. Настройте сеть, если она ещё не настроена (используйте gateway 192.168.1.1), установите mdadm, если пакет ещё не установлен.  

Выведите список устройств в директории `/dev`, среди которых должно присутствовать устройство `/dev/md0`. Если его нет, после установки mdadm перезагрузите систему.

Вызовите команды `mdadm --query` и `mdadm --detail` для `/dev/md0`. 

#### 1.1.5
Изучите документацию fstab `man fstab`. Добавьте запись в `/etc/fstab` для автоматического монтирования raid при загрузке ОС в ту же директорию `/raid0`. Используйте UUID для указания на `/dev/md0` (вывести таблицу uuid можно командой `blkid`). Последние два значения установите в `0 2`. После перезагрузки системы, проверьте, что директория примонтировалась, доступна для записи и чтения. 

### 1.2 RAID 1
#### 1.2.1
Проделайте аналогичные инструкции для создания raid 1 (дублирование записи) на 2-х следующих дисках по 0.1ГБ. 

Загрузите в gparted live диск. Запишите из меню `Device` таблицу разметки типа GPT на каждый диск. Создайте по одному не отформатированному разделу на дисках.

Примечание. Если вы используете сырые диски без разметки, заменять диски можно только на идентичного размера диск. Предварительная разметка диска позволяет заменить диск на диск большего размера, при сохранении размеров разделов.

Примонтируйте сконфигурированный raid в `fstab`, используя метку файловой системы.

#### 1.2.2
Сэмулируйте отказ одного из дисков:
```
mdadm /dev/md1 --fail /dev/sdd
```
Проверьте сообщения `/var/log/messages` и содержимое `/proc/mdstat`. Проверьте, что запись и чтение в raid всё ещё работают.

Добавьте диск обратно:
```
mdadm /dev/md0 --re-add /dev/sdd
```
Повторите проверки.

## 2. Менеджер логических томов LVM

Архитектура верхнего уровня LVM заключается в том, что отдельные диски и разделы (физические тома) собираются в пулы хранения, называемые группами томов. Затем группы томов подразделяются на логические тома, представляющие собой блочные устройства, содержащие файловые системы.

У физического тома (physical volume) должна быть метка LVM, созданная командой `pvcreate`. Создание метки — это первый шаг к доступу к устройству через LVM. В дополнение к мета информации метка содержит уникальный идентификатор для идентификации устройства.

Термин «физический том» (physical volume) может вводит в заблуждение, поскольку физические тома не обязательно должны иметь прямое соответствие с физическими устройствами. Это могут быть диски, разделы диска или RAID массивы. 

Вы можете управлять LVM либо с помощью большой группы простых команд (перечисленных в таблице 1), либо с помощью одной команды lvm и ее различных подкоманд. Отдельные команды — это просто ссылки на lvm. 

`man lvm` — хорошее введение в систему и её инструменты.

Таблица1. Команды LVM
| Сущность | Команды |
|------------|----------------------------------------------------|
| Physical volume | `pvcreate pvdisplay pvchange pvck` |
| Volume group | `vgcreate vgchange vgextend vgdisplay vgck vgscan` |
| Logical volume | `lvcreate lvchange lvresize lvdisplay` |

Установите lvm2 пакет, если он не установлен в системе.

### 2.1
Создайте логический диск с чередованием загрузки (striping, аналог raid 0). Примонтируйте в систем, проверьте работу логического тома.

В начале разметьте диски в gparted, создайте по одному разделу GPT. Затем установите метки lvm каждом диске командой `pvcreate`. Добавьте диски в группу (Volume group) с названием RAID0 командой `vgcreate`. Посмотрите на свойства группы командой `vgdisplay`. И  создайте логический том командой `lvcreate`. Задайте ему название raid0, размер 0.2ГБ и количеством полосок для чередования записи равным 2.

Проинициализируйте на логическом диске файловую систему, примонтируйте и проверьте её работоспособность.

### 2.2
Создайте логический диск с дублированием данных (аналог raid 1). Используйте параметры `--mirrors` и `--type`.

Для созданных сущностей выведите свойства командами `pvdisplay`, `vgdisplay`, `lvdisplay`.

## 3. Интегрированные подходы к управлению хранилищем btrfs и zfs

ZFS и Btrfs обычно называют файловыми системами. Но на самом деле они представляют собой вертикально интегрированные подходы к управлению хранилищем, включающие в себя функции файловой системы, менеджера логических томов и RAID-контроллера.

### 3.1
Создайте аналоги RAID-10 (4 диска) и RAID-5 (3 диска) в одной из файловых систем: btrfs или zfs.

Установите пакет:
- `btrfs-progs`, если он ещё не установлен для работы с btrfs,
- `zfsutils-linux` (contrib ветка), если он ещё не установлен для работы с zfs.


# Релевантная литература
1. Nemeth E. et al. UNIX and Linux system administration handbook. Chapter 5, Chapter 20.
2. Lukas, Jude. FreeBSD Mastery: ZFS
3. BTRFS documentation. https://btrfs.readthedocs.io/en/latest/