# Практическая работа. Реализация управления логическими томами.
**Цель работы**
* изучить принципы работы утилиты lvm2
**Немного теории**
LVM (Logical Volume Manager) – подсистема операционных систем Linux, позволяющая использовать разные области физического жесткого диска или разных жестких дисков как один логический том.
Главные преимущества LVM – высокий уровень абстракции от физических дисков, гибкость и масштабируемость. Вы можете на лету изменять размер логического тома, добавлять (и удалять) новые диски.

**Уровни дисковых абстракций LVM**
Physical Volume (PV) – физический уровень. Физические диски инициализируются для использования в LVM.
Volume Group (VG) – уровень группы томов. Инициализированные диски объединяются в логические группы с именем.
Logical Volume (LV) — создается логический том на группе томов, на котором размещается файловая система и данные.
---
## I. Создание LVM разделов
#### 1.1 Установка утилиты lvm2.
`sudo apt-get install lvm2`

> Перед установкой следует обновить репозитории пакетного менеджера последовательным выполнением команд `sudo apt update` и `sudo apt upgrade`.
#### 1.2 Проверка подключения двух дополнительных дисков и их доступности в системе.
`sudo fdisk -l`

> Команда `fdisk` с опцией `-l` выводит таблицу разделов устройств, указанных в файле `/proc/partitions`.
#### 1.3 Инициализация дисков утилитой `pvcreate` для дальнейшего использования LVM.
`sudo pvcreate /dev/sdb /dev/sdc`

> Команда `pvcreate` позволяет "отметить" том как физический диск/раздел, который может быть включенным в Volume Group.
Синтаксис команды представляет собой перебор разделов диска, которые должны быть включены в будущую группу томов (VG).
Пример команды:
`sudo pvcreate /dev/sdb1`
`sudo pvcreate /dev/sdb1 /dev/sdb2`
`sudo pvcreate /dev/sdb{1,2}`
#### 1.4 Проверка, что данные диски могут использоваться LVM с помощью команды `pvdisplay`.
`sudo pvdisplay`

> Команда `pvdisplay` выводит подробную информацию о физических томах: название, принадлежность к группе томов, размер, фиксированный размер блока данных (PE), их количество и UUID физического тома.
#### 1.5 Создание группы томов через объединение ранее помеченных дисков через команду `vgcreate`
`sudo vgcreate test /dev/sdb /dev/sdc`

> Команда `vgcreate` создает группу томов из существующих физических. Синтаксис:
`vgcreate название_группы_томов том1 том2`
Пример команды:
`sudo vgcreate test /dev/sdb /dev/sdc /dev/sdd`
`sudo vgcreate test /dev/sd{b,c,d}`
#### 1.6 Проверка результата командой `vgdisplay`
`sudo vgdisplay`

> Команда `vgdisplay` подобно `pvdisplay` выводит информацию, только не о физических томах, а об их объединениях в виде групп томов (VG).
#### 1.7 Создание логичесого тома определенного размера.
`sudo lvcreate -L 4G test`

> Команда `lvcreate` создает логический том, а благодаря указанным аргументам `-L 4G test` создаваемый логический том будет указанного размера (4 GiB) и на основе группы томов `test`. Полный синтаксис команды выглядит следующим образом `lvcreate [опции] <имя группы томов>`.
Помимо размера тома можно дополнительно указать и другие параметры:
-L - размер создаваемого тома (дефолтно, в байтах, но можно указать единицу измерения - k,K,m,M,g,G,t,T,p,P)
-n - имя для нового логического тома (дефолтно, lvol#, где # - номер LV)
-s - создать снапшот для использования логического раздела в качестве бэкапа
#### 1.8 Вывод информации о логических томах.
`sudo lvdisplay`

> Команда `lvdisplay` подобно `pvdisplay` выводит информацию, только не о физических томах, а о логических (LV).
---
## II. Создание файловой системы и монтирование логического тома LVM
#### 2.1 Создание файловой системы на логическом томе.
`sudo mkfs.ext4 /dev/test/lvol0`

> Команда `mkfs.ext4` определяет тип файловой системы, которая будет использована на логическом томе.
#### 2.2 Создание тестовой директории и монтирование к ней логического тома.
`sudo mkdir /var/alku`
`sudo mount /dev/test/lvol0 /var/alku`

> Команда `mkdir` создает директорию '/alku', а команда `mount` монтирует логический том к разделу на основном диске.
#### 2.3 Добавление монтирования логического тома в процесс загрузки системы.
`sudo nano /etc/fstab`
`/dev/test/lvol0 /var/alku ext4 defaults 1 2`

#### 2.4 Проверка монтирования логического тома.
`sudo mount -a`
`df -h`

> Команда `mount` с опцией `-a` пытается примонтировать все файловые системы, указанные в файле/etc/fstab.
Команда `df` с опцией `-h` выводит информацию об используемом пространстве на файловых системах.
#### 2.5 Просмотр общей информации по дискам и томам.
`sudo lsblk`

> Команда `lsblk` выводит информацию о дисках и созданных на них разделах, их размерах, точке монтирования.
---
## III. Увеличение логического тома LVM
#### 3.1 Инициализация диска для LVM.
`sudo pvcreate /dev/sdd`

#### 3.2 Добавление диска в группу томов.
`sudo vgextend test /dev/sdd`

> Команда `vgextend` позволяет добавить в существующую группу томов дополнительные физические тома.
#### 3.3 Расширение раздела до 8 ГиБ.
`sudo lvextend -L8G /dev/test/lvol0`

> Команда `lvextend` позволяет расширить логический том до определенных размеров. Основные флаги, используемые для указания размера итогового логического тома:
-L.. - увеличение размера тома до указанного числа (если единицы измерения не указаны, то это MiB)
-L+.. - увеличение размера тома на указанное число (если единицы измерения не указаны, то это MiB)
#### 3.4 Просмотр изменившейся информации о логическом томе.
`sudo lvdisplay`

#### 3.5 Увеличение размера файловой системы логического тома.
`sudo resize2fs /dev/test/lvol0`
> Команда `resize2fs` позволяет увеличить размер файловой системы.

---
## IV. Уменьшение логического тома LVM
#### 4.1 Отмонтирование тома.
`sudo umount /var/alku`

> Команда `umount` снимает точку монтирования с директории 'alku', тем самым разделив файловую систему основного диска от логического тома.
#### 4.2 Проверка диска.
`sudo e2fsck -fy /dev/test/lvol0`
> Команда `e2fsck` проверяет файловую систему на логическом диске. Синтаксис `e2fsck [опции] устройство`. Основные ключи, используемые для проверки системы:
-p - автоматическое восстановление файловой системы
-f - проверка системы, даже если она "пустая"
-y - отключение интерактивного режима работы программы

#### 4.3 Уменьшение файловой системы на 4 ГиБ.
`sudo resize2fs /dev/test/lvol0 4G`

> Команда `resize2fs` сжимает размер файловой системы на указанный объем памяти.
#### 4.4 Уменьшение логического тома на 4 ГиБ.
`sudo lvreduce -L-4G /dev/test/lvol0`

> Команда `lvreduce` позволяет сжать логический том до определенных размеров.
#### 4.5 Вывод информации о логических томах.
`sudo lvdisplay`

#### 4.6 Монтирование логического тома к исходной файловой системе.
`sudo mount -a`

#### 4.7 Проверка текущего состояния томов.
`df -h`

## V. Удаление LVM групп и томов
#### 5.1 Отмонтирование тома.
`sudo umount /var/alku`

#### 5.2 Удаление логического тома.
`sudo lvremove /dev/test/lvol0`

> Команда `lvremove` удаляет логические тома.
#### 5.3 Удаление группы логических томов.
`sudo lgremove test`

> Команда `lgremove` удаляет группу томов.
#### 5.4 Снятие меток LVM с дисков.
`sudo pvremove /dev/sdb /dev/sdc /dev/sdd`
> Команда `pvremove` снимает метки PV с томов.

*P.s: не забыть очистить внесенные изменения в /etc/fstab*