- Управление и настройка LVM в Linux. Понятие LVM
- Введение
- Архитектура и терминология LVM
- Что такое диапазоны в LVM
- Примеры использования
- Обозначение физических устройств как физических томов
- Добавление физических томов в группу томов
- Создание логических томов из пула группы томов
- Форматирование и монтирование логических томов
- Добавление физического тома к группе томов
- Увеличение размера логического тома
- Уменьшение размера LVM
- Удаление тома LVM
- Удаление группы LVM
- Удаление физического тома из LVM
- Заключение
- LVM — это просто!
Управление и настройка LVM в Linux. Понятие LVM
Введение
LVM, или Logical Volume Management (управление логическими томами), — это технология управления устройствами хранения, предоставляющая пользователям возможность объединять и распределять физическое пространство устройств хранения для более простого и гибкого администрирования. Используя модуль отображения устройств ядра Linux (Device mapper) LVM может группировать устройства хранения и выделять из объединенного пространства необходимые логические структуры.
Основные преимущества LVM — высокий уровень абстрактности, гибкости и контроля. Логическим томам можно присваивать информативные имена, например «databases» или «root-backup». Можно динамически менять их размер при изменении требований к объему дискового пространства, переносить между физическими устройствами в рамках пула текущей системы и легко экспортировать. Кроме того, в LVM есть функции создания образов (snapshotting), «расслоения» (striping) и зеркального отображения (mirroring).
Данное руководство посвящено обзору принципов работы LVM и базовым командам, необходимым в работе.
Архитектура и терминология LVM
Перед непосредственным рассмотрением команд администрирования LVM важно разобраться с базовыми принципами организации устройств хранения в LVM и некоторыми используемыми терминами.
Структуры управления пространством LVM
Работа LVM основана на надстройке нескольких уровней логической структуры над физическими устройствами хранения. Вот основные уровни структуры LVM, начиная с самых простых.
Физические тома:
∙ Обозначение: pv…
∙ Описание: физические блочные устройства или другие дисковые устройства (например, другие устройства, созданные при помощи модуля отображения устройств, типа RAID- массивов). Используются LVM в качестве базовых элементов для построения более высоких уровней логической структуры. Физические тома — это обычные устройства хранения. Для управления LVM присваивает устройству заголовок.
Группы томов:
∙ Обозначение: vg…
∙ Описание: LVM объединяет физические тома в пулы пространства, называемые группами томов. Группы томов не учитывают характеристики лежащих в их основе устройств и работают как унифицированные логические устройства с суммарным объемом пространства объедиенных физических томов.
Логические тома:
∙ Обозначение: lv…
∙ Описание: Группу томов можно разделить на любое количество логических томов. Логические тома функционально эквивалентны разделам на физическом диске, но предоставляют большую гибкость. Это основной компонент, с которым взаимодействуют пользователи и приложения.
Таким образом, LVM можно использовать для объединения физических томов в группы для унификации дискового пространства системы. Затем администраторы могут разделить группу томов на произвольные логические тома, которые работают как гибкие разделы.
Что такое диапазоны в LVM
Каждый том в группе разделен на маленькие элементы фиксированного размера, называемые диапазонами. Размер диапазонов определяется группой томов (для всех томов в группе согласовывается единый размер диапазона).
Диапазоны физических томов называются физическими диапазонами, а логических томов — логическими диапазонами. Логический том — это просто соответствие, установленное LVM между логическими и физическими диапазонами. Благодаря этой связи размер одного диапазона является минимальным объемом пространства, который моно выделить при помощи LVM.
Диапазоны — основа силы и гибкости LVM. Логические диапазоны, представленные при помощи LVM в виде унифицированного устройства, не обязательно должны соответствовать непрерывно расположенным физическим диапазонам. LVM может незаметно для пользователя осуществлять копирование и реорганизацию физических диапазонов, составляющих логический том. Также логические тома можно легко увеличить или уменьшить, просто добавив или удалив диапазоны.
Примеры использования
Теперь, познакомившись с терминологией и структурами LVM, можно рассмотреть несколько типичных примеров применения этой системы. Начнем с базовой процедуры: создадим четыре логических тома на двух физических дисках.
Обозначение физических устройств как физических томов
Первый шаг — сканирование системы на наличие блочных устройств, которые видимы и управляемы с помощью LVM. Это осуществляется следующей командой:
На выходе будут отображены все доступные блочные устройства, с которыми может работать LVM:
Мы видим, что на данный момент в системе есть два диска и 17 разделов. Разделы представляют собой главным образом разделы типа /dev/ram*, используемые системой как RAM-диски для повышения производительности. Диски в данном примере — это /dev/sda объемом 200 Гб и /dev/sdb объемом 100 Гб.
Важно: Убедитесь, что устройства, которые вы планируете использовать с LVM, не содержат важных данных, так как использование LVM уничтожит все ранее имеющееся содержимое. Если на вашем сервере уже есть важные данные, создайте резервную копию.
Теперь, выбрав физические устройства для использования, можно отметить их как физические тома при помощи команды pvcreate:
Устройствам будут присвоены заголовки LVM, после чего их можно будет добавить к группе томов. При помощи команды pvs можно быстро убедиться, что LVM зарегистрировала физические тома:
Оба устройства располагаются в столбце PV, обозначающем физические тома (Physical Volume).
Добавление физических томов в группу томов
Создав физические тома, можно создать группу томов. Нужно выбрать имя группы томов, которое должно быть уникальным. Как правило, большую часть времени в системе используется только одна группа томов для гибкости распределения пространства. Для простоты назовем нашу группу LVMVolGroup. Чтобы создать группу томов и добавить в нее оба физических тома, нужно выполнить следующую команду:
Теперь если снова выполнить команду pvs, можно увидеть, что физические тома связаны с новой группой томов:
Следующая команда позволяет получить краткую информацию о самой группе томов:
Группа томов содержит два физических тома и ни одного логического тома, а ее объем равен суммарному объему входящих в нее устройств.
Создание логических томов из пула группы томов
Теперь мы можем использовать группу томов в качестве пула для выделения логических томов. В отличие от обычных разделов при работе с логическими томами вам не нужно знать структуру тома, так как LVM занимается ей самостоятельно. От вас требуется только указать размер и имя тома. Создадим в нашей группе четыре отдельных логических тома:
- том «projects» на 10 Гб
- том «www» на 5 Гб для веб-контента
- том «db» на 20 Гб для базы данных
- том «workspace», занимающий все оставшееся пространство
Логические тома создаются командой lvcreate. Опция -n указывает группу томов, в которой мы будем создавать том. Для непосредственного задания размера можно воспользоваться опцией -L. Если вы хотите указать размер в диапазонах, воспользуйтесь опцией -l.
Создадим первые три логических тома с опцией -L:
Логические тома и их связь с группой томов можно просматривать, настроив вывод команды vgs:
В двух последних столбцах результата видно, какой объем пространства выделен на логические тома.
Теперь можно выделить остальное пространство группы тому «workspace» при помощи флага -l, который работает с диапазонами. Также можно задать пространство в процентах. Нам нужно все оставшееся свободное пространство, поэтому мы укажем 100%FREE:
Проверка информации о группе томов показывает, что мы использовали все оставшееся свободное место:
После создания тома «workspace» группа «LVMVolGroup» полностью распределена.
Форматирование и монтирование логических томов
Теперь мы можем пользоваться логическими томами как нормальными блочными устройствами. Логические устройства доступны в директории /dev как любые другие устройства хранения. Их можно найти в двух местах:
Поэтому для их форматирования в файловой системе Ext4 можно выполнить следующие команды:
либо такие команды:
После форматирования можно создать точки монтирования:
Затем можно смонтировать логические тома в соответствующее месторасположение:
Для постоянного монтирования добавьте устройства в /etc/fstab как обычные блочные устройства:
Теперь операционная система должна автоматически монтировать логические тома LVM при загрузке.
Добавление физического тома к группе томов
Для расширения группы томов дополнительными физическими томами используется команда vgextend с аргументами названий группы томов и физических томов. Можно указать несколько устройств:
sudo vgextend имя_группы_томов /dev/sdc
Физический том будет добавлен к группе, расширяя объем доступного пространства.
Увеличение размера логического тома
Одно из главных преимуществ LVM — гибкость в работе с логическими томами. Можно легко менять их размер и количество, не останавливая систему.
Для увеличения размера логического тома используется команда lvresize. Флаг -L применяется для задания нового размера. При помощи символа «+» можно также указать относительный размер, тогда LVM увеличит размер логического тома на указанную величину. Для автоматического изменения размера файловой системы используйте флаг —resizefs.
Для корректного задания имени нужно сначала указать группу томов, а затем имя логического тома через слэш:
Размер логического тома test в группе LVMVolGroup и его файловой системы будут увеличены на 5 Гб
Можно не указывать опцию —resizefs и воспользоваться стандартными средствами файловой системы, например, для Ext4 следующие команды позволят добиться того же результата:
Уменьшение размера LVM
Уменьшение размера может привести к потере данных, поэтому оно выполняется несколько сложнее, так же как и удаление компонентов.
Для уменьшения логического тома прежде всего требуется выполнить резервное копирование данных. После этого нужно проверить объем используемого пространства, чтобы оценить, до какого размера можно уменьшить логический том. В данном случае используется чуть больше 521 Мб:
Затем нужно размонтировать файловую систему командой umount, в отличие от расширения при снижении размера это обязательно:
Теперь нужно проверить файловую систему командой fsck , указав ее тип с опцией -t. Для дополнительной проверки можно воспользоваться опцией -f:
После проверки файловой системы нужно внутренними средствами уменьшить ее размер. Наиболее безопасный вариант для исключения потери данных — оставить достаточный запас. В нашем случае новый размер — 3 Гб.
После завершения указанных операций можно изменить размер логического тома до той же величины при помощи команды lvresize с флагом -L:
Вы увидите предупреждение о возможности потери данных. После удаления логического тома снова проверьте файловую систему:
Если все работает корректно, можно снова ее смонтировать обычной командой mount:
Теперь ваш логический том будет уменьшен до нужной величины.
Удаление тома LVM
Для удаления логического тома используется команда lvremove. Если он смонтирован, то его нужно предварительно размонтировать:
Будет запрошено подтверждение процедуры, если вы уверены, введите Y.
Удаление группы LVM
Для удаления целой группы томов со всеми логическими томами используется команда vgremove. Перед этим нужно удалить все логические тома, как минимум размонтировать их:
После этого можно удалить всю группу, указав ее имя команде vgremove:
Будет запрошено подтверждение удаления. Если в группе ещё остались логические тома, нужно будет подтвердить удаление каждого из них.
Удаление физического тома из LVM
Процедура удаления физического тома из LVM зависит от того, используется ли устройство. Если да, то нужно будет перенести его физические диапазоны в другое месторасположение. Это требует достаточного количества других физических томов в группе.
При наличии достаточного объема физических томов для переноса данных перенесите их из удаляемого тома командой pvmove:
В зависимости от размера томов и объема переносимых данных этот процесс может потребовать некоторого времени.
После переноса файлов можно удалить физический том из группы командой vgreduce:
После этого при помощи команды pvremove можно удалить маркер физического тома и использовать устройство для других целей или совсем удалить его из системы:
Заключение
Мы рассмотрели различные компоненты, используемые LVM для создания гибкой системы дискового пространства, а также разобрались, как управлять ими и настроить работу устройств хранения в LVM.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Источник
LVM — это просто!
Собственно, хочется просто и доступно рассказать про такую замечательную вещь как Logical Volume Management или Управление Логическими Томами.
Поскольку уже давно пользуюсь LVM-ом, расскажу что он значит именно для меня, не подглядывая в мануалы и не выдёргивая цитаты из wiki, своими словами, чтобы было понятно именно тем кто ничего о нем не знает. Постараюсь сразу не рассказывать о всяческих «продвинутых» функциях типа страйпов, снапшотов и т.п.
LVM — это дополнительный слой абстракции от железа, позволяющий собрать кучи разнородных дисков в один, и затем снова разбить этот один именно так как нам хочется.
есть 3 уровня абстракции:
1. PV (Physical Volume) — физические тома (это могут быть разделы или целые «неразбитые» диски)
2. VG (Volume Group) — группа томов (объединяем физические тома (PV) в группу, создаём единый диск, который будем дальше разбивать так, как нам хочется)
3. LV (Logical Volume) — логические разделы, собственно раздел нашего нового «единого диска» ака Группы Томов, который мы потом форматируем и используем как обычный раздел, обычного жёсткого диска.
это пожалуй вся теория. 🙂 теперь практика:
для работы нужны пакеты lvm2 и возможность работать с привелегиями root поэтому:
$ sudo bash
# apt-get install lvm2
допустим у нас в компе есть жёсткий диск на 40Гб и нам удалось наскрести немного денег и наконец-то купить себе ТЕРАБАЙТНИК! :))) Система уже стоит и работает, и первый диск разбит одним разделом (/dev/sda1 как / ), второй — самый большой, который мы только подключили — вообще не разбит /dev/sdb…
Предлагаю немножко разгрузить корневой диск, а заодно ускорить (новый диск работает быстрее старого) и «обезопасить» систему с помощью lvm.
Можно делать на втором диске разделы и добавлять их в группы томов (если нам нужно несколько групп томов),
а можно вообще не делать на диске разделы и всё устройство сделать физическим разделом (PV)
# pvcreate /dev/sdb
Physical volume «/dev/sdb» successfully created
Создаём группу томов с говорящим названием, например по имени машины «ws», чтобы когда мы перетащим данный диск на другую машину небыло конфликтов с именами групп томов:
# vgcreate ws /dev/sdb
Volume group «vg0» successfully created
желательно внести с корневого раздела такие папки как /usr /var /tmp /home, чтобы не дефрагментировать лишний раз корневой раздел и ни в коем случае его не переполнить, поэтому создаём разделы:
# lvcreate -n usr -L10G ws # здесь мы создаём раздел с именем «usr», размером 10Gb
Logical volume «usr» created
по аналогии делаем то же для /var, /tmp, /home:
root@ws:
# lvcreate -n var -L10G ws
root@ws:
# lvcreate -n tmp -L2G ws
root@ws:
# lvcreate -n home -L500G ws
у нас ещё осталось немного свободного места в группе томов (например для будущего раздела под бэкап)
посмотреть сколько именно можно командой:
root@ws:
# vgdisplay
информацию по созданным логическим томам
root@ws:
# lvdisplay
информацию по физическим томам
root@ws:
разделы что мы создали появятся в папке /dev/[имя_vg]/, точнее там будут ссылки на файлы,
lrwxrwxrwx 1 root root 22 2009-08-10 18:35 swap -> /dev/mapper/ws-swap
lrwxrwxrwx 1 root root 21 2009-08-10 18:35 tmp -> /dev/mapper/ws-tmp
lrwxrwxrwx 1 root root 21 2009-08-10 18:35 usr -> /dev/mapper/ws-usr
lrwxrwxrwx 1 root root 21 2009-08-10 18:35 var -> /dev/mapper/ws-var
и т.д…
дальше lvm уже почти кончается… форматируем наши разделы в любимые файловые системы:
root@ws:
# mkfs.ext2 -L tmp /dev/ws/tmp
root@ws:
# mkfs.ext4 -L usr /dev/ws/usr
root@ws:
# mkfs.ext4 -L var /dev/ws/var
root@ws:
# mkfs.ext4 -L home /dev/ws/home
кстати, не плохо было бы сделать раздел подкачки:
root@ws:
# lvcreate -n swap -L2G ws
root@ws:
# mkswap -L swap /dev/ws/swap
root@ws:
создаём папку и подключая по очереди новообразовавшиеся тома, копируем в них нужное содержимое:
root@ws:
# mkdir /mnt/target
root@ws:
# mount /dev/ws/home /mnt/target
копируем туда всё из папки /home своим любимым файловым менеджером (с сохранением прав доступа), например так ;):
root@ws:
# cp -a /home/* /mnt/target/
root@ws:
# umount /mnt/target/
кстати, для папки temp необходимо только поправить права, копировать туда что-либо необязательно:
root@ws:
На вкусное, хочу предложить более продвинутую штуку:
допустим у нас есть система с разделом на LVM, а жёсткий диск начал сбоить, тогда мы можем без перезагрузки переместить всю систему на другой жёсткий диск/раздел:
# On-line добавление/удаление жёстких дисков с помощью LVM (пример)
# pvcreate /dev/sda1 # наш эмулятор сбойного диска
Physical volume «/dev/sda1» successfully created
# pvcreate /dev/sdb1 # наш эмулятор спасательного диска
Physical volume «/dev/sdb1» successfully created
# vgcreate vg0 /dev/sda1 # создаю группу томов vg0
Volume group «vg0» successfully created
# lvcreate -n test -L10G vg0 #создаю раздел для «важной» инфы
Logical volume «test» created
# mkfs.ext2 /dev/vg0/test # создаю файловую систему на разделе
root@ws:
# mount /dev/mapper/vg0-test /mnt/tmp/ #монтирую раздел
… # заполняю его информацией, открываю на нем несколько файлов и т.п.
# vgextend vg0 /dev/sdb1 # расширяю нашу групу томов на «спасательный» диск
Volume group «vg0» successfully extended
# pvmove /dev/sda1 /dev/sdb1 #передвигаю содержимое с «умирающего» диска на «спасательный»
/dev/sda1: Moved: 0.9%
/dev/sda1: Moved: 1.8%
…
/dev/sda1: Moved: 99.7%
/dev/sda1: Moved: 100.0%
# vgreduce vg0 /dev/sda1 # убираю «умирающий» диск из группы томов.
Removed «/dev/sda1» from volume group «vg0»
Итого:
Я создал логический раздел, отформатировал его, примонтировал и заполнил нужными данными, затем переместил его с одного устройства на другое, при этом раздел остался примонтирован и данные всё время оставались доступны!
Подобным образом мне удавалось без перезагрузки перенести всю систему с умирающего диска на рэид-массив. 🙂
Источник