Русскоязычная документация по Ubuntu. Что такое LVM? И зачем он нужен? Lvm не увеличился логический том
Logical Volume Manager (LVM) - это очень мощная система управления томами с данными для Linux. Она позволяет создавать поверх физических разделов (или даже неразбитых винчестеров) логические тома, которые в самой системе будут видны как обычные блочные устройства с данными (т.е. как обычные разделы). Основные преимущества LVM в том, что во-первых одну группу логических томов можно создавать поверх любого количества физических разделов, а во-вторых размер логических томов можно легко менять прямо во время работы. Кроме того, LVM поддерживает механизм снапшотов, копирование разделов «на лету» и зеркалирование, подобное RAID-1.
Если планируются большие работы с LVM, то можно запустить специальную «оболочку» командой sudo lvm . Команда help покажет список команд.
Создание и удаление
Как уже отмечалось, LVM строится на основе разделов жёсткого диска и/или целых жёстких дисков. На каждом из дисков/разделов должен быть создан физический том (physical volume). К примеру, мы используем для LVM диск sda и раздел sdb2 :
Pvcreate /dev/sda pvcreate /dev/sdb2
На этих физических томах создаём группу томов , которая будет называться, скажем, vg1 :
Vgcreate -s 32M vg1 /dev/sda /dev/sdb2
Посмотрим информацию о нашей группе томов:
Vgdisplay vg1
Групп можно создать несколько, каждая со своим набором томов. Но обычно это не требуется.
Теперь в группе томов можно создать логические тома lv1 и lv2 размером 20 Гбайт и 30 Гбайт соответствено:
Lvcreate -n lv1 -L 20G vg1 lvcreate -n lv2 -L 30G vg1
Теперь у нас есть блочные устройства /dev/vg1/lv1 и /dev/vg1/lv2 .
Осталось создать на них файловую систему. Тут различий с обычными разделами нет:
Mkfs.ext4 /dev/vg1/lv1 mkfs.reiserfs /dev/vg1/lv2
Удаление LVM (или отдельных его частей, например, логических томов или групп томов) происходит в обратном порядке - сначала нужно отмонтировать разделы, затем удалить логические тома (lvremove), после этого можно удалить группы томов (vgremove) и ненужные физические тома (pvremove).
Добавление физических томов
Чтобы добавить новый винчестер sdc в группу томов, создадим физический том:
Pvcreate /dev/sdc
И добавим его в нашу группу:
Vgextend vg1 /dev/sdc
Теперь можно создать ещё один логический диск (lvcreate) или увеличить размер существующего (lvresize).
Удаление физических томов
Чтобы убрать из работающей группы томов винчестер sda сначала перенесём все данные с него на другие диски:
Pvmove /dev/sda
Затем удалим его из группы томов:
Vgreduce vg1 /dev/sda
И, наконец, удалим физический том:
Pvremove /dev/sda
Вообще-то, последняя команда просто убирает отметку о том, что диск является членом lvm, и особой пользы не приносит. После удаления из LVM для дальнейшего использования диск придётся переразбивать/переформатировать.
Изменение размеров
LVM позволяет легко изменять размер логических томов. Для этого нужно сначала изменить сам логический том:
Lvresize -L 40G vg1/lv2
а затем файловую систему на нём:
Resize2fs /dev/vg1/lv2 resize_reiserfs /dev/vg1/lv2
Изменение размеров физического тома - задача весьма сложная и обычно не применяется. Целесообразнее и безопаснее удалить физический том, изменить размер раздела и создать том заново.
Как просто попробовать
Если LVM устанавливается не для дальнейшего использования, а «напосмотреть», то диски и разделы можно заменить файлами. Не понадобятся ни дополнительные диски, ни виртуальные машины. Мы создадим виртуальные накопители и будем с ними работать. Например, можно создать 4 диска по 1 Гбайт, но можно создать другое количество большего или меньшего размера как вам хочется. Создаем сами файлы, имитирующие устройства:
Mkdir /mnt/sdc1/lvm cd /mnt/sdc1/lvm dd if=/dev/zero of=./d01 count=1 bs=1G dd if=/dev/zero of=./d02 count=1 bs=1G dd if=/dev/zero of=./d03 count=1 bs=1G dd if=/dev/zero of=./d04 count=1 bs=1G
Создаем loopback устройства из файлов:
Losetup -f --show ./d01 losetup -f --show ./d02 losetup -f --show ./d03 losetup -f --show ./d04
Pvcreate /dev/loop0 pvcreate /dev/loop1 pvcreate /dev/loop2 pvcreate /dev/loop3 vgcreate -s 32M vg /dev/loop0 /dev/loop1 /dev/loop2 /dev/loop3 lvcreate -n first -L 2G vg lvcreate -n second -L 400M vg ...
Снапшоты
Одна из важнейших особенностей LVM - это поддержка механизма снапшотов. Снапшоты позволяют сделать мгновенный снимок логического тома и использовать его в дальнейшем для работы с данными.
Примеры использования
LVM активно используется, когда необходим механизм снапшотов. Например, этот механизм крайне важен при бекапе постоянно меняющихся файлов. LVM позволяет заморозить некоторое состояние ФС и скопировать с неё все нужные данные, при этом на оригинальной ФС останавливать запись не нужно.
Также снапшоты можно применить для организации поддержки файловым сервером с Samba механизма архивных копий, об этом в соответствующей статье:
LVM с LiveCD
Если у вас возникла необходимость работать с LVM с LiveCD Ubuntu, то вам придётся выполнить несколько дополнительных действий, поскольку по умолчанию утилит для работы с LVM нет.
Сначала вам нужно установить эти утилиты:
Sudo vgscan sudo vgdisplay YOUR_VGNAME
Sudo vgchange -a y
Эта команда должна сообщить о том, что все ваши логические тома активированы. Теперь можно работать с ними обычным образом.
Классические разделы, на которые чаще всего разбивается жёсткий диск для установки системы и хранения данных, имею ряд существенных недостатков. Их размер очень сложно изменять, они находятся в строгой последовательности и просто взять кусочек от первого раздела и добавить к последнему не получится, если между ними есть ещё разделы. Поэтому очень часто при начальном разбиении винчестера пользователи ломают себе голову - сколько места выделить под тот или иной раздел. И почти всегда в процессе использования системы приходят к выводу, что они сделали не правильный выбор.
Решить большинство этих проблем может технология LVM . Она создаёт дополнительную абстракцию - логические тома, которые видны в системе, как обычные разделы, однако ими не являются. Она имеет ряд преимуществ:
Логические тома LVM больше не привязаны к физическому местоположению. В рамках LVM вообще не существует такого понятия, как порядок логических томов.
Размер логических томов можно увеличивать прямо на лету, а у отмонтированных томов можно кроме того легко уменьшать размер, не выходя из системы.
При необходимости можно размазать логические тома по нескольким физическим жёстким дискам, таким образом увеличив доступное место. При этом система всё так же будет видеть только один логический том, хотя размер его будет превышать доступные размеры жёстких дисков. Можно провести и обратную операцию, удалив жёсткий диск из LVM, таким образом освободив его для другого использования.
LVM поддерживает механизм снапшотов - мгновенных копий файловой системы тома. Это может очень пригодиться для создания бекапов.
Есть ещё масса плюсов, о которых можно почитать в специализированных статьях про LVM.
Ubuntu полностью поддерживает LVM, однако из Desktop версии установочного диска убраны необходимые для работы с LVM утилиты. Кроме того, установщик Desktop версии не умеет изменять LVM тома. Поэтому если вы хотите использовать LVM, то вам придётся либо поставить систему с Alternate диска, либо немного помухлевать с обычным LiveCD. Установка с Alternate неудобна и у многих вызывает дискомфорт, да и кроме того чаще всего Alternate диска нет под рукой, поэтому давайте рассмотрим вариант с LiveCD.
Учтите, что управление LVM осуществляется через терминал, поэтому, дабы ничего не поломать, вам необходимо сначала научиться более-менее комфортно с ним работать. Кроме того, ознакомьтесь с принципами работы и основными концепциями LVM, дабы понимать, что это такое. Статья рассчитана не на новичков, а на тех, кто уже разобрался в основах Ubuntu.
Предварительная подготовка
Вам необходимо запустить систему с LiveCD и подключить компьютер к интернету. Далее откройте терминал и установите прямо в LiveCD сессию необходимые утилиты командой:
sudo apt-get install lvm2Всё, теперь можно начинать работу с LVM. Но сначала необходимо выделить место, на котором мы будем создавать LVM. Для этого вам потребуется редактор разделов Gparted, который находится в меню Система→Администрирование (System→Administration).
Из-за особенностей загрузчика GRUB лучше при использовании LVM сделать для /boot отдельный маленький раздел. Скажем, 200Mb должно хватить.
Создайте с помощью Gparted /boot раздел и раздел, поверх которого вы будете разворачивать LVM. Если вы готовы выделить под LVM весь жёсткий диск, то не забудте, что /boot раздел вашей Ubuntu нужно размещать не на LVM. Таким образом вам понадобятся два раздела - 200Mb под /boot и всё остальное под LVM. Не выбирайте никакую файловую систему для LVM раздела - просто пустой раздел (unformatted). Не забудьте, для применения всех внесённых вами через Gparted изменений нужно нажать на зелёную галочку на верхней панели или выбрать в меню Edit пункт Apply.
После того, как изменения в разметку будут успешно внесены, необходимо будет поменять тип нужного вам раздела на Linux LVM . Для этого нажмите правой клавишей на разделе, и выберите пункт «Управление флагами» (Manage flags). В открывшемся окне поставьте галочку в поле с именем lvm , дождитесь окончания применения всех изменений и закройте Gparted. На этом подготовительный этап закончен.
Создание логических томов LVM
Теперь пора приступить к непосредственному созданию LVM. Для примера будем считать, что LVM мы создаём поверх раздела /dev/sda1 . В этом случае сначала необходимо инициализировать физический раздел командой:
sudo pvcreate / dev/ sda1 sudo vgcreate local / dev/ sda1И, наконец, создать необходимые вам логические тома. Тут стоит заметить, что так как увеличивать размер LVM томов можно легко прямо в работающей системе, то лучше всего выделять для логических томов минимальный необходимый размер. Не бойтесь, что большой объём останется нераспределённым в рамках группы томов, он не пропадёт. Как только вам понадобится дополнительное место, вы сможете его легко добавить к любому логическому тому. А вот уменьшить размер логического тома значительно сложней.
Обычно для установки системы требуется раздел под корень, раздел под /home , раздел под swap и иногда - раздел под данные. Создать логические тома подо все эти четыре задачи можно командами:
sudo lvcreate -L 7G -n root local sudo lvcreate -L 5G -n home local sudo lvcreate -L 3G -n swap local sudo lvcreate -L 10G -n data localПараметр -n , если вы ещё не поняли, задаёт имя логического тома, -L - его размер.
Теперь нужно создать файловые системы на созданных логических томах.
В современных версиях Ubuntu нужно создавать файловые системы вручную перед установкой. Иначе установщик захочет поверх каждого тома LVM создать ещё и MBR таблицу разделов, что крайне нежелательно.
Сделать это можно примерно следующими командами:
sudo mkfs.ext4 / dev/ local/ root sudo mkfs.ext4 / dev/ local/ home sudo mkswap -f / dev/ local/ swap sudo mkfs.ext4 / dev/ local/ dataОбратите внимание, что имена логических томов LVM в системе выглядят как /dev/{имя_группы_томов}/{имя_тома} .
Кроме того, файловая система ext4 по умолчанию резервирует часть места для системных данных. Поскольку на /home , и уж тем более на разделе с пользовательскими файлами, никаких системных данных никогда не будет, то лучше отменить это резервирование, дабы освободить пропадающее зря место. Для это пригодятся команды
sudo tune2fs -r 0 / dev/ local/ home sudo tune2fs -r 0 / dev/ local/ dataНи в коем случае не отменяйте резервирование для корневого раздела, иначе система может вообще перестать работать!
Ну и наконец вы возможно захотите присвоить разделу с данными нормальную метку, дабы он красиво отображался в установленной системе. Сделать это можно примерно такой командой:
sudo tune2fs -L Data / dev/ local/ dataТеперь можно приступать непосредственно к установке на созданные нами логические тома.
Установка системы
Собственно сама установка стандартна, однако когда вам предложат выбрать способ разбиения диска, выберите ручной режим. В открывшемся окне вы увидите все созданные вами тома LVM. Укажите для каждого соответствующую точку монтирования, однако не ставьте галочку форматирования. Для раздела под данные можете указать точку монтирования /media/data . Не забудте про маленький раздел /boot. Ему нужно указать соответствующую точку монтирования и можно задать в качестве ФС ext2, кроме этого его нужно отформатировать.
Дождитесь завершения установки, но компьютер не перезагружайте !
Если вы перезагрузите компьютер после установки, то ваша новая система не запустится. В этом случае необходимо будет снова зайти в LiveCD, установить утилиты работы с LVM, а далее выполнить команду sudo vgchange -a y
После чего выполнить инструкции, приведённые ниже.
Активирование LVM в установленной системе
Систему вы поставили, однако осталась одна небольшая проблема - в установленной Ubuntu нет утилит работы с LVM, а значит она просто не запустится. Это достаточно легко исправить.
Для начала, не выходя с LiveCD, смонтируйте логический том, который вы выделили под корень, в папку /mnt. Сделать это можно командой
sudo mount / dev/ local/ root / mntЗатем примонтировать на место /boot раздел (в примере ниже это /dev/sda1):
sudo mount / dev/ sda1 / mnt/ bootТеперь необходимо будет войти в установленную систему с помощью chroot , однако предварительно надо временно подключить в неё некоторые важные системные ресурсы. Для этого выполните команды
sudo mount --bind / dev / mnt/ dev sudo mount --bind / proc / mnt/ proc sudo mount --bind / sys / mnt/ sysЕсли вдруг у вас в установленной только что системе /var или другие системные каталоги находятся на отличных от корневого разделах, не забудьте примонтировать их на свои места в /mnt .
Теперь перейдите в установленную систему командой
sudo chroot / mnt / bin/ bashИ установите необходимые утилиты командой
apt-get install lvm2Всё, установка завершена. Закройте терминал, нажмите Alt + Ctrl + Del и перезагрузите компьютер. Не забудьте достать LiveCD из привода. Компьютер должен загрузиться в только что установленную систему.
Дальнейшая работа
Допустим, в какой-то момент вам перестало хватать 5 гигабайт, которые вы выделили под раздел /home . Не беда. Посмотрите, сколько неиспользованного места осталось в группе томов командой
sudo vgdisplay localТеперь увеличьте размер логического тома /dev/local/home до нужного командой
sudo lvresize -L 15G / dev/ local/ homeУчтите, что при таком использовании в параметре -L указывается полный желаемый размер, а не его приращение. Приращение можно задать с помощью символа «+»:
sudo lvresize -L +5G / dev/ local/ homeПосле увеличения размера логического тома останется лишь растянуть файловую систему на весь новый объём. Сделать это можно командой
sudo resize2fs / dev/ local/ homeВсё, размер логического тома увеличен.
Кроме увеличения размера логических томов на лету, LVM умееет ещё много чего полезного. Например, создавать мгновенные снапшоты. Однако обо всех тонкостях работы с этой технологией читайте в специализированных статьях.
На моем домашнем сервере Linux установлен диск на 250 ГБ. Я только что купил новый 250 ГБ SATA-диск, и я хочу добавить новый диск в мой существующий том LVM, чтобы увеличить его размер до 500 ГБ. Как добавить диск в LVM и расширить объем LVM в операционной системе Linux?
Управление томами Linux (LVM) создает простой в использовании уровень поверх физических дисков. Вы можете комбинировать несколько дисков и создавать логические тома хранилища. Это обеспечивает конкретные преимущества, такие как:
- Никаких ограничений на размер диска;
- Увеличена пропускная способность диска
- Объемы зеркалирования для критически важных бизнес-данных;
- Снимки тома;
- Легкое резервное копирование и восстановление с использованием моментальных снимков;
- Простое перемещение данных;
- Изменение размеров пулов хранения (добавление или удаление дисков) без обязательного переформатирования дисков.
Шаг 1 – Узнать информацию о существующих LVMВнимание : Будьте осторожны с lvm / mkfs.ext4 и другими командами, а также с именами устройств, т.к. если имя устройства задано неверно, это может уничтожить все данные. Соблюдайте осторожность и всегда держите полные резервные копии.
Управление хранилищем LVM разделено на три части:
- Физические тома (ФТ(PV)) – фактические (например, /dev/sda, /dev,sdb, /dev/vdb и т.д.)
- Группы томов (ГТ(VG)) – физические тома объединяются в группы томов. (например, my_vg = /dev/sda + /dev/sdb .)
- Логические тома (ЛТ(LV)) – группа томов, в свою очередь, делится на логические тома (например, my_vg делится на my_vg/data, my_vg/backups, my_vg/home, my_vg/mysqldb и т.д.)
Как отобразить информацию о физических томах (pv)
Введите следующую команду pvs, чтобы просмотреть информацию о физических томах:
Итак, в настоящее время мой LVM включает физический том (фактический диск), называемый /dev/vda5 . Чтобы просмотреть подробную информацию о свойствах, введите:
$ sudo pvdisplay
Примеры возможных выводов данных:Из вышеуказанного вывода ясно видно, что наша группа томов с именем ubuntu-box-1-vg сделана из физического тома с именем /dev/vda5 .
Как отобразить информацию о LVM группе томов (vg)
Введите любую из следующих команд vgs/vgdisplay vgs , чтобы просмотреть информацию о группах томов и их свойствах:
$ sudo vgdisplay
Примеры возможных выводов данных:Как отобразить информацию о LVM логическом томе (lv)
Введите любую из следующих команд lvs command / lvdisplay , чтобы просмотреть информацию о группах томов и их свойствах:
$ sudo lvdisplay
Примеры возможных выводов данных:Моя группа томов ubuntu-box-1-vg разделена на два логических тома:
- /dev/ubuntu-box-1-vg/root – корневая файловая система;
- /dev/ubuntu-box-1-vg/swap_1 – пространство для свопинга.
Шаг 2 – Узнайте информацию о новом диске
Вам нужно добавить новый диск на свой сервер. В этом примере для демонстрационной цели я добавил новый диск, который имеет размер 5GiB. Для того чтобы узнать информацию о запуске новых дисков:
$ sudo fdisk –l
$ sudo fdisk -l | grep "^Disk /dev/"
Примеры возможных выводов данных:Другой вариант – сканировать все видимые устройства для LVM2:
$ sudo lvmdiskscan
Примеры возможных выводов данных:/dev/ram0 [ 64.00 MiB] /dev/ubuntu-box-1-vg/root [ 37.49 GiB] /dev/ram1 [ 64.00 MiB] /dev/ubuntu-box-1-vg/swap_1 [ 2.00 GiB] /dev/vda1 [ 487.00 MiB] /dev/ram2 [ 64.00 MiB] /dev/ram3 [ 64.00 MiB] /dev/ram4 [ 64.00 MiB] /dev/ram5 [ 64.00 MiB] /dev/vda5 [ 39.52 GiB] LVM physical volume /dev/ram6 [ 64.00 MiB] /dev/ram7 [ 64.00 MiB] /dev/ram8 [ 64.00 MiB] /dev/ram9 [ 64.00 MiB] /dev/ram10 [ 64.00 MiB] /dev/ram11 [ 64.00 MiB] /dev/ram12 [ 64.00 MiB] /dev/ram13 [ 64.00 MiB] /dev/ram14 [ 64.00 MiB] /dev/ram15 [ 64.00 MiB] /dev/vdb [ 5.00 GiB] 2 disks 18 partitions 0 LVM physical volume whole disks 1 LVM physical volume
Шаг 3 – Создание физических томов (pv) на новом диске под названием /dev/vdbВведите следующую команду:
$ sudo pvcreate /dev/vdb
Примеры возможных выводов данных:Physical volume "/dev/vdb" successfully created
Теперь выполните следующую команду для проверки:
$ sudo lvmdiskscan –l
Примеры возможных выводов данных:WARNING: only considering LVM devices /dev/vda5 [ 39.52 GiB] LVM physical volume /dev/vdb [ 5.00 GiB] LVM physical volume 1 LVM physical volume whole disk 1 LVM physical volume
Шаг 4 – Добавление недавно созданного физического тома (pv) с именем /dev/vdb в существующий логический том (lv)Введите следующую команду для добавления физического тома /dev/vdb в группу томов «ubuntu-box-1-vg»:
$ sudo vgextend ubuntu-box-1-vg /dev/vdb
Примеры возможных выводов данных: System AdministrationЧто такое LVM?
LVM расшифровывается как Logical Volume Manager. Я не буду давать официальных определений, а расскажу кратко своими словами. LVM - это дополнительный уровень абстрации дискового пространства. Находится этот уровень между файловой системой и физическим диском. LVM схож с software RAID. В этой самой абстракции есть 3 элемента: группа томов (Volume Group, сокр. VG), физический том (Physical volume, сокр. PV) и логический том (Logical Volume, сокр. LV). Можно создать несколько групп томов. В каждую группу томов нужно добавить физические тома. Физическими томами являются разделы диска. После добавления физических томов, можно добавить логические тома. А на логических томах уже можно создать файловую систему. Всё это очень удобно, особенно на сервере.Как можно использовать LVM?
Если использовать LVM, то можно упрастить обслуживание сервера. Можно создать много разделов с разными файловыми системами, можно монтировать файловые системы с разными флагами (например, запретить исполнение файлов), можно очень быстро и просто расширить размер раздела, если на нем заканчивается место. Конечно, дополнительный слой между диском и файловой системой снижает скорость чтения и записи. За всё надо платить. Я использую LVM, чтобы удобно управлять дисковым пространством виртуальных машин. Обычно, в качестве виртуального диска используется обычный файл. Во-первых, это неудобно, потому что в KVM нет механизма для снятия моментальных слепков виртуального диска (snapshots), а копировать даже несколько гигабайт долго, и виртуальную машину придется остановить. Во-вторых, если файл виртуального диска хранится в файловой системе, то мы получим дополнительные задержки, связанные с чтением и записью этого файла. Поэтому в качестве виртуального диска я использую логические тома LVM.Краткий справочник команд
Создать группу томов:- vgcreate vg_virt /dev/sda1 /dev/sdb1
- pvcreate /dev/sda2
- vgextend vg_virt /dev/sda2
- lvcreate -L10G -n lv_ubuntu_vm vg_virt
Для того чтобы увеличить логический том, можно указать конечный размер тома, а можно указать размер, на который требуется увеличить том.
- lvextend -L12G /dev/vg_virt/lv_ubuntu_vm
- lvextend -L+3G /dev/vg_virt/lv_ubuntu_vm
- resize2fs /dev/vg_virt/lv_ubuntu_vm
- lvremove /dev/vg_virt/lv_ubuntu_vm
- lvcreate --size 2G --snapshot --name snapshot_ubuntu_vm /dev/vg_virt/lv_ubuntu_vm
А чтобы создать копию логического диска, то есть полность его клонировать, можно воспользоваться простой утилитой dd.
- sudo dd if=/dev/vgroup1/lvolume1 of=/dev/vgroup1/lvolume_copy