arch-wiki-md-repo
Version:
All arch-wiki articles in markdown format, updated every two days.
395 lines (245 loc) • 25.5 kB
Markdown
## Contents
* [1 Введение](#.D0.92.D0.B2.D0.B5.D0.B4.D0.B5.D0.BD.D0.B8.D0.B5)
* [2 Установка](#.D0.A3.D1.81.D1.82.D0.B0.D0.BD.D0.BE.D0.B2.D0.BA.D0.B0)
* [2.1 Установка Arch Linux на LVM](#.D0.A3.D1.81.D1.82.D0.B0.D0.BD.D0.BE.D0.B2.D0.BA.D0.B0_Arch_Linux_.D0.BD.D0.B0_LVM)
* [2.2 Разметка дисков](#.D0.A0.D0.B0.D0.B7.D0.BC.D0.B5.D1.82.D0.BA.D0.B0_.D0.B4.D0.B8.D1.81.D0.BA.D0.BE.D0.B2)
* [2.3 Создание физических томов(PV)](#.D0.A1.D0.BE.D0.B7.D0.B4.D0.B0.D0.BD.D0.B8.D0.B5_.D1.84.D0.B8.D0.B7.D0.B8.D1.87.D0.B5.D1.81.D0.BA.D0.B8.D1.85_.D1.82.D0.BE.D0.BC.D0.BE.D0.B2.28PV.29)
* [2.4 Создание группы логических томов](#.D0.A1.D0.BE.D0.B7.D0.B4.D0.B0.D0.BD.D0.B8.D0.B5_.D0.B3.D1.80.D1.83.D0.BF.D0.BF.D1.8B_.D0.BB.D0.BE.D0.B3.D0.B8.D1.87.D0.B5.D1.81.D0.BA.D0.B8.D1.85_.D1.82.D0.BE.D0.BC.D0.BE.D0.B2)
* [2.5 Создание логических томов](#.D0.A1.D0.BE.D0.B7.D0.B4.D0.B0.D0.BD.D0.B8.D0.B5_.D0.BB.D0.BE.D0.B3.D0.B8.D1.87.D0.B5.D1.81.D0.BA.D0.B8.D1.85_.D1.82.D0.BE.D0.BC.D0.BE.D0.B2)
* [2.6 Создание файловых систем и их монтирование](#.D0.A1.D0.BE.D0.B7.D0.B4.D0.B0.D0.BD.D0.B8.D0.B5_.D1.84.D0.B0.D0.B9.D0.BB.D0.BE.D0.B2.D1.8B.D1.85_.D1.81.D0.B8.D1.81.D1.82.D0.B5.D0.BC_.D0.B8_.D0.B8.D1.85_.D0.BC.D0.BE.D0.BD.D1.82.D0.B8.D1.80.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5)
* [2.7 Важно](#.D0.92.D0.B0.D0.B6.D0.BD.D0.BE)
* [3 Настройка](#.D0.9D.D0.B0.D1.81.D1.82.D1.80.D0.BE.D0.B9.D0.BA.D0.B0)
* [3.1 Увеличение размера логического тома](#.D0.A3.D0.B2.D0.B5.D0.BB.D0.B8.D1.87.D0.B5.D0.BD.D0.B8.D0.B5_.D1.80.D0.B0.D0.B7.D0.BC.D0.B5.D1.80.D0.B0_.D0.BB.D0.BE.D0.B3.D0.B8.D1.87.D0.B5.D1.81.D0.BA.D0.BE.D0.B3.D0.BE_.D1.82.D0.BE.D0.BC.D0.B0)
* [3.2 Уменьшение размера логического тома](#.D0.A3.D0.BC.D0.B5.D0.BD.D1.8C.D1.88.D0.B5.D0.BD.D0.B8.D0.B5_.D1.80.D0.B0.D0.B7.D0.BC.D0.B5.D1.80.D0.B0_.D0.BB.D0.BE.D0.B3.D0.B8.D1.87.D0.B5.D1.81.D0.BA.D0.BE.D0.B3.D0.BE_.D1.82.D0.BE.D0.BC.D0.B0)
* [3.3 Добавить раздел к логической группе](#.D0.94.D0.BE.D0.B1.D0.B0.D0.B2.D0.B8.D1.82.D1.8C_.D1.80.D0.B0.D0.B7.D0.B4.D0.B5.D0.BB_.D0.BA_.D0.BB.D0.BE.D0.B3.D0.B8.D1.87.D0.B5.D1.81.D0.BA.D0.BE.D0.B9_.D0.B3.D1.80.D1.83.D0.BF.D0.BF.D0.B5)
* [3.4 Удаление раздела из логической группы](#.D0.A3.D0.B4.D0.B0.D0.BB.D0.B5.D0.BD.D0.B8.D0.B5_.D1.80.D0.B0.D0.B7.D0.B4.D0.B5.D0.BB.D0.B0_.D0.B8.D0.B7_.D0.BB.D0.BE.D0.B3.D0.B8.D1.87.D0.B5.D1.81.D0.BA.D0.BE.D0.B9_.D0.B3.D1.80.D1.83.D0.BF.D0.BF.D1.8B)
* [3.5 Клонирование](#.D0.9A.D0.BB.D0.BE.D0.BD.D0.B8.D1.80.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5)
* [3.5.1 Введение](#.D0.92.D0.B2.D0.B5.D0.B4.D0.B5.D0.BD.D0.B8.D0.B5_2)
* [3.5.2 Настрйка](#.D0.9D.D0.B0.D1.81.D1.82.D1.80.D0.B9.D0.BA.D0.B0)
* [4 Решение проблем](#.D0.A0.D0.B5.D1.88.D0.B5.D0.BD.D0.B8.D0.B5_.D0.BF.D1.80.D0.BE.D0.B1.D0.BB.D0.B5.D0.BC)
* [4.1 LVM команды не работают](#LVM_.D0.BA.D0.BE.D0.BC.D0.B0.D0.BD.D0.B4.D1.8B_.D0.BD.D0.B5_.D1.80.D0.B0.D0.B1.D0.BE.D1.82.D0.B0.D1.8E.D1.82)
* [4.2 Не видно логические тома](#.D0.9D.D0.B5_.D0.B2.D0.B8.D0.B4.D0.BD.D0.BE_.D0.BB.D0.BE.D0.B3.D0.B8.D1.87.D0.B5.D1.81.D0.BA.D0.B8.D0.B5_.D1.82.D0.BE.D0.BC.D0.B0)
* [5 Ещё по теме](#.D0.95.D1.89.D1.91_.D0.BF.D0.BE_.D1.82.D0.B5.D0.BC.D0.B5)
# Введение
Менеджер логических томов (англ. Logical Volume Manager) — менеджер логических томов. В отличие от разделов жёсткого диска, размеры логических томов можно легко менять.
Устройство LVM:
* **Физический том(англ. physical volume)**: Раздел на жёстком диске или жёсткий диск на котором создаются логические тома.
* **Группа томов (англ. volume group)**: Набор физических томов в один объект. Содержат логические тома.Группу томов можно представить как жёсткие диски.
* **Логический том (англ. logical volume)**: аналогичен разделу (hda1, sdа1) на не-LVM системах. Так же, как и на них, представляется как блочное устройство и может нести файловую систему.
* **Физический диапазон (англ. physical extent)** : Небольшая часть диска(обычно имеет размер 4MB), которая может быть добавлена к логическому тому. Может быть добавлен к любому разделу.
* **Логические диапазоны (англ. logical extent)**: диапазоны, на которые разбивается логический том. Их объём одинаков по всей группе томов.
Преимущества LVM:
* использование любого количества жёстких дисков или их разделов как один большой раздел.
* логические тома могут быть "размазаны" на несколько жёстких дисков. Максимальный размер равен объёму всех жёстких дисков.
* изменение/создание/удаление логических томов в любом виде. То есть не зависит от физического расположения тома.
* изменение/создание/удаление логических томов и групп томов в режиме "online"(Внимание: не все файловые системы, поддерживают изменение размере в режиме "online")
* Снапшоты позволяют создавать резервную копию замороженной файловой системы практически на лету.
* Поддержка устройств для различных целей, включая прозрачное шифрование файловой системы и кэширования часто используемых данных.
* динамическое увеличение размера логических томов по мере их наполнения. Увеличение размера производится пользователем, некоторые файловые системы поддерживают изменение размера в режиме "online".
Недостатки :
* Только Linux-совместимый . Отсутствие официальной поддержки в большинстве других ОС(FreeBSD, Windows..).
* Дополнительные шаги в более сложной настройке системы
Пример:
```
**Жёсткий диск**
Disk1 (/dev/sda):
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|Partition1 50GB (Physical volume) |Partition2 80GB (Physical volume) |
|/dev/sda1 |/dev/sda2 |
|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
Disk2 (/dev/sdb):
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|Partition1 120GB (Physical volume) |
|/dev/sdb1 |
| _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ _ _|
```
```
**Логические тома**
Volume Group1 (/dev/MyStorage/ = /dev/sda1 + /dev/sda2 + /dev/sdb1):
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|Logical volume1 15GB |Logical volume2 35GB |Logical volume3 200GB |
|/dev/MyStorage/rootvol|/dev/MyStorage/homevol |/dev/MyStorage/mediavol |
|_ _ _ _ _ _ _ _ _ _ _ |_ _ _ _ _ _ _ _ _ _ _ _ _ |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
```
В сумме получается: объединение всего доступного места в одну группу томов(LV) и более гибкий контроль над разделами(логическими томами)
# Установка
Перед началом установки нужно загрузить модуль ядра:
```
# modprobe dm-mod
```
Если вы уже установили Arch Linux и хотите попробовать LVM в действии, перейдите сразу к [partition disks](/index.php/LVM#Partition_disks "LVM").
#### Установка Arch Linux на LVM
Перед запуском /arch/setup нужно разметить жёсткий диск. Например с помощью `cfdisk`. Загрузчик grub версии ниже 1.0 не поддерживает загрузку с томов LVM, поэтому раздел `/boot` должен быть расположен на загрузочном разделе(100МБ должно хватить) либо используйте lilo или grub версии 1.95 и выше.
#### Разметка дисков
Для начала нужно создать раздел для LVM. Тип файловой системы должен быть 'Linux LVM' поэтому при разметке используйте id 0x8e (тип файловой системы: 8e). Для работы LVM требует наличие одного раздела типа 'Linux LVM' на каждом жёстком диске, который вы хотите использовать с LVM. Логические тома находятся внутри этих разделов, поэтому задайте им соответствующий размер. Если вы предполагаете не создавать других разделов на этих дисках - используйте всё доступное место на каждом диске.
**Важно:** /boot не может находиться внутри LVM раздела т.к. grub (версии<1.95) не имеет поддержки загрузки с LVM.
**Tip:** Все разделы LVM на всех дисках могут быть представлены в виде одного большого диска.
#### Создание физических томов(PV)
Произведите инициализацию разделов чтобы LVM мог использовать их. Используйте `fdisk -l` чтобы найти разделы с файловой системой 'Linux LVM' и создайте в них физические тома:
```
# pvcreate /dev/sda2
```
Замените `/dev/sda2` на имена разделов на вашей системе. Эта команда поместит заголовок на каждый раздел. Теперь он может быть использован LVM. Отобразить все разделы, которые LVM может использовать, можно с помощью:
```
# pvdisplay
```
#### Создание группы логических томов
Следующий шаг - это создание логических томов внутри физических томов. Выполните следующую команду на каждом физическом томе:
```
# vgcreate VolGroup00 /dev/sda2
# vgextend VolGroup00 /dev/sdb1
```
Метку "VolGroup00" можно заменить на любую другую. Отобразить все доступные логические тома можно с помощью:
```
# vgdisplay
```
**Примечание:** Можно создать несколько логических групп, но тогда они будут видны в системе в виде нескольких дисков.
#### Создание логических томов
Теперь нужно создать логические тома внутри группы томов. Следующая команда создаст логический том внутри "VolGroup00" с размером 10GB и меткой "lvolhome"
```
# lvcreate -L 10G VolGroup00 -n lvolhome
```
Этот том будет доступен позже как устойство `/dev/mapper/Volgroup00-lvolhome` или `/dev/VolGroup00/lvolhome`. Как и в случае в логическими томами, метка логического тома может быть выбрана на ваше усмотрение.
Чтобы создать раздел swap внутри тома, нужен дополнительный параметр:
```
# lvcreate -C y -L 10G VolGroup00 -n lvolswap
```
`-C y` создаст монолитный раздел, то есть раздел swap будет создан на одном диске и не будет "размазан" на несколько устройств или физических расширений.
Если вы хотите использовать всё оставшееся свободное место внутри группы томов, выполните:
```
# lvcreate -l +100%FREE VolGroup00 -n lvolmedia
```
Логические тома можно отобразить командой:
```
# lvdisplay
```
**Примечание:** возможно потребуется загрузка модуля ядра (**modprobe dm-mod**)
**Tip:** Для начала можно создать относительно небольшие тома и позже по мере надобности их расширить. Оставьте свободное место внутри группы томов, чтобы было место для последующего увеличения разделов.
#### Создание файловых систем и их монтирование
Ваши логические тома должны быть доступны по следующему пути: `/dev/mapper/` и `/dev/YourVolumeGroupName`. Если их там нет, загрузите модуль ядра и сделайте группы доступными:
```
# modprobe dm-mod
# vgchange -ay
```
Теперь можно создать файловые системы внутри логических томов и смонтировать их как обычные разделы.Если вы устанавливаете Arch Linux, пропустите этот шаг и используйте программу установки для выбора LVM разделов, которые вы создали.
```
# mkfs.ext3 /dev/mapper/VolGroup00-lvolhome
# mount /dev/mapper/VolGroup00-lvolhome /home
```
Если вы устанавливаете Arch Linux, выполните /arch/setup, перейдите к *Prepare Hard Drive* далее сразу выберите *Set Filesystem Mountpoints* и ***прочтите абзац [Важно](/index.php/LVM#.D0.92.D0.B0.D0.B6.D0.BD.D0.BE "LVM") перед тем как продолжить!***
### Важно
Осталось всего несколько шагов, будьте внимательны при использовании/установке Arch Linux на LVM(в скобках указаны соответствующие меню во время установки):
1. Во время выбора точек монтирования выберете только что созданные логические тома(используйте: `/dev/mapper/Volgroup00-lvolhome`).
НЕ выбирайте физические разделы на которых были созданы логические тома(не используйте: `/dev/sda2`). (*Set Filesystem Mountpoints*)
2. Убедитесь, что вы заменили *USELVM="no"* на *USELVM="yes"*
3. Убедитесь, что *lvm2* находится в секции HOOKS в `/etc/mkinitcpio.conf` непосредственно перед *filesystems*, для того чтобы ядро смогло найти LVM во
время загрузки. Если вы хотите использовать LVM образы(англ. snapshots) добавьте *dm-snapshot* к переменной MODULES (*Configure System*)
1. Убедитесь, что в `/boot/grub/menu.lst` указаны правильные тома для раздела /root.(*Install Bootloader*)
Пример `/boot/grub/menu.lst`
```
...
# (0) Arch Linux
title Arch Linux
root (hd0,0)
kernel /vmlinuz26 **root=/dev/mapper/VolGroup00-lvolroot** resume=/dev/mapper/VolGroup00-lvolswap ro
initrd /kernel26.img
...
```
If you are using LILO check `/etc/lilo.conf`:
```
image=/boot/vmlinuz26
label=arch
append="**root=/dev/mapper/VolGroup00-lvolroot** resume=/dev/mapper/VolGroup00-lvolswap ro"
initrd=/boot/kernel26.img
```
# Настройка
## Увеличение размера логического тома
Для этого нужно увеличить сам том и затем размер файловой системы на нём. Представим, что у нас есть логический том размером 15Гб с ext3 на нём. Увеличим его размер до 20Гб:
```
# lvextend -L 20G VolGroup00/lvolhome (или lvresize -L +5G VolGroup00/lvolhome)
# resize2fs /dev/VolGroup00/lvolhome
```
Вы можете использовать `lvresize` вместо `lvextend`.
Если вы хотите заполнить всё свободное место в группе томов:
```
# lvextend -l +100%FREE VolGroup00/lvolhome
```
**Важно:** Не все файловые системы поддерживают изменение раздела в режиме "online" без потери данных.
**Примечание:** Если вы не увеличите размер файловой системы, вы не сможете использовать свободное место добавленное к логическому тому.
## Уменьшение размера логического тома
Скорее всего размер файловой системы такой-же как и логического тома, поэтому сначала нужно уменьшить её размет и только потом уменьшать размер тома. Дальнейшие действия зависят от типа файловой системы, возможно вам нужно отмонтировать её. Для логического тома размером 15ГБ и ext3 уменьшение размера до 10ГБ выглядит следующим образом:
```
# resize2fs /dev/VolGroup00/lvolhome 9G
# lvreduce -L 10G VolGroup00/lvolhome (или lvresize -L -5G VolGroup00/lvolhome)
# resize2fs /dev/VolGroup00/lvolhome
```
В данном случае мы уменьшили размер файловой системы до 9Гб чтобы при уменьшении размера логического тома, случайно, не потерять данные в конце файловой системы. После этого размер файловой системы можно увеличить. Вы можете использовать `lvresize` вместо `lvreduce`.
**Важно:** Не уменьшайте размер файловой системы, до размера меньшего чем объём данных на ней, иначе вы рискуете потерять данные.
**Важно:** Не все файловые системы поддерживают изменение раздела в режиме "online" без потери данных.
**Примечание:** Рекомендуется задать размер файловой системы меньше чем логического тома чтобы при уменьшении размера логического тома, случайно, не потерять данные в конце файловой системы.
## Добавить раздел к логической группе
Тип раздела должен быть 'Linux LVM'. Используйте, например, `cfdisk`. После этого нужно создать физический том на этом разделе и затем добавить его к логической группе:
```
# pvcreate /dev/sdb1
# vgextend VolGroup00 /dev/sdb1
```
**Tip:** К логической группе могут быть добавлены разделы с любого диска в вашей системе.
## Удаление раздела из логической группы
Перед удаление нужно переместить данные на другой раздел. LVM легко с этим справится:
```
# pvmove /dev/sdb1
```
Если вы хотите чтобы данные были перемещены на определённый физический том, передайте его в качестве второго аргумента командной строки:
```
# pvmove /dev/sdb1 /dev/sdf1
```
Если физический том должен быть удалён из группы томов:
```
# vgreduce myVg /dev/sdb1
```
Или удалите все пустые физические тома:
```
# vgreduce --all vg0
```
И наконец если вы хотите использовать раздел для чего-то другого и отвязать его от LVM совсем:
```
# pvremove /dev/sdb1
```
## Клонирование
#### Введение
LVM может создавать образ вашей системы по эффективно чем традиционные способы резервного копирования. Достигается это тем, что пока идёт создание клона при изменении исходного тома сначала начальная версия копируется в образ (англ. snapshot) и только потом изменяется. Начальный образ содержит только жёсткие ссылки(hard-links) к индексным дескриптором(inodes) ваших данных и использует их всё время пока данные не были изменены. Так система с размером в 35Гб может использовать только 2ГБ свободного места если в сумме в образе и в оригинале было изменено меньше 2ГБ.
#### Настрйка
Клон логического тома создаётся так-же как обычный том:
```
# lvcreate --size 100M --snapshot --name snap01 /dev/mapper/vg0-pv
```
На этом томе можно изменять менее 100Мб данных, после этого образ(snapshot) будет заполнен полностью)
*dm-snapshot* должен быть в переменной MODULES в `/etc/mkinitcpio.conf`, иначе система не загрузится
```
# mkinitcpio -g /boot/kernel26.img
```
Образы используются в первую очередь для создания замороженной копии файловой системы чтобы уже с неё делать резервную копию.
# Решение проблем
#### LVM команды не работают
* Загрузите модуль ядра:
```
# modprobe dm-mod
```
* Попробуйте использовать префикс *lvm*:
```
# lvm pvdisplay
```
#### Не видно логические тома
При установке на систему с уже существующей группой томов, вы можете не увидеть логические тома даже после "modprobe dm-mod".
В этом случае вам возможно прийдётся выполнить:
```
# vgchange -ay <volgroup>
```
# Ещё по теме
Другие статьи на Arch Wiki:
* [Installing with software RAID or LVM_(Русский)](/index.php/Installing_with_Software_RAID_or_LVM "Installing with Software RAID or LVM")
* [RAID encryption LVM_(Русский)](/index.php/RAID_Encryption_LVM "RAID Encryption LVM")
Внешние ссылки:
* [LVM on wikipedia](https://en.wikipedia.org/wiki/Logical_Volume_Manager_(Linux) "wikipedia:Logical Volume Manager (Linux)")
* [LVM HOWTO on tldp.org](http://tldp.org/HOWTO/LVM-HOWTO/)
* [LVM at en.gentoo-wiki.com](http://wiki.gentoo.org/wiki/LVM)