LVM – менеджер, позволяющий управлять логическими томами в системах Linux. Сами логические тома можно собрать из нескольких дисков или разделов дисков. LVM расшифровывается как Logical Volume Manager или по-русски — менеджер логических томов.
Преимущества логических томов по сравнению с использованием физических накопителей:
- Возможность изменения емкости
При использовании логических томов размер файловых систем не ограничивается одним диском, так как вы объединяете диски и разделы в один логический том. - Возможность изменения размера пула хранилища
С помощью простых команд можно увеличивать или уменьшать размер логических томов без необходимости переформатирования или переразбиения дисков. - Живое перемещение данных
Для создания новых, более быстрых и более устойчивых подсистем хранения вы теперь можете перемещать данные, в то время как система активна. Данные можно перемещать, даже если к дискам выполняется обращение. Например, можно на ходу освободить заменяемый диск перед его удалением. - Удобство присвоения имен устройствам
Логические тома могут объединяться в группы для облегчения их управления. Группам, в свою очередь, могут присваиваться любые имена. - Чередование дисков
Возможно создать логический том с чередованием данных на двух или нескольких дисках. Это может значительно улучшить производительность. - Зеркалирование томов
Используя логические тома, можно легко настроить зеркало для ваших данных. - Снимки томов
Используя логические тома, можно создавать снимки устройств с целью создания резервных копий или тестирования результата внесенных изменений, не рискуя действительными данными.
Недостатки:
- Только Linux
- Более сложный процесс восстановления данных в случае сбоя LVM
Настройка (коротко)
# fdisk /dev/sda # pvcreate /dev/sda3 # vgcreate vg /dev/sda3 # lvcreate -L 1750G -n lv1 vg # mkfs.xfs /dev/vg/lv1 -n ftype=1 # vgs -o +lv_size,lv_name # nano /etc/fstab . . . /dev/vg/lv1 /data xfs defaults,nofail 0 0 # mkdir -p /data # mount /dev/vg/lv1 /data # chown agis:agis /data
Настройка (детально)
Работа с томами с помощью LVM происходит на 3-х уровнях:
Физический уровень (PV). Сначала диск инициализируется командой pvcreate — в начале диска создается дескриптор группы томов. При этом важно заметить, что диск не обязательно должен быть физическим — мы можно отметить на использование обычный раздел диска.
Группа томов (VG). С помощью команды vgcreate создается группа томов из инициализированных на предыдущем этапе дисков.
Логический том (LV). Группы томов нарезаются на логические тома командой lvcreate.
Для отображения информации о физических томах LVM используются команды pvs, pvdisplay и pvscan.
Команды vgs и vgdisplay позволяют отобразить информацию о группах томов LVM.
Для отображения сведений о логических томах используются команды lvs, lvdisplay и lvscan.
Шаг 1. Подготовка дисков и разделов для LVM
Установили ubuntu на /dev/sda
Device Start End Sectors Size Type /dev/sda1 2048 1050623 1048576 512M EFI System /dev/sda2 1050624 269486079 268435456 128G Linux swap /dev/sda3 269486080 898631679 629145600 300G Linux filesystem
На /dev/sda есть свободное место.
Создаем новый Partition(4) максимальный по размеру. Тип – Linux filesystem (fdisk /dev/sda)
Device Start End Sectors Size Type /dev/sda1 2048 1050623 1048576 512M EFI System /dev/sda2 1050624 269486079 268435456 128G Linux swap /dev/sda3 269486080 898631679 629145600 300G Linux filesystem /dev/sda4 898631680 3513671646 2615039967 1.2T Linux filesystem
Шаг 2 Создание блочных устройств.
Команда выведет все доступные блочные устройства, с которыми может взаимодействовать LVM:
# lvmdiskscan /dev/loop0 [ <27.09 MiB] /dev/loop1 [ <54.95 MiB] /dev/sda1 [ 512.00 MiB] /dev/loop2 [ <68.97 MiB] /dev/sda2 [ 128.00 GiB] /dev/loop3 [ 96.98 MiB] /dev/sda3 [ 300.00 GiB] /dev/loop4 [ <125.85 MiB] /dev/sda4 [ <1.22 TiB] /dev/sdb [ <1.64 TiB] /dev/sdc1 [ 931.51 GiB] /dev/sdd4 [ <28.87 GiB] 1 disk 11 partitions 0 LVM physical volume whole disks 0 LVM physical volumes
Как видите, на данный момент существует
один свободный раздел (partition) /dev/sda4 <1.22 TiB (остался свободный после установки)
один свободный диск, не разбитый на partition /dev/sdb <1.64 TiB
один свободный раздел (partition) /dev/sdc1 931.51 GiB (это внешний usb диск)
один свободный раздел (partition) /dev/sdd4 <28.87 GiB (эта установочная флешка)
Важно! Убедитесь, что устройства, которые вы собираетесь использовать в LVM, не содержат важных данных. Использование этих устройств в LVM перезапишет текущее содержимое. Если на устройствах уже есть важные данные, сделайте их резервные копии.
Для отображения информации о физических томах LVM используются команды pvs, pvdisplay и pvscan.
Команда pvchange позволяет запретить выделение физических экстентов или дополнительных физических томов, что может потребоваться в случае возникновения ошибок диска или при удалении физического тома.
Команда, запрещающая выделение физических экстентов на /dev/sdk1:
# pvchange -x n /dev/sdk1
При указании опций -xy выделение экстентов будет разрешено там, где раньше оно было запрещено.
Команда pvresize позволяет изменить размер блочного устройства. Ее можно выполнить, если LVM использует физический том.
Шаг 3 Создание физических томов.
Вы получили информацию о физических устройствах, и теперь их можно отметить как физические тома.
Выбираем раздел (partition) sda4. Эта команда присвоит устройствам заголовок LVM, чтобы указать, что их можно добавить в группу томов.
# pvcreate /dev/sda4 Physical volume “/dev/sda4” successfully created.
Проверяем
# lvmdiskscan /dev/loop0 [ <27.09 MiB] /dev/loop1 [ <54.95 MiB] /dev/sda1 [ 512.00 MiB] /dev/loop2 [ <68.97 MiB] /dev/sda2 [ 128.00 GiB] /dev/loop3 [ 96.98 MiB] /dev/sda3 [ 300.00 GiB] /dev/loop4 [ <125.85 MiB] /dev/sda4 [ <1.22 TiB] LVM physical volume /dev/sdb [ <1.64 TiB] /dev/sdc1 [ 931.51 GiB] /dev/sdd4 [ <28.87 GiB] 1 disk 10 partitions 0 LVM physical volume whole disks 1 LVM physical volume
Чтобы просмотреть физические тома, зарегистрированные в LVM, наберите:
# pvs PV VG Fmt Attr PSize PFree /dev/sda4 lvm2 — <1.22t <1.22t
Добавим диск /dev/sdb как физический том
# pvcreate /dev/sdb Physical volume “/dev/sdb” successfully created. # lvmdiskscan /dev/loop0 [ <27.09 MiB] /dev/loop1 [ <54.95 MiB] /dev/sda1 [ 512.00 MiB] /dev/loop2 [ <68.97 MiB] /dev/sda2 [ 128.00 GiB] /dev/loop3 [ 96.98 MiB] /dev/sda3 [ 300.00 GiB] /dev/loop4 [ <125.85 MiB] /dev/sda4 [ <1.22 TiB] LVM physical volume /dev/sdb [ <1.64 TiB] LVM physical volume /dev/sdc1 [ 931.51 GiB] /dev/sdd4 [ <28.87 GiB] 0 disks 10 partitions 1 LVM physical volume whole disk 1 LVM physical volume
Если pvcreate выдает ошибку
Device /dev/sda4 excluded by a filter
То удалить раздел /dev/sda4 и заново создать
pvcreate /dev/sda4
Можно удалить ненужные физические тома – pvremove
# pvremove /dev/sdb Labels on physical volume “/dev/sdb” successfully wiped. # lvmdiskscan /dev/loop0 [ <27.09 MiB] /dev/loop1 [ <54.95 MiB] /dev/sda1 [ 512.00 MiB] /dev/loop2 [ <68.97 MiB] /dev/sda2 [ 128.00 GiB] /dev/loop3 [ 96.98 MiB] /dev/sda3 [ 300.00 GiB] /dev/loop4 [ <125.85 MiB] /dev/sda4 [ <1.22 TiB] LVM physical volume /dev/sdb [ <1.64 TiB] /dev/sdc1 [ 931.51 GiB] /dev/sdd4 [ <28.87 GiB] 1 disk 10 partitions 0 LVM physical volume whole disks 1 LVM physical volume
Шаг 4 Добавление физического тома в группу томов
Теперь, когда у вас есть физические тома, можно создать группу томов. Для группы томов нужно выбрать имя. В большинстве случаев для максимальной гибкости в каждой системе находится одна группа томов. Будем называть группу томов vg
Чтобы создать группу томов и добавить в неё физические тома, введите:
# vgcreate vg /dev/sda4 Volume group “vg” successfully created # pvs PV VG Fmt Attr PSize PFree /dev/sda4 vg lvm2 a– <1.22t <1.22t
Чтобы получить краткую информацию о каждой группе томов, введите – vgs
# vgs VG #PV #LV #SN Attr VSize VFree vg 1 0 0 wz–n- <1.22t <1.22t
Теперь группа томов включает в себя один физический том и ни одного логического тома
Добавить физ том в группу томов
# vgextend vg /dev/sdb
Удалить физ том из группы томов
vgreduce vg /dev/sdb
Можно удалить группы томов vgremove
root@billsrv:~# vgremove vg Volume group “vg” successfully removed root@billsrv:~# pvs PV VG Fmt Attr PSize PFree /dev/sda4 lvm2 — <1.22t <1.22t
Видно, что отметка VG теперь пустая
Дополнительно пример, если добавим два физических тома – vgcreate vg /dev/sda4 /dev/sdb
# pvs PV VG Fmt Attr PSize PFree /dev/sda4 lvm2 — <1.22t <1.22t /dev/sdb lvm2 — <1.64t <1.64t # vgcreate vg /dev/sda4 /dev/sdb Volume group “vg” successfully created # pvs PV VG Fmt Attr PSize PFree /dev/sda4 vg lvm2 a– <1.22t <1.22t /dev/sdb vg lvm2 a– <1.64t <1.64t # vgs VG #PV #LV #SN Attr VSize VFree vg 2 0 0 wz–n- 2.85t 2.85t
Команды vgs и vgdisplay позволяют отобразить информацию о группах томов LVM.
Шаг 5 Создание логического тома из группы томов
Для отображения сведений о логических томах используются команды lvs, lvdisplay и lvscan.
# lvcreate -L 950G -n lv1 vg Logical volume “lv1” created. # vgs -o +lv_size,lv_name VG #PV #LV #SN Attr VSize VFree LSize LV vg 1 1 0 wz–n- <1.22t <296.95g 950.00g lv1
И осталось свободного( не распределленого простнства) <296.95g. Будем его использовать для создания snapshot
# pvs PV VG Fmt Attr PSize PFree /dev/sda4 vg lvm2 a– <1.22t <296.95g
Чтобы создать логические тома, используйте команду lvcreate. Укажите в команде группу томов и выберите имя логического тома с помощью параметра –n. Чтобы создать два логических тома, используйте –L:
# lvcreate -L 30G -n lv1 vg1 Logical volume “lv1” created. # lvcreate -L 40G -n lv2 vg1 Logical volume “lv2” created.
Чтобы просмотреть логические тома и их связь с группой томов, введите:
# vgs -o +lv_size,lv_name VG #PV #LV #SN Attr VSize VFree LSize LV vg1 1 2 0 wz–n- 931.51g 861.51g 30.00g lv1 vg1 1 2 0 wz–n- 931.51g 861.51g 40.00g lv2
Два последних столбца показывают пространство, выделенное для логических томов.
Оставшееся пространство можно присвоить последнему тому lv3 с помощью флага –l, который работает с экстентами. Чтобы передать тому всё оставшееся пространство, укажите в команде 100%FREE:
# lvcreate -l 100%FREE -n lv3 vg1 Logical volume “lv3” created.
Далее приведенная команда создаст логический том mylv, использующий 60% общего объема группы томов testvg.
# lvcreate -l 60%VG -n mylv testvg
# Создать лог том backup на 100% разделов /dev/sda1 и /dev/sdb1
# lvcreate -l 100%VG -n backup vg /dev/sda1 /dev/sdb1
Проверьте информацию о группе томов, чтобы узнать, сколько пространства получил каждый логический том:
# vgs -o +lv_size,lv_name VG #PV #LV #SN Attr VSize VFree LSize LV vg1 1 3 0 wz–n- 931.51g 0 30.00g lv1 vg1 1 3 0 wz–n- 931.51g 0 40.00g lv2 vg1 1 3 0 wz–n- 931.51g 0 861.51g lv3
Как видите, теперь оставшееся пространство принадлежит тому lv3. Группа томов vg1 полностью распределена.
Чтобы создать логический том на основе определенных физических томов, необходимо их указать в командной строке lvcreate. Так, следующая команда создаст логический том testlv на основе физического тома /dev/sdg1 в группе testvg.
# lvcreate -L 1500 -n backup vg /dev/sda1
Можно указать, какие экстенты физического тома будут использованы для образования логического тома. В следующем примере будет создан линейный логический том, в состав которого войдут экстенты физического тома /dev/sda1 с 0 по 25 и /dev/sdb1 c 50 по 125. Оба физических тома входят в состав группы testvg.
# lvcreate -l 100 -n testlv testvg /dev/sda1:0-25 /dev/sdb1:50-125
Следующий пример демонстрирует создание линейного логического тома на основе экстентов с 0 по 25 физического тома /dev/sda1 и затем продолжит, начиная с экстента 100.
# lvcreate -l 100 -n testlv testvg /dev/sda1:0-25:100-
Удалить логический том
# lvremove /dev/vg/lv1
Группы томов LVM и их логические тома включены в дерево каталогов специальных файлов устройств в /dev. Путь к ним:
/dev/vg/lv/
Например, если вы создали две группы томов myvg1 и myvg2 с томами lvo1, lvo2 и lvo3 в составе каждой группы, то при этом будет создано шесть специальных файлов:
/dev/myvg1/lv01
/dev/myvg1/lv02
/dev/myvg1/lv03
/dev/myvg2/lv01
/dev/myvg2/lv02
/dev/myvg2/lv03
Шаг 6 Форматирование и монтирование логических томов
Docker настоятельно рекомендует использваоть файловую систему XFS
xfs filesystems must have been created with d_type=true, which can be verified by using xfs_info and searching for ftype=1
Соотвественно форматировать будем под XFS. Проверяем, что у нас есть
# vgs -o +lv_size,lv_name VG #PV #LV #SN Attr VSize VFree LSize LV vg 1 1 0 wz–n- <1.22t <296.95g 950.00g lv1
Создаем файловую систему mkfs.xfs /dev/vg/lv1 -n ftype=1. Или форсированно, если не получилась предыдущая команда mkfs.xfs -f /dev/vg/lv1 -n ftype=1
# mkfs.xfs /dev/vg/lv1 -n ftype=1 meta-data=/dev/vg/lv1 isize=512 agcount=4, agsize=62259200 blks = sectsz=4096 attr=2, projid32bit=1 = crc=1 finobt=1, sparse=1, rmapbt=0 = reflink=1 data = bsize=4096 blocks=249036800, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0, ftype=1 log =internal log bsize=4096 blocks=121600, version=2 = sectsz=4096 sunit=1 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0
Создаем точку монтирование
# mkdir -p /data
Монтируем
# mount /dev/vg/lv1 /data
Смотрим подробности
# blkid /dev/vg/lv1 /dev/vg/lv1: UUID=”c74444f5-bdc3-4e95-a68b-4192e461674b” TYPE=”xfs” # ls -l /dev/disk/by-uuid total 0 lrwxrwxrwx 1 root root 10 Aug 1 07:47 1ef27f33-e6f1-40df-bad2-f589a4369142 -> ../../sda2 lrwxrwxrwx 1 root root 10 Aug 1 07:47 25168242-3aa6-4109-b563-79b04748ea59 -> ../../sda3 lrwxrwxrwx 1 root root 10 Aug 1 07:47 7B63-3625 -> ../../sda1 lrwxrwxrwx 1 root root 10 Aug 1 07:37 B4FE-5315 -> ../../sdd4 lrwxrwxrwx 1 root root 10 Aug 1 07:37 D4523C68523C520A -> ../../sdc1 lrwxrwxrwx 1 root root 10 Aug 1 08:58 c74444f5-bdc3-4e95-a68b-4192e461674b -> ../../dm-0
Прописываем строку в fstab
nano /etc/fstab
. . .
/dev/vg/lv1 /data xfs defaults,nofail 0 0
или
/dev/vg/lv1 /data xfs defaults,errors=remount-ro 0 1
# cat /etc/fstab # /etc/fstab: static file system information. # # Use ‘blkid’ to print the universally unique identifier for a # device; this may be used with UUID= as a more robust way to name devices # that works even if disks are added and removed. See fstab(5). # # /dev/disk/by-uuid/1ef27f33-e6f1-40df-bad2-f589a4369142 none swap sw 0 0 # / was on /dev/sda3 during curtin installation /dev/disk/by-uuid/25168242-3aa6-4109-b563-79b04748ea59 / ext4 defaults 0 0 # /boot/efi was on /dev/sda1 during curtin installation /dev/disk/by-uuid/7B63-3625 /boot/efi vfat defaults 0 0 /swap.img none swap sw 0 0 /dev/vg/lv1 /data xfs defaults,nofail 0 0
Дополнительно:
Логические тома можно использовать как обычные блочные устройства.
Логические устройства (как и другие устройства хранения) находятся в каталоге /dev. Вы можете получить к ним доступ двумя путями:
/dev/vg/lv1
/dev/mapper/vg-lv1
Чтобы отформатировать логическиt тома с файловой системой Ext4, введите:
# mkfs.ext4 /dev/vg/lv1 # mkfs.ext4 /dev/vg/lv2
# mkfs.ext4 /dev/vg/lv1 mke2fs 1.44.1 (24-Mar-2018) Creating filesystem with 7864320 4k blocks and 1966080 inodes Filesystem UUID: b8aacc0b-8fcc-48e3-94be-6cbd88228f02 Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
# mkfs.ext4 /dev/vg/lv2
mke2fs 1.44.1 (24-Mar-2018)
Creating filesystem with 10485760 4k blocks and 2621440 inodes
Filesystem UUID: c8593b23-5662-495c-8f54-3f2840c71df3
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624
Allocating group tables: done
Writing inode tables: done
Creating journal (65536 blocks): done
Writing superblocks and filesystem accounting information: done
Или:
# mkfs.ext4 /dev/mapper/vg-lv1 # mkfs.ext4 /dev/mapper/vg-lv2
После этого можно создать точки монтирования:
# mkdir -p /mnt/{lv1,lv2}
Чтобы смонтировать логические тома, введите:
# mount /dev/vg/lv1 /mnt/lv1 # mount /dev/vg/lv1 /mnt/lv2
Чтобы настроить постоянную поддержку смонтированных томов, добавьте их в /etc/fstab:
# nano /etc/fstab . . . /dev/vg/lv1 /mnt/lv1 ext4 defaults,nofail 0 0 /dev/vg/lv2 /mnt/lv2 ext4 defaults,nofail 0 0
Теперь операционная система будет автоматически монтировать логические тома LVM во время загрузки.
# blkid /dev/vg/lv1 /dev/vg/lv1: UUID=”4bcb6b06-7f23-4aca-ae93-06b8fbd13552″ TYPE=”xfs”
Шаг 7 Создание томов-снимков shapshot
Для того чтобы создать том-снимок, используйте команду lvcreate с опцией -s.
Приведенная ниже команда создаст снимок исходного тома /dev/vg00/lvol1 размером 100 Мбайт с именем /dev/vg00/snap. Если исходный том содержит файловую систему, то можно смонтировать снимок в любую точку, тем самым получив доступ к содержимому файловой системы для создания резервной копии, в то время как исходная файловая система будет продолжать получать обновления.
lvcreate --size 100M --snapshot --name snap /dev/vg00/lvol1
Выполнив команду lvdisplay для исходных логических томов, можно отобразить список всех снимков и их статус (активный или неактивный).
В следующем примере вывод будет отображать состояние логического тома /dev/new_vg/lvol0, для которого ранее был создан снимок /dev/new_vg/newvgsnap.
# lvdisplay /dev/new_vg/lvol0 --- Logical volume --- LV Name /dev/new_vg/lvol0 VG Name new_vg LV UUID LBy1Tz-sr23-OjsI-LT03-nHLC-y8XW-EhCl78 LV Write Access read/write LV snapshot status source of /dev/new_vg/newvgsnap1 [active] LV Status available # open 0 LV Size 52.00 MB Current LE 13 Segments 1 Allocation inherit Read ahead sectors 0 Block device 253:2
Команда lvs по умолчанию отображает исходный том и процентную часть тома-снимка. Следующий пример демонстрирует стандартный вывод команды lvs для системы с логическим томом /dev/new_vg/lvol0 с соотвествующим ему томом-снимком /dev/new_vg/newvgsnap.
# lvs LV VG Attr LSize Origin Snap% Move Log Copy% lvol0 new_vg owi-a- 52.00M newvgsnap1 new_vg swi-a- 8.00M lvol0 0.20
Так как размер снимка увеличивается с изменением исходного тома, достаточно важно следить за заполнением снимка. Для этого можно использовать команду lvs. При заполнении снимка на 100% он будет потерян, так как запись в неизменяемые участки исходного ресурса разрушит сам снимок.
Удаление
Прежде чем удалить физический том из группы, сначала убедитесь, что он не используется логическими томами. Для этого используйте команду pvdisplay.
# pvdisplay /dev/hda1
— Physical volume —
PV Name /dev/hda1
VG Name myvg
PV Size 1.95 GB / NOT usable 4 MB [LVM: 122 KB]
PV# 1
PV Status available
Allocatable yes (but full)
Cur LV 1
PE Size (KByte) 4096
Total PE 499
Free PE 0
Allocated PE 499
PV UUID Sd44tK-9IRw-SrMC-MOkn-76iP-iftz-OVSen7
Если физический том все еще используется, необходимо перенести данные на другой том (с помощью команды pvmove). И уже затем можно уменьшить размер физического тома, выполнив команду vgreduce:
Следующая команда удаляет физический том /dev/hda1 из группы my_volume_group:
# vgreduce my_volume_group /dev/hda1
АКТИВАЦИЯ И ДЕАКТИВАЦИЯ ГРУПП ТОМОВ
При создании группы томов она активирована по умолчанию. Это означает, что логические тома в составе этой группы доступны и могут изменяться.
Существует множество причин, по которым может понадобиться деактивировать группу томов. Для деактивации и активации группы томов используется опция -a (–available) команды vgchange.
Пример деактивации группы томов с именем my_volume_group:
# vgchange -a n my_volume_group
РАЗДЕЛЕНИЕ ГРУППЫ ТОМОВ
Чтобы разделить физические тома в группе с целью создания новой группы, используется команда vgsplit.
Логические тома не могут быть разделены между различными группами. Каждый существующий логический том должен полностью принадлежать физическим томам, входящим в состав либо уже существующей, либо новой группы томов. Для принуждения разбиения можно применить команду pvmove.
Следующий пример отделяет новую группу томов smallvg от исходной группы bigvg.
# vgsplit bigvg smallvg /dev/ram15 Volume group "smallvg" successfully split from "bigvg"
ОБЪЕДИНЕНИЕ ГРУПП ТОМОВ
Two combine two volume groups into a single volume group, use the vgmerge command. You can merge an inactive “source” volume with an active or an inactive “destination” volume if the physical extent sizes of the volume are equal and the physical and logical volume summaries of both volume groups fit into the destination volume groups limits.
Следующая команда включает неактивную группу томов my_vg в активную или неактивную группу databases с отображением подробных сведений о процессе выполнения.
vgmerge -v databases my_vg
ПЕРЕИМЕНОВАНИЕ ГРУППЫ ТОМОВ
Для переименования существующей группы томов используется команда vgrename.
Обе приведенные далее команды изменяют имя группы vg02 на my_volume_group.
# vgrename /dev/vg02 /dev/my_volume_group # vgrename vg02 my_volume_group
ПЕРЕНОС ГРУППЫ ТОМОВ В ДРУГУЮ СИСТЕМУ
С помощью команд vgexport и vgimport можно осуществлять перемещение целой группы томов LVM между системами.
vgexport запрещает доступ к неактивной группе томов, чтобы можно было отключить ее физические тома. vgimport снова разрешает доступ к группе томов.
Последовательность действий при переносе группы томов между системами:
Убедитесь, что пользователи не обращаются к файлам в пределах активных томов в группе, затем демонтируйте логические тома.
Для того чтобы отметить группу томов как неактивную, используйте команду vgchange с аргументом -a n.
Команда vgexport позволяет экспортировать группы томов, что запрещает к доступ к этой группе из системы, откуда она будет удалена.
После завершения экспортирования группы томов, когда вы запустите команду pvscan, будет видно, что физический том принадлежит экспортируемой группе. Пример:
# pvscan PV /dev/sda1 is in exported VG myvg [17.15 GB / 7.15 GB free] PV /dev/sdc1 is in exported VG myvg [17.15 GB / 15.15 GB free] PV /dev/sdd1 is in exported VG myvg [17.15 GB / 15.15 GB free] ...
Если система ожидает отключения, то можно отключить диски, заменяющие группу томов, и переподключить их в новую систему.
Когда диски уже подключены в новую систему, используйте команду vgimport для импорта группы томов, тем самым открывая к ней доступ из системы.
Опция -a y команды vgchange позволяет активировать группу томов.
Смонтируйте файловую систему.
ВОССТАНОВЛЕНИЕ КАТАЛОГА ГРУППЫ ТОМОВ
Чтобы воссоздать каталог группы томов и специальные файлы логических томов, используется команда vgmknodes. Она проверяет специальные файлы LVM2 в каталоге /dev, которые необходимы для работы активных логических томов. При этом будут созданы недостающие специальные файлы и удалены лишние файлы.
Функциональность vgmknodes можно включить в vgscan, указав опцию –mknodes.
Создание томов с чередованием
Если размеры физических устройств, на основе которых создан логический том, различаются, то максимальный объем тома с чередованием будет определяться размером наименьшего устройства. Например, если для организации чередования используются два физических тома, то максимальный размер логического тома будет равен удвоенному размеру наименьшего устройства. Если же используются три тома, максимальный размер будет равен утроенному размеру наименьшего устройства.
Следующая команда создаст логический том с чередованием на основе двух физических томов в составе группы vg0, при этом размер сегмента будет равен 64 Кб. Самому логическому тому будет присвоено имя gfslv, его размер будет равен 50 Гб.
# lvcreate -L 50G -i2 -I64 -n gfslv vg0
# lvcreate -l 100 -i2 -nstripelv testvg /dev/sda1:0-50 /dev/sdb1:50-100 Using default stripesize 64.00 KB Logical volume "stripelv" created
Создание зеркальных томов
Ниже приведен пример создания зеркального логического тома размером 50 Гб с одним зеркалом. Ему будет присвоено имя mirrorlv, пространство для его создания будет выделено из группы vg0.
# lvcreate -L 50G -m1 -n gfslv vg0
Приведенная ниже команда создаст логический том ondiskmirvol с одним зеркалом в группе bigvg. Размер тома равен 12 Мбайт, а журнал зеркала хранится в памяти.
# lvcreate -L 12MB -m1 --corelog -n ondiskmirvol bigvg Logical volume "ondiskmirvol" created
Ниже приведен пример создания зеркального логического тома mirrorlv размером 50 Мбайт с одним зеркалом на основе группы томов vg0. При этом журнал зеркала расположен на том же устройстве, что и составляющая зеркала. В этом примере группа томов vg0 состоит из двух устройств.
# lvcreate -L 500M -m1 -n mirrorlv -alloc anywhere vg0
Можно задать, на каких устройствах будут сохраняться журналы и какие экстенты устройств будут использоваться зеркалом. Чтобы ограничить журналирование определенным диском, укажите ТОЛЬКО один экстент на том диске, где должен располагаться журнал. LVM игнорирует порядок, в котором перечислены устройства. Если в списке присутствуют физические устройства, то только они и будут использоваться для выделения пространства; уже занятые физические будут проигнорированы.
Далее приведен пример команды создания зеркального логического тома mirrorlv размером 500 Мбайт с одним зеркалом. Том будет создан в составе группы vg0. Одна часть зеркала будет располагаться на устройстве /dev/sda1, вторая — на /dev/sdb1, а журнал будет храниться на /dev/sdc1.
#lvcreate -L 500M -m1 -n mirrorlv vg0 /dev/sda1 /dev/sdb1 /dev/sdc1
# lvcreate -L 500M -m1 -n mirrorlv vg0 /dev/sda1:0-499 /dev/sdb1:0-499 /dev/sdc1:0
Изменение конфигурации зеркальных томов
При преобразовании логического тома в зеркальный, в сущности, вы просто создаете составляющие зеркала для уже существующего тома. Это значит, что группа томов должна иметь достаточно пространства и устройств для организации зеркал и хранения журнала.
Следующая команда преобразует линейный логический том vg00/lvol1 в зеркальный.
# lvconvert -m1 vg00/lvol1
# lvconvert -m0 vg00/lvol1
ПЕРЕИМЕНОВАНИЕ ЛОГИЧЕСКИХ ТОМОВ
Чтобы переименовать существующий логический том, используйте команду lvrename.
Обе приведенные ниже команды изменят имя логического тома lvold в группе vg02 на lvnew.
# lvrename /dev/vg02/lvold /dev/vg02/lvnew # lvrename vg02 lvold lvnew
УДАЛЕНИЕ ЛОГИЧЕСКИХ ТОМОВ
Удалить неактивный логический том можно с помощью команды lvremove. Сначала демонтируйте логический том (umount). В кластерном окружении необходимо деактивировать том перед его удалением.
Необходимо сначала демонтировать том.
Приведенная далее команда удалит логический том /dev/testvg/testlv из группы testvg. В этом примере логический том не был деактивирован заранее.
# lvremove /dev/testvg/testlv Do you really want to remove active logical volume "testlv"? [y/n]: y Logical volume "testlv" successfully removed
Том можно деактивировать отдельно с помощью команды lvchange -an, тогда предупреждение об удалении активного логического тома не будет отображено.
Error. Device /dev/sdc excluded by a filter.
Если мы получим следующее сообщение:
# pvcreate /dev/sdc Device /dev/sdc excluded by a filter.
Посмотрим подробнее, в чем проблема:
# pvcreate /dev/sdc -vvv … /dev/sdc: size is 4194304 sectors Closed /dev/sdc /dev/sdc: Skipping: Partition table signature found …
Сотрем таблицу разделов:
# dd if=/dev/zero of=/dev/sdc bs=1k count=1 1+0 records in 1+0 records out 1024 bytes (1.0 kB) copied, 0.000687572 s, 1.5 MB/s
Перечитаем таблицу разделов:
# blockdev --rereadpt /dev/sdc # sfdisk -l /dev/sdc Disk /dev/sdc: 261 cylinders, 255 heads, 63 sectors/track
Инициализируем Physical Volume на диске.
# pvcreate /dev/sdc
LVM
Шпаргалка. Список команд для работы с LVM
lvchange
Изменить атрибуты логического тома
lvcreate
Создать логический том
lvdisplay
Показать информацию о логическом томе
lvextend
Добавить места в логический том
lvmchange
(команда устарела, её лучше не использовать)
lvmdiskscan
Показать список устройств, которые могут быть использованы как физический том
lvmsadc
Собрать данные об активности использования LVM
lvmsar
Создать отчёт об активности использования LVM
lvreduce
Уменьшить размер логического тома
lvremove
Удалить логический том из системы
lvrename
Переименовать логический том
lvresize
Изменить размер логического тома
lvs
Показать информацию о логическом томе
lvscan
Показать список логических томов во всех группах томов
pvchange
Изменить атрибуты физического тома
pvcreate
Инициализировать физический том для использования в LVM
pvdata
Показать информацию (из метаданных на диске) о физическом томе
pvdisplay
Показать информацию о физическом томе
pvmove
Переместить эстенты с одного физического тома на другой
pvremove
Удалить метку LVM с физического тома
pvresize
Изменить размер физического тома, использующегося в группе томов
pvs
Показать информацию о физическом томе
pvscan
Показать список всех физических томов
vgcfgbackup
Сделать резервную копию конфигурации группы томов
vgcfgrestore
Восстановить из резервной копии конфигурацию группы томов
vgchange
Изменить атрибуты группы томов
vgck
Проверить целостность группы томов
vgconvert
Изменить формат метаданных группы томов
vgcreate
Создать группу томов
vgdisplay
Показать информацию о группе томов
vgexport
Разрегистрировать группу томов в системе
vgextend
Добавить физический том в группу томов
vgimport
Зарегистрировать эскпортированную группу томов в системе
vgmerge
Объединить группы томов
vgmknodes
Создать файлы устройств для групп томов в каталоге /dev/
vgreduce
Удалить физический том из группы томов
vgremove
Удалить группу томов
vgrename
Переименовать группу томов
vgs
Показать информацию о группах томов
vgscan
Выполнить поиск групп томов
vgsplit
Переместить физический том в новую группу томов
Теория
https://www.8host.com/blog/vvedenie-v-lvm-osnovnye-ponyatiya-i-operacii/
LVM (Logical Volume Management), или управление логическими томами – это технология управления устройствами хранения, позволяющая объединять области различных физических устройств в один логический том. С помощью подсистемы device mapper текущая версия LVM2 может объединять физические устройства хранения в группы и по мере необходимости выделять логические единицы из полученного тома.
Основными преимуществами LVM являются повышенная абстракция, гибкость и высокий контроль. Логическим томам можно присваивать описательные и понятные имена (например, databases или root-backup). Кроме того, по мере изменения требований к пространству том можно динамически изменять и перемещать между физическими устройствами в пуле текущей системы или легко экспортировать в другую систему. LVM также предлагает продвинутые функции: снепшоты, страйпинг и зеркалирование.
Терминология и архитектура LVM
Для начала нужно ознакомиться с базовыми понятиями и терминами LVM. Также важно иметь общее представление о том, как LVM организовывает запоминающие устройства.
Структуры управления хранилищами LVM
Работа LVM основана на иерархии физических устройств хранения. Рассмотрим основные уровни абстракции в этой иерархии LVM, начиная с самого простого.
Физические тома (physical volumes, префикс pv) – физические блочные устройства или другие устройства, подобные дискам (например, созданные device mapper устройства, такие как RAID-массивы). Они используются LVM в качестве исходного строительного материала для более высоких уровней абстракции. Физические тома – это обычные устройства хранения.
Группа томов (volume groups, префикс vg) – пул хранения, состоящий из нескольких физических томов. Группы томов абстрагируют характеристики базовых устройств и функционируют как единое логическое устройство (при этом объемы компонентов пула объединяются).
Логический том (logical volumes, префикс lv или lvm) – это логический раздел, который выделяется из единого пространства группы томов. Логические тома эквивалентны разделам на физическом диске, но они гораздо более гибкие. Логические тома являются основным компонентом, с которым будут взаимодействовать пользователи и приложения.
Таким образом, LVM может объединять физические тома в группы томов и получить общий пул памяти, доступной в системе. В дальнейшем этот пул можно делить на произвольные логические тома, которые функционируют как гибкие разделы.
Что такое экстенты?
Каждый том в группе томов сегментируется на небольшие куски фиксированного размера, называемые экстентами. Размер экстентов определяется группой томов (все тома в группе соответствуют одному размеру экстента).
Экстенты на физических устройствах называются экстентами. Экстенты в логическом томе называются логическими экстентами. Логический том получается в результате преобразования физических экстентов в логические. Поэтому размер экстента представляет собой наименьший объем пространства, который может быть выделен в LVM.
В значительной степени гибкость и производительность LVM обеспечивается экстентами. Логические экстенты, которые LVM представляет в виде единого устройства, не должны сопоставляться с непрерывными физическими экстентами. LVM может копировать и реорганизовывать физические экстенты, которые составляют логический том, без прерывания работы пользователей. Логические тома также можно легко расширить или уменьшить, просто добавив или удалив экстенты из тома.
https://www.dmosk.ru/instruktions.php?object=lvm#import
https://habr.com/ru/post/67283/
http://xgu.ru/wiki/LVM#.D0.A1.D0.BB.D0.B8.D1.8F.D0.BD.D0.B8.D0.B5_LVM
https://losst.ru/sozdanie-i-nastrojka-lvm-linux1
Шпаргалка. Список команд для работы с LVM
lvchange
Изменить атрибуты логического тома
lvcreate
Создать логический том
lvdisplay
Показать информацию о логическом томе
lvextend
Добавить места в логический том
lvmchange
(команда устарела, её лучше не использовать)
lvmdiskscan
Показать список устройств, которые могут быть использованы как физический том
lvmsadc
Собрать данные об активности использования LVM
lvmsar
Создать отчёт об активности использования LVM
lvreduce
Уменьшить размер логического тома
lvremove
Удалить логический том из системы
lvrename
Переименовать логический том
lvresize
Изменить размер логического тома
lvs
Показать информацию о логическом томе
lvscan
Показать список логических томов во всех группах томов
pvchange
Изменить атрибуты физического тома
pvcreate
Инициализировать физический том для использования в LVM
pvdata
Показать информацию (из метаданных на диске) о физическом томе
pvdisplay
Показать информацию о физическом томе
pvmove
Переместить эстенты с одного физического тома на другой
pvremove
Удалить метку LVM с физического тома
pvresize
Изменить размер физического тома, использующегося в группе томов
pvs
Показать информацию о физическом томе
pvscan
Показать список всех физических томов
vgcfgbackup
Сделать резервную копию конфигурации группы томов
vgcfgrestore
Восстановить из резервной копии конфигурацию группы томов
vgchange
Изменить атрибуты группы томов
vgck
Проверить целостность группы томов
vgconvert
Изменить формат метаданных группы томов
vgcreate
Создать группу томов
vgdisplay
Показать информацию о группе томов
vgexport
Разрегистрировать группу томов в системе
vgextend
Добавить физический том в группу томов
vgimport
Зарегистрировать эскпортированную группу томов в системе
vgmerge
Объединить группы томов
vgmknodes
Создать файлы устройств для групп томов в каталоге /dev/
vgreduce
Удалить физический том из группы томов
vgremove
Удалить группу томов
vgrename
Переименовать группу томов
vgs
Показать информацию о группах томов
vgscan
Выполнить поиск групп томов
vgsplit
Переместить физический том в новую группу томов
Теория
https://www.8host.com/blog/vvedenie-v-lvm-osnovnye-ponyatiya-i-operacii/
LVM (Logical Volume Management), или управление логическими томами – это технология управления устройствами хранения, позволяющая объединять области различных физических устройств в один логический том. С помощью подсистемы device mapper текущая версия LVM2 может объединять физические устройства хранения в группы и по мере необходимости выделять логические единицы из полученного тома.
Основными преимуществами LVM являются повышенная абстракция, гибкость и высокий контроль. Логическим томам можно присваивать описательные и понятные имена (например, databases или root-backup). Кроме того, по мере изменения требований к пространству том можно динамически изменять и перемещать между физическими устройствами в пуле текущей системы или легко экспортировать в другую систему. LVM также предлагает продвинутые функции: снепшоты, страйпинг и зеркалирование.
Терминология и архитектура LVM
Для начала нужно ознакомиться с базовыми понятиями и терминами LVM. Также важно иметь общее представление о том, как LVM организовывает запоминающие устройства.
Структуры управления хранилищами LVM
Работа LVM основана на иерархии физических устройств хранения. Рассмотрим основные уровни абстракции в этой иерархии LVM, начиная с самого простого.
Физические тома (physical volumes, префикс pv) – физические блочные устройства или другие устройства, подобные дискам (например, созданные device mapper устройства, такие как RAID-массивы). Они используются LVM в качестве исходного строительного материала для более высоких уровней абстракции. Физические тома – это обычные устройства хранения.
Группа томов (volume groups, префикс vg) – пул хранения, состоящий из нескольких физических томов. Группы томов абстрагируют характеристики базовых устройств и функционируют как единое логическое устройство (при этом объемы компонентов пула объединяются).
Логический том (logical volumes, префикс lv или lvm) – это логический раздел, который выделяется из единого пространства группы томов. Логические тома эквивалентны разделам на физическом диске, но они гораздо более гибкие. Логические тома являются основным компонентом, с которым будут взаимодействовать пользователи и приложения.
Таким образом, LVM может объединять физические тома в группы томов и получить общий пул памяти, доступной в системе. В дальнейшем этот пул можно делить на произвольные логические тома, которые функционируют как гибкие разделы.
Что такое экстенты?
Каждый том в группе томов сегментируется на небольшие куски фиксированного размера, называемые экстентами. Размер экстентов определяется группой томов (все тома в группе соответствуют одному размеру экстента).
Экстенты на физических устройствах называются экстентами. Экстенты в логическом томе называются логическими экстентами. Логический том получается в результате преобразования физических экстентов в логические. Поэтому размер экстента представляет собой наименьший объем пространства, который может быть выделен в LVM.
В значительной степени гибкость и производительность LVM обеспечивается экстентами. Логические экстенты, которые LVM представляет в виде единого устройства, не должны сопоставляться с непрерывными физическими экстентами. LVM может копировать и реорганизовывать физические экстенты, которые составляют логический том, без прерывания работы пользователей. Логические тома также можно легко расширить или уменьшить, просто добавив или удалив экстенты из тома.
https://www.dmosk.ru/instruktions.php?object=lvm#import
https://habr.com/ru/post/67283/
http://xgu.ru/wiki/LVM#.D0.A1.D0.BB.D0.B8.D1.8F.D0.BD.D0.B8.D0.B5_LVM
https://losst.ru/sozdanie-i-nastrojka-lvm-linux1