Различия
Здесь показаны различия между двумя версиями данной страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
|
wiki:lvm [2010/08/17 16:47] |
wiki:lvm [2017/07/07 15:12] (текущий) [Linux Volume Manager (LVM)] |
||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| - | ====== Linux Volume Manager (LVM) ====== | + | ====== Logical Volume Manager (LVM) ====== |
| - | Linux Volume Manager (LVM) - это очень мощная система управления томами с данными для Linux. Она позволяет создавать поверх физических разделов (или даже неразбитых винчестеров) логические тома, которые в самой системе будут видны как обычные блочные устройства с данными (т.е. как обычные разделы). Основные преимущества LVM в том, что во-первых одну группу логических томов можно создавать поверх любого количества физических разделов, а во-вторых размер логических томов можно легко менять прямо во время работы. Кроме того, LVM поддерживает механизм снапшотов, копирование разделов "на лету" и зеркалирование, подобное RAID-1. | + | Logical Volume Manager (LVM) - это очень мощная система управления томами с данными для Linux. Она позволяет создавать поверх физических разделов (или даже неразбитых винчестеров) логические тома, которые в самой системе будут видны как обычные блочные устройства с данными (т.е. как обычные разделы). Основные преимущества LVM в том, что во-первых одну группу логических томов можно создавать поверх любого количества физических разделов, а во-вторых размер логических томов можно легко менять прямо во время работы. Кроме того, LVM поддерживает механизм снапшотов, копирование разделов "на лету" и зеркалирование, подобное RAID-1. |
| <note>Если планируются большие работы с LVM, то можно запустить специальную "оболочку" командой ''sudo lvm''. Команда ''help'' покажет список команд.</note> | <note>Если планируются большие работы с LVM, то можно запустить специальную "оболочку" командой ''sudo lvm''. Команда ''help'' покажет список команд.</note> | ||
| Строка 10: | Строка 10: | ||
| Как уже отмечалось, LVM строится на основе разделов жёсткого диска и/или целых жёстких дисков. На каждом из дисков/разделов должен быть создан **физический том** (physical volume). К примеру, мы используем для LVM диск //sda// и раздел //sdb2//: | Как уже отмечалось, LVM строится на основе разделов жёсткого диска и/или целых жёстких дисков. На каждом из дисков/разделов должен быть создан **физический том** (physical volume). К примеру, мы используем для LVM диск //sda// и раздел //sdb2//: | ||
| - | <code>pvcreate /dev/sda | + | |
| - | pvcreate /dev/sdb2</code> | + | pvcreate /dev/sda |
| + | pvcreate /dev/sdb2 | ||
| На этих физических томах создаём **группу томов**, которая будет называться, скажем, //vg1//: | На этих физических томах создаём **группу томов**, которая будет называться, скажем, //vg1//: | ||
| - | <code>vgcreate -s 32M vg1 /dev/sda /dev/sdb2</code> | + | |
| + | vgcreate -s 32M vg1 /dev/sda /dev/sdb2 | ||
| Посмотрим информацию о нашей группе томов: | Посмотрим информацию о нашей группе томов: | ||
| - | <code>vgdisplay vg1</code> | + | |
| + | vgdisplay vg1 | ||
| Групп можно создать несколько, каждая со своим набором томов. Но обычно это не требуется. | Групп можно создать несколько, каждая со своим набором томов. Но обычно это не требуется. | ||
| Теперь в группе томов можно создать **логические тома** //lv1// и //lv2// размером 20 Гбайт и 30 Гбайт соответствено: | Теперь в группе томов можно создать **логические тома** //lv1// и //lv2// размером 20 Гбайт и 30 Гбайт соответствено: | ||
| - | <code>lvcreate -n lv1 -L 20G vg1 | + | |
| - | lvcreate -n lv2 -L 30G vg1</code> | + | lvcreate -n lv1 -L 20G vg1 |
| + | lvcreate -n lv2 -L 30G vg1 | ||
| Теперь у нас есть блочные устройства ///dev/vg1/lv1// и ///dev/vg1/lv2//. | Теперь у нас есть блочные устройства ///dev/vg1/lv1// и ///dev/vg1/lv2//. | ||
| Осталось создать на них файловую систему. Тут различий с обычными разделами нет: | Осталось создать на них файловую систему. Тут различий с обычными разделами нет: | ||
| - | <code>mkfs.ext4 /dev/vg1/lv1 | + | |
| - | mkfs.reiserfs /dev/vg1/lv2</code> | + | mkfs.ext4 /dev/vg1/lv1 |
| + | mkfs.reiserfs /dev/vg1/lv2 | ||
| Удаление LVM (или отдельных его частей, например, логических томов или групп томов) происходит в обратном порядке - сначала нужно отмонтировать разделы, затем удалить логические тома (''lvremove''), после этого можно удалить группы томов (''vgremove'') и ненужные физические тома (''pvremove''). | Удаление LVM (или отдельных его частей, например, логических томов или групп томов) происходит в обратном порядке - сначала нужно отмонтировать разделы, затем удалить логические тома (''lvremove''), после этого можно удалить группы томов (''vgremove'') и ненужные физические тома (''pvremove''). | ||
| Строка 32: | Строка 41: | ||
| Чтобы добавить новый винчестер //sdc// в группу томов, создадим физический том: | Чтобы добавить новый винчестер //sdc// в группу томов, создадим физический том: | ||
| - | <code>pvcreate /dev/sdc</code> | + | |
| + | pvcreate /dev/sdc | ||
| И добавим его в нашу группу: | И добавим его в нашу группу: | ||
| - | <code>vgextend vg1 /dev/sdc</code> | + | |
| + | vgextend vg1 /dev/sdc | ||
| Теперь можно создать ещё один логический диск (''lvcreate'') или увеличить размер существующего (''lvresize''). | Теперь можно создать ещё один логический диск (''lvcreate'') или увеличить размер существующего (''lvresize''). | ||
| Строка 40: | Строка 53: | ||
| Чтобы убрать из работающей группы томов винчестер //sda// сначала перенесём все данные с него на другие диски: | Чтобы убрать из работающей группы томов винчестер //sda// сначала перенесём все данные с него на другие диски: | ||
| - | <code>pvmove /dev/sda</code> | + | |
| + | pvmove /dev/sda | ||
| + | |||
| Затем удалим его из группы томов: | Затем удалим его из группы томов: | ||
| - | <code>vgreduce vg /dev/sda</code> | + | |
| + | vgreduce vg1 /dev/sda | ||
| И, наконец, удалим физический том: | И, наконец, удалим физический том: | ||
| - | <code>pvremove /dev/sda</code> | + | |
| - | Вообще-то, последняя команда просто убирает отметку о том, что диск является членом lvm, и особой пользы не приносит. После удаления из LVM для дальнейшего использования диск придётся переразбивать/форматировать. | + | pvremove /dev/sda |
| + | |||
| + | Вообще-то, последняя команда просто убирает отметку о том, что диск является членом lvm, и особой пользы не приносит. После удаления из LVM для дальнейшего использования диск придётся переразбивать/переформатировать. | ||
| ===== Изменение размеров ===== | ===== Изменение размеров ===== | ||
| LVM позволяет легко изменять размер логических томов. Для этого нужно сначала изменить сам логический том: | LVM позволяет легко изменять размер логических томов. Для этого нужно сначала изменить сам логический том: | ||
| - | <code>lvresize -L 40G vg1/lv2</code> | + | |
| + | lvresize -L 40G vg1/lv2 | ||
| а затем файловую систему на нём: | а затем файловую систему на нём: | ||
| - | <code>resize_reiserfs /dev/vg1/lv2</code> | ||
| - | <note important> Изменение размеров физического тома - затача весьма сложная и обычно не применяется. Целесообразнее и безопаснее удалить физический том, изменить размер раздела и создать том заново.</note> | + | resize2fs /dev/vg1/lv2 |
| + | resize_reiserfs /dev/vg1/lv2 | ||
| + | |||
| + | |||
| + | <note important> Изменение размеров физического тома - задача весьма сложная и обычно не применяется. Целесообразнее и безопаснее удалить физический том, изменить размер раздела и создать том заново.</note> | ||
| + | |||
| + | ===== Как просто попробовать ===== | ||
| + | |||
| + | Если LVM устанавливается не для дальнейшего использования, а "напосмотреть", то диски и разделы можно заменить файлами. Не понадобятся ни дополнительные диски, ни виртуальные машины. Мы создадим виртуальные накопители и будем с ними работать. Например, можно создать 4 диска по 1 Гбайт, но можно создать другое количество большего или меньшего размера как вам хочется. | ||
| + | Создаем сами файлы, имитирующие устройства: | ||
| + | <code>mkdir /mnt/sdc1/lvm | ||
| + | cd /mnt/sdc1/lvm | ||
| + | dd if=/dev/zero of=./d01 count=1 bs=1G | ||
| + | dd if=/dev/zero of=./d02 count=1 bs=1G | ||
| + | dd if=/dev/zero of=./d03 count=1 bs=1G | ||
| + | dd if=/dev/zero of=./d04 count=1 bs=1G | ||
| + | </code> | ||
| + | Создаем loopback устройства из файлов: | ||
| + | <code> | ||
| + | losetup -f --show ./d01 | ||
| + | losetup -f --show ./d02 | ||
| + | losetup -f --show ./d03 | ||
| + | losetup -f --show ./d04 | ||
| + | </code> | ||
| + | |||
| + | Дальше поступаем так же, как если бы ми создавали LVM на реальных дисках. Обратите внимание на названия loop-устройств --- они могут отличаться от приведённых здесь. | ||
| + | <code> | ||
| + | pvcreate /dev/loop0 | ||
| + | pvcreate /dev/loop1 | ||
| + | pvcreate /dev/loop2 | ||
| + | pvcreate /dev/loop3 | ||
| + | vgcreate -s 32M vg /dev/loop0 /dev/loop1 /dev/loop2 /dev/loop3 | ||
| + | lvcreate -n first -L 2G vg | ||
| + | lvcreate -n second -L 400M vg | ||
| + | ... | ||
| + | </code> | ||
| + | |||
| + | ===== Снапшоты ===== | ||
| + | |||
| + | Одна из важнейших особенностей LVM - это поддержка механизма снапшотов. Снапшоты позволяют сделать //мгновенный// снимок логического тома и использовать его в дальнейшем для работы с данными. | ||
| + | |||
| + | ==== Примеры использования ==== | ||
| + | |||
| + | LVM активно используется, когда необходим механизм снапшотов. Например, этот механизм крайне важен при бекапе постоянно меняющихся файлов. LVM позволяет заморозить некоторое состояние ФС и скопировать с неё все нужные данные, при этом на оригинальной ФС останавливать запись не нужно. | ||
| + | |||
| + | Также снапшоты можно применить для организации поддержки файловым сервером с [[Samba]] механизма архивных копий, об этом в соответствующей статье: | ||
| + | |||
| + | * [[samba_shadow_copy|Поддержка архивных копий файлов в Samba]] | ||
| + | |||
| + | ===== LVM с LiveCD ===== | ||
| + | |||
| + | Если у вас возникла необходимость работать с LVM с LiveCD Ubuntu, то вам придётся выполнить несколько дополнительных действий, поскольку по умолчанию утилит для работы с LVM нет. | ||
| + | |||
| + | Сначала вам нужно установить эти утилиты: | ||
| + | |||
| + | sudo apt-get install lvm2 | ||
| + | |||
| + | Далее посмотрите командами | ||
| + | |||
| + | sudo vgscan | ||
| + | sudo vgdisplay YOUR_VGNAME | ||
| + | |||
| + | доступность ваших групп томов. Ну а дальше запустите все группы командой | ||
| + | |||
| + | sudo vgchange -a y | ||
| + | |||
| + | Эта команда должна сообщить о том, что все ваши логические тома активированы. Теперь можно работать с ними обычным образом. | ||
| ===== Ссылки ===== | ===== Ссылки ===== | ||
| * [[wpru>LVM|Статья на русской Википедии.]] | * [[wpru>LVM|Статья на русской Википедии.]] | ||
| + | * [[http://const.tltsu.ru/articles/lvm.pdf|Константин Баранов, "Linux: Logical Volume Manager"]] | ||
| * [[http://xgu.ru/wiki/LVM|Подробное руководство по LVM на русском]] | * [[http://xgu.ru/wiki/LVM|Подробное руководство по LVM на русском]] | ||
| + | * [[http://forum.ubuntu.ru/index.php?topic=105829.0|Обсуждение на форуме]] | ||
| {{tag> Администрирование LVM HOWTO Сервер Linux_на_предприятии Можно_улучшить}} | {{tag> Администрирование LVM HOWTO Сервер Linux_на_предприятии Можно_улучшить}} | ||