Журнал LinuxFormat - перейти на главную

LXF150:tut2

Материал из Linuxformat
Перейти к: навигация, поиск

Содержание

LVM: Управляем хранилищем

Много лет боявшийся экрана разбиения диска в Fedora Джонатан Робертс прогнал страхи и увидел, что LVM проще, чем он думал.


При установке дистрибутивов на базе Fedora у меня годами были проблемы с экраном разбиения диска. Что, черт побери, значили «группы томов LVM», vg_lvm и lv_root? Почему Fedora не использует добрые старые ссылки на устройства и разделы, как другие дистрибутивы?

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

Но недавно, проведя несколько дней за изучением основ LVM, я оценил, насколько это мощная и полезная технология – и поклялся применять ее в любой схеме разбивки создаваемых мной дисков (по крайней мере, пока Btrfs не станет основной).

Сначала мы расскажем о том, что такое LVM и зачем это нужно. Затем возьмем экран установки в Fedora и покажем, как создать схему разбиения на разделы с нуля с помощью LVM. Мы также обратимся к командной строке и покажем вам инструменты, задействующие расширенные возможности LVM. Нужно изменить размер тома? Без проблем. Хотите добавить новый жесткий диск или удалить старый? У нас и это есть. Мы даже намерены показать вам, как сделать «снимок» [snapshot] и создать полноценную резервную копию системы в LVM. Мы много чего осветим!

Linux-хранилище 101

Все файлы и папки, принадлежащие системе Linux, и все программы, файлы настройки и файлы пользователя живут в древе каталогов. На вершине этого древа – корневая папка (отмечена /), а все остальное лежит под ней.

Конечно, все это хранится на физическом диске – жестком диске – а информация о том, где хранятся файлы на диске, хранится в так называемой файловой системе.

У вас могло сложиться представление о жестком диске как о едином пространстве для хранения, содержащего корневую папку и все, что ниже ее уровня; но такое бывает редко. В большинстве дистрибутивов предлагается «разбить» жесткий диск, разделив его на части, которые ОС рассматривает как физически уникальные диски.

Важным папкам также выделяется по отдельному разделу, каждый со своей файловой системой – многие дистрибутивы создают разделы для /, /home и /usr. Обратите внимание, что, поскольку разделы восприниматся как дополнительные жесткие диски, они могут так же легко быть отдельными физическими дисками, как и разделами.

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

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

Розовые очки?

Все это кажется хорошо продуманной системой, но и здесь не без проблем. Больше всего удручает то, что это очень негибкая система; размер разделов трудно изменить, как путем создания новых жестких дисков, так и сжатия других разделов.

Представьте себе, например, что у вас есть жесткий диск на 80 ГБ, который вы решили разбить на разделы. Вы хотите как можно больше места выделить под /home, потому что у вас большая музыкальная коллекция. Таким образом, вы, прежде всего, решаете, какой минимальный объем пространства нужен для раздела /, и отводите оставшееся для /home. В конце концов / получает 3 ГБ, а /home – 77 ГБ.

Все идет прекрасно, пока вы не вздумаете попробовать KDE или другой огромный пакет программного обеспечения и в разделе / не хватит места. Как назло, ваша музыка заняла только 70 ГБ, и теперь 7 ГБ пропадают даром.

Ну да, можно просто сделать резервную копию данных, переустановить дистрибутив и все восстановить – но это пустая трата времени. Разве не проще было бы добавить еще один жесткий диск и использовать его для раздела /, или просто и безопасно уменьшить размер /home на 5 ГБ и отдать освободившееся пространство для /?

Все учитывается

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

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

Более того, не имеет значения, на каком устройстве экстенты расположены – LVM разделит несколько дисков на такого же размера экстенты, а затем объединит их все для создания одного гигантского ресурса хранения – как виртуальный жесткий диск.

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

  • Физические тома Физические диски или разделы, которые LVM делит на физические экстенты.
  • Группы томов Коллекции физических томов; гигантские пулы для хранения всех физических экстентов.
  • Логические тома LVM создал виртуальный жесткий диск, группы томов, поэтому также потребуется создать виртуальные разделы – или логические тома. Они могут быть отформатированы под файловую систему, используемую для хранения данных и монтируемую в основное древо каталогов, подобно обычным разделам.

Каждый из этих терминов формирует часть «стека» LVM, с физическими томами, покоящимися на дне, группами томов в середине и логическими томами на самом верху. Все они – необходимые элементы для работы LVM и должны создаваться в определенном порядке:

  • Ваши физические диски или разделы должны быть зарегистрированы в LVM как доступные физические тома.
  • Затем вы должны сказать LVM, какие физические тома вы хотите назначить каким группам томов.
  • Наконец, вы должны сказать LVM, какие логические тома вам нужны в каждой группе томов, и какое соотношение места для хранения вы хотите назначить каждой из них.

Единственное ограничение, которое нужно иметь в виду при создании новой схемы разделов в LVM – она не может содержать загрузочный раздел, а значит, придется создать отдельный раздел /boot.

Когда вы все это сделаете, группа томов и ее логические тома будут доступны для монтирования и проверки в папке /dev, как обычный жесткий диск или раздел. Более того, их легко идентифицировать в /dev, так как они перечислены по названию, например /dev/Volume GroupName/LogicalVolumeName.

Чтобы все было предельно ясно, мы создали пошаговую инструкцию по установке Fedora с использованием LVM, вверху.

Итак, вы познакомились с LVM и его терминологией, и смогли создать основанную на LVM схему разбиения диска с помощью пугающего мастера Fedora. Теперь обратим внимание на командную строку: начнем с показа, как создать новую LVM-систему, а затем рассмотрим, как ее изменить.

Первым шагом будет регистрация наших жестких дисков и разделов как имеющихся в наличии физических томов, командой pvcreate:

pvcreate /dev/sda1

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

pvcreate /dev/sdb

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

Далее, создадим группу томов из зарегистрированных нами физических томов. Команда проста:

vgcreate VolumeGroupName /dev/sda1 /dev/sdb

VolumeGroupName здесь – очевидно – описательное имя для группы томов, а потом следуют физические тома, образующие пул дискового пространства. Если вы забыли, какие физические тома создали, запустите команду pvscan – вы получите список доступных дисков и разделов. pvdisplay можно использовать для получения подробного описания характеристик физического тома, таких как размер, расположение на диске, имя и т. д.

Затем создайте логические тома из свежесозданной группы томов:

lvcreate -L10G -nLogicalVolumeName VolumeGroupName

Ключ -L указывает размер нового логического тома, с суффиксами K для килобайт, M для мегабайт и G для гигабайт. -n задает имя новому логическому тому, а последний параметр определяет, из какой группы томов его создавать.

Вот все команды, имеющие непосредственное отношение к LVM, которые вы должны знать, и все они довольно просты. Теперь создайте файловую систему на каждом логическом томе и позаботьтесь о ее монтировании. Создать файловую систему несложно, если вы намерены обратиться к стабильному и очень популярному семейству файловых систем ext. Вам нужно установить пакет e2fsprogs, который предоставит вам команду mke2fs. Укажите mke2fs, какую файловую систему ext использовать (4 – последняя и лучшая) и на каком логическом томе ее создавать:

mke2fs -t ext4 /dev/VolumeGroupName/LogicalVolumeName

Другие файловые системы имеют подобные инструменты, и ни на одной из них это не будет слишком сложной задачей. Google покажет, какие инструменты какой файловой системе понадобятся; страницы справки помогут в более тонких настройках.

После создания файловой системы на логическом томе вам останется ее подключить. Чтобы это происходило автоматически при каждой перезагрузке компьютера, добавьте логический том в файл /etc/fstab.

Этот файл состоит из серии строк, по одной для каждой файловой системы, которая должна быть смонтирована. Каждая строка состоит из серии утверждений, разделенных пробелом или символом табуляции, с указанием раздела или устройства, точки монтирования, типа файловой системы, а также нескольких других параметров. Для раздела LVM запись будет выглядеть так:

/dev/VolumeGroupName/LogicalVolumeName /home ext4 defaults 0 1

Чтобы разобраться в деталях этой строки, начиная с defaults, не забудьте глянуть на страницу справки /etc/fstab.

Добавление памяти

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

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

Как и для всех физических томов, первым делом вам нужно инициализировать его командой pvcreate. Сделав это, можно использовать команду vgextend, чтобы добавить новый физический том в пул группы томов:

vgextend VolumeGroupName /dev/sda2

Синтаксис довольно очевиден: VolumeGroupName – том группы для увеличения, а /dev/sda2 – физический (уже инициализированный) том, за счет которого идет увеличение.

Теперь дополнительное пространство доступно, и вы можете расширить логические тома в группе томов по своему желанию. Для этого мы используем команду lvextend, синтаксис которой схож с командой lvcreate (в частности, ключ -L).

lvextend -L8G /dev/VolumeGroupName/LogicalVolumeName

Легко, не так ли? Это не увеличивает файловую систему, и прежде чем вы сможете воспользоваться пространством, следует увеличить и ее размер. Следующая команда расширит файловую систему ext4 до того же размера, что недавно измененный логический том:

resize2fs /dev/VolumeGroupName/LogicalVolumeName

Что здесь и вправду удивительно – то, что это можно сделать без перезагрузки системы. Вспомним наш пример с музыкой: когда место в нашей системе на 80 ГБ закончилось, мы могли бы добавить еще один жесткий диск и увеличить раздел /, используя дополнительное пространство в пуле. С этим гораздо меньше хлопот, чем с выполнением полного восстановления системы.

Вас может заинтересовать, что нужно делать, если ваши 80 ГБ – это ноутбук, без какой-либо возможности подключить внешний жесткий диск. Можно ли будет сокращать размер /home, отдавая это пространство для /? Да, но с оговорками.

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

Пункт второй – хотя LVM умеет сокращать логические тома, даже когда они смонтированы, большинство файловых систем эту возможность не поддерживают. Вместо этого, если вы вносите изменения в раздел типа / или /home, который должен быть смонтирован при работающей системе, вам необходимо перезагрузиться в режим работы с live CD или другой системы восстановления.

Помимо этих предостережений, для логического тома, содержащего файловую систему ext4, остальная часть процедуры проста. Сначала запустите команду resize2fs, указав новый размер файловой системы, а затем запустите lvreduce, чтобы уменьшить логический том:

resize2fs /dev/VolumeGroupName/LogicalVolumeName 2G
lvreduce -L2G /dev/VolumeGroupName/LogicalVolumeName

Здесь 2G в обеих командах просто указывает новый размер файловой системы и логического тома. Вот и все, что нужно сделать. Пускай это и страшно – сама процедура не слишком трудна.

Перемещение данных

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

Это звучит сложно: в конце концов, как вообще можно выяснить, какие части группы томов LVM хранит на каком физическом томе? К счастью, в LVM есть еще одна удобная команда, чтобы сделать это невероятно просто:

pvmove /dev/sda

Это заставит все физические экстенты храниться на первом жестком диске, чтобы перераспределиться между другими физическими томами в группе томов – если хватит места. Если места недостаточно, сперва добавьте новый физический том, точно так же, как мы делали раньше, а затем запустите команду.

Достаточно ли места в группе томов, можно проверить, сравнивая выход pvdisplay с vgdisplay.

Осталось только удалить старый жесткий диск из группы томов, командой vgreduce:

vgreduce VolumeGroupName /dev/sda

Она удалит физический том /dev/sda из группы томов VolumeGroupName. На этом этапе вы можете удалить жесткий диск – сжечь его, разбить его... короче, позаботиться, чтобы никто другой не заполучил в свои руки ваши данные.

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


Характеристики файловой системы

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

Сжатие онлайн Увеличение онлайн Сжатие оффлайн Увеличение оффлайн
ext3
ext4
btrfs
xfs
jfs
reiserfs


Персональные инструменты
купить
подписаться
Яндекс.Метрика