Основы LVM - что такое PV, VG, LV

Если вы как и я только начинаете знакомиться с LVM (Logical Volume Manager) и интенсивно изучаете информацию по этому вопросу, то в первую очередь, нужно четко понимать значение таких сокращений как PV, VG, LV, PE и LE. Именно на последних и хочу остановиться с пояснениями и примерами, так как они применяются во всех документах и статьях. Думаю, расширять свои познания в LVM без понимания, что означают эти аббревиатуры будет затруднительно. Эти же сокращения используются и в выводе команд для работы с LVM и в названиях самих команд, поэтому безусловно нужно понимать, что есть что.

Примеры выполнялись в виртуальной операционной системе Ubuntu Server, которая содержит три виртуальных диска. Но будем считать, что система реальная и диски настоящие - физические, чтобы не возникало путаницы в понятиях.

Начнем с PV. PV (Physical Vollume) для системы LVM - это реальный физический диск или раздел диска, который инициализирован командой pvcreate. Пример. У нас есть три физических диска /dev/sda, /dev/sdb и /dev/sdc:

1
2
$ ls /dev/sd*
/dev/sda  /dev/sda1  /dev/sda2  /dev/sda5  /dev/sdb  /dev/sdc

Диск /dev/sda разбит на разделы: /dev/sda1 - основной раздел, /dev/sda2 - расширенный раздел, /dev/sda5 - логический раздел, который занимает все пространство расширенного раздела. Диски /dev/sdb и /dev/sdc на разделы не разбиты. Если выполнить команду pvscan, то можно увидеть какие из этих дисков или разделов дисков являются PV для LVM:

1
2
3
4
$ sudo pvscan
  PV /dev/sda5   VG ubuntuserver   lvm2 [7,76 GiB / 32,00 MiB free]
  PV /dev/sdb    VG ubuntuserver   lvm2 [2,00 GiB / 1,70 GiB free]
  Total: 2 [9,75 GiB] / in use: 2 [9,75 GiB] / in no VG: 0 [0   ]

Видно, что в данный момент есть два PV для LVM - это раздел диска /dev/sda5 и весь диск /dev/sdb. На рисунке 1 они отмечены желтым цветом:

lvm - Logical Volume Manager - схема с PV, VG и LV

Рисунок 1

PV - это основа для создания VG - Volume Group. Volume Group - это логическая единица которая образуется в результате объединения PV.

Если провести аналогию с обычным жестким диском в операционной системой Linux, то VG для системы LVM - это как неразмеченный жесткий диск для системы Linux.

VG - может состоять из одного, двух и более PV. На рисунке 1 показана VG с именем ubuntuserver (отмечена зеленым цветом), которая состоит из двух PV. Дисковый объем VG равен сумме объемов PV из которых она состоит. В нашем случае он должен равняться 9.75 Гб. Проверим командой vgs:

1
2
3
$ sudo vgs
  VG           #PV #LV #SN Attr   VSize VFree
  ubuntuserver   2   2   0 wz--n- 9,75g 1,73g

Если нам мало 9.75 Гб, то можно создать из диска /dev/sdc еще один PV, и добавить его в существующий VG. Тогда объем VG увеличится на объем добавленного PV.

Итак, если VG для системы LVM - это как неразмеченный жесткий диск, то для того чтобы начать работу с ним нужно его разметить - создать разделы. И вот эти разделы и будут называться LV - Logical Volume. На рисунке 1 можно увидеть, что часть пространства VG, отдана под LV с именем root, часть под LV с именем swap_1 и некоторое пространство осталось свободным. Команда lvs покажет информацию о размерах LV:

1
2
3
4
$ sudo lvs
  LV     VG           Attr   LSize   Origin Snap%  Move Log Copy%  Convert
  root   ubuntuserver -wi-ao   7,64g                                      
  swap_1 ubuntuserver -wi-ao 388,00m

Если снова провести аналогию, то LV в LVM - это как /dev/sda1 на реальном жестком диске. То есть LV - это уже логическая единица которую можно форматировать под определенную файловую систему и затем монтировать обычной командой mount.

Надеюсь пока все понятно. Осталось PE и LE. Данные сокращения встречаются в документации не так часто, но без них картина будет неполной. PE - Physical Extention - это блок в пространстве PV фиксированного размера. По умолчанию PE равен 4 Мб, но можно задавать и другие размеры. Таким образом PV состоит из определенного количества PE. Если провести аналогию, то PE в LVM - это как сектор на жестком диске. Только сектор всегда равен 512 байт и изменить его невозможно.

Команда pvdisplay, покажет информацию о PV и PE:

1
2
3
4
5
6
7
8
9
10
11
$ sudo pvdisplay /dev/sdb
  --- Physical volume ---
  PV Name               /dev/sdb
  VG Name               ubuntuserver
  PV Size               2,00 GiB / not usable 4,00 MiB
  Allocatable           yes
  PE Size               4,00 MiB
  Total PE              511
  Free PE               436
  Allocated PE          75
  PV UUID               Rfd126-hs8B-eW42-UoLK-iCxa-CStR-E6dSZi

Можно увидеть, что PV состоит из блоков оп 4 Мбайта (PE Size), всего блоков PE - 511 (Total PE), что дает нам размер в 2 Гб. Также можно увидеть, что 436 блоков PE (Free P), не задействованы - то есть они не состоят ни в одном VG. А 75 блоков PE (Allocated PE) задействованы в VG. Таким образом увеличивать (или уменьшать) в случае необходимости размер VG можно только порциями кратными размеру PE - в нашем случае 4 Мбайта.

Если PE это Physical Extention, то как можно уже догадаться LE - это Logical Extension. То есть LE - это блоки из которых состоит LV. Размер PE всегда равен LE. То есть если PE равен 4 Мбайта, то и LE равен 4 Мбайта. Существует возможность указать соответствие PE и LE. Например, так как показано на рисунке 2:

Соответствие PE и LE при создании VG

Рисунок 2

Если посмотреть на наш сервер и выполнить команду lvdisplay -m, то можно увидеть соответствие PE и LE в LV. Некоторые строки вывода команды сократил:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$ sudo lvdisplay -m
  --- Logical volume ---
  LV Name                /dev/ubuntuserver/root
  VG Name                ubuntuserver
  LV Size                7,64 GiB
  Current LE             1956
  Segments               2
  Allocation             inherit
   
  --- Segments ---
  Logical extent 0 to 1880:
    Type        linear
    Physical volume /dev/sda5
    Physical extents    0 to 1880
   
  Logical extent 1881 to 1955:
    Type        linear
    Physical volume /dev/sdb
    Physical extents    0 to 74

Видим, что LV состоит из PE двух PV. LV root состоит из 1956 LE (Current LE). 1881 LE - это PE c PV /dev/sda5 и 75 LE - это PE c PV /dev/sdb.

На этом пока все по LVM. Можно двигаться в изучении дальше. Если где ошибся в определениях - сообщите об этом в комментариях. И в завершении хочу оставить, несколько ссылок которые по моему мнению хорошо описывают LVM и на которые стоит обратить внимание при обучении:

Logical Volume Manager - на английском языке
LVM HOWTO - на английском языке
Повесть о Linux и LVM (Logical Volume Manager) - на русском языке на основе HOW-TO.

Статьи и новости схожей тематики:

Оставьте свой отзыв