Debian и Logical Volume Manager: установка и перенос Linux на другой диск с LVM

Это гостевой пост автора iv_vl. Оригинальный пост доступен по этой ссылке.

Ничто так не нарушает привычного комфорта работы в Debian как необходимость изменения разделов на диске с системой. Изначально трудно подобрать разделы так, чтобы избежать их последующего переполнения или неоправданно много пустующего места. Могут быть и другие причины, в силу которых придётся менять разделы на рабочем Linux, что может доставить массу хлопот. Если нет желания проходить через изменение и перенос разделов — подумайте об установке Linux на LVM.
LVM (Logical Volume Manager) представляет собой абстракцию над обычными разделами — логические тома, изменять которые можно, не отрываясь от работы в Linux. Установка Debian на LVM настолько проста, что вполне по силам и обычному пользователю. Всё, что нужно — это чистый раздел диска и установочный диск Debian. Желательно к этому моменту иметь опыт установки Linux, поскольку всё описанное — только мой личный опыт, без каких-либо гарантий на случай неправильной установки.

В начале установки

Убедитесь, что к компьютеру подключены только те диски, которые будут использоваться в дальнейшем (это позволит инсталлятору правильно настроить загрузчик GRUB2), и загружайтесь с установочного диска. В качестве последнего я выбрал CD для сетевой установки (netinst) с Debian Squeeze на борту, для Debian доступны и другие диски, установка с которых не должна сильно отличаться. После выбора в меню «GUI Install», вам будет предложено пройти стандартные шаги установки, описанные в инструкции virens’а. Приятно, что можно сразу настроить интернет (при установке с netinst часть пакетов нужно скачать) и русскую локаль с раскладкой.
В разделе «Разметка дисков» выбираем «Вручную», и далее — «Настройка менеджера логических томов (LVM)»:

Настройка менеджера логических томов

Перед настройкой LVM желательно знать о трёх его составляющих:
  • Логический том (англ. logical volume) — аналогичен разделу (hda1, sdb3, etc) на не-LVM системах. Так же, как и на них, представляется как блочное устройство и может нести файловую систему.
  • Физический том (англ. physical volume) — устройство, представляющееся системе как один диск (жесткий диск или его раздел, RAID-массив).
  • Группа томов (англ. volume group) — набор физических томов в один объект.
Настройка начинается с создания группы томов:

Я отвёл под группу debian весь диск sda. Вы можете использовать свои названия групп, в любом сочетании с имеющимися дисками и разделами. Учтите, что после записи изменений на диск, вся информация на нём будет потеряна.

Создание логических томов


Соответствует созданию обычных разделов, среди которых у нас будут:
  • swap-том (если планируете использовать гибернацию, то он должен быть немного больше размера оперативной памяти);
  • корневой том на 10ГБ;
  • оставшееся пространство отдадим под директорию /home (выделить оставшееся свободное место под том предлагается по умолчанию).
Для примера, поделюсь настройкой корневого тома:

Каждому тому можно задать свой тип файловой системы, точку и опции монтирования.

После настройки LVM

Картина расположения томов получилась следующей:

Теперь же вам осталось выбрать зеркалаархивов для менеджера пакетов APT, на этом установка Debian завершена.

LVM и перенос системы

Текущее состояние LVM можно узнать с помощью команд, выдающихинформацию о логических томах (lvdisplay), физических томах(pvdisplay) и группах томов (vgdisplay). В отличие от обычныхразделов (например, смотри перенос Linux на другой диск), операции по изменению LVM-разделов, какправило, проводятся на живой системе. Поэтому никогда не следуетпренебрегать «золотым правилом безопасности» — всегда делатьбекапы. LVM хранит данные на свой манер, поэтому задача ихвосстановления намного сложнее, чем при использовании обычныхфизических разделов, а порой и вовсе становится неразрешимой.
Внимание! Не стоит переносить данные с рабочего раздела, что может обернуться их потерей. Отдадим должное LVM, который честно об этом предупреждает: «WARNING: moving of active logical volumes may cause data loss!».
Перенос системы на другой диск достигается всего в несколько несложныхшагов. Условимся, что/dev/sda1 — это раздел с исходной системой, а /dev/sdb1 — это новый чистыйраздел. Для начала, пустому разделу на новом диске укажем флаг lvm(Gparted → Partition → Manage Flags) и инициализируем его какфизический раздел LVM
# pvcreate /dev/sdb1
Теперь добавим в группу томов debian, содержащую переносимыйраздел
# vgextend debian /dev/sdb1
Перенесём физические экстенты (physical extents), чей размер около4МБ, с раздела /dev/sda1 на /dev/sdb1:
# pvmove /dev/sda1 /dev/sdb1
Учтите, что операция переноса физических экстентов занимает многовремени. Если вы хотите наблюдать за процессом переноса, укажите вкоманде ключ -v. После окончания процедуры, удалите физический томиз группы томов
# vgreduce debian /dev/sda1
Теперь старый диск может быть удалён после отключения питания.Дополнительно, данный метод переноса описан в Removing an Old Disk и повести о Linux и LVM.

22 комментариев: |высказаться!| RSS-лента дискуссии.|
Рустем Мазитов комментирует...

А разве с LVM переносится загрузочная запись?

dhjbfdhbhydiofhjojkh комментирует...

А как насчёт стабильности у LVM over SW RAID? Сделал сервер для доступа к файлам по CIFS, на базе Убунты 12.04, сервак обновился и начались лаги... Пока не убил разделы и не переделал в SW RAID10 без всякой LVM, всё колом стояло. Убунта же на безе Debian Unstable, в нём аналогичное случается?

Dmitri Moudraninets комментирует...

Загрузчик надо будет ставить по-новой.

А на счет лвм поверх мдадм - это плохая идея. В некоторых случаях приводит к полному зависанию хоста (при использовании снапшотов например).

Minoru комментирует...

Эк мы в ногу идём! Я как раз два дня назад про миграцию системы на LVM on LUKS написал.

Пишет iv_vl просто замечательно — мне, как редактору, не к чему придираться. Но т.к. шило в известном месте от этого не успокаивается, да и некий опыт по теме у меня имеется, буду штурмовать не форму, а содержимое.

> размеры томов надо сделать побольше, поскольку около 7% пространства пойдёт на нужды LVM

Не LVM, а файловой системы. ext2/3/4 по умолчанию отъедают по 5% (man 8 mke2fs, опция -m), про всякие ReiserFS и XFS не знаю (может, они и не резервируют ничего). Оверхед же самого LVM, насколько я выяснил — пара мегабайт.

> точку и правила монтирования

Опции, а не правила ;)

> Можно изменить зарезервированное место на диске, но будьте осторожны: полностью удалять зарезервированное место на корневом разделе нельзя, что может привести к плачевным последствиям.

Вот этот момент, как мне кажется, следовало бы осветить подробней. Непонятно, к примеру, как же менять зарезервированное место, и что за «плачевные последствия». Нужно либо объяснить, либо убрать эту ремарку вообще, а то она только попусту новичков с толку сбивать будет.

Ну и да, тавтологию с «зарезервированным местом» нужно бы убрать.

> Но можно не беспокоиться — выбранный вами порядок будет соблюдён.

Можно не беспокоиться вообще — у LVM своё понимание того, что и где должно лежать :) Если я правильно помню LVM HOWTO, то LVM разбивает диск на кусочки (те самые extents по 4Мб каждый, о которых говорится в конце поста), из которых потом «склеиваются» разделы. Уверен, что изначально разделы получаются непрерывными, но можно, например, наплодить кучу мелких, удалить каждый второй и создать один большой. Тогда картинка на диске будет вот такая (буква обозначает принадлежность «кусочка» разделу, разные буквы — разные разделы): ajbjcjdjejfjgjh. LVM — сила!

> Не стоит переносить данные с активного раздела

Следует объяснить, что такое активный раздел. А то ж мы знаем этих малахольных — прочтут три абзаца из какого-нибудь поста и айда сервера в продакшене перекраивать :)

> Для начала, пустому разделу на новом диске укажем флаг lvm (Gparted → Partition → Manage Flags)

А в чём суть сего действа? Я, пока свой пост писал, нигде не встречал такого, да и среди тех ссылок, что у тебя в конце поста, не видно этого совета.

Ещё для меня оказалось новостью то, что можно /boot располагать на LVM. Получается, GRUB2 умеет его читать? Пойду на виртуалке экспериментировать, вдруг выяснится, что GRUB2 уже и LUKS читать научился…

Minoru комментирует...

> Пойду на виртуалке экспериментировать, вдруг выяснится, что GRUB2 уже и LUKS читать научился…

Наверное, таки не научился. Установщик Debian testing создаёт отдельный раздел под boot, когда я прошу LVM on LUKS. Жаль.

virens комментирует...

Хороший пост, стоил усилий с обеих сторон :-)

На самом деле, вторая часть поста из автора вышибалась долго, с воем и рыданиями. Так вот, эта самая вторая часть основана на комментарии Анонимуса, который в посте про перенос системы как раз и размахивал LVM-ом. ТоварищЪ iv_vl выяснил, что оно, конечно, весело и вкусно, но далеко не всегда.

Это ещё одна иллюстрация на тему о том, что комментарии - жизненно важная часть блога. Как и Анонимус :-)

Со своей стороны мне хотелось бы спросить читателей, достигших дзена и сатори в LVM: у меня всегда было мнение, что LVM в плане производительности тормозной. Интересно было бы посмотреть на графики I/O с LVM и без оного. Это академический интерес, и тем не менее.


@Minoru комментирует...
Эк мы в ногу идём! Я как раз два дня назад про миграцию системы на LVM on LUKS написал.
Минору, я не хочу тебя огорчать, но...
- на твоём новом блоге нет RSS иконки и ссылки на видном месте. Я её только сейчас выкопал.
- ничего не мешает сделать трансляцию постов в старый блог на блогспоте. Кстати, можно купить домен и подключить его к блогспоту.
- ты зарубил комментарии, и совершенно зря. Но хозяин - барин.

Пишет iv_vl просто замечательно — мне, как редактору, не к чему придираться
Это камешек в мой огород? :-)
Вот куплю я себе Microsoft Word 2010 со спелчекером и грамматикой...

И да, кстати, iv_vl хорошо пишет. Жаль, что мало и редко. Зато в комментах троллить он горазд. Впрочем, как и ведущий ;-)

iv_vl комментирует...

@Рустем Мазитов комментирует…
А разве с LVM переносится загрузочная запись?
LVM имеет дело с разделами, MBR не причём.

@dhjbfdhbhydiofhjojkh комментирует…
Убунта же на безе Debian Unstable, в нём аналогичное случается?
Если только в убунте патчат системные пакеты lvm2 и grub-pc. Могу рекомендовать Ubuntu LTS (Long Term Support), разве что.

@Minoru комментирует…
Пишет iv_vl просто замечательно — мне, как редактору, не к чему придираться
Писать стоило уже ради такого комментария! Спасибо.

Не LVM, а файловой системы. ext2/3/4 по умолчанию отъедают по 5%
Нагуглил следующее:
The LVM header of a bootable disk is always 2912 KB. The header size of a non-bootable disk is notfixed. It depends on the number of PVs, size of PEs, etc. but it is usually smaller. The LVM header hasto fit in one PE.
Minoru, ты прав. Эту часть убрал.

Опции, а не правила ;)
Пускай так, поправил ;)

либо убрать эту ремарку вообще, а то она только попусту новичков с толку сбивать будет.
Что-то настроение у меня всё удалять: и это тоже убрал.

Можно не беспокоиться вообще — у LVM своё понимание того, что и где должно лежать :)
Ну и про соблюдение порядка уберу!

Следует объяснить, что такое активный раздел.
Гм… Once a volume group or logical volume is reported to the kernel, it is called 'Active'. Заменю-ка я на «рабочий».

…укажем флаг lvm (Gparted → Partition → Manage Flags). А в чём суть сего действа?
Надо же с малолетства к порядку приучать :) Вывод типа разделов у fdisk будет правильным.

можно /boot располагать на LVM. Получается, GRUB2 умеет его читать?
Ну а как же GRUB2 без новомодных фишек? Описание настройки GRUB2 у virens'а уже есть.

iv_vl комментирует...

@virens комментирует…
И да, кстати, iv_vl хорошо пишет. Жаль, что мало и редко.
Надеюсь, этот пост поможет мне активизироваться. Долго не мог понять: зачем вести блоги? А теперь начинаю втягиваться и получать удовольствие от написания, мысли упорядочивать очень здорово помогает. Остаётся комментарии открыть, видимо, и это не за горами ;)

Рустем Мазитов комментирует...

@iv_vl комментирует...
LVM имеет дело с разделами, MBR не причём.

Я это знаю. Сказал это к тому, что в статье есть фраза:
Теперь старый диск может быть удалён после отключения питания.

Неопытный пользователь перенесет данные на другой диск и будет гадать, почему система не загружается :)

Minoru комментирует...

@virens пишет:
> на твоём новом блоге нет RSS иконки и ссылки на видном месте. Я её только сейчас выкопал.

Фидов много, одной ссылкой не вывесишь — пришлось делать отдельную страничку. Если делать иконку, придётся для симметрии лепить их ко всему остальному, а я так не хочу. А ещё я начал писать на английском и не могу с собой ничего поделать — по-русски уже ничего даже писать не хочу. Снова за переводы взяться, что-ли?

> ничего не мешает сделать трансляцию постов в старый блог на блогспоте.

Ничего, кроме бессмысленности затеи. Я не затем перезжал на Hakyll, чтобы снова начинать заботиться о причудах Blogger. Похоже, пора-таки сесть и написать пост о том, почему я так поступил :)

> ты зарубил комментарии, и совершенно зря.

Но почта-то открыта!

>> Пишет iv_vl просто замечательно — мне, как редактору, не к чему придираться
> Это камешек в мой огород? :-)


Отнюдь! Это похвала (for what it's worth) iv_vl как автору, а тебе — как организатору, способного таких авторов привлекать к работе ;)

@iv_vl пишет:

> Надо же с малолетства к порядку приучать

Вот оно что… Меня вот не приучили, я и хулиганю теперь.

> А теперь начинаю втягиваться и получать удовольствие от написания, мысли упорядочивать очень здорово помогает.

Как раз давеча читал «The Age of the Essay» Пола Грэхема (есть перевод на русский), советую. Как говорится, как раз в тему.

Анонимный комментирует...

>Так вот, эта самая вторая часть основана на комментарии Анонимуса, который в посте про перенос системы как раз и размахивал LVM-ом.

Анонимный комментирует...

>Так вот, эта самая вторая часть основана на комментарии Анонимуса, который в посте про перенос системы как раз и размахивал LVM-ом.

Приятно видеть, что из-за моего комментария вышла целая статья. :)

>у меня всегда было мнение, что LVM в плане производительности тормозной. Интересно было бы посмотреть на графики I/O с LVM и без оного. Это академический интерес, и тем не менее.

Насчет производительности и тестов можно почитать тут: www.hasenstein.com/lvm_whitepaper.pdf

virens комментирует...

@Minoru комментирует...
Фидов много, одной ссылкой не вывесишь
... а постов мало. Посмотри свои фиды, кстати, они как-то странно обновляются. На сайте новые посты есть, а в фиде нет.

А ещё я начал писать на английском и не могу с собой ничего поделать
У меня английский - для работы, и там уже выковался академический стиль. Посты на английском будут унылы и безрадостны. Русский для меня - язык сетевого блоготворчества, где можно пошутить, поприкалываться и вообще отвести душу.

Я не затем перезжал на Hakyll
А, ну понятно - Hakyll, на модном хаскеле. Вон iv_vl-я на jakyl потянуло, он из него блогоплатформу хочет выпилить. Но каменный цветок у того Данилы как-то того... не то, чтобы не выходит, но выглядит шибко спартански. Впрочем, чем бы кто ни тешился, лишь бы не во вред.

Похоже, пора-таки сесть и написать пост о том, почему я так поступил :)
Ты лучше напиши, как ты этот Хакил подымал. Народ интересуется.

Как раз давеча читал «The Age of the Essay» Пола Грэхема (есть перевод на русский), советую.
О, забавно. Спасибо за ссылку!
Хотя то, что мы тут пишем, это не совсем эссе, тем не менее вопросы там поднимаются интересные.

virens комментирует...

@Анонимный комментирует...

Приятно видеть, что из-за моего комментария вышла целая статья.
О, а вот и он, моего сердца чемпион! :-)

По теме. На самом деле, LVM-ом я никогда не пользовался, а тут мне на почту постучался iv_vl и начал шибко нахваливать оный LVМ. Дошло до написания поста, но вышло маловато. И тут я вспомнил Анонимуса - вот, думаю, как раз сюда и воткнём тот рецептик. Так и посту стало лучше, и комментарий не пропал.

Насчет производительности и тестов можно почитать тут: www.hasenstein.com/lvm_whitepaper.pdf
О, огромное спасибо! Даже залил себе на дропбокс на всякий случай.

Пока свежо предание... Собственно, всё на Page 8, в разделе Performance Costs of using LVM. А именно:

The LVM layer in the kernel keeps a mapping of logical storage locations to real (physical) storage locations. That means that for each read or write access to storage LVM has to translate the location of the asked−for piece of information on the disks by looking it up in a table.

While this "costs" in terms of CPU
usage the operations done are "cheap" (i.e. done very fast), since doing a lookup in a mapping table is one of
the fastest and most basic operations computers do.

Doing the mapping lookup therefore takes no
time at all on today's ultra-high frequency CPUs compared to the very long time it takes to access the
mechanical storage on the disks.

As promised, there is no visible overhead. The data we get there does not look any different from what we got when testing the disks without LVM.


Вопрос снят, Анонимусу снова спасибо. Автору поста: можно вставить в текст при желании, вместе со ссылкой. Там вообще много красивых кратинок, которые можно воткнуть в пост.

iv_vl комментирует...

@Minoru комментирует…
Похоже, пора-таки сесть и написать пост о том, почему я так поступил :)
В отличие от Михаила, мне будет интересно :)

Как раз давеча читал «The Age of the Essay» Пола Грэхема (есть перевод на русский), советую.
Спасибо за ссылку!

@virens комментирует…
Вон iv_vl-я на jakyl потянуло он из него блогоплатформу хочет выпилить.
Блогоплатформу как раз получить можно: берём движок Jekyll, водружаем его на OpenShift и прикручиваем комментарии Juvia. Долго готовить? — есть готовое решение Octopress. И так мы получаем следующие выгоды.

(1) Удобный язык шаблонов, вместо ужасного блоггеровского шаблона со спагетти кодом внутри; это скачок, сопоставимый с переходом от императивного программирования к ООП. По желанию можно перейти на новомодные Haml и Sass вместо HTML и CSS, соответственно. (2) Markdown во все поля (и в блоге, и в комментариях) вместо HTML и кривого блоггеровского редактора, коверкающего код. (3) Система контроля версий. (4) Блог не привязан к платформе и может переноситься куда угодно. Видимо, Михаил, у тебя на подобное аллергия; но кошка не виновата, что есть люди, у которых на неё аллергия :)

Но каменный цветок у того Данилы как-то того… не то, чтобы не выходит, но выглядит шибко спартански.
Ни разу не аргумент, привёл бы пример Juev'а. Автор упомянутого тобою блога заставил себя перейти на Org Mode, чтобы получать и HTML и PDF одним махом. Не поверишь, в блоге это делается на раз-два, прикрутив Org-ruby. Сейчас как раз готовлю переезд блога на OpenShift. Комментарий Minoru заставляет задуматься: а не писать ли на языке Шекспира.

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

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

iv_vl комментирует...

@virens комментирует…
Русский для меня - язык сетевого блоготворчества, где можно пошутить, поприкалываться и вообще отвести душу.
Почему-то все технические блоги на английском до ужаса скучные: сухое изложение фактов, а в остатке — ничего. Прочитал эссе Пола Грэхема, но почему же почти никто из этих снобов так не пишет?

Minoru комментирует...

@virens комментирует...

>> Фидов много, одной ссылкой не вывесишь
> ... а постов мало.


Рим не за один день строился. Вон, недавно разродился парой новых постов, в загашниках есть ещё несколько идей. Будем писать…

> Посмотри свои фиды, кстати, они как-то странно обновляются.

О, спасибо. Судя по всему, нужно посты в обратном хронологическом порядке в фид пихать.

> Ты лучше напиши, как ты этот Хакил подымал. Народ интересуется.

Народ ленив до ужаса: не могут даже нагуглить сайт Hakyll, а ведь там есть чудесное (хоть и несколько сжатое) руководство по настройке. И примеры есть, бери да копируй.

Писать нужно о том, о чём до тебя либо не писали вообще, либо писали, но плохо (не на том языке — это тоже, вобщем-то, плохо :)

Anton Yakutovich комментирует...

@Minoru
> Фидов много, одной ссылкой не вывесишь — пришлось делать отдельную страничку.
Там что-то поломано с фидами. При попытке подписаться через RSS Subscription Extension в Chrome выдаёт: "This feed contains no entries".

> Но почта-то открыта!
Желание прокомментировать статью должно быть ОЧЕНЬ сильным, чтобы заставить человека написать письмо. Написать комментарий гораздо проще.

> Как раз давеча читал «The Age of the Essay» Пола Грэхема
Спасибо за ссылку. Интересная теория в статье.

> Похоже, пора-таки сесть и написать пост о том, почему я так поступил :)
Плюсую и становлюсь в очередь :-)
Сам недавно визитку на Hakyll'е сделал. Тема интересная.

@iv_vl
> Блогоплатформу как раз получить можно: берём движок Jekyll, водружаем его на OpenShift и прикручиваем комментарии Juvia. Долго готовить? — есть готовое решение Octopress.
Jekyll можно и сразу на гитхаб запилить.
Octopress вообще рулит и педалит. Из коробки выглядит отлично. Наблюдаю тенденцию в среде гиков-блогеров перехода на октопресс.

> И так мы получаем следующие выгоды.
Всё круто, кроме одного. Комментарии становятся динамически подгружаемыми, не гуглятся. А в блоггере с этим всё в порядке.

Minoru комментирует...

> Там что-то поломано с фидами. При попытке подписаться через RSS Subscription Extension в Chrome выдаёт: "This feed contains no entries".

Это со всеми так? В linux-rus (тот, который для runix) действительно пусто, потому что я в новый блог по-русски про линуксы пока что не писал.

> Желание прокомментировать статью должно быть ОЧЕНЬ сильным, чтобы заставить человека написать письмо. Написать комментарий гораздо проще.

Один желающий таки нашёлся :) Вообще с комментариями у меня не слишком весёлая история получилась — если кто и писал, то с вопросами, которые лучше задавать на форумах. Из личной переписки с virens, к примеру, я вынес гораздо больше, чем из всех комментариев в моём блоге вместе взятых. Так что отказаться от них было легко, и я не жалею, т.к. уверен, что ничего не потерял.

> Сам недавно визитку на Hakyll'е сделал. Тема интересная.

Видел. Ты бы на фон прогрессивный jpeg поставил бы, а то я на медленном соединении сидел и удивлялся, что это там такое грузится.

А перешёл я вовсе не от красноглазия, так что Hakyll в списке причин не будет :)

iv_vl комментирует...

@Anton Yakutovich комментирует…
Комментарии становятся динамически подгружаемыми
Это как раз плюс: после комментирования не нужно перезагружать всю страницу (AJAX рулит и педалит).

…не гуглятся. А в блоггере с этим всё в порядке.
Крыть нечем, разве что намекну на правку HTML-кода в комментариях, никаких WYSIWYG редакторов, что очень достаёт.

iv_vl комментирует...

@Anton Yakutovich комментирует…
Octopress вообще рулит и педалит. Из коробки выглядит отлично.
Для того, чтобы и Jekyll выглядел отлично, есть Jekyll-Bootstrap, да ещё полностью совместимый с GitHub. В общем, не привязываясь к Blogger, каждый может выбрать фломастеры по вкусу.

virens комментирует...

Соавторы, вы должны представлять ум, честь и совесть русскАго блоггинга, а вы что тут делаете? Разводите дикий оффтопик, пользуясь своими привилегиями.

Народ, заканчиваем разводить оффтопик в комментариях.

Кстати, из этих комментариев про ваши любимые игрушки в виде Джекила и Хакила можно уже сделать ещё гостевой пост, но это лучше делать в закрытом блоге.

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

Отправить комментарий

Подписаться на RSS-ленту комментариев к этому посту.