Ключевые слова:linux, lvm, partition, disk, fdisk, (найти похожие документы)
From: Иван Песин <[email protected]>
Newsgroups: gazette.linux.ru.net
Date: Mon, 10 May 2003 13:01:37 +0000 (UTC)
Subject: [Linux] Использование системы управления логическими томами
Ориганал: http://gazette.linux.ru.net/lg84/vinayak.html
Использование системы управления логическими томами
Автор: (c) 2002 Vinayak Hegde
Перевод: (c) 2003 Иван Песин <mailto:[email protected]>
_________________________________________________________________
Проблема
Задача, с которой сталкиваются все пользователи Linux, это оценка
размеров и разметка дискового пространства на разделы во время
установки системы. И не имеет значения, системный ли это
администратор, управляющий площадкой серверов, или это
обычный/продвинутый пользователь, обнаруживший, что у него
заканчивается место на диске. Звучит знакомо, не так ли? Вот и
начинается "борьба за место". О! У пользователя появляется блестящая
идея и проблема решена (после нескольких бессонных ночей) с
использованием разных некрасивых методов (читай: "грязных хаков") --
например, символических ссылок между разделами, или утилит для
изменения размеров разделов (parted). Но, в общем, это все временные
решения и рано или поздно мы снова встаем лицом к лицу с той же
проблемой.
Как хотелось, чтобы это проблема была решена!! Сидящий в тебе
экспериментатор хочет, чтобы у тебя была система, в которой можно
спокойно экспериментировать не оглядываясь на размеры разделов, а
дисковое пространство могло просто подключатся и удалятся по мере
надобности. Если же вы -- системный администратор, управляющий
серверами, постоянно подключенными к Internet, ставки гораздо выше.
Каждая минута простоя приносит убытки. И, возможно, что потенциальный
клиент не вернется на ваш сайт. Едва ли вы сможите избежать
необходимости перезагрузки, после изменений в таблице разделов. И так,
каждый раз, когда заканчивается дисковое пространство. LVM, Система
управления логическими томами, поможет вам выходить победителем в
таких ситуациях.
Введение в LVM
Linux LVM может сделать вашу жизнь легче. Эта система реализует более
высокий уровень абстракции при рассмотрении пространства хранилищ, чем
разделы или диски. LVM была внедрена в ядро Linux, начиная с серии
2.4.x (есть патчи для ядер серии 2.2.х - Прим.пер.). Перед тем как
перейти к детальному рассмотрению технологии LVM, рассмотрим некоторые
концепции и термины, которыми мы будем пользоваться.
Терминология LVM
* Физический том
Физический том -- обычно, это раздел жесткого диска (или весь
жесткий диск - Прим.пер.) или устройство, которое работает
аналогично разделу, например устройство RAID (в том числе и
программный - Прим.пер.).
* Логический том
Один и более физических томов образуют логический том. Логический
том LVM идеологически аналогичен разделу жесткого диска не-LVM
системы. Логический том может содержать файловую систему, например
/home или /usr.
* Группа томов
Один и более логических томов образуют группу томов. Группа томов
LVM идеологически аналогична жесткому диску в не-LVM системе.
Группа томов формирует из множества логических томов
административную единицу.
Как работает LVM
Теперь, владея терминологией LVM, посмотрим, как это все работает.
Каждый физический том делится на части, которые называются физическими
экстентами (Physical Extents, PE). Размер физических экстентов может
варьироваться, но един в пределах группы томов. В пределах физического
тома каждый физический экстент имеет уникальный номер. Физический
экстент -- минимальный блок пространства, который может быть адресован
системой LVM на физическом хранилище.
Аналогично, каждый логический том состоит из минимальных адресуемых
блоков, носящих название логических экстентов (Logical Extents, LE). В
пределах группы томов размер логического экстента равен размеру
физического. Очевидно, что размер логических экстентов одинаков для
всех логических томов группы.
Каждый PE обязательно имеет уникальный номер в пределах физического
тома, но не обязательно в пределах логического. Это связано с тем, что
логический том может состоят из нескольких физических, потому
уникальность идентификаторов PE невозможна. Следовательно, для
идентификации LE используются как идентификаторы LE, так и
соответствующие им PE. Как указывалось выше, существует
взаимно-однозначное отображение LE на PE. При каждом доступе к
хранилищу используется идентификатор LE для реальной работы с
физическим устройством.
Теперь возникает вопрос, где хранятся все эти мета-данные о логических
томах и группах томов. Как известно, в не-LVM системах, данные о
разделах хранятся в таблице разделов. В LVM системе существует область
дескрипторов группы томов (Volume Group Descriptor Area, VGDA),
работающая аналогично таблице разделов. Она хранится в начале каждого
физического тома.
VGDA содержит такие данные:
1. один дескриптор PV
2. один дескриптор VG
3. дескрипторы LV
4. несколько дескрипторов PE.
При старте системы активируются логические тома и группы томов, а VGDA
загружается в память. VGDA позволяет определить, где расположены LV.
При попытке системы обратиться к устройству, используется таблица
соответствия (при помощи VGDA) для определения физического адреса,
используемого в операции ввода-вывода.
Беремся за работу
Посмотрим, как используется LVM :
Шаг 1 - Конфигурация ядра
Перед началом работы с системой LVM, убедимся в наличии необходимых
модулей:
ваше ядро должно содержать поддержку LVM.
Включается она таким образом:
# cd /usr/src/linux
# make menuconfig
в меню :
Multi-device Support (RAID and LVM) -->
активировать такие опции:
[*] Multiple devices driver support (RAID and LVM)
<*> Logical volume manager (LVM) Support.
Шаг 2 - Проверка свободного места на диске
Это можно сделать командой:
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/hda1 3.1G 2.7G 398M 87% /
/dev/hda2 4.0G 3.2G 806M 80% /home
/dev/hda5 2.1G 1.0G 1.1G 48% /var
Шаг 3 - Создаете разделы LVM на вашем диске
При помощи fdisk, или любой другой утилиты, создайте разделы LVM. Тип
разделов linux LVM -- 8e.
# fdisk /dev/hda
нажмите p (для вывода всей таблицы разделов)
теперь n (для создания нового раздела)
После создания раздела Linux LVM выведите всю таблицу. Она должна
выглядеть примерно так:
Device Boot Start End Blocks Id System
/dev/hda1 * 1 506 4064413+ 83 Linux
/dev/hda2 507 523 136552+ 5 Extended
/dev/hda5 507 523 136521 82 Linux swap
/dev/hda6 524 778 2048256 8e Linux LVM
/dev/hda7 779 1033 2048256 8e Linux LVM
Шаг 4 - Создайте физические тома
# pvcreate /dev/hda6
pvcreate -- physical volume "/dev/hda6" successfully created
# pvcreate /dev/hda7
pvcreate -- physical volume "/dev/hda7" successfully created
Приведенные команды создают дескриптор группы томов в начале каждого
раздела.
Шаг 5 - Создание группы томов
Создание новой группы томов и добавление двух физических томов
происходит следующим образом:
# vgcreate test_lvm /dev/hda6 /dev/hda7
vgcreate- -- INFO: using default physical extent size 4 MB
vgcreate- -- INFO: maximum logical volume size is 255.99 Gigabyte
vgcreate- -- doing automatic backup of volume group "test_lvm"
vgcreate- -- volume group "test_lvm" successfully created and activated
В результате будет создана группа test_lvm, содержащая физические тома
/dev/hda6 и /dev/hda7. Можно также указать параметром команды размер
экстента, если размер в 4MB, по каким-либо причинам, нас не
устраивает.
Активация группы томов выполняется командой:
# vgchange -ay test_lvm
Для просмотра параметров существующих в вашей системе групп томов
используйте команду "vgdisplay".
# vgdisplay
--- Volume group ---
VG Name test_lvm
VG Access read/write
VG Status available/resizable
VG # 0
MAX LV 256
Cur LV 1
Open LV 0
MAX LV Size 255.99 GB
Max PV 256
Cur PV 2
Act PV 2
VG Size 3.91 GB
PE Size 4 MB
Total PE 1000
Alloc PE / Size 256 / 1 GB
Free PE / Size 744 / 2.91 GB
VG UUID T34zIt-HDPs-uo6r-cBDT-UjEq-EEPB-GF435E
Шаг 6 - Создание логических томов.
Команда lvcreate используется для создания логических томов в группе.
# lvcreate -L2G -nlogvol1 test_lvm
Шаг 7 - Создание файловой системы
Теперь нужно создать на логическом томе файловую систему. Допусти мы
выбрали для данного тома журналируемую файловую систему reiserfs:
# mkreiserfs /dev/test_lvm/logvol1
Осталось ее смонтировать командой:
# mount -t reiserfs /dev/test_lvm/logvol1 /mnt/lv1
Шаг 8 - Добавить записи в файлы /etc/fstab и /etc/lilo.conf
Для того, чтобы новая файловая система автоматически монтировалась при
загрузке системы, добавьте следующую запись в файл /etc/fstab
/dev/test_lvm/logvol1 /mnt/lv1 reiserfs defaults 1 1
Если вы пересобирали ядро, скоприруйте его в каталог /boot. Можно
присвоить ему другое имя, тогда вы будете иметь выбор между двумя
конфигурациями, одна из которых поддерживает LVM. В этом случае в файл
/etc/lilo.conf нужно добавить такие строки:
image = /boot/lvm_kernel_image
label = linux-lvm
root = /dev/hda1
initrd = /boot/init_image
ramdisk = 8192
После изменения файла /etc/lilo.conf выполните команду
# /sbin/lilo
Шаг 9 - Изменение размеров логических томов
Логические тома позволяют легко менять свои размеры. Для этого
используется команда lvextend. Пример расширения логического тома:
# lvextend -L+1G /dev/test_lvm/logvol1
lvextend -- extending logical volume "/dev/test_lvm/logvol1" to 3GB
lvextend -- doing automatic backup of volume group "test_lvm"
lvextend -- logical volume "/dev/test_lvm/logvol1" successfully extended
Аналогично, пример уменьшения размера логического тома:
# lvreduce -L-1G /dev/test_lvm/lv1
lvreduce -- -Warning: reducing active logical volume to 2GB
lvreduce- -- This may destroy your data (filesystem etc.)
lvreduce -- -do you really want to reduce "/dev/test_lvm/lv1"? [y/n]: y
lvreduce- -- doing automatic backup of volume group "test_lvm"
lvreduce- -- logical volume "/dev/test_lvm/lv1" successfully reduced
Заключение
Как видно из нашего рассказа, LVM -- это полностью масштабируемое и
очень простое в использовании решение. После настройки групп томов
размеры логических томов легко меняются по необходимости.
Ресурсы
* Домашняя страница LVM http://www.sistina.com/products_lvm.htm
* Документ LVM HOWTO http://www.tldp.org/HOWTO/LVM-HOWTO/index.html
_________________________________________________________________
Copyright (c) 2002, Vinayak Hegde. Copying license
http://www.linuxgazette.com/copying.html
Published in Issue 84 of Linux Gazette, November 2002