Работа с LVM

Logical Volume Manager (LVM) - это очень мощная система управления томами с данными для Linux. Она позволяет создавать поверх физических разделов (или даже неразбитых винчестеров) логические тома, которые в самой системе будут видны как обычные блочные устройства с данными (т.е. как обычные разделы). Основные преимущества LVM в том, что во-первых одну группу логических томов можно создавать поверх любого количества физических разделов, а во-вторых размер логических томов можно легко менять прямо во время работы. Кроме того, LVM поддерживает механизм снапшотов, копирование разделов «на лету» и зеркалирование, подобное RAID-1.

LVM увеличивает гибкость файловой системы, однако, являясь просто промежуточным слоем, не отменяет ограничения и использование других слоёв, а также усложняет работу. То есть, по-прежнему нужно создавать и изменять разделы, форматировать их; изменение размера должно поддерживаться также и самой файловой системой.

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

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

Для начала нужно установить поддержку LVM в нашей системе.

# apt-get install lvm2

  

У нас есть три свободных физических диска — sdb, sdc и sdd. Создадим LVM-раздел на первых двух из них.

Сначала на этих дисках создадим физические тома LVM:

# pvcreate /dev/sdb

# pvcreate /dev/sdc

  

Теперь создадим группу томов с произвольным названием, например, study:

# vgcreate study /dev/sdb /dev/sdc

  

В результате мы должны получить вывод

Volume group "study" successfully created

  

После этого можно создавать логические тома:

# lvcreate -n lv1 -L 5G study

# lvcreate -n lv2 -L 6G study

  

Теперь у нас есть блочные устройства /dev/study/lv1 и /dev/study/lv2. С ними можно работать так же, как и с обычными разделами.

# mkfs.ext4 /dev/study/lv1

# mkfs.ext4 /dev/study/lv2

  

И можем их примонтировать в систему

Для этого создадим в системе точки монтирования:

# mkdir /mnt/lv1

# mkdir /mnt/lv2

  

И примонтируем разделы

# mount /dev/study/lv1 /mnt/lv1

# mount /dev/study/lv2 /mnt/lv2

  

Введя команду df -h мы увидим информацию об этих разделах

/dev/mapper/study-lv1 5,0G 138M 4,6G 3% /mnt/lv1

/dev/mapper/study-lv2 6,0G 140M 5,5G 3% /mnt/lv2

  

То есть их размер 5 и 6 Gb, как мы и указывали при создании.

  

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

Если нам потребуется увеличить размер какого-то раздела внутри LVM, то для этого нам понадобится, естественно, свободное место. Добавим в LVM диск sdd.

Создадим на нем физический том:

# pvcreate /dev/sdd

  

И добавим его в группу томов study:

# vgextend study /dev/sdd

  

Теперь можно создать ещё один логический диск при помощи lvcreate или увеличить размер существующего с помощью команды lvresize.

Увеличим раздел lv1 до 15 Gb.

# lvresize -L 15 G study/lv1

  

Далее увеличить размер файловой системы

# resize2fs /dev/study/lv1

  Если после этого посмотреть информацию о разделах командой df -h, то мы увидим

/dev/mapper/study-lv1 15G 141M 14G 1% /mnt/lv1

  То есть размер раздела действительно изменился.

 

 Аварийная работа с LVM

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

Замена диска налету.

Предположим, что у нас начались проблемы с диском /dev/sdd. Заменим его на диск /dev/sde без выключения системы.

Для этого создадим физический том на новом диске

# pvcreate /dev/sde

 

И добавим его в группу томов study:

# vgextend study /dev/sde

 

Теперь нам нужно переместить информацию с диска sdd на новый sde:

# pvmove /dev/sdd /dev/sde

/dev/sdd: Moved: 0,7%

/dev/sdd: Moved: 30,7%

/dev/sdd: Moved: 63,5%

/dev/sdd: Moved: 97,3%

/dev/sdd: Moved: 100,0%

  

Перемещение информации займет некоторое время в зависимости от объема диска.

По окончании перемещений удалим сбойный диск из группы томов:

# vgreduce study /dev/sdd

   Removed "/dev/sdd" from volume group "study"

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

 

Создание снапшотов LVM

Сферы применения снапшотов могут быть самыми разнообразными. Например, резервное копирование базы данных. Если не использовать LVM — базу данных необходимо останавливать, копировать ее файлы куда-нибудь для последующего резервного копирования, а затем запускать ее заново. То есть делать это придется в нерабочее время. С LVM все проще — следует сделать снимок раздела с файлами базы данных и уже можно начинать делать резервную копию. Остановка базы данных не нужна.

Самая интересная особенность LVM при работе со снимками — это то, что снимок может занимать меньше дискового пространства, чем оригинал. Для этого используется режим Copy-on-Write, при котором реальное использование дискового пространства начинается только при изменении данных на томе-оригинале. То есть при попытке модификации файла на томе-оригинале неизмененный файл сначала сохраняется на томе-снимке, а уж затем модифицируется.

  

  ВНИМАНИЕ! При заполнении тома-снимка до конца, происходит его уничтожение. То есть том продолжает существовать, но ни смонтировать его, ни просмотреть его содержимое (если он был смонтирован до этого) уже не получится. Эту особенность следует обязательно учитывать при задании размера тома-снимка в момент его создания.

  

  Создание снимка производится командой lvcreate:

# lvcreate -s -L 2M -n backup /dev/study/lv2

Rounding up size to full physical extent 4,00 MiB

Logical volume "backup" created

Ключ -s указывает, что создаем мы именно снапшот, -n указывает имя создаваемого тома, а /dev/study/lv2 показывает с какого именно тома мы делаем снимок.

 

Команда lvscan покажет нам, что мы создали снапшот:

# lvscan

ACTIVE '/dev/study/lv1' [15,00 GiB] inherit

ACTIVE Original '/dev/study/lv2' [6,00 GiB] inherit

ACTIVE Snapshot '/dev/study/backup' [4,00 MiB] inherit

 

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

  

Информационные утилиты LVM

Получить информацию о группе томов

# vgdisplay

 

Получить информацию по созданным логическим томам

# lvdisplay

 

Получить информацию по физическим томам

# pvdisplay

 

Добавить комментарий

Защитный код
Обновить