Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
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_на_предприятии Можно_улучшить}} |