LVM: шпаргалка

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

Перво-наперво

У нас должно быть свободное место в Volume Group.  Нет смысла без особой необходимости забивать все свободное место логическими томами, когда их свободное место будет использовано не до конца. Если у нас один хард на 500 гиг, мы делаем группу на весь этот объем, а дальше, например, делаем один том в 1G под swap, другой — в 9G под /, и, например, третий — на 50G под /home. У нас остается  440G свободного места, которое мы в любой момент можем докинуть в любой раздел, а также использовать под снапшоты. Соу…

Как добавить места на Logical Volume

Увеличение можно проделывать на смонтированной файловой системе.

Допустим, у нас есть LVM-том с линуксовым корнем /dev/mypc/root, содержащий на себе линуксовый корень. Докинуть 100 мегабайт можно командой:

 
 
  1. lvextend -L +100m /dev/mypc/root
  2. resize2fs /dev/mypc/root

 

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

 

Как сделать и откатить снапшот

Допустим, у нас все еще есть LVM-том /dev/mypc/root, содержащий на себе линуксовый корень. Если нам нужно, например, накатить новые дрова для видюхи и мы боимся все сломать, делаем снапшот:

 
 
  1. lvcreate -L2G -s -n rootsnapshot /dev/mypc/root

 

Эта команда сделает снапшот /dev/mypc/rootsnapshot, который будет содержать состояние на момент создания снапшота. При этом есть ограничение в 2 гига на изменения в нашем корне, если превысим — снапшот перестанет быть валидным и его можно будет только удалить:

 
 
  1. lvremove /dev/mypc/rootsnapshot

 

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

 

Автоматическое увеличение размера снапшота LVM

Тут все просто, но не так просто, как часто пишут в интернетах. Нужно:

  1. Изменить файлик /etc/lvm/lvm.conf:
    snapshot_autoextend_threshold = 80
    snapshot_autoextend_percent = 20
    monitoring = 1Эти опции включают мониторинг, а так же увеличивают размер снапшота на 20% (от текущего размера) каждый раз, когда он оказывается занят изменениями на 80%.
  2. Установить dmeventd, который может не стоять, но который нужен чтобы все работало!

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

 
 
  1. lvconvert --merge  /dev/mypc/rootsnapshot

 

Вообще эта команда должна производиться при отмонтированном разделе, но так как в нашем случае это корень, то отмонтировать его не получится, и lvconvert скажет, что сделает все в лучшем виде при следующей активации тома — то есть при перезагрузке.

 

Как смигрировать на другой физический диск

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

Допустим у нас есть диск /dev/sda. На его разделе /dev/sda1 у нас покоится Volume Group «mypc» с нашими логическими томами:

  1. root — с корнем линукса (/),
  2. home — с домашними  каталогами (/home),
  3. swap — с разделом подкачки.

И нам нужно все это добро перенести на новый хард — /dev/sdb, который гол как сокол и ничего ж там нет.

Готовим новый диск

 
 
  1. # Создаем раздел на новом диске:
  2. parted -a opt /dev/sdb mkpart primary 0% 100%
  3. # Создаем физический том LVM:
  4. pvcreate /dev/sdb1
  5. # Расширяем Volume Group на новый физический том:
  6. vgextend mypc /dev/sdb1

 

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

 
 
  1. pvmove -n /dev/mypc/root /dev/sda1 /dev/sdb1
  2. pvmove -n /dev/mypc/home /dev/sda1 /dev/sdb1
  3. pvmove -n /dev/mypc/swap /dev/sda1 /dev/sdb1

 

Избавляемся от старого харда

 
 
  1. # Удаляем физический том LVM из группы "mypc":
  2. vgreduce mypc /dev/sda1
  3. # Удаляем физический том LVM:
  4. pvremove /dev/sda1

 

Устанавливаем загрузчик на новый диск и обновляем его конфиг:

 
 
  1. grub-install /dev/sdb
  2. update-grub

 

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

Как сделать клон логического тома

Два хороших источника по этим операциям: www.voleg.info (archive.org) и redhat.com (archive.org)

Сначала делаем зеркальный рейд из тома, который хотим склонировать

 
 
  1. lvconvert --type mirror --alloc anywhere -m1 /dev/mypc/root
  2. # или, если хотим указать конкретный физически том для расположения клона
  3. lvconvert --type mirror -m1 /dev/mypc/root /dev/sdb1

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

 
 
  1. # отрезаем от зеркала том с именем rootcopy, состоящий из 1 копии, лежащей на PV /dev/sda1
  2. lvconvert --splitmirrors 1 --name rootcopy /dev/mypc/root /dev/sda1
  3. # более общий случай: если у нас зеркало составлено из более чем двух копий:
  4. # отрезаем от зеркала том с именем rootcopy, который сам будет являться зеркалом из томов, лежащих на PV /dev/sda1 и /dev/sdс1
  5. lvconvert --splitmirrors 2 --name rootcopy /dev/mypc/root /dev/sd[ac]1
Поделиться:
Метки: , , , , . Закладка Постоянная ссылка.

Комментарии запрещены.