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

LXF83:HDD

Материал из Linuxformat
(Различия между версиями)
Перейти к: навигация, поиск
(Добавляем пространства)
м (На дне)
 
(не показаны 12 промежуточных версий 3 участников)
Строка 1: Строка 1:
 
== LVM. Заводим виртуальные разделы ==
 
== LVM. Заводим виртуальные разделы ==
''Долой тиранию фиксированных разделов диска '''Нейл Ботвик''' покажет, как достичь гибкости при помощи управления логическими томами (Logical Volume Management).''
+
''Долой тиранию фиксированных разделов диска '''Нейл Ботвик''' покажет, как достичь гибкости при помощи управления логическими томами (Logical Volume Management).''
  
Как управлять разделами? Спросите 10 пользователей Linux о лучшем способе разбиения жесткого диска итогом будет не меньше 11 разных ответов. Вдобавок все ответы, вероятно, правильные: у каждого метода свои достоинства, все зависит от ваших намерений по использованию системы. Проблемы возникают намного позже, когда реальность расходится с планами и вы замечаете нехватку свободного места в одном разделе и ненужный избыток в другом.
+
Как управлять разделами? Спросите 10 пользователей Linux о лучшем способе разбиения жесткого диска итогом будет не меньше 11 разных ответов. Вдобавок все ответы, вероятно, правильные: у каждого метода свои достоинства, все зависит от ваших намерений по использованию системы. Проблемы возникают намного позже, когда реальность расходится с планами и вы замечаете нехватку свободного места в одном разделе и ненужный избыток в другом.
  
Размеры разделов можно изменить при помощи утилиты QtParted, но она (и инструменты, ею используемые) ограничивается отодвиганием конца раздела. Вы можете усечь раздел, чтобы высвободить место для нового раздела, или увеличить раздел, включив следующее за ним пустое пространство. Если надо расширить раздел /usr, вклинившийся между разделами root и home, то вам не повезло: придется произвести резервирование данных, удалить и вновь создать разделы, а потом восстановить данные из резервной копии.
+
Размеры разделов можно изменить при помощи утилиты QtParted, но она (и инструменты, ею используемые) ограничивается отодвиганием конца раздела. Вы можете усечь раздел, чтобы высвободить место для нового раздела, или увеличить раздел, включив следующее за ним пустое пространство. Если надо расширить раздел '''/usr''', вклинившийся между разделами '''root''' и '''home''', то вам не повезло: придется произвести резервирование данных, удалить и вновь создать разделы, а потом восстановить данные из резервной копии.
  
К счастью, решение существует это менеджер логических томов (LVM), представляющий собой программный слой между разделами и накопителями. Ваши разделы становятся виртуальными, а не прикованными к фиксированному положению на диске. Сегодня я покажу вам, как использовать LVM для создания раздела (далее называемого логическим томом), изменения его размера или удаления без проблем и забот о физическом размещении. Можно даже добавлять и удалять целые диски, не затрагивая вашу файловую систему.
+
К счастью, решение существует это менеджер логических томов (LVM), представляющий собой программный слой между разделами и накопителями. Ваши разделы становятся виртуальными, а не прикованными к фиксированному положению на диске. Сегодня я покажу вам, как использовать LVM для создания раздела (далее называемого логическим томом), изменения его размера или удаления без проблем и забот о физическом размещении. Можно даже добавлять и удалять целые диски, не затрагивая вашу файловую систему.
  
 
=== Работаем со слоями ===
 
=== Работаем со слоями ===
LVM поставляется в большинстве дистрибутивов или как часть стандартного набора программ, или в программном репозитарии (пакет обычно называется lvm2). Там содержатся все используемые инструменты, но учтите, ядро тоже должно поддерживать LVM. Многие дистрибутивы опять-таки предоставляют подходящее ядро, но если вы делаете все самостоятельно, то вам необходимо включить следующие опции:
+
 
 +
{{Врезка
 +
|Заголовок=Требуются права root
 +
|Содержание=Все команды LVM, используемые в данном уроке, требуют запуска с правами суперпользователя (root). Нужно будет открыть терминал и ввести
 +
 
 +
su -
 +
 
 +
а затем пароль суперпользователя. С очевидным исключением команд отображения, большинство LVM-команд деструктивны: они удаляют или затирают данные вашего жесткого диска, иногда и тайком. Помните присказку «компьютер делает то, что вы просите, а не то, что вы думаете», и будьте осторожны при запуске представленных здесь команд! Вероятно, хорошей идеей будет экспериментировать где-нибудь на нейтральной территории, например, на отдельном жестком диске. Если у вас такого нет, то для тестов вполне сгодятся приличной емкости USB-брелок или карта памяти в карт-ридере.
 +
 
 +
Можно также создать LVM на loop-устройстве. Это малоприменимо в реальности, но является хорошим способом экспериментировать, не трогая разделы вашего жесткого диска. Все, что вам нужно – это свободное место для создания loop-файла:
 +
 
 +
dd if=/dev/zero of=lvmtest bs=1M count=8192
 +
losetup /dev/loop1 lvmtest
 +
pvcreate /dev/loop1
 +
vgcreate etc.
 +
 
 +
Здесь создается файл размером 8 ГБ, присоединяется к loop-устройству и используется в качестве физического тома для LVM.
 +
|Ширина=350px
 +
}}
 +
 
 +
LVM поставляется в большинстве дистрибутивов или как часть стандартного набора программ, или в программном репозитарии (пакет обычно называется '''lvm2'''). Там содержатся все используемые инструменты, но учтите, ядро тоже должно поддерживать LVM. Многие дистрибутивы опять-таки предоставляют подходящее ядро, но если вы делаете все самостоятельно, то вам необходимо включить следующие опции:
 +
 
 
  CONFIG_MD=y
 
  CONFIG_MD=y
 
  CONFIG_BLK_DEV_DM=y
 
  CONFIG_BLK_DEV_DM=y
Строка 15: Строка 36:
 
Их можно найти в инструменте конфигурирования ядра: Device Drivers > Multi-Device Support (RAID и LVM) > Device Mapper Support
 
Их можно найти в инструменте конфигурирования ядра: Device Drivers > Multi-Device Support (RAID и LVM) > Device Mapper Support
  
Имеется две версии Управления Логическими Томами: изначальная LVM и последняя LVM2. LVM2 в основном имеет обратную совместимость с LVM, но когда на этом уроке я говорю о LVM, то подразумеваю LVM2.
+
Имеется две версии Управления Логическими Томами: изначальная LVM и последняя LVM2. LVM2 в основном имеет обратную совместимость с LVM, но когда на этом уроке я говорю о LVM, то подразумеваю LVM2.
  
LVM предоставляет логические тома трех уровней: физические тома, группы томов и собственно логические тома. В самом низу находятся физические тома это разделы жесткого диска, на которых хранятся данные (/dev/hda1, /dev/sdb3 и т.п.). Можно также создать физический том, охватывающий весь диск, в этом случае вам не нужно вначале разбивать этот диск на разделы. Один или несколько физических томов объединяются в группы второй уровень. Вы можете рассматривать группу томов как виртуальный жесткий диск, который может иметь разделы более чем на одном физическом носителе. И, наконец, поверх групп томов создаются логические тома.
+
LVM предоставляет логические тома трех уровней: физические тома, группы томов и собственно логические тома. В самом низу находятся физические тома это разделы жесткого диска, на которых хранятся данные ('''/dev/hda1''', '''/dev/sdb3''' и т. п.). Можно также создать физический том, охватывающий весь диск, в этом случае вам не нужно вначале разбивать этот диск на разделы. Один или несколько физических томов объединяются в группы второй уровень. Вы можете рассматривать группу томов как виртуальный жесткий диск, который может иметь разделы более чем на одном физическом носителе. И, наконец, поверх групп томов создаются логические тома.
  
Все группы томов разбиваются на один или несколько логических томов, точно так же, как физический жесткий диск разбивается на один или несколько разделов. Основное отличие в том, что все становится более гибким от размера виртуальных дисков и разделов до соглашений по именованию, которые вы используете. Здорово? Давайте начнем с низшего уровня: создадим несколько физических томов.
+
Все группы томов разбиваются на один или несколько логических томов, точно так же, как физический жесткий диск разбивается на один или несколько разделов. Основное отличие в том, что все становится более гибким от размера виртуальных дисков и разделов до соглашений по именованию, которые вы используете. Здорово? Давайте начнем с низшего уровня: создадим несколько физических томов.
  
 
=== На дне ===
 
=== На дне ===
 
Небольшое предупреждение: начиная с этого момента, все приводимые команды требуют прав суперпользователя (см. врезку Требуются права root вверху). Поехали. Итак, физические тома создаются при помощи pvcreate; man-страница содержит множество опций, но обычно требуется указать только имя используемых раздела(-ов) или диска(-ов). Вот хорошие примеры этой команды:
 
Небольшое предупреждение: начиная с этого момента, все приводимые команды требуют прав суперпользователя (см. врезку Требуются права root вверху). Поехали. Итак, физические тома создаются при помощи pvcreate; man-страница содержит множество опций, но обычно требуется указать только имя используемых раздела(-ов) или диска(-ов). Вот хорошие примеры этой команды:
*pvcreate /dev/hda5
+
* pvcreate '''/dev/hda5'''
*pvcreate /dev/md0
+
* pvcreate '''/dev/md0'''
*pvcreate /dev/sda7 /dev/sdb
+
* pvcreate '''/dev/sda7''' '''/dev/sdb'''
  
 
Первая из них создает физический том на отдельном разделе; вторая делает то же самое на RAID-разделе. Третий пример создает физические тома в разделе первого диска и на всем втором диске. Если вы хотите создать физический том во весь диск, то последний при этом не должен содержать никаких разделов: если они есть, то pvcreate откажется работать с ним.
 
Первая из них создает физический том на отдельном разделе; вторая делает то же самое на RAID-разделе. Третий пример создает физические тома в разделе первого диска и на всем втором диске. Если вы хотите создать физический том во весь диск, то последний при этом не должен содержать никаких разделов: если они есть, то pvcreate откажется работать с ним.
  
 
Разделы можно удалить при помощи любого инструмента разметки диска, например cfdisk, или командой
 
Разделы можно удалить при помощи любого инструмента разметки диска, например cfdisk, или командой
 +
 
  dd if=/dev/zero of=/dev/sdb bs=512 count=1
 
  dd if=/dev/zero of=/dev/sdb bs=512 count=1
  
Обязательно убедитесь, что вы работаете с нужным диском очень трудно будет восстановить данные, если вы удалите таблицу разделов не того диска.
+
Обязательно убедитесь, что вы работаете с нужным диском очень трудно будет восстановить данные, если вы удалите таблицу разделов не того диска.
  
 
=== Работа с группами ===
 
=== Работа с группами ===
Вообще-то наш друг pvcreate только подготавливает устройство для использования LVM теперь вам необходимо создать одну или несколько групп томов. Для стандартного настольного ПК обычно вполне достаточно одной группы. Для масштабных или специализированных применений, например, серверов с интенсивной нагрузкой, может понадобиться больше. Но сам процесс одинаков, вне зависимости от количества созданных вами групп:
+
Вообще-то наш друг pvcreate только подготавливает устройство для использования LVM теперь вам необходимо создать одну или несколько групп томов. Для стандартного настольного ПК обычно вполне достаточно одной группы. Для масштабных или специализированных применений, например, серверов с интенсивной нагрузкой, может понадобиться больше. Но сам процесс одинаков, вне зависимости от количества созданных вами групп:
  
 
  vgcreate myvg /dev/hda5 /dev/sdb
 
  vgcreate myvg /dev/hda5 /dev/sdb
  
Здесь создается отдельная группа томов с именем myvg, состоящая из раздела на hda и целого sdb (в предположении, что они были подготовлены pvcreate). Кстати, вы можете спокойно проигнорировать любые ошибки, связанные с CD или DVD-приводами: это LVM сканирует ваши диски и выдает ошибку для любого устройства, содержащего диски только для чтения или без дисков.
+
Здесь создается отдельная группа томов с именем '''myvg''', состоящая из раздела на '''hda''' и целого '''sdb''' (в предположении, что они были подготовлены pvcreate). Кстати, вы можете спокойно проигнорировать любые ошибки, связанные с CD или DVD-приводами: это LVM сканирует ваши диски и выдает ошибку для любого устройства, содержащего диски только для чтения или без дисков.
  
Хотя общепринято давать группам томов нумерованные имена (vg00, vg01...), вы можете называть их по-своему. Например, если раздел вашей операционной системы размещается в одной группе, а сами вы работаете с другой, вы можете назвать их System и Work соответственно. Другая причина для использования своих собственных имен избежание конфликтов: вдруг вам потребуется подсоединить другое устройство с группой томов под именем vg00, чтобы извлечь данные возникнет путаница.
+
Хотя общепринято давать группам томов нумерованные имена (vg00, vg01…), вы можете называть их по-своему. Например, если раздел вашей операционной системы размещается в одной группе, а сами вы работаете с другой, вы можете назвать их System и Work соответственно. Другая причина для использования своих собственных имен избежание конфликтов: вдруг вам потребуется подсоединить другое устройство с группой томов под именем vg00, чтобы извлечь данные возникнет путаница.
  
 
Чтобы проверить, создана ли группа томов, выполните
 
Чтобы проверить, создана ли группа томов, выполните
 +
 
  vgdisplay myvg
 
  vgdisplay myvg
 +
 
Выведется информация о вашей группе томов. Запустите ее без аргументов, чтобы увидеть параметры всех групп.
 
Выведется информация о вашей группе томов. Запустите ее без аргументов, чтобы увидеть параметры всех групп.
  
 
=== Наконец-то логические тома ===
 
=== Наконец-то логические тома ===
 +
 +
{{Врезка
 +
|Заголовок=Как увидеть тома и группы
 +
|Содержание=Вы увидите, что можно создать несколько физических томов, групп томов и логических томов. Приятно, что есть команды, помогающие отследить, что происходит: pvdisplay, vgdisplay и lvdisplay показывают параметры ваших физических томов, групп томов и логических томов соответственно. При запуске команды без аргументов выводится список всех объектов данного типа. Вы можете ограничиться конкретными томами и/или группами, указав их в команде – например, так:
 +
 +
  vgdisplay myvg # информация об одной группе
 +
  lvdisplay myvg # информация обо всех логических томах в группе
 +
 +
  lvdisplay /dev/myvg/myvol system/usr # информация об указанных логических томах
 +
 +
Если у вас всего одна группа томов, можете сократить число символов в команде, присвоив имя группы переменной окружения '''LVM_VG_NAME'''. После этого будет использована именно она, даже если в соответствующей команде имя группы не указано.
 +
|Ширина=580px
 +
}}
 +
 
Теперь к третьему слою; команда создания логических томов лишь немного длиннее, чем команда для создания группы томов. Вот она:
 
Теперь к третьему слою; команда создания логических томов лишь немного длиннее, чем команда для создания группы томов. Вот она:
  
 
  lvcreate --name myvol --size 5G myvg
 
  lvcreate --name myvol --size 5G myvg
  
Опция --name, как пояснил бы вам Шерлок Холмс, дает имя тому. Она не обязательна, но если ее опустить, том получит имя вида “volNN” – значимое имя, безусловно, лучше. Аргумент --size задает размер тома (ну, это же элементарно) и указывается он в мегабайтах, или по вашему выбору K, M, G или T (килобайты, мегабайты, гигабайты или терабайты, дорогой мой Ватсон). Вы должны указать или --size, или --extents. Extent (непрерывная область на диске) это наименьшая единица данных в группе, аналогичная блоку физического диска. Размер по умолчанию 4 МБ.
+
Опция '''--name''', как пояснил бы вам Шерлок Холмс, дает имя тому. Она не обязательна, но если ее опустить, том получит имя вида «volNN» — значимое имя, безусловно, лучше. Аргумент '''--size''' задает размер тома (ну, это же элементарно) и указывается он в мегабайтах, или по вашему выбору K, M, G или T (килобайты, мегабайты, гигабайты или терабайты, дорогой мой Ватсон). Вы должны указать или '''--size''', или '''--extents'''. Extent (непрерывная область на диске) это наименьшая единица данных в группе, аналогичная блоку физического диска. Размер по умолчанию 4 МБ.
  
Ваш новый том находится в /dev/volumegroup/volumename, и команда
+
Ваш новый том находится в '''/dev/volumegroup/volumename''', и команда
  
 
  mke2fs -j /dev/myvg/myvol
 
  mke2fs -j /dev/myvg/myvol
Строка 60: Строка 98:
 
создаст на новом томе файловую систему ext3.
 
создаст на новом томе файловую систему ext3.
  
Повтором команды lvcreate вы можете добавлять логические тома, пока хватает свободного места на диске, но при этом следует помнить несколько моментов. Как вы скоро увидите, LVM чрезвычайно упрощает изменение размера логических томов, а вот изменение размера раздела проходит гладко только при его увеличении. Уменьшение размера раздела в лучшем случае рискованно, а для некоторых файловых систем невозможно (это зависит от распознания вашей файловой системы программой разметки – если у вас очень экзотическая файловая система или старая версия GParted, вряд ли это сработает).
+
{{Врезка
 +
|Заголовок=Графическое администрирование
 +
|Содержание=Я сосредоточился на командной строке потому, что это обычный способ администрирования LVM. Если исключить инструменты, специфичные для дистрибутивов, лучшим GUI-инструментом администрирования LVM является вездесущий Webmin. Он содержится в репозитариях большинства дистрибутивов и, возможно, уже установлен на вашем компьютере. Вы можете найти LVM-модули в разделе Оборудование (Hardware) пакета Webmin.
 +
[[Изображение:Img 83 66 1.png|thumb|LVM-модуль для Webmin обеспечивает графический интерфейс управления томами и группами.]]
 +
|Ширина=200px
 +
}}
  
Поэтому задавайте размер ваших логических томов в точности таким, как надо –завышать его, исходя из соображений «а вдруг потом потребуется больше», бессмысленно. По тем же причинам, хотя под группу томов и можно грохнуть все свободное место, крайности в этом нет разве что при подлинной необходимости. Неиспользованное пространство можно приписать к любому логическому тому в любой момент. Однако не увлекайтесь таким подходом: большинство файловых систем при заполнении «под завязку» вынуждены фрагментировать файлы. Наилучшая производительность достигается при заполнении на 75–80%. Рассчитайте размер каждого тома и добавьте к нему еще 30%, чтобы дать файловой системе некоторое пространство для толкотни.
+
Повтором команды lvcreate вы можете добавлять логические тома, пока хватает свободного места на диске, но при этом следует помнить несколько моментов. Как вы скоро увидите, LVM чрезвычайно упрощает изменение размера логических томов, а вот изменение размера раздела проходит гладко только при его увеличении. Уменьшение размера раздела в лучшем случае рискованно, а для некоторых файловых систем невозможно (это зависит от распознания вашей файловой системы программой разметки — если у вас очень экзотическая файловая система или старая версия GParted, вряд ли это сработает).
 +
 
 +
Поэтому задавайте размер ваших логических томов в точности таким, как надо -завышать его, исходя из соображений «а вдруг потом потребуется больше», бессмысленно. По тем же причинам, хотя под группу томов и можно грохнуть все свободное место, крайности в этом нет разве что при подлинной необходимости. Неиспользованное пространство можно приписать к любому логическому тому в любой момент. Однако не увлекайтесь таким подходом: большинство файловых систем при заполнении «под завязку» вынуждены фрагментировать файлы. Наилучшая производительность достигается при заполнении на 75-80 %. Рассчитайте размер каждого тома и добавьте к нему еще 30 %, чтобы дать файловой системе некоторое пространство для толкотни.
  
 
=== Добавляем пространства ===
 
=== Добавляем пространства ===
Пока мы создавали одни логические тома, которые, похоже, не имеют особых преимуществ по сравнению с традиционными физическими. Но это только начало. Если вы решите, что вам нужно побольше места на myvol, нужно сделать всего лишь
+
Пока мы создавали одни логические тома, которые, похоже, не имеют особых преимуществ по сравнению с традиционными физическими. Но это только начало. Если вы решите, что вам нужно побольше места на '''myvol''', нужно сделать всего лишь
 +
 
 
  lvresize --size +2G /dev/myvg/myvol
 
  lvresize --size +2G /dev/myvg/myvol
  
Это увеличит размер логического тома на 2 ГБ. Начало /dev/ не обязательно, но означает, что вы можете использовать завершение по клавише TAB в командной оболочке, чтобы убедиться, что имя верное.
+
Это увеличит размер логического тома на 2 ГБ. Начало '''/dev/''' не обязательно, но означает, что вы можете использовать завершение по клавише TAB в командной оболочке, чтобы убедиться, что имя верное.
  
 
Должен отметить, что эта команда изменяет размер только тома, а не его файловой системы. Увеличение размера тома, содержащего смонтированную файловую систему, вполне безопасно, но если вы хотите уменьшить размер тома, то прежде уменьшите размер файловой системы по крайней мере на ту же величину. При увеличении размера сначала увеличиваем размер тома, а затем файловой системы. Некоторые файловые системы позволяют увеличить их без размонтирования (а вот XFS разрешает изменение размера только в смонтированном состоянии). Попробуйте специализированные инструменты изменения размера файловых систем (например, resize2fs, resize_reiserfs, xfs_growfs etc) или графический инструмент вроде QtParted.
 
Должен отметить, что эта команда изменяет размер только тома, а не его файловой системы. Увеличение размера тома, содержащего смонтированную файловую систему, вполне безопасно, но если вы хотите уменьшить размер тома, то прежде уменьшите размер файловой системы по крайней мере на ту же величину. При увеличении размера сначала увеличиваем размер тома, а затем файловой системы. Некоторые файловые системы позволяют увеличить их без размонтирования (а вот XFS разрешает изменение размера только в смонтированном состоянии). Попробуйте специализированные инструменты изменения размера файловых систем (например, resize2fs, resize_reiserfs, xfs_growfs etc) или графический инструмент вроде QtParted.
Строка 77: Строка 123:
 
  vgextend myvg /dev/hdb
 
  vgextend myvg /dev/hdb
  
добавит весь /dev/hdb к существующей группе томов myvg (столь же просто вы можете создать раздел на диске и добавить его в группу томов). Мы можем использовать это пространство для создания дополнительных логических томов или для увеличения размера существующих. Использование LVM означает, что одну файловую систему можно разместить на сколь угодно большом количестве физических разделов и дисков, обеспечивающих требуемую память.
+
добавит весь '''/dev/hdb''' к существующей группе томов '''myvg''' (столь же просто вы можете создать раздел на диске и добавить его в группу томов). Мы можем использовать это пространство для создания дополнительных логических томов или для увеличения размера существующих. Использование LVM означает, что одну файловую систему можно разместить на сколь угодно большом количестве физических разделов и дисков, обеспечивающих требуемую память.
  
 
=== Уменьшение разделов ===
 
=== Уменьшение разделов ===
А как насчет перемещения и удаления элементов LVM? Для начала,
+
А как насчет перемещения и удаления элементов LVM? Для начала, логические тома могут быть удалены командой
логические тома могут быть удалены командой
+
 
lvremove myvg/myvol
+
lvremove myvg/myvol
Перед этим вы должны размонтировать раздел, иначе lvremove
+
 
откажется выполнить ваш запрос. Удаленное пространство возвраща-
+
Перед этим вы должны размонтировать раздел, иначе lvremove откажется выполнить ваш запрос. Удаленное пространство возвращается в группу томов.
ется в группу томов.
+
 
Аналогично, vgremove удаляет группу томов целиком, но только пос-
+
{{Врезка
ле удаления всех ее логических томов командой lvremove.
+
|Заголовок=Фильтрация неподходящих устройств
Из группы томов можно также удалять отдельные физические тома.
+
|Содержание=Хотя сообщения о якобы ошибках на '''/dev/cdrom''' или другом читающем устройстве безвредны, они изрядно раздражают. Чтобы LVM не обращался к '''/dev/cdrom''', добавьте следующую строку в '''/etc/lvm/''' '''lvm.conf''':
Это требует некоторой осторожности, так как перед удалением нужно
+
 
убедиться, что на этом томе или диске не содержится данных из при-
+
<pre>filter = [ "r|/dev/cdrom|" ]</pre>
надлежащих группе томов. Но это также означает, что вы в основном
+
 
можете перенести систему на диск большего размера практически без
+
r означает reject (ignore) (отказать, игнорировать), а за ним следует регулярное выражение, обозначающее игнорируемые устройства. Эта строка, возможно, в файле уже есть, но в виде комментария – так раскомментируйте ее!
простоя, кроме вызванного физическим переподключением дисков
+
 
(или даже и без этого, если вы используете диски с «горячим» под-
+
Видимо, придется ее и переместить: LVM использует первую же встретившуюся строку фильтра, соответствующую устройству, а обычно это строка
ключением). Я добавил «в основном», потому что любым не-LVM раз-
+
 
делом потребуется заниматься отдельно. Дистрибутивы вроде Fedora
+
<pre>filter = [ "a/.*/" ]</pre>
Core размещают /boot на отдельном разделе, а все остальное на LVM.
+
 
Поскольку в процессе работы системы /boot не требуется, то скопиро-
+
разрешающая все. Поместите фильтры для конкретных устройств выше нее, и она станет актуальна только для неуказанных девайсов.
вать его достаточно легко.
+
 
Чтобы скопировать остатки системы, скажем с hda5 на hdb5,
+
Другой вариант – ограничиться только отдельными устройствами, проигнорировав остальные. Попробуйте, например:
создайте физический том и добавьте его в группу томов, как описано
+
 
выше. Теперь вам нужно убедиться, что все данные этой группы томов
+
<pre>filter = [ "a|/dev/sd|", "a|/dev/md|", "r|.*|" ]</pre>
размещены на новом диске. Во-первых, удостоверьтесь, что места
+
 
достаточно:
+
Тут содержатся сразу 3 фильтра. Первый разрешает SCSI- и SATA-устройства (если у вас SATA-диски и PATA DVD-привод), второй – программные RAID-девайсы, а третий запрещает все остальное. Исправив '''lvm.conf''', запустите vgscan для обновления кэша, где LVM хранит результаты сканирования устройств.
pvdisplay /dev/hda5 /dev/hdb5
+
|Ширина=350px
Убедитесь, что свободный физический размер (Free PE) нового дис-
+
}}
ка больше, чем занимаемый физический размер старого (Allocated PE).
+
 
Если это так, то перенесите данные командой
+
 
pvmove /dev/hda5 /dev/hdb5
+
Аналогично, vgremove удаляет группу томов целиком, но только после удаления всех ее логических томов командой lvremove.
заменив, естественно, имена устройств в соответствии с вашей
+
 
системой.
+
Из группы томов можно также удалять отдельные физические тома. Это требует некоторой осторожности, так как перед удалением нужно убедиться, что на этом томе или диске не содержится данных из принадлежащих группе томов. Но это также означает, что вы в основном можете перенести систему на диск большего размера практически без простоя, кроме вызванного физическим переподключением дисков (или даже и без этого, если вы используете диски с «горячим» подключением). Я добавил «в основном», потому что любым не-LVM разделом потребуется заниматься отдельно. Дистрибутивы вроде Fedora Core размещают '''/boot''' на отдельном разделе, а все остальное на LVM. Поскольку в процессе работы системы '''/boot''' не требуется, то скопировать его достаточно легко.
pvmove может перетаскивать данные довольно долго, но не пугай-
+
 
тесь: его действия не помешают вам работать за компьютером. Если
+
Чтобы скопировать остатки системы, скажем с '''hda5''' на '''hdb5''', создайте физический том и добавьте его в группу томов, как описано выше. Теперь вам нужно убедиться, что все данные этой группы томов размещены на новом диске. Во-первых, удостоверьтесь, что места достаточно:
событие вроде отключения питания или краха системы прервет про-
+
pvdisplay /dev/hda5 /dev/hdb5
цесс, запустите потом pvmove без параметров, и процесс продолжится с
+
 
момента остановки. Используя pvdisplay, проверьте, что на старом диске
+
Убедитесь, что свободный физический размер (Free PE) нового диска больше, чем занимаемый физический размер старого (Allocated PE). Если это так, то перенесите данные командой
нет занятого места, после чего удалите его из группы:
+
 
vgreduce myvg /dev/hda5
+
pvmove /dev/hda5 /dev/hdb5
pvremove /dev/hda5
+
 
Первая команды удаляет раздел из группы томов (вы можете в
+
заменив, естественно, имена устройств в соответствии с вашей системой.
этом убедиться при помощи vgdisplay). Вторая просто удаляет у разде-
+
 
ла метку LVM.
+
pvmove может перетаскивать данные довольно долго, но не пугайтесь: его действия не помешают вам работать за компьютером. Если событие вроде отключения питания или краха системы прервет процесс, запустите потом pvmove без параметров, и процесс продолжится с момента остановки. Используя pvdisplay, проверьте, что на старом диске нет занятого места, после чего удалите его из группы:
Для перемещения данных отдельного логического тома следует
+
 
выполнить:
+
vgreduce myvg /dev/hda5
pvmove --name myvg/myvol /dev/hda5 /dev/hdb5
+
pvremove /dev/hda5
Имя тома-назначения не обязательно; если вы его опустите, pvmove
+
 
перенесет данные в свободные физические области текущей группы
+
Первая команды удаляет раздел из группы томов (вы можете в этом убедиться при помощи vgdisplay). Вторая просто удаляет у раздела метку LVM.
томов. Это весьма полезно, если у вас несколько физических томов, а
+
 
удалить надо только один.
+
Для перемещения данных отдельного логического тома следует выполнить:
Команда pvmove /dev/hdaN очистит раздел N, переместив данные
+
 
в свободные области группы, которой он принадлежит.
+
pvmove --name myvg/myvol /dev/hda5 /dev/hdb5
 +
 
 +
Имя тома-назначения не обязательно; если вы его опустите, pvmove перенесет данные в свободные физические области текущей группы томов. Это весьма полезно, если у вас несколько физических томов, а удалить надо только один.
 +
 
 +
Команда '''pvmove /dev/hdaN''' очистит раздел N, переместив данные в свободные области группы, которой он принадлежит.
  
 
=== Прекрасные снимки ===
 
=== Прекрасные снимки ===
Создание резервной копии работающей файловой системы не обходится
+
 
без проблем. Резервирование процесс не мгновенный, поэтому всегда
+
{{Врезка
существует вероятность, что файловая система за это время изменит-
+
|Заголовок=Загрузка с LVM
ся. Особенно это касается резервирования /var, где файлы в каталогах
+
|Содержание=100% LVM-систему создать нельзя. Как минимум /boot обязан находиться на стандартном физическом разделе, чтобы загружать ядро с поддержкой LVM, да еще необходимы кое-какие программы для инициализации LVM-томов. Следовательно, нужно либо разместить root-раздел на физическом томе, либо записать соответствующие команды на начальный RAM-диск в '''/boot'''. Fedora Core использует последний подход, то есть все разделы, кроме одного небольшого, могут управляться LVM.
типа /var/log или /var/lib могут изменяться ежеминутно (зачастую так
+
В LVM можно поместить и раздел подкачки (swap), но веских причин для этого нет. Если вам понадобится временно увеличить его размер, можете создать логический том и добавить его к существующему разделу:
и происходит). К счастью, LVM предоставляет измученным сисадминам
+
 
опцию моментальных снимков логических томов. Взгляните сюда:
+
lvcreate --size 4G --name swap myvg
lvcreate --size 1G --snapshot --name mybackup myvg/myvol
+
mkswap /dev/myvg/swap
Этот код создает новый логический том с именем mybackup, кото-
+
swapon /dev/myvg/swap
рый является снимком нашего тома myvol. Содержимое /dev/myvg/
+
 
myvol в момент выполнения команды lvcreate теперь располагается в
+
|Ширина=250px
/dev/myvg/mybackup. Оба тома находятся в одной группе томов, поэ-
+
}}
тому перед созданием резервной копии в группе должно быть обеспече-
+
 
но свободное место. Вам не потребуется полный размер исходного тома,
+
Создание резервной копии работающей файловой системы не обходится без проблем. Резервирование процесс не мгновенный, поэтому всегда существует вероятность, что файловая система за это время изменится. Особенно это касается резервирования '''/var''', где файлы в каталогах типа '''/var/log''' или '''/var/lib''' могут изменяться ежеминутно (зачастую так и происходит). К счастью, LVM предоставляет измученным сисадминам опцию моментальных снимков логических томов. Взгляните сюда:
поскольку в снимке хранятся только изменения, сделанные с момента
+
 
его выполнения. Мы обошлись 1 ГБ, хотя размер myvg/myvol 7 ГБ.
+
lvcreate --size 1G --snapshot --name mybackup myvg/myvol
В документации LVM рекомендован размер 15–20% от исходного, но он
+
 
зависит от того, насколько быстро меняются данные и как долго вам
+
Этот код создает новый логический том с именем '''mybackup''', который является снимком нашего тома '''myvol'''. Содержимое '''/dev/myvg/myvol''' в момент выполнения команды lvcreate теперь располагается в '''/dev/myvg/mybackup'''. Оба тома находятся в одной группе томов, поэтому перед созданием резервной копии в группе должно быть обеспечено свободное место. Вам не потребуется полный размер исходного тома, поскольку в снимке хранятся только изменения, сделанные с момента его выполнения. Мы обошлись 1 ГБ, хотя размер '''myvg/myvol''' — 7 ГБ. В документации LVM рекомендован размер 15-20 % от исходного, но он зависит от того, насколько быстро меняются данные и как долго вам нужно хранить снимок. Если снимку не хватит места, он будет испорчен, так что отведите ему побольше.
нужно хранить снимок. Если снимку не хватит места, он будет испорчен,
+
 
так что отведите ему побольше.
+
Когда снимок станет не нужен, вы сможете удалить его так же, как и любой другой том, а освободившееся пространство возвратится группе томов. Сколько места снимок фактически использовал, можно выяснить при помощи lvdisplay. Вот грубый пример резервирования рабочего раздела на ленту при помощи снимков:
Когда снимок станет не нужен, вы сможете удалить его так же, как и
+
 
любой другой том, а освободившееся пространство возвратится группе
+
томов. Сколько места снимок фактически использовал, можно выяснить
+
при помощи lvdisplay. Вот грубый пример резервирования рабочего раз-
+
дела на ленту при помощи снимков:
+
 
  lvcreate --size 500M --snapshot --name var-backup /dev/ myvg/var
 
  lvcreate --size 500M --snapshot --name var-backup /dev/ myvg/var
 
  mount /dev/myvg/var-backup /mnt/tmp
 
  mount /dev/myvg/var-backup /mnt/tmp
Строка 164: Строка 210:
 
  umount /mnt/tmp
 
  umount /mnt/tmp
 
  lvremove /dev/myvg/var-backup
 
  lvremove /dev/myvg/var-backup
Ваша собственная процедура резервирования, надеюсь, будет более
+
 
элегантна, но эта наглядно иллюстрирует идею: снимок создается,
+
Ваша собственная процедура резервирования, надеюсь, будет более элегантна, но эта наглядно иллюстрирует идею: снимок создается, используется для резервирования вместо работающей файловой системы, затем удаляется, а пространство возвращается группе томов. Что бы ни вносилось в '''var/log''' или '''var/lib/mysql''', пока tar-архив пишется на ленту, оно будет проигнорировано будут резервированы только файлы, имеющиеся в момент выполнения lvcreate.
используется для резервирования вместо работающей файловой сис-
+
темы, затем удаляется, а пространство возвращается группе томов. Что
+
бы ни вносилось в var/log или var/lib/mysql, пока tar-архив пишется на
+
ленту, оно будет проигнорировано будут резервированы только фай-
+
лы, имеющиеся в момент выполнения lvcreate.
+
  
 
=== Когда имена конфликтуют ===
 
=== Когда имена конфликтуют ===
Следует знать, что добавляя после загрузки диск, содержащий LVM-
+
 
разделы, например USB-диск, вы должны сообщить системе, что они
+
{{Врезка
появились. Команды
+
|Заголовок=Советы
vgscan
+
|Содержание=* Не экспериментируйте с тем, что не хотите потерять! Используйте вместо этого переносные или loop-устройства.
vgchange -a y
+
* Не создавайте логические тома большего размера, чем нужно – при необходимости их легко увеличить.
запускают сканирование групп томов и делают все найденные логи-
+
* Используете осмысленные имена для томов и групп.
ческие тома доступными.
+
* Добавьте строку фильтрации в lvm.conf для отключения сканирования ненужных устройств и снижения времени загрузки.
Если новая группа томов имеет то же имя, что и существующая (сов-
+
* Для быстрого просмотра ваших томов используйте Webmin.
падение имен томов внутри различных групп роли не играет), возникнет
+
|Ширина=200px
ошибка это может случиться при подключении диска с другого ком-
+
}}
пьютера. Решение переименовать одну из групп:
+
 
vgrename oldvolgroup newvolgroup
+
Следует знать, что добавляя после загрузки диск, содержащий LVM-разделы, например USB-диск, вы должны сообщить системе, что они появились. Команды
Это довольно неудобно, поскольку дополнительный диск переиме-
+
 
новать нельзя конфликт имен с ходу прекратит распознавание. Нельзя
+
vgscan
также переименовать группу томов на вашем главном диске(-ах) при
+
vgchange -a y
наличии смонтированной файловой системы. В любом случае, перед
+
 
изменением потребуется отредактировать /etc/fstab, чтобы суметь
+
запускают сканирование групп томов и делают все найденные логические тома доступными.
после переименования заново смонтировать логические тома. Обычно
+
 
наилегчайший способ –использовать для изменения имен LiveCD, в
+
Если новая группа томов имеет то же имя, что и существующая (совпадение имен томов внутри различных групп роли не играет), возникнет ошибка это может случиться при подключении диска с другого компьютера. Решение переименовать одну из групп:
котором ничего не смонтировано. Если вы дали группам томов осмыс-
+
 
ленные имена вместо vgXX, то шансы конфликтов значительно снижа-
+
vgrename oldvolgroup newvolgroup
ются, спасая вас от возможных огорчений в будущем.
+
 
После присоединения нового диска и выполнения vgscan/
+
Это довольно неудобно, поскольку дополнительный диск переименовать нельзя конфликт имен с ходу прекратит распознавание. Нельзя также переименовать группу томов на вашем главном диске(-ах) при наличии смонтированной файловой системы. В любом случае, перед изменением потребуется отредактировать '''/etc/fstab''', чтобы суметь после переименования заново смонтировать логические тома. Обычно наилегчайший способ -использовать для изменения имен LiveCD, в котором ничего не смонтировано. Если вы дали группам томов осмысленные имена вместо vgXX, то шансы конфликтов значительно снижаются, спасая вас от возможных огорчений в будущем.
vgchange, вы сможете просмотреть логические тома при помощи
+
 
lvdisplay и смонтировать как любую другую файловую систему.
+
После присоединения нового диска и выполнения '''vgscan/vgchange''', вы сможете просмотреть логические тома при помощи '''lvdisplay''' и смонтировать как любую другую файловую систему.
  
 
=== Более мощные опции ===
 
=== Более мощные опции ===
Я описал основные опции, используемые для создания и управле-
+
Я описал основные опции, используемые для создания и управления физическими томами, группами томов и логическими томами. Существует еще много других опций для настройки производительности под ваши нужды (более подробно см. '''man lvm''' и man-страницы отдельных команд). Однако предоставленная мною информация вполне достаточна для работы с логическими томами, созданными установщиком дистрибутива, или для создания своих собственных логических томов, и, как я надеюсь, хотя бы частично избавит вас от проблем разметки.
ния физическими томами, группами томов и логическими томами.
+
 
Существует еще много других опций для настройки производитель-
+
[[Категория:Учебники]]
ности под ваши нужды (более подробно см. man lvm и man-страницы
+
отдельных команд). Однако предоставленная мною информация вполне
+
достаточна для работы с логическими томами, созданными установ-
+
щиком дистрибутива, или для создания своих собственных логических
+
томов, и, как я надеюсь, хотя бы частично избавит вас от проблем раз-
+
метки.
+

Текущая версия на 14:09, 20 мая 2008

Содержание

[править] LVM. Заводим виртуальные разделы

Долой тиранию фиксированных разделов диска — Нейл Ботвик покажет, как достичь гибкости при помощи управления логическими томами (Logical Volume Management).

Как управлять разделами? Спросите 10 пользователей Linux о лучшем способе разбиения жесткого диска — итогом будет не меньше 11 разных ответов. Вдобавок все ответы, вероятно, правильные: у каждого метода свои достоинства, все зависит от ваших намерений по использованию системы. Проблемы возникают намного позже, когда реальность расходится с планами и вы замечаете нехватку свободного места в одном разделе и ненужный избыток — в другом.

Размеры разделов можно изменить при помощи утилиты QtParted, но она (и инструменты, ею используемые) ограничивается отодвиганием конца раздела. Вы можете усечь раздел, чтобы высвободить место для нового раздела, или увеличить раздел, включив следующее за ним пустое пространство. Если надо расширить раздел /usr, вклинившийся между разделами root и home, то вам не повезло: придется произвести резервирование данных, удалить и вновь создать разделы, а потом восстановить данные из резервной копии.

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

[править] Работаем со слоями

LVM поставляется в большинстве дистрибутивов — или как часть стандартного набора программ, или в программном репозитарии (пакет обычно называется lvm2). Там содержатся все используемые инструменты, но учтите, ядро тоже должно поддерживать LVM. Многие дистрибутивы опять-таки предоставляют подходящее ядро, но если вы делаете все самостоятельно, то вам необходимо включить следующие опции:

CONFIG_MD=y
CONFIG_BLK_DEV_DM=y

Их можно найти в инструменте конфигурирования ядра: Device Drivers > Multi-Device Support (RAID и LVM) > Device Mapper Support

Имеется две версии Управления Логическими Томами: изначальная — LVM и последняя — LVM2. LVM2 в основном имеет обратную совместимость с LVM, но когда на этом уроке я говорю о LVM, то подразумеваю LVM2.

LVM предоставляет логические тома трех уровней: физические тома, группы томов и собственно логические тома. В самом низу находятся физические тома — это разделы жесткого диска, на которых хранятся данные (/dev/hda1, /dev/sdb3 и т. п.). Можно также создать физический том, охватывающий весь диск, в этом случае вам не нужно вначале разбивать этот диск на разделы. Один или несколько физических томов объединяются в группы — второй уровень. Вы можете рассматривать группу томов как виртуальный жесткий диск, который может иметь разделы более чем на одном физическом носителе. И, наконец, поверх групп томов создаются логические тома.

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

[править] На дне

Небольшое предупреждение: начиная с этого момента, все приводимые команды требуют прав суперпользователя (см. врезку Требуются права root вверху). Поехали. Итак, физические тома создаются при помощи pvcreate; man-страница содержит множество опций, но обычно требуется указать только имя используемых раздела(-ов) или диска(-ов). Вот хорошие примеры этой команды:

  • pvcreate /dev/hda5
  • pvcreate /dev/md0
  • pvcreate /dev/sda7 /dev/sdb

Первая из них создает физический том на отдельном разделе; вторая делает то же самое на RAID-разделе. Третий пример создает физические тома в разделе первого диска и на всем втором диске. Если вы хотите создать физический том во весь диск, то последний при этом не должен содержать никаких разделов: если они есть, то pvcreate откажется работать с ним.

Разделы можно удалить при помощи любого инструмента разметки диска, например cfdisk, или командой

dd if=/dev/zero of=/dev/sdb bs=512 count=1

Обязательно убедитесь, что вы работаете с нужным диском — очень трудно будет восстановить данные, если вы удалите таблицу разделов не того диска.

[править] Работа с группами

Вообще-то наш друг pvcreate только подготавливает устройство для использования LVM — теперь вам необходимо создать одну или несколько групп томов. Для стандартного настольного ПК обычно вполне достаточно одной группы. Для масштабных или специализированных применений, например, серверов с интенсивной нагрузкой, может понадобиться больше. Но сам процесс одинаков, вне зависимости от количества созданных вами групп:

vgcreate myvg /dev/hda5 /dev/sdb

Здесь создается отдельная группа томов с именем myvg, состоящая из раздела на hda и целого sdb (в предположении, что они были подготовлены pvcreate). Кстати, вы можете спокойно проигнорировать любые ошибки, связанные с CD или DVD-приводами: это LVM сканирует ваши диски и выдает ошибку для любого устройства, содержащего диски только для чтения или без дисков.

Хотя общепринято давать группам томов нумерованные имена (vg00, vg01…), вы можете называть их по-своему. Например, если раздел вашей операционной системы размещается в одной группе, а сами вы работаете с другой, вы можете назвать их System и Work соответственно. Другая причина для использования своих собственных имен — избежание конфликтов: вдруг вам потребуется подсоединить другое устройство с группой томов под именем vg00, чтобы извлечь данные — возникнет путаница.

Чтобы проверить, создана ли группа томов, выполните

vgdisplay myvg

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

[править] Наконец-то логические тома

Теперь к третьему слою; команда создания логических томов лишь немного длиннее, чем команда для создания группы томов. Вот она:

lvcreate --name myvol --size 5G myvg

Опция --name, как пояснил бы вам Шерлок Холмс, дает имя тому. Она не обязательна, но если ее опустить, том получит имя вида «volNN» — значимое имя, безусловно, лучше. Аргумент --size задает размер тома (ну, это же элементарно) и указывается он в мегабайтах, или по вашему выбору K, M, G или T (килобайты, мегабайты, гигабайты или терабайты, дорогой мой Ватсон). Вы должны указать или --size, или --extents. Extent (непрерывная область на диске) — это наименьшая единица данных в группе, аналогичная блоку физического диска. Размер по умолчанию — 4 МБ.

Ваш новый том находится в /dev/volumegroup/volumename, и команда

mke2fs -j /dev/myvg/myvol

создаст на новом томе файловую систему ext3.


Повтором команды lvcreate вы можете добавлять логические тома, пока хватает свободного места на диске, но при этом следует помнить несколько моментов. Как вы скоро увидите, LVM чрезвычайно упрощает изменение размера логических томов, а вот изменение размера раздела проходит гладко только при его увеличении. Уменьшение размера раздела в лучшем случае рискованно, а для некоторых файловых систем невозможно (это зависит от распознания вашей файловой системы программой разметки — если у вас очень экзотическая файловая система или старая версия GParted, вряд ли это сработает).

Поэтому задавайте размер ваших логических томов в точности таким, как надо -завышать его, исходя из соображений «а вдруг потом потребуется больше», бессмысленно. По тем же причинам, хотя под группу томов и можно грохнуть все свободное место, крайности в этом нет — разве что при подлинной необходимости. Неиспользованное пространство можно приписать к любому логическому тому в любой момент. Однако не увлекайтесь таким подходом: большинство файловых систем при заполнении «под завязку» вынуждены фрагментировать файлы. Наилучшая производительность достигается при заполнении на 75-80 %. Рассчитайте размер каждого тома и добавьте к нему еще 30 %, чтобы дать файловой системе некоторое пространство для толкотни.

[править] Добавляем пространства

Пока мы создавали одни логические тома, которые, похоже, не имеют особых преимуществ по сравнению с традиционными физическими. Но это только начало. Если вы решите, что вам нужно побольше места на myvol, нужно сделать всего лишь

lvresize --size +2G /dev/myvg/myvol

Это увеличит размер логического тома на 2 ГБ. Начало /dev/ не обязательно, но означает, что вы можете использовать завершение по клавише TAB в командной оболочке, чтобы убедиться, что имя верное.

Должен отметить, что эта команда изменяет размер только тома, а не его файловой системы. Увеличение размера тома, содержащего смонтированную файловую систему, вполне безопасно, но если вы хотите уменьшить размер тома, то прежде уменьшите размер файловой системы по крайней мере на ту же величину. При увеличении размера сначала увеличиваем размер тома, а затем файловой системы. Некоторые файловые системы позволяют увеличить их без размонтирования (а вот XFS разрешает изменение размера только в смонтированном состоянии). Попробуйте специализированные инструменты изменения размера файловых систем (например, resize2fs, resize_reiserfs, xfs_growfs etc) или графический инструмент вроде QtParted.

Подразумевается, что у вас хватает свободного пространства в вашей группе томов. LVM не может наколдовать пространство из ниоткуда, но он может облегчить добавление дополнительного диска в ваш компьютер, добавив затем его пространство к имеющейся группе(ам) томов. Например,

pvcreate /dev/hdb
vgextend myvg /dev/hdb

добавит весь /dev/hdb к существующей группе томов myvg (столь же просто вы можете создать раздел на диске и добавить его в группу томов). Мы можем использовать это пространство для создания дополнительных логических томов или для увеличения размера существующих. Использование LVM означает, что одну файловую систему можно разместить на сколь угодно большом количестве физических разделов и дисков, обеспечивающих требуемую память.

[править] Уменьшение разделов

А как насчет перемещения и удаления элементов LVM? Для начала, логические тома могут быть удалены командой

lvremove myvg/myvol

Перед этим вы должны размонтировать раздел, иначе lvremove откажется выполнить ваш запрос. Удаленное пространство возвращается в группу томов.



Аналогично, vgremove удаляет группу томов целиком, но только после удаления всех ее логических томов командой lvremove.

Из группы томов можно также удалять отдельные физические тома. Это требует некоторой осторожности, так как перед удалением нужно убедиться, что на этом томе или диске не содержится данных из принадлежащих группе томов. Но это также означает, что вы в основном можете перенести систему на диск большего размера практически без простоя, кроме вызванного физическим переподключением дисков (или даже и без этого, если вы используете диски с «горячим» подключением). Я добавил «в основном», потому что любым не-LVM разделом потребуется заниматься отдельно. Дистрибутивы вроде Fedora Core размещают /boot на отдельном разделе, а все остальное на LVM. Поскольку в процессе работы системы /boot не требуется, то скопировать его достаточно легко.

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

pvdisplay /dev/hda5 /dev/hdb5

Убедитесь, что свободный физический размер (Free PE) нового диска больше, чем занимаемый физический размер старого (Allocated PE). Если это так, то перенесите данные командой

pvmove /dev/hda5 /dev/hdb5

заменив, естественно, имена устройств в соответствии с вашей системой.

pvmove может перетаскивать данные довольно долго, но не пугайтесь: его действия не помешают вам работать за компьютером. Если событие вроде отключения питания или краха системы прервет процесс, запустите потом pvmove без параметров, и процесс продолжится с момента остановки. Используя pvdisplay, проверьте, что на старом диске нет занятого места, после чего удалите его из группы:

vgreduce myvg /dev/hda5
pvremove /dev/hda5

Первая команды удаляет раздел из группы томов (вы можете в этом убедиться при помощи vgdisplay). Вторая просто удаляет у раздела метку LVM.

Для перемещения данных отдельного логического тома следует выполнить:

pvmove --name myvg/myvol /dev/hda5 /dev/hdb5

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

Команда pvmove /dev/hdaN очистит раздел N, переместив данные в свободные области группы, которой он принадлежит.

[править] Прекрасные снимки

Создание резервной копии работающей файловой системы не обходится без проблем. Резервирование — процесс не мгновенный, поэтому всегда существует вероятность, что файловая система за это время изменится. Особенно это касается резервирования /var, где файлы в каталогах типа /var/log или /var/lib могут изменяться ежеминутно (зачастую так и происходит). К счастью, LVM предоставляет измученным сисадминам опцию моментальных снимков логических томов. Взгляните сюда:

lvcreate --size 1G --snapshot --name mybackup myvg/myvol

Этот код создает новый логический том с именем mybackup, который является снимком нашего тома myvol. Содержимое /dev/myvg/myvol в момент выполнения команды lvcreate теперь располагается в /dev/myvg/mybackup. Оба тома находятся в одной группе томов, поэтому перед созданием резервной копии в группе должно быть обеспечено свободное место. Вам не потребуется полный размер исходного тома, поскольку в снимке хранятся только изменения, сделанные с момента его выполнения. Мы обошлись 1 ГБ, хотя размер myvg/myvol — 7 ГБ. В документации LVM рекомендован размер 15-20 % от исходного, но он зависит от того, насколько быстро меняются данные и как долго вам нужно хранить снимок. Если снимку не хватит места, он будет испорчен, так что отведите ему побольше.

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

lvcreate --size 500M --snapshot --name var-backup /dev/ myvg/var
mount /dev/myvg/var-backup /mnt/tmp
tar c /mnt/tmp >/dev/tape
umount /mnt/tmp
lvremove /dev/myvg/var-backup

Ваша собственная процедура резервирования, надеюсь, будет более элегантна, но эта наглядно иллюстрирует идею: снимок создается, используется для резервирования вместо работающей файловой системы, затем удаляется, а пространство возвращается группе томов. Что бы ни вносилось в var/log или var/lib/mysql, пока tar-архив пишется на ленту, оно будет проигнорировано — будут резервированы только файлы, имеющиеся в момент выполнения lvcreate.

[править] Когда имена конфликтуют

Следует знать, что добавляя после загрузки диск, содержащий LVM-разделы, например USB-диск, вы должны сообщить системе, что они появились. Команды

vgscan
vgchange -a y

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

Если новая группа томов имеет то же имя, что и существующая (совпадение имен томов внутри различных групп роли не играет), возникнет ошибка — это может случиться при подключении диска с другого компьютера. Решение — переименовать одну из групп:

vgrename oldvolgroup newvolgroup

Это довольно неудобно, поскольку дополнительный диск переименовать нельзя — конфликт имен с ходу прекратит распознавание. Нельзя также переименовать группу томов на вашем главном диске(-ах) при наличии смонтированной файловой системы. В любом случае, перед изменением потребуется отредактировать /etc/fstab, чтобы суметь после переименования заново смонтировать логические тома. Обычно наилегчайший способ -использовать для изменения имен LiveCD, в котором ничего не смонтировано. Если вы дали группам томов осмысленные имена вместо vgXX, то шансы конфликтов значительно снижаются, спасая вас от возможных огорчений в будущем.

После присоединения нового диска и выполнения vgscan/vgchange, вы сможете просмотреть логические тома при помощи lvdisplay и смонтировать как любую другую файловую систему.

[править] Более мощные опции

Я описал основные опции, используемые для создания и управления физическими томами, группами томов и логическими томами. Существует еще много других опций для настройки производительности под ваши нужды (более подробно см. man lvm и man-страницы отдельных команд). Однако предоставленная мною информация вполне достаточна для работы с логическими томами, созданными установщиком дистрибутива, или для создания своих собственных логических томов, и, как я надеюсь, хотя бы частично избавит вас от проблем разметки.

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