You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

127 lines
14 KiB
Markdown

# Задания
## 0. Подготовка виртуальной машины
В последующих заданиях будет полезной функция Proxmox snapshot, которая позволяет откатить состояние жёстких дисков до момента времени снимка. Если вы будете пользоваться этой функцией, чтобы ускорить процесс создания снимка, предварительно выключайте машину.
### 0.1
Загрузите виртуальную машину `bios` или `uefi` с подключенным диском `gparted-live-*.iso` и загрузите debian с gparted. Зайдите в gparted найдите в интерфейсе все подключенные диски и их разметку.
### 0.2
Добавьте к оборудованию виртуальной машины 15 новых дисков по 0.1ГБ, обновите список устройств в интерфейсе gparted. Создайте snapshot виртуальной машины на случай ошибок в конфигурации.
Далее создадим несколько `RAID` массивов и логических томов `LVM`. Обе техники, `RAID` и `LVM`, абстрагируют примонтированные дисковые устройства от физических дисков. В обоих случаях в системе появляются новые блочные устройства в `/dev/`, которые можно использовать для создания файловых систем. Решение `mdadm` является более специализированным для создания массивов дисков, в отличие от `LVM`. В последнем задании попробуем современный подход к организации хранения данных с помощью `ZFS` или `btrfs`.
### Таблица 1. Типы RAID массивов
|Тип| Описание| Количество дисков | Выдерживает потерю |
|---|---------|-----------| ------ |
| RAID0 | Дисковый массив из двух или более жёстких дисков без резервирования (striping — «чередование»). | от 2 | 0 дисков |
| RAID1 | Массив из двух дисков являющихся полными копиями друг друга (mirroring — «зеркалирование»). | от 2 | N-1 дисков |
| RAID2 | Данные распределяются по дискам, предназначенным для хранения информации, так же, как и в RAID 0, но требуются выделенные диски в массиве для хранения кодов Хэмминга для коррекции ошибок. | от 3 | 1 диска |
| RAID3 | В массиве RAID 3 из N дисков данные разбиваются на куски размером меньше сектора и распределяются по N-1 дискам. Ещё один диск используется для хранения блоков чётности. Коррекция ошибок проще, чем в RAID 2, коды коррекции занимают 1 диск, вместо log2(N) дисков. | от 4 | 1 диска |
| RAID4 | RAID 4 похож на RAID 3, но отличается от него тем, что данные разбиваются на блоки, а не на байты. Отчасти это решает проблему низкой скорости чтения данных небольшого объёма. | от 4 | 1 диска |
| RAID5 | Основным недостатком уровней RAID от 2-го до 4-го является невозможность производить параллельные операции записи, так как для хранения информации о чётности используется отдельный контрольный диск. RAID 5 не имеет этого недостатка. Дисковый массив с чередует блоки данных и блоки контроля чётности. | от 3 | 1 диска |
| RAID6 | Массив из четырёх или более дисков с проверкой чётности `P+Q` (двумя томами чётности) или `DP` (разработанный для защиты от потери данных при выходе из строя сразу двух жестких дисков в массиве). | от 4 | 2 дисков |
| RAID01 | Массив типа RAID 1, состоящий из двух вложенных массивов типа RAID 0. | от 4, чётное | от 1 до N/2 дисков |
| RAID10 | Массив типа RAID 0, составленный из двух и более RAID 1 (зеркалированных пар). | от 4, чётное | от 1 до N/2 дисков |
| RAID51 | Массив типа RAID 1, зеркалирующий два RAID 5. | от 6, чётное | 2 до N/2+1 дисков |
https://ru.wikipedia.org/wiki/RAID
## 1. Программный RAID `mdadm`
### 1.1 RAID 0
#### 1.1.1
Зайдите в терминал. Изучите документацию `mdadm`: `man mdadm` и `mdadm --help`. Создайте программный raid массив типа 0 (чередование записи разбитого на блоки потока данных) на основе первых 2 созданных дисков по 0.1GB. Используйте сырые диски, например `/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, перезагрузите машину и зайдите в одну из ОС. Настройте сеть, если она ещё не настроена, установите `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 всё ещё работают.
Добавьте диск обратно:
```
1 year ago
mdadm /dev/md1 --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/