Настройка и управление LVM разделами в Linux
LVM (Logical Volume Manager) – подсистема операционных систем Linux, позволяющая использовать разные области физического жесткого диска или разных жестких дисков как один логический том. LVM встроена в ядро Linux и реализуется на базе device mapper.
Главные преимущества LVM – высокий уровень абстракции от физических дисков, гибкость и масштабируемость. Вы можете на лету изменять размер логического тома, добавлять (и удалять) новые диски. Для LVM томов поддерживается зекалирование, снапшоты (persistent snapshot) и striping (расслоение данных между несколькими дисками с целью увеличения производительности).
В данной статье мы рассмотрим использование LVM разделов на примере Linux CentOS 8, покажем процесс объединения двух дисков в одну группу LVM, посмотрим как создавать группы, тома, монтировать, расширять и уменьшать размер LVM разделов.
Прежде всего нужно разобраться с уровнями дисковых абстракций LVM.
- Physical Volume (PV) – физический уровень. Физические диски инициализируются для использования в LVM.
- Volume Group (VG) – уровень группы томов. Инициализированные диски объединяются в логические группы с именем.
- Logical Volume (LV) — создается логический том на группе томов, на котором размещается файловая система и данные.
Установка утилиты lvm2
Чтобы начать работу с LVM, нужно установить утилиту lvm2. Выполним следующие команды:
Шпаргалка по управлению разделами LVM
Гугль располагает сотнями отличных статей, содержащих теорию о Linux LVM (Linux Volume Manager) — встроенной системе управления логическими дисками. В этой статье собран «карманный» набор команд для решения типовых задач.
На приведенной схеме наглядно изображена структура LVM
Посмотреть информацию о существующих физических разделах (PV), группах разделов (VG) и логических разделов (LV) можно с помощью команд
Находим физический диск (в моем случае это будет sdc — свежедобавленный диск без разделов)
$ ls -1 /dev | grep sd sda sda1 sda2 sdb sdb1 sdc
Посмотреть информацию о разделе можно с помощью команды
Создаем раздел
$ pvcreate /dev/sdc Physical volume "/dev/sdc" successfully created. $ dd if=/dev/zero of=/dev/sdc bs=1k count=1 1+0 записей получено 1+0 записей отправлено скопировано 1024 байта (1,0 kB), 0,00115763 c, 885 kB/c $ blockdev --rereadpt /dev/sdc $ fdisk /dev/sdc
В fdisk`е жмем n для создания нового раздела, затем p, чтобы сделать его primary. Номер раздела — 1, первый и последний сектор оставляем по умолчанию (если хотим использовать все пространство диска). Для выхода с записью изменений нажимаем w. Создастся раздел sdc1, который займет все свободное пространство sdc. Проверить можно с помощью команды:
$ ls -1 /dev | grep sdc sdc sdc1
Создаем группу томов (если добавляем несколько разделов — пишем их через пробел)
или добавляем к существующей группе томов
$ vgscan Reading volume groups from cache. Found volume group "vg1" using metadata type lvm2
Добавим новый раздел swap
$ lvcreate -L500M -n new_swap vg1 Logical volume "new_swap" created. $ mkswap /dev/vg1/new_swap Setting up swapspace version 1, size = 511996 KiB без метки, UUID=b64aae09-ec70-4b5a-b4e2-ba0fe39ec1df $ swapon /dev/vg1/new_swap
Теперь проверим, подцепился ли новый swap раздел
/dev/vg1/new_swap swap swap defaults 0 0
Создадим новый раздел и смонтируем его в папку /share
$ cd / $ mkdir /share $ lvcreate -L1G -n lv_share vg1 Logical volume "lv_share" created. $ mke2fs /dev/vg1/lv_share . Allocating group tables: done Writing inode tables: done Writing superblocks and filesystem accounting information: done $ mount /dev/vg1/lv_share /share
Проверим, что новый раздел смонтировался
$ df -h | grep lv_share /dev/mapper/vg1-lv_share 1008M 1,3M 956M 1% /share
Теперь выясним UUID раздела и добавим его в fstab
$ blkid | grep lv_share /dev/mapper/vg1-lv_share: UUID="4295775f-672f-4fd4-a1ff-ef3103d82fa8" TYPE="ext2" $ vi /etc/fstab
. UUID=4295775f-672f-4fd4-a1ff-ef3103d82fa8 /share ext2 defaults 0 0
Изменить размер логического диска можно с помощью команд (предварительно отмонтировать). После внесения изменений необходимо использовать команду resize2fs!
$ lvextend -L+500M /dev/vg1/lv_share Size of logical volume vg1/lv_share changed from 1,00 GiB (256 extents) to 1,49 GiB (381 extents). Logical volume vg1/lv_share successfully resized.
$ lvreduce -L700M /dev/vg1/lv_share WARNING: Reducing active and open logical volume to 700,00 MiB. THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce vg1/lv_share? [y/n]: y Size of logical volume vg1/lv_share changed from 1,49 GiB (381 extents) to 700,00 MiB (175 extents). Logical volume vg1/lv_share successfully resized.
$ lvresize -r -L2G /dev/vg1/lv_share . Resizing the filesystem on /dev/mapper/vg1-lv_share to 524288 (4k) blocks. The filesystem on /dev/mapper/vg1-lv_share is now 524288 blocks long.
Удаление логических томов (предварительно удалить их из fstab)
$ lvremove /dev/vg1/new_swap Do you really want to remove active logical volume vg1/new_swap? [y/n]: y Logical volume "new_swap" successfully removed
Сменить тип раздела на Linux LVM можно с помощью fdisk
$ fdisk /dev/sdc Command: t Selected partition: 1 Hex code (type L to list codes): 8e Command: w The partition table has been altered!