Настройка и управление lvm разделами в linux

Введение

LVM, или Logical Volume Management (управление логическими томами), — это технология управления устройствами хранения, предоставляющая пользователям возможность объединять и распределять физическое пространство устройств хранения для более простого и гибкого администрирования. Используя модуль отображения устройств ядра Linux (Device mapper) LVM может группировать устройства хранения и выделять из объединенного пространства необходимые логические структуры.

Основные преимущества LVM — высокий уровень абстрактности, гибкости и контроля. Логическим томам можно присваивать информативные имена, например «databases» или «root-backup». Можно динамически менять их размер при изменении требований к объему дискового пространства, переносить между физическими устройствами в рамках пула текущей системы и легко экспортировать. Кроме того, в LVM есть функции создания образов (snapshotting), «расслоения» (striping) и зеркального отображения (mirroring).

Данное руководство посвящено обзору принципов работы LVM и базовым командам, необходимым в работе.

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

Одно из главных преимуществ LVM — гибкость в работе с логическими томами. Можно легко менять их размер и количество, не останавливая систему.

Для увеличения размера логического тома используется команда lvresize. Флаг -L применяется для задания нового размера. При помощи символа «+» можно также указать относительный размер, тогда LVM увеличит размер логического тома на указанную величину. Для автоматического изменения размера файловой системы используйте флаг —resizefs.

Для корректного задания имени нужно сначала указать группу томов, а затем имя логического тома через слэш:

sudo lvresize -L +5G --resizefs LVMVolGroup/test

Размер логического тома test в группе LVMVolGroup и его файловой системы будут увеличены на 5 Гб

Можно не указывать опцию —resizefs и воспользоваться стандартными средствами файловой системы, например, для Ext4 следующие команды позволят добиться того же результата:

sudo lvresize -L +5G LVMVolGroup/test
sudo resize2fs /dev/LVMVolGroup/test

Преимущества и недостатки LVM

Преимущества LVM:

Возможность изменения емкости

При использовании логических томов размер файловых систем не ограничивается одним диском, так как вы объединяете диски и разделы в один логический том.

Возможность изменения размера пула хранилища

С помощью простых команд можно увеличивать или уменьшать размер логических томов без необходимости переформатирования или переразбиения дисков.

Живое перемещение данных

Для создания новых, более быстрых и более устойчивых подсистем хранения вы теперь можете перемещать данные, в то время как система активна. Данные можно перемещать, даже если к дискам выполняется обращение. Например, можно на ходу освободить заменяемый диск перед его удалением.

Удобство присвоения имен устройствам

Логические тома могут объединяться в группы для облегчения их управления. Группам, в свою очередь, могут присваиваться любые имена.

Чередование дисков

Возможно создать логический том с чередованием данных на двух или нескольких дисках. Это может значительно улучшить производительность.

Зеркалирование томов

Используя логические тома, можно легко настроить зеркало для ваших данных.

Снимки томов

Используя логические тома, можно создавать снимки устройств с целью создания резервных копий или тестирования результата внесенных изменений, не рискуя действительными данными.

Недостатки

  • Только Linux. Отсутствие официальной поддержки в большинстве других ОС(FreeBSD, Windows Virtual PC).
  • Дополнительные шаги в более сложной настройке системы.

Работа со снапшотами

Снимки диска позволят нам откатить состояние на определенный момент. Это может послужить быстрым вариантом резервного копирования. Однако нужно понимать, что данные хранятся на одном и том же физическом носителе, а значит, данный способ не является полноценным резервным копированием.

Создание снапшотов для тома, где уже используется файловая система XFS, имеет некоторые нюансы, поэтому разберем разные примеры.

Создание для не XFS:

lvcreate -L500 -s -n sn01 /dev/vg01/lv01

* данная команда помечает, что 500 Мб дискового пространства устройства /dev/vg01/lv01 (тома lv01 группы vg01) будет использоваться для snapshot (опция -s).

Создание для XFS:

xfs_freeze -f /mnt; lvcreate -L500 -s -n sn01 /dev/vg01/lv01; xfs_freeze -u /mnt

* команда xfs_freeze замораживает операции в файловой системе XFS.

Посмотрим список логических томов:

lvs

Получим что-то на подобие:

LV   VG   Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
lv01 vg01 owi-aos—   1,00g
sn01 vg01 swi-a-s— 500,00m      lv01   2,07

* поле Origin показывает, к какому оригинальному логическому тому относится LV, например, в данной ситуации наш раздел для снапшотов относится к lv01.

Также можно посмотреть изменения в томах командой:

lsblk

Мы должны увидеть что-то подобное:

sdc                8:32   0    1G  0 disk 
  vg01-lv01-real 253:3    0    1G  0 lvm  
    vg01-lv01    253:2    0    1G  0 lvm  /mnt
    vg01-sn01    253:5    0    1G  0 lvm  
  vg01-sn01-cow  253:4    0  500M  0 lvm  
    vg01-sn01    253:5    0    1G  0 lvm 

С этого момента все изменения пишутся в vg01-sn01-cow, а vg01-lv01-real фиксируется только для чтения и мы может откатиться к данному состоянию диска в любой момент.

Содержимое снапшота можно смонтировать и посмотреть, как обычный раздел:

mkdir /tmp/snp

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

mount /dev/vg01/sn01 /tmp/snp

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

mount -o nouuid,ro /dev/vg01/sn01 /tmp/snp

Для выполнения отката до снапшота, выполняем команду:

lvconvert —merge /dev/vg01/sn01

Добавление физических томов в группу томов

Создав физические тома, можно создать группу томов. Нужно выбрать имя группы томов, которое должно быть уникальным. Как правило, большую часть времени в системе используется только одна группа томов для гибкости распределения пространства. Для простоты назовем нашу группу LVMVolGroup. Чтобы создать группу томов и добавить в нее оба физических тома, нужно выполнить следующую команду:

sudo vgcreate LVMVolGroup /dev/sda /dev/sdb
Volume group "LVMVolGroup" successfully created

Теперь если снова выполнить команду pvs, можно увидеть, что физические тома связаны с новой группой томов:

sudo pvs

PV VG Fmt Attr PSize PFree
/dev/sda LVMVolGroup lvm2 a-- 200.00g 200.00g
/dev/sdb LVMVolGroup lvm2 a-- 100.00g 100.00g

Следующая команда позволяет получить краткую информацию о самой группе томов:

sudo vgs

VG #PV #LV #SN Attr VSize VFree
LVMVolGroup 2 0 0 wz--n- 299.99g 299.99g

Группа томов содержит два физических тома и ни одного логического тома, а ее объем равен суммарному объему входящих в нее устройств.

Troubleshooting

LVM commands do not work

Load proper module:

# modprobe dm_mod

The module should be automatically loaded. In case it does not, you can try:

The factual accuracy of this article or section is disputed.

/etc/mkinitcpio.conf
MODULES=(dm_mod ...)

You will need to regenerate the initramfs to commit any changes you made.

Try preceding commands with lvm like this:

# lvm pvdisplay

Logical Volumes do not show up

If you are trying to mount existing logical volumes, but they do not show up in , you can use the following commands to activate them:

# vgscan
# vgchange -ay

LVM on removable media

Symptoms:

# vgscan
  Reading all physical volumes.  This may take a while...
  /dev/backupdrive1/backup: read failed after 0 of 4096 at 319836585984: Input/output error
  /dev/backupdrive1/backup: read failed after 0 of 4096 at 319836643328: Input/output error
  /dev/backupdrive1/backup: read failed after 0 of 4096 at 0: Input/output error
  /dev/backupdrive1/backup: read failed after 0 of 4096 at 4096: Input/output error
  Found volume group "backupdrive1" using metadata type lvm2
  Found volume group "networkdrive" using metadata type lvm2

Cause: removing an external LVM drive without deactivating the volume group(s) first. Before you disconnect, make sure to:

# vgchange -an volume group name

Fix: assuming you already tried to activate the volume group with , and are receiving the Input/output errors:

# vgchange -an volume group name

Unplug the external drive and wait a few minutes:

# vgscan
# vgchange -ay volume group name

Suspend/resume with LVM and removable media

The factual accuracy of this article or section is disputed.

Reason: Provided solution will not work in more complex setups like LUKS on LVM. (Discuss in )

In order for LVM to work properly with removable media – like an external USB drive – the volume group of the external drive needs to be deactivated before suspend. If this is not done, you may get ‘buffer I/O errors on the dm device (after resume). For this reason, it is not recommended to mix external and internal drives in the same volume group.

To automatically deactivate the volume groups with external USB drives, tag each volume group with the tag in this way:

# vgchange --addtag sleep_umount vg_external

Once the tag is set, use the following unit file for systemd to properly deactivate the volumes before suspend. On resume, they will be automatically activated by LVM.

/etc/systemd/system/ext_usb_vg_deactivate.service
Description=Deactivate external USB volume groups on suspend
Before=sleep.target


Type=oneshot
ExecStart=-/etc/systemd/system/deactivate_sleep_vgs.sh


WantedBy=sleep.target

and this script:

/etc/systemd/system/deactivate_sleep_vgs.sh
#!/bin/sh

TAG=@sleep_umount
vgs=$(vgs --noheadings -o vg_name $TAG)

echo "Deactivating volume groups with $TAG tag: $vgs"

# Unmount logical volumes belonging to all the volume groups with tag $TAG
for vg in $vgs; do
    for lv_dev_path in $(lvs --noheadings  -o lv_path -S lv_active=active,vg_name=$vg); do
        echo "Unmounting logical volume $lv_dev_path"
        umount $lv_dev_path
    done
done

# Deactivate volume groups tagged with sleep_umount
for vg in $vgs; do
    echo "Deactivating volume group $vg"
    vgchange -an $vg
done

Finally, enable the unit.

Resizing a contiguous logical volume fails

If trying to extend a logical volume errors with:

" Insufficient suitable contiguous allocatable extents for logical volume "
/etc/lvm/lvm.conf
thin_check_options = 

See .

Известные ошибки[править]

Persistent log is not supported on segment-by-segment mirroringправить

LVM до версии 2.02.111 выдаёт ошибку при попытке удалить из группы томов сломавшийся диск, если на нём располагались части зеркального тома RAID1.
Выглядит это так:

   # pvs
     PV         VG    Fmt  Attr PSize PFree
    /dev/sdb3  DATA lvm2 a--  7,27t 5,31t
    /dev/sdc3  DATA lvm2 a--  7,27t 6,27t
    /dev/sdd3  DATA lvm2 a--  7,27t 2,19t
   # vgreduce --removemissing DATA
     Couldn't find device with uuid 1kelDC-lGQY-VzCf-mZtc-Xmkd-uPbB-WFxSP3.
     WARNING: Partial LV SRV needs to be repaired or removed. 
     WARNING: Partial LV SRV_rmeta_1 needs to be repaired or removed. 
     WARNING: Partial LV SRV_rimage_1 needs to be repaired or removed. 
     There are still partial LVs in VG DATA.
     To remove them unconditionally use: vgreduce --removemissing --force.
   # vgreduce --removemissing --force DATA
   Couldn't find device with uuid 1kelDC-lGQY-VzCf-mZtc-Xmkd-uPbB-WFxSP3.
   Persistent log is not supported on segment-by-segment mirroring

В результате с группой томов невозможно ничего сделать.

Исправление этого следующее:

  1. Сохраняем данные из оставшихся частей зеркальных томов. Все части зеркального тома видны в системе как /dev/ГРУППА/ТОМ_rimage_?, в выводе vgreduce —removemissing видно, какие из них утеряны. Берём оставшуеся часть зеркала и копируем командой dd в новый файл или в раздел того же размера.
  2. Ставим новый диск на замену неисправного. желательно, чтобы имя устройства было тем же самым.
  3. В таблице разделов создаём раздел с тем же номером того же размера, что и прежний. Обязательное условие — размер, расположение может отличаться, хотя лучше соблюсти и это условие.
  4. Форматируем раздел в физический том LVM командой pvcreate —u UUID_старого_тома —restorefile /etc/lvm/archive/дата_до_сбоя_диска.vg РАЗДЕЛ. Если получим ошибку, используем команду pvcreate —u UUID_старого_тома —norestorefile РАЗДЕЛ.
  5. Добавляем физический том в группу томов командой vgextend —restoremissing ГРУППА РАЗДЕЛ
  6. Из логических томов удаляем зеркала, расположенные на поддельном физическом томе
  7. Из группы томов удаляем поддельный физический том.
  8. Теперь с группой томов можно работать обычным образом.

Удаление LVM групп и томов

Для удаления LVM томов, используется команда lvremove:

lvremove /dev/test/test1

1 lvremovedevtesttest1

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

# vgremove test

1 # vgremove test

Volume group «test» successfully removed

1 Volume group»test»successfully removed

Убрать метки с LVM дисков:

# pvremove /dev/vdb /dev/vdc

1 # pvremove /dev/vdb /dev/vdc

Labels on physical volume «/dev/vdb» successfully wiped.
Labels on physical volume «/dev/vdc» successfully wiped.

1
2

Labels on physical volume»/dev/vdb»successfully wiped.

Labels on physical volume»/dev/vdc»successfully wiped.

LVM: создание файловой системы, монтирование логического тома

Чтобы создать файловую систему на логическом томе, воспользуйтесь утилитой mkfs:

Создадим файловую систему ext4 на LVM томе:

mkfs.ext4 /dev/test/test1

1 mkfs.ext4devtesttest1

Файловая система была создана без ошибок.

Теперь создадим тестовую директорию и примонтируем логический том к данной директории:

# mkdir /var/www/home
# mount /dev/test/test1 /var/www/home/

1
2

# mkdir /var/www/home
# mount /dev/test/test1 /var/www/home/

Как видите, все прошло без ошибок и теперь директория /var/www/home существует как отдельный раздел.

Чтобы логический том монтировался при загрузке системы, нужно добавить его в fstab и назначить директорию для монтирования.

Откроем файл:

nano /etc/fstab

1 nanoetcfstab

И добавим в него следующую информацию:

/dev/test/test1 /var/www/home ext4 defaults 1 2

1 devtesttest1varwwwhome ext4 defaults12

После чего примонтировать том можно будет через mount -a:

# mount -a
# df -h

1
2

# mount -a
# df -h

Filesystem Size Used Avail Use% Mounted on
devtmpfs 485M 0 485M 0% /dev
tmpfs 496M 0 496M 0% /dev/shm
tmpfs 496M 6.7M 489M 2% /run
tmpfs 496M 0 496M 0% /sys/fs/cgroup
/dev/vda2 20G 1.3G 19G 7% /
/dev/vda1 488M 100M 353M 23% /boot
tmpfs 100M 0 100M 0% /run/user/0
/dev/mapper/test-test1 4.8G 20M 4.6G 1% /var/www/home

1
2
3
4
5
6
7
8
9

Filesystem Size Used Avail Use%Mounted on

devtmpfs485M485M%dev

tmpfs496M496M%devshm

tmpfs496M6.7M489M2%run

tmpfs496M496M%sysfscgroup

devvda220G1.3G19G7%

devvda1488M100M353M23%boot

tmpfs100M100M%runuser

devmappertest-test14.8G20M4.6G1%varwwwhome

Чтобы проверить общую информацию по дискам, разделам и томам, введите команду lsblk:

Как видим, наш созданный том отображается, и указана директория к которой он примонтирован.

Команда 

lvmdiskscan

1 lvmdiskscan

 позволяет просканировать доступные диски, показывает их размер и принадлежность к LVM.

Загрузка с временного раздела

Подготовим временный раздел для корневого тома:

pvcreate /dev/sdb

vgcreate vg_tmp_root /dev/sdb

lvcreate -n lv_tmp_root -l +100%FREE /dev/vg_tmp_root

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

Создадим файловую систему XFS и смонтируем ее в каталог /mnt:

mkfs.xfs /dev/vg_tmp_root/lv_tmp_root

mount /dev/vg_tmp_root/lv_tmp_root /mnt

Смотрим расположение корневого раздела командой:

lvdisplay

… 
— Logical volume —
  LV Path                /dev/vg/root
  LV Name                root
  VG Name                vg

Находим среди результатов корневой раздел — нам нужен параметр LV Path.

Сдампим содержимое текущего корневого раздела в наш временный:

xfsdump -J — /dev/vg/root | xfsrestore -J — /mnt

* где /dev/vg/root — то, что мы получили в параметре LV Path командой lvdisplay; /mnt — каталог, в который мы смонтировали наш временный раздел.

Заходим в окружение chroot нашего временного корня:

for i in /proc/ /sys/ /dev/ /run/ /boot/; do mount —bind $i /mnt/$i; done

chroot /mnt/

Запишем новый загрузчик:

grub2-mkconfig -o /boot/grub2/grub.cfg

Обновляем образы загрузки:

cd /boot ; for i in `ls initramfs-*img`; do dracut -v $i `echo $i|sed «s/initramfs-//g; s/.img//g»` —force; done

Открываем конфигурационный файл grub:

vi /boot/grub2/grub.cfg

Меняем все значения, которые задействуют старый том lvm — в моем случае, все совпадения:


…  lv=vg/root …

… менялись на:


… lv=vg_tmp_root/lv_tmp_root …

* так как у меня корневой раздел был в группе vg и имел название root (команда lvdisplay), то под замену попадает vg/root. В вашем случае это будет другое значение.

Этот момент крайне важен. Неправильное редактирование приведет к невозможности загрузки.

Выходим из окружения chroot и перезагружаем компьютер:

exit

shutdown -r now

… мы должны загрузиться с временного раздела:

lsblk

NAME                      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                         8:0    0   10G  0 disk 
  sda1                      8:1    0    1G  0 part /boot
  sda2                      8:2    0    9G  0 part 
    vg-swap               253:1    0    1G  0 lvm  
    vg-root               253:2    0    8G  0 lvm  
sdb                         8:16   0    8G  0 disk 
  vg_tmp_root-lv_tmp_root 253:0    0    8G  0 lvm  /

* как видим, теперь корневой раздел на sdb.

Что такое LVM

Суть его состоит в том, что физические диски ‘Physical Volume’ (возможно различного размера, на разных устройствах) объединяются в ‘Volume Groups’ – группы томов. Группы томов могут уже разделяться на логические тома ‘Logical Volumes’, которые в свою очередь содержат конечные файловые системы. Звучит немного запутанно, но на самом деле всё просто и очень круто. Сейчас объясню на картинке:

Допустим, имеем два жестких диска. Старенький Seagate Barracuda на 80 Гб. И более новый WD на 640 Гб. Мы можем объединить их в единую группу Volume Group 1, суммарный объем которой составит 720 Гб. Затем, эту группу мы “пилим” по своему усмотрению на логические тома. Допустим, два тома по 360 Гб каждый. А затем монтируем первый как /home, второй как /var.

Причем, в некоторых случаях мы можем изменять размер логического диска прямо “на лету”.

Увеличение томов

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

1. Расширение физического тома

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

а) Если добавляем еще один диск.

Инициализируем новый диск:

pvcreate /dev/sdd

* в данном примере мы инициализировали диск sdd.

Проверяем объем физического тома:

pvdisplay

б) Если увеличиваем дисковое пространство имеющегося диска.

Увеличиваем размер физического диска командой:

pvresize /dev/sda

* где /dev/sda — диск, который был увеличен.

Проверяем объем физического тома:

pvdisplay

2. Добавление нового диска к группе томов

Независимо от способа увеличения физического тома, расширяем группу томов командой:

vgextend vg01 /dev/sdd

* данная команда расширит группу vg01 за счет добавленого или расширенного диска sdd.

Результат можно увидеть командой:

vgdisplay

3. Увеличение логического раздела

Выполняется одной командой.

а) все свободное пространство:

lvextend -l +100%FREE /dev/vg01/lv01

* данной командой мы выделяем все свободное пространство группы томов vg01 разделу lv01.

б) определенный объем:

lvextend -L+30G /dev/vg01/lv01

* данной командой мы добавляем 30 Гб от группы томов vg01 разделу lv01.

в) до нужного объема:

lvextend -L500G /dev/vg01/lv01

* данной командой мы доводим наш раздел до объема в 500 Гб.

Результат можно увидеть командой:

lvdisplay

Обратить внимание нужно на опцию LV Size:

  …
  LV Status              available
  # open                 1
  LV Size                <2,99 GiB
  Current LE             765
  …

4. Увеличение размера файловой системы

Чтобы сама система увидела больший объем дискового пространства, необходимо увеличить размер файловой системы.

Посмотреть используемую файловую систему:

df -T

Для каждой файловой системы существуют свои инструменты.

ext2/ext3/ext4:

resize2fs /dev/vg01/lv01

XFS:

xfs_growfs /dev/vg01/lv01

Reiserfs:

resize_reiserfs /dev/vg01/lv01

Как использовать LVM

Итак, вот что мы имеем:

Устройство /dev/sda не трогаем, системное. Для других нужд. А вот sdb и sdc объемом 2 и 3 Гб соответственно будем объединять в одну логическую группу.

Шаг 1. Создадим разделы на устройствах

Оба раздела настраиваются аналогично

Важно, чтобы тип раздела был Linux LVM (посмотреть типы можно нажав l после t в консоли fdisk)

Шаг 2. Создаем “Физические диски” Physical Volume

Для этого служит команда pvcreate и указание девайса.

Убедимся, что всё получилось. Просмотреть физические тома можно командой:

Более подробная информация будет показана при команде

Шаг 3. Создаем группу томов (Volume Group)

Создать группу томов из физических томов можно посредством команды vgcreate и указании имени группы, а так же входящих в эту группу устройств (это, кстати, даёт возможность заводить несколько различных групп):

Просмотреть созданные группы можно командой:

Как видим, здесь фиксируется имя группы, количество физических томов, логических томов, атрибуты, виртуальный размер и объем свободного виртуального места. Почему виртуального? Я уже упоминал о том, что размер можно менять динамически “на лету”?

Как и с физическими томами, у группы томов тоже есть команда display:

Шаг 4. Создаем логический раздел (Logical Volume)

Пришло время “резать пирог”, то есть разделять группу томов на разделы по своему усмотрению. Оттяпаем 300 Мегабайт на первый логический том, а 4 с небольшим гигабайта – на второй логический том. Используем команду lvcreate с указанием размера, имени логического тома и имени группы, от которой “откусываем” кусок:

Этой командой мы выделим 300 мегабайт из группы litl_admin, и назовём этот логический том “disk_1”.

Аналогично создадим disk_2 из оставшегося места.

P.S. Для удаления ошибочно созданного объекта используем lvremove с указанием имени группы. Далее в диалоговом режиме удаляем неугодные нам разделы.

Пришла пора разметить файловые системы, чтобы мы могли использовать эти логические тома.

имена могут быть любыми, эти каталоги будут выступать точками монтирования.

Осталось внести изменения в файл /etc/fstab, чтобы эти точки монтировались автоматически.

Допишем наши строки:

устройство, точка монтирования, файловая система, опции монтирования, порядок проверки fsck

У меня это две нижние строки.

Удаление физического тома из LVM

Процедура удаления физического тома из LVM зависит от того, используется ли устройство. Если да, то нужно будет перенести его физические диапазоны в другое месторасположение. Это требует достаточного количества других физических томов в группе.

При наличии достаточного объема физических томов для переноса данных перенесите их из удаляемого тома командой pvmove:

sudo pvmove /dev/sda

В зависимости от размера томов и объема переносимых данных этот процесс может потребовать некоторого времени.

После переноса файлов можно удалить физический том из группы командой vgreduce:

sudo vgreduce LVMVolGroup /dev/sda
sudo pvremove /dev/sda

Архитектура и терминология LVM

Перед непосредственным рассмотрением команд администрирования LVM важно разобраться с базовыми принципами организации устройств хранения в LVM и некоторыми используемыми терминами.
Структуры управления пространством LVM
Работа LVM основана на надстройке нескольких уровней логической структуры над физическими устройствами хранения. Вот основные уровни структуры LVM, начиная с самых простых.Физические тома:∙ Обозначение: pv… ∙ Описание: физические блочные устройства или другие дисковые устройства (например, другие устройства, созданные при помощи модуля отображения устройств, типа RAID-           массивов)

Используются LVM в качестве базовых элементов для построения более высоких уровней логической структуры. Физические тома — это обычные устройства                           хранения. Для управления LVM присваивает устройству заголовок.Группы томов:∙ Обозначение: vg…∙ Описание: LVM объединяет физические тома в пулы пространства, называемые группами томов. Группы томов не учитывают характеристики лежащих в их основе устройств и           работают как унифицированные логические устройства с суммарным объемом пространства объедиенных физических томов.Логические тома:∙ Обозначение: lv… ∙ Описание: Группу томов можно разделить на любое количество логических томов. Логические тома функционально эквивалентны разделам на физическом диске, но                            предоставляют большую гибкость. Это основной компонент, с которым взаимодействуют пользователи и приложения.

Таким образом, LVM можно использовать для объединения физических томов в группы для унификации дискового пространства системы. Затем администраторы могут разделить группу томов на произвольные логические тома, которые работают как гибкие разделы.

Описание процесса

План действий такой:

  1. Создаем временный раздел XFS на новом томе LVM. Переносим корневой раздел на временный том и загружаемся с него.
  2. Уменьшаем исходный том до нужного размера, возвращаем на него данные. Загружаемся с нового раздела.
  3. Удаляем временный том.

В нашем примере будут такие разделы:

lsblk

NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda           8:0    0   10G  0 disk 
  sda1        8:1    0    1G  0 part /boot
  sda2        8:2    0    9G  0 part 
    vg-root 253:0    0    8G  0 lvm  /
    vg-swap 253:1    0    1G  0 lvm  
sdb           8:16   0    8G  0 disk

* в данном примере корневой раздел находится на физическом диске sda и его разделе sda2.

Мы попробуем уменьшить раздел с 8 Гб до 6. Диск sdb будем использовать как временный.

Кластерный менеджер логических томов

Кластерный менеджер логических томов (CLVM, Clustered Logical Volume Manager) представляет собой набор кластерных расширений для LVM, позволяющих кластеру управлять совместным хранилищем (например, на SAN) с помощью LVM.


Рис.1. Кластерный менеджер логических томов

Возможность использования CLVM также определяется системными требованиями:

  • Если доступ к хранилищу необходим лишь одному узлу, то можно использовать LVM без расширений . При этом создаваемые логические тома будут локальными.
  • Если для обеспечения восстановления после отказа вы используете кластерную систему, в которой только один узел может обращаться к хранилищу в заданный момент времени, потребуются агенты (High Availability Logical Volume Management). Конфигурация и управление кластером предоставляет информацию об агентах .
  • Если нескольким узлам необходимо обращаться к хранилищу, доступ к которому разделяется между активными узлами, то потребуется использовать CLVM. CLVM позволит пользователю настроить логические тома на разделяемом хранилище за счет блокирования доступа к физическому хранилищу на время настройки логического тома, используя при этом кластерные службы блокирования для управления разделяемым хранилищем.

Для работы CLVM необходимо, чтобы выполнялось программное обеспечение , включая . Демон является основным кластерным расширением LVM, выполняется на каждом компьютере в кластере и передает им обновления метаданных LVM, тем самым обеспечивая постоянство представления логических томов. Более подробную информацию по установке и администрированию можно найти в руководстве Конфигурация и управление кластером .

Зачем нужен LVM[править]

Установка системы прямо на разделы диска зачастую приводит к следующей проблеме. Нужно каким-то образом «правильно» разбить жесткий диск. Слово «правильно» стоит в кавычках, потому что «правильного» разбиения диска для всех возможных ситуаций и применений не существует. В сети есть много советов по данному поводу, но они не учитывают потребностей конкретного пользователя (в случае настольной системы) или конкретного администратора (в случае сервера). Обычно рекомендуют разделы /home, /var, /usr, какие-то еще выносить на отдельные разделы диска. Но если разбивающий ошибется в размерах этих разделов, возникает очень нехорошая ситуация — на одних разделах место подходит к концу, в то время как на остальных места еще много. Приехали! Дисковое пространство нужно переразмечать. Для этого есть много способов:

1. Тотальный backup, затем переустановка системы с переразбиением диска.
2. Переразметка с помощью parted с риском потерять данные.
3. Изначальная установка системы на LVM, который позволяет изменять размеры своих разделов прямо на работающей системе.

Создание разделов

Рассмотрим пример создания томов из дисков sdb и sdc с помощью LVM.

1. Инициализация

Помечаем диски, что они будут использоваться для LVM:

pvcreate /dev/sdb /dev/sdc

* напомним, что в качестве примера нами используются диски sdb и sdc.

Посмотреть, что диск может использоваться LMV можно командой:

pvdisplay

В нашем случае мы должны увидеть что-то на подобие:

  «/dev/sdb» is a new physical volume of «1,00 GiB»
  — NEW Physical volume —
  PV Name               /dev/sdb
  VG Name               
  PV Size               1,00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               rR8qya-eJes-7AC5-wuxv-CT7a-o30m-bnUrWa
   
  «/dev/sdc» is a new physical volume of «1,00 GiB»
  — NEW Physical volume —
  PV Name               /dev/sdc
  VG Name               
  PV Size               1,00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               2jIgFd-gQvH-cYkf-9K7N-M7cB-WWGE-9dzHIY

* где 

  • PV Name — имя диска. 
  • VG Name — группа томов, в которую входит данный диск (в нашем случае пусто, так как мы еще не добавили его в группу).
  • PV Size — размер диска.
  • Allocatable — распределение по группам. Если NO, то диск еще не задействован и его необходимо для использования включить в группу.
  • PE Size — размер физического фрагмента (экстента). Пока диск не добавлен в группу, значение будет 0.
  • Total PE — количество физических экстентов.
  • Free PE — количество свободных физических экстентов.
  • Allocated PE — распределенные экстенты.
  • PV UUID — идентификатор физического раздела.

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

Инициализированные на первом этапе диски должны быть объединены в группы.

Группа может быть создана:

vgcreate vg01 /dev/sdb /dev/sdc

* где vg01 — произвольное имя создаваемой группы; /dev/sdb, /dev/sdc — наши диски.

Просмотреть информацию о созданных группах можно командой:

vgdisplay

На что мы получим, примерно, следующее:

  — Volume group —
  VG Name               vg01
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               1,99 GiB
  PE Size               4,00 MiB
  Total PE              510
  Alloc PE / Size       0 / 0   
  Free  PE / Size       510 / 1,99 GiB
  VG UUID               b0FAUz-wlXt-Hzqz-Sxs4-oEgZ-aquZ-jLzfKz

* где:

  • VG Name — имя группы.
  • Format — версия подсистемы, используемая для создания группы.
  • Metadata Areas — область размещения метаданных. Увеличивается на единицу с созданием каждой группы.
  • VG Access — уровень доступа к группе томов.
  • VG Size — суммарный объем всех дисков, которые входят в группу.
  • PE Size — размер физического фрагмента (экстента).
  • Total PE — количество физических экстентов.
  • Alloc PE / Size — распределенное пространство: колическтво экстентов / объем.
  • Free  PE / Size — свободное пространство: колическтво экстентов / объем.
  • VG UUID — идентификатор группы.

3. Создание логических томов

Последний этап — создание логического раздела их группы томов командой lvcreate. Ее синтаксис:

lvcreate <имя группы томов>

Примеры создания логических томов:

lvcreate -L 1G vg01

* создание тома на 1 Гб из группы vg01.

lvcreate -L50 -n lv01 vg01

* создание тома с именем lv01 на 50 Мб из группы vg01.

lvcreate -l 40%VG vg01

* при создании тома используется 40% от дискового пространства группы vg01.

lvcreate -l 100%FREE -n lv01 vg01

* использовать все свободное пространство группы vg01 при создании логического тома.
* также можно использовать %PVS — процент места от физического тома (PV); %ORIGIN — размер оригинального тома (применяется для снапшотов).

Посмотрим информацию о созданном томе:

lvdisplay

  — Logical volume —
  LV Path                /dev/vg01/lv01
  LV Name                lv01
  VG Name                vg01
  LV UUID                4nQ2rp-7AcZ-ePEQ-AdUr-qcR7-i4rq-vDISfD
  LV Write Access        read/write
  LV Creation host, time vln.dmosk.local, 2019-03-18 20:01:14 +0300
  LV Status              available
  # open                 0
  LV Size                52,00 MiB
  Current LE             13
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  — currently set to     8192
  Block device           253:2

* где:

  • LV Path — путь к устройству логического тома.
  • LV Name — имя логического тома.
  • VG Name — имя группы томов.
  • LV UUID — идентификатор.
  • LV Write Access — уровень доступа.
  • LV Creation host, time — имя компьютера и дата, когда был создан том.
  • LV Size — объем дискового пространства, доступный для использования.
  • Current LE — количество логических экстентов.
Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Мой редактор ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: