Полезные статьи

Статьи по тегам: bash (1) C++ (1) debian (2) linux (7) LVM (1) mediatomb (1) openvpn (1) rj45 (1) ubuntu (2) vpn (1) xen (1) диск (1) заметки (1) настройка (4) обжимка (1) обозначение (1) схема (1) установка (3) учебник (1) шифрование (1)

Установка и настройка LVM в Ubuntu

Введение в LVM

Менеджер логических томов (англ. logical volume manager) — подсистема операционных систем Linux и OS/2, позволяющая использовать разные области одного жёсткого диска и/или области с разных жёстких дисков как один логический том. Реализована с помощью подсистемы device mapper.

LVM добавляет уровень абстракции между физическими/логическими дисками (привычными разделами, с которыми работает fdisk и аналогичные программы) и файловой системой. Это достигается путём разбивки изначальных разделов на блоки, либо использования отдельных разделов или блочных устройств (physical volume (pv)) и объединения их в единый виртуальный том, точнее группу томов (volume group (vg)), которая далее разбивается на логические тома (logical volume (lv)). Для файловой системы логический том представлен как обычное блочное устройство, хотя отдельные pv тома могут находиться на разных физических устройствах (и даже сам pv может быть распределён подобно RAID).

LVM1 не поддерживает расширение существующего логического тома на новые физические тома. LVM2 позволяет это, но не отменяет ограничений, связанных с реализацией файловых систем (ФС). Например, ФС JFS не поддерживает изменение размера тома, XFS допускает только его увеличение.

Поскольку система управления логическими томами использует собственную модель представления дискового пространства, нам необходимо определиться с терминами и взаимосвязями понятий. Рассмотрим схему, основанную на диаграмме Эрика Бегфорса (Erik Bеgfors), приведенную им в списке рассылки linux-lvm. Она демонстрирует взаимосвязь понятий системы LVM:

sda1     sda2     sdb     sdc       <-- PV
 |        |        |       |
 |        |        |       |
 +--------+- VG00 -+-------+        <-- 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, логический экстент. Каждый логический том делится на порции данных, называющиеся логическими экстентами. Размер логических экстентов не меняется в пределах группы томов.

Установка LVM

Для работы с LVM нужен пакет lvm2. Для его установки от имени суперпользователя выполним команду:

user@host:~$ sudo apt-get install lvm2

Настройка LVM

Работу с LVM надо производить от имени суперпользователя, поэтому выполним команду sudo su и введем пароль суперпользователя

user@host$ sudo su
[sudo] password for username: 
root@host# 

Инициализация диска

Перед использованием диска или раздела в качестве физического тома необходимо его инициализировать.

Для целого диска:

root@host# pvcreate /dev/sdd
Physical volume "/dev/sdd" successfully created

Эта команда создает в начале диска дескриптор группы томов.

Создание группы томов

Для создания группы томов используется команда 'vgcreate'

root@host# vgcreate vg0 /dev/sdd
Volume group "vg0" successfully created

Создание логического тома

Для того, чтобы создать логический том lv0, размером 1500Мб, выполните команду:

root@host# lvcreate -L1500 -n lv0 vg0

Без указания суффикса размеру раздела используется множитель «мегабайт» (в системе СИ равный 106 байт), что и продемонстрировано в примере выше. Суффиксы в верхнем регистре (KMGTPE) соответствуют единицам в системе СИ (с основанием 10), например, G — гигабайт равен 109 байт, а суффиксы в нижнем регистре (kmgtpe) соответствуют единицам в системе IEC (с основанием 2), например g — гибибайт равен 230 байт.

Для создания логического тома размером в 100 логических экстентов с расслоением по двум физическим томам и размером блока данных 4 KB:

root@host# lvcreate -i2 -I4 -l100 -n lv0 vg0

Если вы хотите создать логический том, полностью занимающий группу томов, выполните команду vgdisplay, чтобы узнать полный размер группы томов, после чего используйте команду lvcreate.

root@host# vgdisplay vg0 | grep "Total PE"
 Total PE              476932
root@host# lvcreate -l 476932 vg0 -n lv0

Эти команды создают логический том lv0, полностью заполняющий группу томов.

Создание файловой системы

Определяем, как будет называться наше устройство. Это понадобится нам для создания на нем файловой системы.

root@host# ls -lh /dev/mapper
итого 0
crw------- 1 root root 10, 236 марта 12 15:46 control
lrwxrwxrwx 1 root root       7 марта 12 15:46 isw_beafjaidab_Volume0 -> ../dm-1
lrwxrwxrwx 1 root root       7 марта 12 15:46 isw_beafjaidab_Volume0p1 -> ../dm-2
lrwxrwxrwx 1 root root       7 марта 12 15:46 isw_beafjaidab_Volume0p2 -> ../dm-3
lrwxrwxrwx 1 root root       7 марта 12 15:46 isw_beafjaidab_Volume0p5 -> ../dm-4
lrwxrwxrwx 1 root root       7 марта 12 17:38 vg0-lv0 -> ../dm-0

Судя по выводу команды, у нас оно будет называться vg0-lv0.

Я буду использовать файловую систему ext4. Команда для ее создания следующая:

root@host# mkfs -t ext4 /dev/mapper/vg0-lv0

Монтирование

Создаем точку монтирования. У меня это будет /mnt/vg0-lv0

root@host# mkdir -p /mnt/vg0-lv0

Монтируем наш логический том

root@host# mount /dev/mapper/vg0-lv0 /mnt/vg0-lv0

Если все прошло без ошибок, то можно настроить автоматическое монтирование нашего логического тома при запуске системы. Для этого в файл /etc/fstab добавим информацию о нашем томе:

root@host# cat /etc/fstab
#<file system>					<mount point>				<type>	<options>			<dump>	<pass>
proc						/proc					proc	nodev,noexec,nosuid		0	0
/dev/mapper/isw_beafjaidab_Volume0p1		/					ext4	errors=remount-ro		0	1
/dev/mapper/isw_beafjaidab_Volume0p5		none					swap	sw				0	0

# Монтируем соданный нами том при запуске системы
/dev/mapper/vg0-lv0				/mnt/vg0-lv0				ext4	defaults			1	2

Посмотреть информацию о группе томов можно командой vgdisplay, по созданным логическим томам – lvdisplay, по физическим томам – pvdisplay.

У меня вывод этих команд выглядит так:

root@host# vgdisplay
  --- Volume group ---
  VG Name               vg0
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  2
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               1,82 TiB
  PE Size               4,00 MiB
  Total PE              476932
  Alloc PE / Size       476932 / 1,82 TiB
  Free  PE / Size       0 / 0   
  VG UUID               WRMF19-eMsH-3ZmS-EUjH-cm9k-YYJF-Fwwh0W

root@host# lvdisplay
  --- Logical volume ---
  LV Name                /dev/vg0/lv0
  VG Name                vg0
  LV UUID                Cld9n4-1GTd-eVKt-OOW3-EAFj-3PuW-YE7A2z
  LV Write Access        read/write
  LV Status              available
  # open                 2
  LV Size                1,82 TiB
  Current LE             476932
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:0

root@host# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sdd
  VG Name               vg0
  PV Size               1,82 TiB / not usable 1,09 MiB
  Allocatable           yes (but full)
  PE Size               4,00 MiB
  Total PE              476932
  Free PE               0
  Allocated PE          476932
  PV UUID               n6xSNA-8X3i-Vk5U-10qs-E6Rk-sW8O-HwKdXR

Изменение размеров

Изменение размера логического тома

Допустим у нас есть чистый неразмеченный диск размером 1ТБ. Инициализируем его.

root@host# pvcreate /dev/sdc
  Physical volume "/dev/sdc" successfully created

Если диск содержит файловую систему (использовался ранее), то при выполнении приведенной выше команды могут быть ошибки. Если это происходит, то сначала необходимо затереть таблицу разделов командой вроде этой:

root@host# dd if=/dev/zero of=/dev/sdc bs=10M count=100
100+0 записей получено
100+0 записей отправлено
скопировано 1048576000 байт (1,0 GB), 8,22901 c, 127 MB/c

Расширяем группу томов, добавляя в нее новый диск.

root@host# vgextend vg0 /dev/sdc
  Volume group "vg0" successfully extended

Увеличиваем размер логического тома на 800ГБ (можно и больше, но в пределах размера физического диска).

root@host# lvextend -L+800G /dev/mapper/vg0-lv0
  Extending logical volume lv0 to 1,69 TiB
  Logical volume lv0 successfully resized

Изменение размера файловой системы

Проверяем файловую систему логического тома.

root@host# e2fsck -f /dev/mapper/vg0-lv0
e2fsck 1.42 (29-Nov-2011)
Проход 1: Проверка inodes, блокs, а также размеров
Pass 2: Checking каталог structure
Pass 3: Checking каталог connectivity
Pass 4: Checking reference counts
Pass 5: Checking группа summary information
/dev/mapper/vg0-lv0: 13787/61054976 files (1.1% non-contiguous), 229171839/244190208 blocks

Изменяем размер файловой системы.

root@host# resize2fs /dev/mapper/vg0-lv0
resize2fs 1.42 (29-Nov-2011)
Resizing the filesystem on /dev/mapper/vg0-lv0 to 453905408 (4k) blocks.
The filesystem on /dev/mapper/vg0-lv0 is now 453905408 blocks long.

Операция может продолжаться достаточно долго. Все зависит от размера файловой системы.

После этого монтируем логический том и проверяем его размер.

root@host# mount /dev/mapper/vg0-lv0
root@host# df -h | grep vg0
/dev/mapper/vg0-lv0                     1,7T         860G  759G           54% /mnt/vg0-lv0

Уменьшение размера логического тома

Необходимо отмонитровать логический том

root@host# umount /dev/mapper/vg0-lv0

Проверяем файловую систему

root@host# fsck -f /dev/mapper/vg0-lv0

Уменьшаем файловую систему до нужного размера. В моем примере новый размер файловой системы будет 600ГБ.

root@host# resize2fs /dev/mapper/vg0-lv0 600G

Правим таблицу разделов на логическом устройстве. Вам необходимо ввести команды, выделенные зеленым цветом.

root@host# fdisk /dev/mapper/vg0-lv0
Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-1812889599, default 2048): Тут жмем "ENTER"
Last sector, +sectors or +size{K,M,G,T,P} (2048-1812889599, default 1812889599): +600G

Created a new partition 1 of type 'Linux' and of size 600 GiB.

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.

...

Проверяем файловую систему

root@host# fsck -f /dev/mapper/vg0-lv0

Уменьшаем размер логического тома до 600ГБ.

root@host# lvreduce --size 600G /dev/mapper/vg0-lv0
  WARNING: Reducing active logical volume to 600,00 GiB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce lv0? [y/n]: y
  Size of logical volume vg0/lv0 changed from 864,45 GiB (221300 extents) to 600,00 GiB (153600 extents).
  Logical volume lv0 successfully resized

Проверяем что получилось.

root@host# lvdisplay
  --- Logical volume ---
  LV Path                /dev/vg0/lv0
  LV Name                lv0
  VG Name                vg0
  LV UUID                qDNW79-9Sb0-K6oF-o5vh-d3uF-0DaU-nJ4Jmg
  LV Write Access        read/write
  LV Creation host, time vmsrv, 2016-07-14 19:11:11 +0300
  LV Status              available
  # open                 0
  LV Size                600,00 GiB
  Current LE             153600
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           254:0

Монтируем логический том и проверяем его размер.

root@host# mount /dev/mapper/vg0-lv0
root@host# df -h
Файловая система    Размер Использовано  Дост Использовано% Cмонтировано в
...
/dev/mapper/vg0-lv0   591G         110G  451G           20% /mnt/vg0-lv0
...

Переименование логических томов

Чтобы переименовать существующий логический том, используйте команду lvrename. Обе приведенные команды изменят имя логического тома lvold в группе vg02 на lvnew.

root@host#lvrename /dev/vg02/lvold /dev/vg02/lvnew
root@host#lvrename vg02 lvold lvnew

Перенос группы томов на другую систему

Физический перенос группы томов на другую систему организовывается при помощи команд vgexport и vgimport.

Сперва необходимо размонтировать все логические тома группы томов и деактивировать группу:

root@host# unmount /mnt/design/users
root@host# vgchange -an design
vgchange -- volume group "design" successfully deactivated

После этого экспортируем группу томов. Процедура экспорта запрещает доступ к группе на данной системе и готовит ее к удалению:

root@host# vgexport design
vgexport -- volume group "design" sucessfully exported

Теперь можно выключить машину, отсоединить диски, составляющие группу томов и подключить их к новой системе. Остается импортировать группу томов на новой машине и смонтировать логические тома:

root@host# pvscan
pvscan -- reading all physical volumes (this may take a while...)
pvscan -- inactive PV "/dev/sdb1"  is in EXPORTED VG "design" [996 MB / 996 MB free]
pvscan -- inactive PV "/dev/sdb2"  is in EXPORTED VG "design" [996 MB / 244 MB free]
pvscan -- total: 2 [1.95 GB] / in use: 2 [1.95 GB] / in no VG: 0 [0]
root@host# vgimport design /dev/sdb1 /dev/sdb2
vgimport -- doing automatic backup of volume group "design"
vgimport -- volume group "design" successfully imported and activated

root@host# mkdir -p /mnt/design/users
root@host# mount /dev/design/users /mnt/design/users

Группа томов готова к использованию на новой системе.


Ссылки по теме