Logical Volume Manager — менеджер логических томов
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
Ссылка - http://tldp.org/HOWTO/LVM-HOWTO/LVM-HO sda1 sda2 sdb sdc <-- PV физические том (устройство) | | | | | | | | +--------+- name_pc_vg0 -+-------+ <-- VG том група | +-------+-------+---------+ | | | | root usr home var <-- LV логические тома | | | | ext3 reiserfs reiserfs xfs <-- Файловые системы PV, Physical volume, физический том. Обычно это раздел на диске или весь диск. В том числе, устройства программного и аппаратного RAID (которые уже могут включать в себя несколько физических дисков). Физические тома входят в состав группы томов. VG, Volume group, группа томов. Это самый верхний уровень абстрактной модели, используемой системой LVM. С одной стороны группа томов состоит из физических томов, с другой -- из логических и представляет собой единую административную единицу. LV, Logical volume, логический том. Раздел группы томов, эквивалентен разделу диска в не-LVM системе. Представляет собой блочное устройство и, как следствие, может содержать файловую систему. PE, Physical extent, физический экстент. Каждый физический том делится на порции данных, называющиеся физическими экстентами. Их размеры те же, что и у логических экстентов. LE, Logical extent, логический экстент. Каждый логический том делится на порции данных, называющиеся логическими экстентами. Размер логических экстентов не меняется в пределах группы томов. |
pv:
Управление физическими томами
1 2 3 4 5 6 7 8 9 |
pvchange - изменить атрибуты физического тома pvcreate - инициализировать физический том для использования в LVM pvdata - показать информацию (из метаданных на диске) о физическом томе pvdisplay - показать информацию о физическом томе pvmove - переместить эстенты с одного физического тома на другой pvremove - удалить метку LVM с физического тома pvresize - изменить размер физического тома, использующегося в группе томов pvs - показать информацию о физическом томе pvscan - показать список всех физических томов |
vg:
Управление группами физических томов
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
vgcfgbackup - сделать резервную копию конфигурации группы томов vgcfgrestore - восстановить из резервной копии конфигурацию группы томов vgchange - изменить атрибуты группы томов vgck - проверить целостность группы томов vgconvert - изменить формат метаданных группы томов vgcreate - создать группу томов vgdisplay - показать информацию о группе томов vgexport - убрать регистрацию группу томов в системе vgextend - добавить физический том в группу томов vgimport - зарегистрировать экспортированную группу томов в системе vgmerge - объединить группы томов vgmknodes - создать файлы устройств для групп томов в каталоге /dev/ vgreduce - удалить физический том из группы томов vgremove - удалить группу томов vgrename - переименовать группу томов vgs - показать информацию о группах томов vgscan - выполнить поиск групп томов vgsplit - переместить физический том в новую группу томов |
lv:
Управление логическими томами
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
lvchange - изменить атрибуты логического тома lvcreate - создать логический том lvdisplay - показать информацию о логическом томе lvextend - добавить места в логический том lvmchange - (команда устарела, её лучше не использовать) lvmdiskscan - показать список устройств, которые могут быть использованы как физический том lvmsadc - собрать данные об активности использования LVM lvmsar - создать отчёт об активности использования LVM lvreduce - уменьшить размер логического тома lvremove - удалить логический том из системы lvrename - переименовать логический том lvresize - изменить размер логического тома lvs - показать информацию о логическом томе lvscan -показать список логических томов во всех группах томов |
Пример использования 1:
1 2 3 4 5 6 7 8 9 10 11 |
pvcreate /dev/md0 - создание физ тома vgcreate name_pc_vg0 /dev/md0 - создание логической группы (принято создавать по имяни пк) lvcreate -n name_data -L 256M name_pc_vg0 - создадим логический том mkfs.ext4 /dev/name_pc_vg0/name_data - создадим файловую систему для логического тома lvextend -L +256M /dev/name_pc_vg0/name_data - увеличение логического тома (!!!resizefs!!!) resize2fs /dev/name_pc_vg0/name_data 256M - увеличение файловой системы для логического тома name_data fsck.ext4 -f /dev/name_pc_vg0/name_data - проверка тома на ошибки name_data vgscan - сканирует диски на предмет наличия групп томов gchange -ay - сканирует,активирует все найденные группы томов dd if=/dev/zero of=/dev/diskname bs=1k count=1 - уничтожит таблицу разделов на целевом диске blockdev --rereadpt /dev/diskname - уничтожит таблицу разделов на целевом диске |
Пример использования 2:
1 2 3 4 5 6 7 8 9 10 11 12 |
apt-get install lvm2 - установка для debian 9 fdisk -l - показать все диски fdisk /dev/sdb - создаем 2 раздела \ тип 8e pvcreate /dev/sdb1 - создаем физический раздел lvm на /dev/sdb1 pvcreate /dev/sdb2 - создаем физический раздел lvm на /dev/sdb2 vgcreate vg_mygroup /dev/sdb1 /dev/sdb2 - создаем группу для томов lvcreate -n lv1 -L 2G vg_mygroup - создаем логические том lv1 размером 2Гб lvcreate -n lv2 -L 3G vg_mygroup - создаем логические том lv2 размером 3Гб fdisk -l - показать все диски,мы увидим диск sdb, на нем 2 раздела, а в конце новые LVM тома vg_mygroup-lv1 и vg_mygroup-lv2 mkfs.ext4 /dev/mapper/vg_mygroup-lv1 - создаем на логическом диске файловую систему ext4 mkfs.ext4 /dev/mapper/vg_mygroup-lv2 - создаем на логическом диске файловую систему ext4 lvresize -L 4G vg_mygroup/lv2 - изменить размер логического тома сделать = 4Gb |
Создание томов LVM
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
fdisk - программа для работы с дисками fdisk /dev/sdb - выполнит команду для управления разделами диска m - помощь p - отобразит список существующих разделов n - создать новый раздел p - сделать раздел основным (primary) 1 - назначим разделу номер 1 t - определяем тип раздела 8E - код LVM p - отображает информацию о новом разделе w - применить все изменения sfdisk -l /dev/sdb - выводит список LVM разделов pvcreate /dev/sdb1 - делает носитель sdb1 физическим томом LVM vgcreate vgusb /dev/sdb1 - создает группу томов vgusb lvcreate --size 10M --name lvm_u1 vgusb - создание нового LVM-раздела lvm_u1 из группы томов vgusb lvs - отображает информацию о логическом томе vgs - объем доступного места |
Использование томов LVM
1 2 3 |
mkdir /mnt/u1 - создаем каталог (точку монтирования) mount -t ext3 /dev/mapper/vgusb-lvm_u1 /mnt/u1 - монтируем том df -m /mnt/u1 - проверяем объем доступного пространство |
Увеличение тома LVM
1 2 3 4 5 6 |
umount /mnt/u1 - отмонтируем том lvresize --size 16M /dev/vgusb/lvm_u1 - изменяем размер тома lvm e2fsck -f /dev/vgusb/lvm_u1 - проверяем файловую систему тома lvm resize2fs /dev/vgusb/lvm_u1 16M - изменяем размер файловой системы mount -t ext3 /dev/mapper/vgusb-lvm_u1 /mnt/u1 - монтируем том df -m /mnt/u1 - проверяем объем доступного пространства |
Уменьшение размера тома LVM
1 2 3 4 5 6 |
umaunt /mnt/u1 - размонтируем том e2fsck -f /dev/vgusb/lvm_u1 - проверяем том на ошибки resize2fs /dev/vgusb/lvm_u1 12M - изменяем размер фс на 12Мб lvresize --size 12M /dev/vgusb/lvm_u1 - изменяем размер тома lvm mount -t ext3 /dev/mapper/vgusb-lvm_u1 /mnt/u1 - монтируем том df -m /mnt/u1 - проверяем объем доступного пространства |
Удаление логических томов и групп LVM
1 2 3 |
umaunt /mnt/u1 - размонтируем том lvremove /dev/vgusb/lvm_u1 - удаление тома LVM vgremove vgusb - удаление группы LVM |
Пример работы с parted:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
!!! подготовим диск для LVM parted -l - все диски и их разметку parted /dev/vdb - запустили партед и указали диск с которым будем работать (parted)mklabel msdos - задали таблицу разделов MBR, если требуется поддержка диска более 2ТБ то необходимо таблицу разделов указывать GPT команда (parted)mklabel gpt (parted) unit MiB - выбрали единицу измерения мегабайты (parted) mkpart - запросили создать раздел Partition type? primary/extended? p - сказали что он первичный File system type? [ext2]? ext4 - попросили создать файловую систему ext4 Start? 0 - указали начало раздела End? -1 - указали конец y - применили изменения (parted) q - выход из программы разметки !!! Если диск будет использоваться не для LVM то надо создать на нем ФС mkfs.ext4 /dev/vdb2 - для создания ФС на диске /dev/vdb2 |
Пример создания lvm из одного диска:
1 2 3 4 5 6 7 |
fdisk -l - показать диски и разделы parted -lm - показать диски и разделы ls /dev/vd* - показать диски и разделы pvcreate /dev/vdb1 - создаем структуру LVM, пометим диск vgcreate vg0 /dev/vdb1 - создадим группу vg0 и добавим туда помеченный диск vdb1 vgdisplay - показать используемое пространство |
Пример создание lvm из нескольких дисков:
1 2 3 4 5 6 7 8 9 10 |
fdisk t e8 - LVM pvdisplay - физические тома lvdisplay - логические тома vgdisplay - показал volume groupe pvcreate /dev/sdb1 - создаем физического тома pvcreate /dev/sdb2 - создаем физического тома vgcreate vg_NAME /dev/sdb1 /dev/sdb2 - создаем виртуальную группу vg_NAME для партиций sdb1 и sdb2 mkfs.ext4 /dev/vg_NAME/lvm2 mkfs.ext4 /dev/vg_NAME/lvm1 lvresize -L 4G /dev/vg_NAME/lvm2 |
Пошаговый пример создания тома:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
0. Определяемся с имеющимися дисками lsblk 1. Проверяем нет ли у нас уже LVM lvmdiskscan 2. Размечаем диск под LVM pvcreate /dev/sdb 3. Создаем первый уровень абстракции VG !!! you_name_lvm - заменяем на свое желаемое имя vgcreate you_name_lvm /dev/sdb 4. Создаем том test в VG you_name_lvm lvcreate -l+80%FREE -n test you_name_lvm 5. Проверяем что у нас получилось vgdisplay you_name_lvm vgdisplay -v you_name_lvm | grep 'PV NAME' 6. Проверяем наш том lvdisplay lvdisplay /dev/you_name_lvm/test 7. Краткую информацию можно получить pvs - показать устройства физические vgs - показать лог группы lvs - показать тома 8. Для примера создадим еще один том lvcreate -L100M -n small you_name_lvm 9. Для того что бы воспользоваться нашими томами нам не обходимо создать на них ФС mkfs.ext4 /dev/you_name_lvm/test 10. И примонтировать в нашу ФС mkdir /data mount /dev/you_name_lvm/test /data/ mount | grep /data |
Пошаговый пример расширения тома:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
0. Подключили новый диск sdc 1. Добавили его в логику LVM pvcreate /dev/sdc 2. Добавили его в группу vgextend you_name_lvm /dev/sdc 3. Убедимся что диск добавился в VG и что место появилось vgdisplay -v you_name_lvm | grep 'PV Name' vgs vgdisplay 4. Увеличиваем место lvextend -l+80%FREE /dev/you_name_lvm/test 5. Проверяем что место увеличилось !!! Увидим что место на ФС не прибавилось lvs /dev/you_name_lvm/test df -Th /data 6. Увеличим ФС resize2fs /dev/you_name_lvm/test 7. Проверяем что теперь и на ФС место добавилось df -Th /data |
Пошаговый уменьшение ФС
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
!!!Сделай бэкап !!! 0. Отмонтируем раздел umount /data/ 1. Производим проверку ФС e2fsck -fy /dev/you_name_lvm/test 2. Выполняем уменьшение ФС resize2fs /dev/you_name_lvm/test 10G 3. Уменьшаем том LVM lvreduce /dev/you_name_lvm/test -L 10G 4. Монтируем ФС mount /dev/you_name_lvm/test /data/ 5. Проверяем df -Th /data/ lvs /dev/you_name_lvm/test |
Пошаговый пример LVM snapshot
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
0. Снапшот создается командой lvcreate, только с флагом "-s", который и указывает на то что это снимок lvcreate -L 500M -s -n test-snap /dev/you_name_lvm/test 1. Проверяется с помощью vgs vgs -o +lv_size,lv_name | grep test 2. Также lsblk наглядно покажет что случилось !!! Мы увидим you_name_lvm-test-rel - реальный раздел !!! you_name_lvm-test-snap - снапшот, !!! you_name_lvm-test-snap-cow куда пишет снапшот !!! Copy to Write lsblk 3. Снапшот можно смонтировать как любой другой том mkdir /data-snap mount /dev/you_name_lvm/test-snap /data-snap/ ll /data-snap/ unmount /data-snap 4. Восстановление из снапшота umount /data lvconvert --merge /dev/you_name_lvm/test-snap mount /dev/you_name_lvm/test /data ll /data |
Пошаговый пример зеркала на LVM (RAID1)
1 2 3 4 5 6 7 8 9 10 11 |
0. Подключаем диски sdd и sde pvcreate /dev/sd{d,e} 1. Создаем логическую группу VG vgcreate vg0 /dev/sd{d,e} 2. Включаем зеркало lvcreate -l+80%FREE -m1 -n mirror vg0 3. Проверяем lvs |