lvm debian что это
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, чтобы не дефрагментировать лишний раз корневой раздел и ни в коем случае его не переполнить, поэтому создаём разделы:
# vgdisplay
информацию по созданным логическим томам
root@ws:
# lvdisplay
информацию по физическим томам
root@ws:
дальше lvm уже почти кончается… форматируем наши разделы в любимые файловые системы:
root@ws:
кстати, не плохо было бы сделать раздел подкачки:
root@ws:
создаём папку и подключая по очереди новообразовавшиеся тома, копируем в них нужное содержимое:
root@ws:
# mkdir /mnt/target
root@ws:
# mount /dev/ws/home /mnt/target
копируем туда всё из папки /home своим любимым файловым менеджером (с сохранением прав доступа), например так ;):
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
# 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»
Итого:
Я создал логический раздел, отформатировал его, примонтировал и заполнил нужными данными, затем переместил его с одного устройства на другое, при этом раздел остался примонтирован и данные всё время оставались доступны!
Подобным образом мне удавалось без перезагрузки перенести всю систему с умирающего диска на рэид-массив. 🙂
Logical Volume Manager (LVM)
Содержание
Создание и удаление
Как уже отмечалось, LVM строится на основе разделов жёсткого диска и/или целых жёстких дисков. На каждом из дисков/разделов должен быть создан физический том (physical volume). К примеру, мы используем для LVM диск sda и раздел sdb2:
На этих физических томах создаём группу томов, которая будет называться, скажем, vg1:
Посмотрим информацию о нашей группе томов:
Групп можно создать несколько, каждая со своим набором томов. Но обычно это не требуется.
Теперь в группе томов можно создать логические тома lv1 и lv2 размером 20 Гбайт и 30 Гбайт соответствено:
Теперь у нас есть блочные устройства /dev/vg1/lv1 и /dev/vg1/lv2.
Осталось создать на них файловую систему. Тут различий с обычными разделами нет:
Добавление физических томов
Чтобы добавить новый винчестер sdc в группу томов, создадим физический том:
И добавим его в нашу группу:
Теперь можно создать ещё один логический диск ( lvcreate ) или увеличить размер существующего ( lvresize ).
Удаление физических томов
Чтобы убрать из работающей группы томов винчестер sda сначала перенесём все данные с него на другие диски:
Затем удалим его из группы томов:
И, наконец, удалим физический том:
Вообще-то, последняя команда просто убирает отметку о том, что диск является членом lvm, и особой пользы не приносит. После удаления из LVM для дальнейшего использования диск придётся переразбивать/переформатировать.
Изменение размеров
LVM позволяет легко изменять размер логических томов. Для этого нужно сначала изменить сам логический том:
а затем файловую систему на нём:
Как просто попробовать
Если LVM устанавливается не для дальнейшего использования, а «напосмотреть», то диски и разделы можно заменить файлами. Не понадобятся ни дополнительные диски, ни виртуальные машины. Мы создадим виртуальные накопители и будем с ними работать. Например, можно создать 4 диска по 1 Гбайт, но можно создать другое количество большего или меньшего размера как вам хочется. Создаем сами файлы, имитирующие устройства:
Создаем loopback устройства из файлов:
Дальше поступаем так же, как если бы ми создавали LVM на реальных дисках. Обратите внимание на названия loop-устройств — они могут отличаться от приведённых здесь.
Снапшоты
Примеры использования
LVM активно используется, когда необходим механизм снапшотов. Например, этот механизм крайне важен при бекапе постоянно меняющихся файлов. LVM позволяет заморозить некоторое состояние ФС и скопировать с неё все нужные данные, при этом на оригинальной ФС останавливать запись не нужно.
Также снапшоты можно применить для организации поддержки файловым сервером с Samba механизма архивных копий, об этом в соответствующей статье:
LVM с LiveCD
Если у вас возникла необходимость работать с LVM с LiveCD Ubuntu, то вам придётся выполнить несколько дополнительных действий, поскольку по умолчанию утилит для работы с LVM нет.
Сначала вам нужно установить эти утилиты:
Далее посмотрите командами
доступность ваших групп томов. Ну а дальше запустите все группы командой
Эта команда должна сообщить о том, что все ваши логические тома активированы. Теперь можно работать с ними обычным образом.
Создание и настройка LVM Linux
LVM работает на уровне ядра, поэтому гарантируется максимальная прозрачность настройки и использования дисков. Программы смогут работать с логическими, виртуальными LVM разделами, точно так же, как и с обычными.
Давайте рассмотрим преимущества использования LVM перед обычными разделами жесткого диска.
Теперь перейдем от теории ближе к практике. Рассмотрим создание LVM, настройку и работу с дисками. Как основную операционную систему мы будем использовать Ubuntu, но данная инструкция подойдет и для любого другого дистрибутива Linux.
Создание LVM Linux
Структура LVM состоит из трех слоев:
Перед тем как начинать создание lvm linux необходимо установить нужные для этого инструменты:
sudo apt install lvm2
Соответственно структуре LVM, нам нужно будет инициализировать физические разделы для LVM, объединить их в группу, а затем создать из этой группы нужные нам логические тома.
Инициализация физических LVM разделов
Сначала определимся с томами, которые будем использовать, допустим это будут /dev/sda6 и /dev/sda7. Инициализировать их для работы LVM можно с помощью команды pvcreate:
sudo pvcreate /dev/sda6 /dev/sda7
Чтобы посмотреть действительно ли были созданы физические тома LVM вы можете использовать команду pvscan:
Также можно посмотреть физические LVM разделы с более подробными атрибутами, такими как размер, общий размер, физический размер, свободное место и т д:
Создание группы разделов LVM
sudo vgcreate vol_grp1 /dev/sda6 /dev/sda7
С помощью LVM команды vgdisplay вы можете посмотреть созданные группы томов:
Создание логических томов LVM
Теперь все готово, чтобы создать логические LVM разделы. Для этого будем использовать команду lvcreate и создадим логический раздел размером 80 мегабайт, или 20 блоков LVM:
Если вы хотите задать размер в обычных единицах измерения, то необходимо использовать опцию -L. Например, для тех же 80-ти мегабайт:
В качестве приставки для указания размера можно использовать такие буквы:
Посмотреть список доступных логических разделов LVM можно по аналогии с предыдущими разделами с помощью команды lvdisplay:
Теперь, когда раздел создан, мы можем работать с ним как с обычным разделом. Например, отформатируем его в файловую систему ext4, а затем примонтируем в /mnt:
sudo mkfs.ext4 /dev/vol_grp1/logical_vol1
sudo mount /dev/vol_grp1/logical_vol1 /mnt/
Как видите, монтирование LVM в Linux ничем не отличается от монтирования обычных разделов.
Вообще говоря, LVM разделы могут быть трех типов:
Полосные разделы очень полезны при больших нагрузках на жесткий диск. Здесь вы можете настроить одновременную запись на разные физические устройства, для одновременных операций, это может очень сильно увеличить производительность работы системы.
Для этого нужно задать количество полос записи с помощью опции -i, а также размер полосы опцией -l. Количество полос не должно превышать количества физических дисков. Например:
Зеркалированный том позволяет записывать данные одновременно на два устройства. Когда данные пишутся на один диск, они сразу же копируются на другой. Это позволяет защититься от сбоев одного из дисков. Если один из дисков испортится, то разделы LVM просто станут линейными и все данные по-прежнему будут доступны. Для создания такого раздела LVM Linux можно использовать команду:
Удалить LVM раздел
Вы можете не только настроить LVM тома изменяя их размер и атрибуты, но и удалить LVM раздел, если он вам больше не нужен. Это делается с помощью LVM команды lvremove:
sudo lvremove /dev/vol-grp1/lv_mirror
Теперь лишний раздел удален.
Изменение размера LVM тома
Вы можете изменять уже созданные разделы LVM увеличивая или уменьшая их размер. Причем неважно есть ли место на физическом диске после этого раздела, если в пуле есть память, вы можете ее использовать для любого раздела. Чтобы изменить размер LVM используйте команду lvextend. Например, LVM увеличим размер диска из 80 до 100 мегабайт:
Extending logical volume logical_vol1 to 100.00 MB
Logical volume logical_vol1 successfully resize
Также вы можете увеличить размер LVM, использовав знак +:
Выводы
В этой статье мы рассмотрели создание LVM разделов в linux, а также настройку, увеличение, уменьшение и монтирование LVM Linux. Теперь вы знаете насколько это мощная технология и сколько преимуществ она может дать не только на сервере, но и на домашнем ПК. Вы раньше использовали LVM? Будете использовать?
Что такое LVM и для чего он используется?
Некоторые дистрибутивы Linux при установке операционной системы вместо обычного раздела предлагают выбрать LVM раздел или даже динамический LVM. Что такое LVM и для чего он используется, если вы новичок в Linux, Ubuntu?
Какие преимущества даёт установка веб-сервера на LVM раздел?
Рекомендуется ли использовать LVM или лучше обычные разделы?
Плюсы LVM
Вы можете думать о LVM как о «динамических разделах», что означает, что вы можете создавать, изменять размер, удалять «разделы» LVM (на языке LVM они называются «логическими томами») из командной строки во время работы системы Linux: нет необходимо перезагрузить систему, чтобы ядро узнало о вновь созданных разделах или разделах с измененным размером.
Другие полезные функции, которые предоставляет LVM «Logical Volumes»:
Будучи наиболее полезными в серверных системах, я думаю, что функции 1. и 3. в сочетании с возможностью LVM создавать, изменять размер, удалять LV на лету также весьма удобны в настольных системах. (Особенно, если вы много экспериментируете с системой.)
Минусы LVM
Конечно, всё это имеет свою цену: начальная настройка LVM более сложна, чем просто разбиение диска, и вам определённо необходимо понять терминологию и модель LVM (логические тома, физические тома, группы томов), прежде чем вы сможете начать его использовать. (Однако после настройки пользоваться им становится намного проще.)
Кроме того, если вы используете LVM на жёстких дисках, вы можете потерять все свои данные, когда выйдет из строя только один диск.
Что такое LVM
LVM расшифровывается как Logical Volume Management. Это система управления логическими томами или файловыми системами, которая является гораздо более продвинутой и гибкой, чем традиционный метод разделения диска на один или несколько сегментов и форматирования этого раздела с файловой системой.
Зачем использовать LVM?
В течение долгого времени я задавался вопросом, зачем кому-то использовать LVM, если вы можете использовать gparted для изменения размера и перемещения разделов. Ответ в том, что lvm может делать эти вещи лучше, а также некоторые отличные новые вещи, которые вы просто не можете сделать иначе. Я объясню несколько задач, которые может выполнять lvm, и почему он это делает лучше, чем другие инструменты, а затем как их выполнять. Сначала вы должны понять основы lvm.
Основы LVM
LVM управляет тремя концепциями:
Группа томов — это именованный набор физических и логических томов. Типичным системам требуется только одна группа томов, чтобы содержать все физические и логические тома в системе, и мне нравится называть свою группу по имени машины. Физические тома соответствуют дискам; это блочные устройства, которые предоставляют пространство для хранения логических томов. Логические тома соответствуют разделам: они содержат файловую систему. Однако, в отличие от разделов, логические тома получают имена, а не номера, они могут занимать несколько дисков и необязательно должны быть физически смежными.
Специфика LVM
Одно из самых больших преимуществ LVM заключается в том, что большинство операций можно выполнять «на лету», пока система работает. Большинство операций, которые вы можете выполнять с помощью gparted, требуют, чтобы разделы, которыми вы пытаетесь манипулировать, в данный момент не использовались, поэтому для их выполнения вам необходимо загрузиться с livecd. Вы также часто сталкиваетесь с ограничениями формата таблицы разделов msdos с gparted, включая только 4 основных раздела, и все логические разделы должны содержаться в одном непрерывном расширенном разделе.
Изменение размера разделов
С помощью gparted вы можете расширять и сжимать разделы, но только если они не используются. LVM может расширять раздел во время когда диск смонтирован, если файловая система, используемая на нём, также поддерживает это (например, обычный ext3/4). При расширении раздела gparted может расширить его только на соседнее свободное пространство, но LVM может использовать свободное пространство в любом месте группы томов, даже на другом диске. При использовании gparted это ограничение часто означает, что вы должны перемещать другие разделы, чтобы освободить место для расширения одного из них, что является очень трудоёмким процессом, который может привести к значительной потере данных в случае сбоя или прерывания работы (отключение электричества).
Перемещение разделов
Перемещение разделов с помощью gparted обычно необходимо только в первую очередь из-за требования, чтобы разделы были физически смежными, поэтому вам, вероятно, никогда не понадобится делать это с LVM. Если вы это сделаете, в отличие от gparted, LVM может перемещать раздел, пока он используется, и не повредит ваши данные, если операция будет прервана. В случае, если ваша система выйдет из строя или потеряет питание во время перемещения, вы можете просто перезапустить операцию перемещения после перезагрузки, и она завершится нормально. Когда я получил свой SSD-накопитель, я просто подключил его, загрузил и попросил lvm переместить мою работающую корневую файловую систему на новый диск в фоновом режиме, пока я продолжал работать. Другая причина, по которой вы можете захотеть переехать, — это заменить старый диск на новый, большего размера. Вы можете перенести систему на новый диск во время его использования, а затем удалить старый.
Много разделов
Если вам нравится тестировать различные дистрибутивы Linux, или просто другие версии Ubuntu, или и то, и другое приводит к созданию довольно большого числа разделов. С обычными разделами msdos (MBR) это становится проблематичным из-за его ограничений (хотя нужно отметить, что с GPT такой проблемы уже нет). С LVM вы можете создать столько логических томов, сколько захотите, и обычно это довольно просто, поскольку обычно у вас остаётся много свободного места. Обычно люди выделяют весь диск на один раздел при первой установке, но, поскольку расширение раздела с помощью LVM настолько простое, для этого нет никаких причин и вы можете начать с создания раздела не в целый диск. Лучше выделить только то, что, по вашему мнению, вам понадобится, а остальное пространство оставить свободным для использования в будущем. Если в конечном итоге исходное выделенное место закончилось, добавление дополнительного пространства к этому тому — это всего лишь одна команда, которая выполняется немедленно, пока система работает в обычном режиме.
Снимки
Это то, что вы просто не можете сделать без LVM. Это позволяет вам заморозить существующий логический том во времени в любой момент, даже когда система работает. Вы можете продолжать использовать исходный том в обычном режиме, но том с моментальным снимком выглядит как образ оригинала, застывший во времени в момент его создания. Вы можете использовать это, чтобы получить целостный образ файловой системы для резервного копирования, не выключая систему. Вы также можете использовать его для сохранения состояния системы, чтобы позже можно было вернуться в это состояние, если вы что-то напутали. Вы даже можете смонтировать том моментального снимка и внести в него изменения, не затрагивая оригинал.
Как использовать LVM
Итак, как мне начать использовать LVM?
Установщик Linux может предложить вам создать раздел с LVM. Либо перед установкой Linux вы можете создать раздел LVM с помощью LIVE CD. Либо если вы планируете переустановку ОС, вы можете установить пакет lvm2 в существующую систему и вручную настроить LVM.
Во-первых, вам нужен физический том. Обычно вы начинаете с жёсткого диска и создаёте на нем раздел типа LVM. Вы можете создать его с помощью gparted или fdisk и обычно хотите, чтобы только один раздел использовал весь диск, поскольку LVM будет обрабатывать его разделение на логические тома. В gparted вам нужно проверить флаг lvm при создании раздела, а с помощью fdisk пометить тип кодом 8e.
Когда у вас есть раздел LVM, вам необходимо инициализировать его как физический том. Предполагая, что это раздел /dev/sda1:
Это записывает заголовок LVM в раздел, который идентифицирует его как физический том, и устанавливает небольшую область для хранения метаданных, описывающих всё о группе томов, а остальную часть раздела как неиспользуемые физические экстенты. После этого вам нужно создать группу томов с именем foo:
Теперь у вас есть группа томов с именем foo. Я предлагаю вам заменить foo значимым для вас именем. foo содержит только один физический том. Теперь вы хотите создать логический том из некоторого свободного места в foo:
Это создаёт логический том с именем bar в группе томов foo, используя 5 ГБ пространства. Если вы выполняете установку ОС Linux, вы, вероятно, захотите создать логический том, подобный этому, для использования в качестве корневой файловой системы, один для подкачки и, возможно, один для /home. В настоящее время у меня есть логический том для установки Lucid и один для установки Maverick, поэтому я назвал эти тома именно так. Вы можете найти блочное устройство для этого логического тома в ‘/dev/foo/bar‘ или ‘dev/mapper/foo-bar‘.
Вы также можете попробовать команды lvs и pvs, которые перечисляют логические тома и физические тома соответственно, а также их более подробные варианты; lvdisplay и pvdisplay.
Если вы делаете это с рабочего стола livecd, после создания логических томов из терминала вы можете запустить установщик и использовать ручное разбиение на разделы, чтобы выбрать, как использовать каждый логический том, а затем выполнить установку.
Изменение размера разделов
Вы можете расширить логический том с помощью:
Это добавит 5 ГБ к логическому тому bar в группе томов foo. Вы можете указать абсолютный размер, если хотите, вместо относительного, опуская начальный +. Пространство выделяется из любого свободного места в любом месте группы томов bar. Если у вас несколько физических томов, вы можете добавить имена одного или нескольких из них в конец команды, чтобы ограничить, какие из них следует использовать для удовлетворения запроса.
После расширения логического тома вам необходимо расширить файловую систему, чтобы использовать новое пространство. Для ext 3/4 вы просто запустите:
Перемещение разделов
Если у вас есть только один физический том, вам, вероятно, никогда не придётся перемещать его, но если вы добавите новый диск, возможно, вы захотите это сделать. Чтобы переместить логический том bar из физического тома /dev/sda1, выполните:
Если вы опустите аргумент -n bar, все логические тома на физическом томе /dev/sda1 будут перемещены. Если у вас есть только один другой физический том, то он будет перемещён туда, или вы можете добавить имя одного или нескольких конкретных физических томов, которые должны использоваться для удовлетворения запроса, вместо любого физического тома в группе томов со свободным местом. Этот процесс можно безопасно возобновить, если он прерван из-за сбоя или отключения питания, и его можно выполнить, пока используются соответствующие логические тома. Вы также можете добавить -b, чтобы выполнить перемещение в фоновом режиме и немедленно вернуться, или -i СЕКУНДЫ, чтобы он печатал, какой прогресс он сделал каждые СЕКУНДЫ секунд. Если вы выбрали фоновый режим перемещения, вы можете проверить его ход с помощью команды lvs.
Снимки
Когда вы создаёте моментальный снимок, вы создаёте новый логический том, который будет действовать как клон исходного логического тома. Том моментального снимка изначально не использует никакого пространства, но по мере внесения изменений в исходный том изменённые блоки копируются в том моментального снимка перед их изменением, чтобы сохранить их. Это означает, что чем больше изменений вы вносите в исходную точку, тем больше места требуется для снимка. Если том моментального снимка использует всё выделенное ему пространство, то моментальный снимок повреждается и больше не может использоваться, оставляя вас только с измененным источником. Команда lvs сообщит вам, сколько места было использовано в логическом томе моментального снимка. Если он начинает заполняться, вы можете расширить его с помощью команды lvextend. Чтобы создать моментальный снимок логического тома bar и назвать его snap, запустите:
Это создаст моментальный снимок с именем snap оригинального логического тома bar и выделит для него 5 ГБ пространства. Поскольку том моментального снимка хранит только те области диска, которые изменились с момента его создания, он может быть намного меньше исходного тома. Недавно я использовал моментальный снимок логического тома объёмом 12 Гбайт, содержащий мою корневую файловую систему Maverick, и выполнил dist-upgrade до Natty в источнике, который использовал только около 50-60% пространства моментального снимка.
Пока у вас есть моментальный снимок, вы можете смонтировать его, если хотите, и увидите исходную файловую систему такой, какой она была на момент создания моментального снимка. В приведённом выше примере вы должны смонтировать устройство /dev/foo/snap. Вы можете изменить снимок, не затрагивая оригинал, и изменит оригинал оригинал, не затрагивая снимок. Если вы сделаете снимок корневого логического тома, а затем обновите некоторые пакеты или целый дистрибутив до следующего выпуска, а затем решите, что вам не нравится, как он работает, вы можете объединить снимок обратно в исходный том, эффективно вернувшись к состоянию во время создания снимка. Для этого просто запустите:
Если исходный том foo/snap уже используется, он сообщит вам, что слияние произойдёт при следующей активации томов. Если это корневой том, вам необходимо перезагрузить компьютер, чтобы это произошло. При следующей загрузке том будет активирован, и слияние начнётся в фоновом режиме, поэтому ваша система загрузится так, как будто вы никогда не вносили изменений с момента создания моментального снимка, а фактическое перемещение данных будет происходить в фоновом режиме, пока вы работаете в обычном режиме.