igor@0: \section{Система управления томами LVM} igor@0: igor@0: Система управления логическими томами особенно полезна в работе с серверами, поскольку обеспечивает масштабируемость и удобное управление дисковым пространством. Она упрощает планирование дискового пространства и предотвращает проблемы, возникающие при неожиданно быстром росте занятого места в разделах. LVM не предназначен для обеспечения отказоустойчивости или высокой производительности. Потому он часто используется в сочетании с системами RAID. igor@0: igor@0: Здесь описывается процесс установки и использования менеджера логических томов на Linux-системе. LVM (Logical Volume Manager), менеджер логических томов -- это система управления дисковым пространством, абстрагирующаяся от физических устройств. Она позволяет эффективно использовать и легко управлять дисковым пространством. LVM обладает хорошей масштабируемостью, уменьшает общую сложность системы. У логических томов, созданных с помощью LVM, можно легко изменить размер, а их названия могут нести большую смысловую нагрузку, в отличие от традиционных /dev/sda, /dev/hda {\dots} igor@0: igor@0: Реализации менеджеров логических томов существуют практически во всех UNIX-подобных операционных системах. Зачастую они сильно отличаются в реализации, но все они основаны на одинаковой идее и преследуют аналогичные цели. Одна из основных реализаций была выполнена Open Software Foundation (OSF) и сейчас входит в состав многих систем, например IBM AIX, DEC Tru64, HP/UX. Она же послужила и основой для Linux-реализации LVM. igor@0: igor@0: Помимо собственно системы LVM и основных операций по её использованию, igor@0: рассмотрены несколько более углублённых вопросов. igor@0: igor@0: Один из вопросов это использование \textbf{kpartx} из igor@0: пакета \textbf{multipath-tools} для построения карты устройства (device map) igor@0: и \textit{рекурсивного доступа к томам LVM} (когда LVM развёрнут на разделах, созданных внутри igor@0: логического тома LVM более низкого уровня). Это может быть полезно igor@0: при использовании LVM совместно с системами виртуализации. igor@0: igor@0: Второй вопрос --- это использование постоянных снимков igor@0: (persistent snapshot) для быстрого \textit{клонирования разделов}. igor@0: Эта возможность может быть полезна как при выполнении резервного копирования, igor@0: так и при быстром создании виртуальных машин в системах виртуализации igor@0: (вопрос создания снапшотов затрагивался и в \textit{повести}, но здесь он рассмотрен более детально). igor@0: igor@0: Третий вопрос --- это \textit{сравнение LVM и файловой системой ZFS}, набирающей igor@0: в последнее время большую популярность. igor@0: На первый взгляд такое сравнение может показаться странным, ведь ZFS -- это файловая система, igor@0: а LVM -- система управления томами, то есть нечто, что находится на уровень ниже файловой системы. igor@0: В действительности, сравнение вполне имеет право на существование, поскольку ZFS это не просто файловая система, igor@0: а нечто большее. В ней присутствует уровень \dq{}storage pool\dq{}, который берёт на себя те же задачи, что и LVM. igor@0: igor@0: % Шифрование LVM-томов и замер скорости обращения к LVM-томам. igor@0: igor@0: \subsection{Введение} igor@0: igor@0: igor@0: \subsubsection{Терминология.} igor@0: Поскольку система управления логическими томами использует собственную модель представления дискового пространства, нам будет необходимо определиться с терминами и взаимосвязями понятий. Рассмотрим схему, основанную на диаграмме Эрика Бегфорса (Erik Bеgfors), приведенную им в списке рассылки linux-lvm. Она демонстрирует взаимосвязь понятий системы LVM: igor@0: igor@0: \begin{verbatim} igor@0: sda1 sda2 sdb sdc <-- PV igor@0: | | | | igor@0: | | | | igor@0: +--------+- VG00 -+-------+ <-- VG igor@0: | igor@0: +-------+-------+---------+ igor@0: | | | | igor@0: root usr home var <-- LV igor@0: | | | | igor@0: ext3 reiserfs reiserfs xfs <-- Файловые системы igor@0: \end{verbatim} igor@0: igor@0: Обозначения и понятия: igor@0: igor@0: \begin{itemize} igor@0: \item \textit{PV, Physical volume, физический том.} Обычно это раздел на диске или весь диск. В том числе, устройства программного и аппаратного RAID (которые уже могут включать в себя несколько физических дисков). Физические тома входят в состав группы томов. igor@0: \item \textit{VG, Volume group, группа томов.} Это самый верхний уровень абстрактной модели, используемой системой LVM. С одной стороны группа томов состоит из физических томов, с другой -- из логических и представляет собой единую административную единицу. igor@0: \item \textit{LV, Logical volume, логический том.} Раздел группы томов, эквивалентен разделу диска в не-LVM системе. Представляет собой блочное устройство и, как следствие, может содержать файловую систему. igor@0: \item \textit{PE, Physical extent, физический экстент.} Каждый физический том делится на порции данных, называющиеся физическими экстентами. Их размеры те же, что и у логических экстентов. igor@0: \item \textit{LE, Logical extent, логический экстент.} Каждый логический том делится на порции данных, называющиеся логическими экстентами. Размер логических экстентов не меняется в пределах группы томов. igor@0: \end{itemize} igor@0: igor@0: Давайте теперь соединим все эти понятия в общую картину. Пусть у нас имеется группа томов VG00 с размером физического экстента 4Мб. В эту группу мы добавляем два раздела, /dev/hda1 и /dev/hdb1. Эти разделы становятся физическими томами, например PV1 и PV2 (символьные имена присваивает администратор, так что они могут быть более осмысленными). Физические тома делятся на 4-х мегабайтные порции данных, т.к. это размер логического экстента. Диски имеют разный размер: PV1 получается размером в 99 экстентов, а PV2 -- размером в 248 экстентов. Теперь можно приступать к созданию логических томов, размером от 1 до 347 (248+99) экстентов. При создании логического тома, определяется отображение между логическими и физическими экстентами. Например, логический экстент 1 может отображаться в физический экстент 51 тома PV1. В этом случае, данные, записанные в первые 4Мб логического экстента 1, будут в действительности записаны в 51-й экстент тома PV1. igor@0: igor@0: Администратор может выбрать алгоритм отображения логических экстентов в физические. На данный момент доступны два алгоритма: igor@0: \begin{enumerate} igor@0: \item Линейное отображение последовательно назначает набор физических экстентов области логического тома, т.е. LE 1 -- 99 отображаются на PV1, а LE 100 -- 347 -- на PV2. igor@0: \item "Расслоенное" (striped) отображение разделяет порции данных логических экстентов на определенное количество физических томов. То есть: igor@0: \end{enumerate} igor@0: igor@0: \begin{verbatim} igor@0: 1-я порция данных LE[1] -> PV1[1], igor@0: 2-я порция данных LE[1] -> PV2[1], igor@0: 3-я порция данных LE[1] -> PV3[1], igor@0: 4-я порция данных LE[1] -> PV1[2], и т.д. igor@0: \end{verbatim} igor@0: igor@0: Похожая схема используется в работе RAID нулевого уровня. В некоторых ситуациях этот алгоритм отображения позволяет увеличить производительность логического тома. Однако он имеет значительное ограничение: логический том с данным отображением не может быть расширен за пределы физических томов, на которых он изначально и создавался. igor@0: igor@0: Великолепная возможность, предоставляемая системой LVM -- это \dq{}снапшоты\dq{}. Они позволяют администратору создавать новые блочные устройства с точной копией логического тома, \dq{}замороженного\dq{} в какой-то момент времени. Обычно это используется в пакетных режимах. Например, при создании резервной копии системы. Однако при этом вам не будет нужно останавливать работающие задачи, меняющие данные на файловой системе. Когда необходимые процедуры будут выполнены, системный администратор может просто удалить устройство-\dq{}снапшот\dq{}. Ниже мы рассмотрим работу с таким устройством. igor@0: Работа с LVM igor@0: igor@0: Давайте теперь рассмотрим задачи, стоящие перед администратором LVM системы. Помните, что для работы с системой LVM ее нужно инициализировать командами: igor@0: \begin{verbatim} igor@0: %# vgscan igor@0: %# vgchange -ay igor@0: \end{verbatim} igor@0: igor@0: Первая команда сканирует диски на предмет наличия групп томов, вторая активирует все найденные группы томов. Аналогично для завершения всех работ, связанных с LVM, нужно выполнить деактивацию групп: igor@0: \begin{verbatim} igor@0: %# vgchange -an igor@0: \end{verbatim} igor@0: igor@0: Первые две строки нужно будет поместить в скрипты автозагрузки (если их там нет), а последнюю можно дописать в скрипт shutdown. igor@0: igor@0: \subsubsection{Инициализация дисков и разделов} igor@0: Перед использованием диска или раздела в качестве физического тома необходимо его инициализировать: igor@0: igor@0: Для целого диска: igor@0: \begin{verbatim} igor@0: %# pvcreate /dev/hdb igor@0: \end{verbatim} igor@0: igor@0: Эта команда создает в начале диска дескриптор группы томов. igor@0: igor@0: Если вы получили ошибку инициализации диска с таблицей разделов -- проверьте, что работаете именно с нужным диском, и когда полностью будете уверены в том, что делаете, выполните следующие команды igor@0: \begin{verbatim} igor@0: %# dd if=/dev/zero of=/dev/diskname bs=1k count=1 igor@0: %# blockdev --rereadpt /dev/diskname igor@0: \end{verbatim} igor@0: igor@0: Эти команды уничтожат таблицу разделов на целевом диске. igor@0: igor@0: Для разделов: igor@0: igor@0: Установите программой fdisk тип раздела в 0x8e. igor@0: \begin{verbatim} igor@0: %# pvcreate /dev/hdb1 igor@0: \end{verbatim} igor@0: igor@0: Команда создаст в начале раздела /dev/hdb1 дескриптор группы томов. igor@0: igor@0: \subsubsection{Создание группы томов} igor@0: Для создания группы томов используется команда \rq{}vgcreate\rq{} igor@0: \begin{verbatim} igor@0: %# vgcreate vg00 /dev/hda1 /dev/hdb1 igor@0: \end{verbatim} igor@0: igor@0: Если вы используете devfs важно указывать полное имя в devfs, а не ссылку в каталоге /dev. Таким образом приведенная команда должна выглядеть в системе с devfs так: igor@0: \begin{verbatim} igor@0: %# vgcreate vg00 /dev/ide/host0/bus0/target0/lun0/part1 \ igor@0: /dev/ide/host0/bus0/target1/lun0/part1 igor@0: \end{verbatim} igor@0: igor@0: Кроме того, вы можете задать размер экстента при помощи ключа \dq{}-s\dq{}, если значение по умолчанию в 32Мб вас не устраивает. Можно, также, указать ограничения возможного количества физических и логических томов. igor@0: igor@0: \subsubsection{Активация группы томов} igor@0: После перезагрузки системы или выполнения команды vgchange -an, ваши группы томов и логические тома находятся в неактивном состоянии. Для их активации необходимо выполнить команду igor@0: \begin{verbatim} igor@0: %# vgchange -a y vg00 igor@0: \end{verbatim} igor@0: igor@0: \subsubsection{Удаление группы томов} igor@0: Убедитесь, что группа томов не содержит логических томов. Как это сделать, показано в следующих разделах. igor@0: igor@0: Деактивируйте группу томов: igor@0: \begin{verbatim} igor@0: %# vgchange -a n vg00 igor@0: \end{verbatim} igor@0: igor@0: Теперь можно удалить группу томов командой: igor@0: \begin{verbatim} igor@0: %# vgremove vg00 igor@0: \end{verbatim} igor@0: igor@0: \subsubsection{Добавление физических томов в группу томов} igor@0: Для добавления предварительно инициализированного физического тома в существующую группу томов используется команда \rq{}vgextend\rq{}: igor@0: igor@0: \begin{verbatim} igor@0: %# vgextend vg00 /dev/hdc1 igor@0: ^^^^^^^^^ новый физический том igor@0: \end{verbatim} igor@0: igor@0: \subsubsection{Удаление физических томов из группы томов} igor@0: Убедитесь, что физический том не используется никакими логическими томами. Для этого используйте команду \rq{}pvdisplay\rq{}: igor@0: igor@0: \begin{verbatim} igor@0: %# pvdisplay /dev/hda1 igor@0: igor@0: --- Physical volume --- igor@0: PV Name /dev/hda1 igor@0: VG Name vg00 igor@0: PV Size 1.95 GB / NOT usable 4 MB [LVM: 122 KB] igor@0: PV# 1 igor@0: PV Status available igor@0: Allocatable yes (but full) igor@0: Cur LV 1 igor@0: PE Size (KByte) 4096 igor@0: Total PE 499 igor@0: Free PE 0 igor@0: Allocated PE 499 igor@0: PV UUID Sd44tK-9IRw-SrMC-MOkn-76iP-iftz-OVSen7 igor@0: \end{verbatim} igor@0: igor@0: Если же физический том используется, вам нужно будет перенести данные на другой физический том. Эта процедура будет описана в следующих разделах. igor@0: igor@0: После этого можно использовать \rq{}vgreduce\rq{} для удаления физических томов: igor@0: \begin{verbatim} igor@0: %# vgreduce vg00 /dev/hda1 igor@0: \end{verbatim} igor@0: igor@0: \subsubsection{Создание логического тома} igor@0: Для того, чтобы создать логический том \dq{}lv00\dq{}, размером 1500Мб, выполните команду: igor@0: \begin{verbatim} igor@0: %# lvcreate -L1500 -nlv00 vg00 igor@0: \end{verbatim} igor@0: igor@0: Для создания логического тома размером в 100 логических экстентов с расслоением по двум физическим томам и размером блока данных 4 KB: igor@0: \begin{verbatim} igor@0: %# lvcreate -i2 -I4 -l100 -nlv01 vg00 igor@0: \end{verbatim} igor@0: igor@0: Если вы хотите создать логический том, полностью занимающий группу томов, выполните команду vgdisplay, чтобы узнать полные размер группы томов, после чего используйте команду lvcreate. igor@0: \begin{verbatim} igor@0: %# vgdisplay vg00 | grep "Total PE" igor@0: Total PE 10230 igor@0: %# lvcreate -l 10230 vg00 -n lv02 igor@0: \end{verbatim} igor@0: igor@0: Эти команды создают логический том testvg, полностью заполняющий группу томов. igor@0: igor@0: \subsubsection{Удаление логических томов} igor@0: Логический том должен быть размонтирован перед удалением: igor@0: \begin{verbatim} igor@0: # umount /home igor@0: # resize2fs /dev/vg00/home 524288 igor@0: # lvreduce -L-1G /dev/vg00/home igor@0: # mount /home igor@0: \end{verbatim} igor@0: igor@0: \subsubsection{Увеличение логических томов} igor@0: Для увеличения логического тома вам нужно просто указать команде lvextend до какого размера вы хотите увеличить том: igor@0: igor@0: \begin{verbatim} igor@0: %# lvextend -L12G /dev/vg00/home igor@0: lvextend -- extending logical volume "/dev/vg00/home" to 12 GB igor@0: lvextend -- doing automatic backup of volume group "vg00" igor@0: lvextend -- logical volume "/dev/vg00/home" successfully extended igor@0: \end{verbatim} igor@0: igor@0: В результате /dev/vg00/home увеличится до 12Гбайт. igor@0: igor@0: \begin{verbatim} igor@0: # umount /home igor@0: # resize_reiserfs -s-1G /dev/vg00/home igor@0: # lvreduce -L-1G /dev/vg00/home igor@0: # mount -treiserfs /dev/vg00/home /home igor@0: \end{verbatim} igor@0: igor@0: Эта команда увеличивает размер логического тома на 1Гб. igor@0: igor@0: После того как вы увеличили логический том, необходимо соответственно увеличить размер файловой системы. Как это сделать зависит от типа используемой файловой системы. igor@0: igor@0: По умолчанию большинство утилит изменения размера файловой системы увеличивают ее размер до размера соответствующего логического тома. Так что вам не нужно беспокоится об указании одинаковых размеров для всех команд. igor@0: igor@0: \paragraph{ext2} igor@0: igor@0: Если вы не пропатчили ваше ядро патчем ext2online, вам будет необходимо размонтировать файловую систему перед изменением размера. igor@0: В современных ядрах этот патч не требуется. Точнее, он уже и так присутсвуетв коде ядра. igor@0: \begin{verbatim} igor@0: # umount /dev/vg00/home igor@0: # resize2fs /dev/vg00/home igor@0: # mount /dev/vg00/home /home igor@0: \end{verbatim} igor@0: igor@0: Для файловой системы ext2 есть и другой путь. В состав LVM входит утилита e2fsadm, которая выполняет и lvextend, и resize2fs (она также выполняет и уменьшение размера файловой системы, это описано в следующем разделе). Так что можно использовать одну команду: igor@0: \begin{verbatim} igor@0: %# e2fsadm -L+1G /dev/vg00/home igor@0: \end{verbatim} igor@0: что эквивалентно двум следующим: igor@0: \begin{verbatim} igor@0: %# lvextend -L+1G /dev/vg00/home igor@0: %# resize2fs /dev/vg00/home igor@0: \end{verbatim} igor@0: igor@0: \paragraph{reiserfs} igor@0: igor@0: Увеличивать размер файловых систем Reiserfs можно как в смонтированном, так и в размонтированном состоянии. igor@0: igor@0: Увеличить размер смонтированной файловой системы: igor@0: \begin{verbatim} igor@0: %# resize_reiserfs -f /dev/vg00/home igor@0: \end{verbatim} igor@0: igor@0: Увеличить размер размонтированной файловой системы: igor@0: \begin{verbatim} igor@0: %# umount /dev/vg00/homevol igor@0: %# resize_reiserfs /dev/vg00/homevol igor@0: %# mount -treiserfs /dev/vg00/homevol /home igor@0: \end{verbatim} igor@0: igor@0: \paragraph{xfs} igor@0: igor@0: Размер файловой системы XFS можно увеличить только в смонтированном состоянии. igor@0: Кроме того, утилите в качестве параметра нужно передать точку монтирования, а не имя устройства: igor@0: \begin{verbatim} igor@0: %# xfs_growfs /home igor@0: \end{verbatim} igor@0: igor@0: \subsubsection{Уменьшение размера логического тома} igor@0: Логические тома могут быть уменьшены в размере, точно также как и увеличены. Однако очень важно помнить, что нужно в первую очередь уменьшить размер файловой системы, и только после этого уменьшать размер логического тома. Если вы нарушите последовательность, вы можете потерять данные. igor@0: igor@0: \paragraph{ext2} igor@0: igor@0: При использовании файловой системы ext2, как уже указывалось ранее, можно использовать команду e2fsadm: igor@0: igor@0: \begin{verbatim} igor@0: # umount /home igor@0: # e2fsadm -L-1G /dev/vg00/home igor@0: # mount /home igor@0: \end{verbatim} igor@0: igor@0: Если вы хотите выполнить операцию по уменьшению логического тома вручную, вам нужно знать размер тома в блоках: igor@0: \begin{verbatim} igor@0: # umount /home igor@0: # resize2fs /dev/vg00/home 524288 igor@0: # lvreduce -L-1G /dev/vg00/home igor@0: # mount /home igor@0: \end{verbatim} igor@0: igor@0: \paragraph{reiserfs} igor@0: igor@0: При уменьшении размера файловой системы Reiserfs, ее нужно размонтировать: igor@0: \begin{verbatim} igor@0: # umount /home igor@0: # resize_reiserfs -s-1G /dev/vg00/home igor@0: # lvreduce -L-1G /dev/vg00/home igor@0: # mount -treiserfs /dev/vg00/home /home igor@0: \end{verbatim} igor@0: igor@0: \paragraph{xfs} igor@0: igor@0: Уменьшить размер файловой системы XFS нельзя. igor@0: igor@0: Примечание: обратите внимание на то, что для уменьшения размера файловых систем, необходимо их размонтировать. Это вносит определенные трудности, если вы желаете уменьшить размер корневой файловой системы. В этом случае можно применить следующий метод: загрузится с CD дистрибутива, поддерживающего LVM. Перейти в командный режим (обычно это делается нажатием клавиш Alt+F2) и выполнить команды сканирования и активации группы томов: igor@0: igor@0: \begin{verbatim} igor@0: %# vgscan igor@0: %# vgchange -a y igor@0: \end{verbatim} igor@0: igor@0: Теперь вы имеете доступ к логическим томам и можете изменять их размеры: igor@0: igor@0: \begin{verbatim} igor@0: %# resize_reiserfs -s-500M /dev/vg00/root igor@0: %# lvreduce -L-500M /dev/vg00/root igor@0: %# reboot igor@0: \end{verbatim} igor@0: igor@0: igor@0: \subsubsection{Перенос данных с физического тома} igor@0: igor@0: Для того, чтобы можно было удалить физический том из группы томов, необходимо освободить все занятые на нем физические экстенты. Это делается путем перераспределения занятых физических экстентов на другие физические тома. Следовательно, в группе томов должно быть достаточно свободных физических экстентов. Описание операции удаления физического тома приведено в разделе примеров. igor@0: igor@0: \subsection{Примеры} igor@0: \subsubsection{Настройка LVM на трех SCSI дисках} igor@0: В первом примере мы настроим логический том из трех SCSI дисков. Устройства дисков: /dev/sda, /dev/sdb и /dev/sdc. igor@0: igor@0: Перед добавлением в группу томов диски нужно инициализировать: igor@0: igor@0: \begin{verbatim} igor@0: %# pvcreate /dev/sda igor@0: %# pvcreate /dev/sdb igor@0: %# pvcreate /dev/sdc igor@0: \end{verbatim} igor@0: igor@0: После выполнения этих команд в начале каждого диска создастся область дескрипторов группы томов. igor@0: igor@0: Теперь создадим группу томов vg01, состоящую из этих дисков: igor@0: igor@0: \begin{verbatim} igor@0: %# vgcreate vg01 /dev/sda /dev/sdb /dev/sdc/ igor@0: \end{verbatim} igor@0: igor@0: Проверим статус группы томов командой vgdisplay: igor@0: igor@0: \begin{verbatim} igor@0: %# vgdisplay igor@0: --- Volume Group --- igor@0: VG Name vg01 igor@0: VG Access read/write igor@0: VG Status available/resizable igor@0: VG # 1 igor@0: MAX LV 256 igor@0: Cur LV 0 igor@0: Open LV 0 igor@0: MAX LV Size 255.99 GB igor@0: Max PV 256 igor@0: Cur PV 3 igor@0: Act PV 3 igor@0: VG Size 1.45 GB igor@0: PE Size 4 MB igor@0: Total PE 372 igor@0: Alloc PE / Size 0 / 0 igor@0: Free PE / Size 372/ 1.45 GB igor@0: VG UUID nP2PY5-5TOS-hLx0-FDu0-2a6N-f37x-0BME0Y igor@0: \end{verbatim} igor@0: igor@0: Обратите внимание на первые три строки и строку с общим размером группы томов. Она должна соответствовать сумме всех трех дисков. Если всё в порядке, можно переходить к следующей задаче. igor@0: igor@0: \subsubsection{Создание логического тома} igor@0: После успешного создания группы томов, можно начать создавать логические тома в этой группе. Размер тома может быть любым, но, естественно, не более всего размера группы томов. В этом примере мы создадим один логический том размером 1 Гб. Мы не будем использовать \dq{}расслоение\dq{}, поскольку при этом невозможно добавить диск в группу томов после создания логического тома, использующего данный алгоритм. igor@0: igor@0: \begin{verbatim} igor@0: %# lvcreate -L1G -nusrlv vg01 igor@0: lvcreate -- doing automatic backup of "vg01" igor@0: lvcreate -- logical volume "/dev/vg01/usrlv" successfully created igor@0: \end{verbatim} igor@0: igor@0: \subsubsection{Создание файловой системы} igor@0: Создадим на логическом томе файловую систему ext2: igor@0: igor@0: \begin{verbatim} igor@0: %# mke2fs /dev/vg01/usrlv igor@0: mke2fs 1.19, 13-Jul-2000 for EXT2 FS 0.5b, 95/08/09 igor@0: Filesystem label= igor@0: OS type: Linux igor@0: Block size=4096 (log=2) igor@0: Fragment size=4096 (log=2) igor@0: 131072 inodes, 262144 blocks igor@0: 13107 blocks (5.00%) reserved for the super user igor@0: First data block=0 igor@0: 9 block groups igor@0: 32768 blocks per group, 32768 fragments per group igor@0: 16384 inodes per group igor@0: Superblock backups stored on blocks: igor@0: 32768, 98304, 163840, 229376 igor@0: igor@0: Writing inode tables: done igor@0: Writing superblocks and filesystem accounting information: done igor@0: \end{verbatim} igor@0: igor@0: \subsubsection{Тестирование файловой системы} igor@0: Смонтируйте логический том и проверьте все ли в порядке: igor@0: igor@0: \begin{verbatim} igor@0: %# mount /dev/vg01/usrlv /mnt igor@0: %# df igor@0: Filesystem 1k-blocks Used Available Use% Mounted on igor@0: /dev/hda1 1311552 628824 616104 51% / igor@0: /dev/vg01/usrlv 1040132 20 987276 0% /mnt igor@0: \end{verbatim} igor@0: igor@0: Если вы все сделали правильно, у вас должен появиться логический том с файловой системой ext2, смонтированный в точке /mnt. igor@0: igor@0: \subsubsection{Создание логического тома с \dq{}расслоением\dq{}} igor@0: Рассмотрим теперь вариант логического тома, использующего алгоритм \dq{}расслоения\dq{}. Как уже указывалось выше, минусом этого решения является невозможность добавления дополнительного диска. igor@0: igor@0: Процедура создания данного типа логического тома также требует инициализации устройств и добавления их в группу томов, как это уже было показано. igor@0: igor@0: Для создания логического тома с \dq{}расслоением\dq{} на три физических тома с блоком данных 4Кб выполните команду: igor@0: igor@0: \begin{verbatim} igor@0: %# lvcreate -i3 -I4 -L1G -nvarlv vg01 igor@0: lvcreate -- rounding 1048576 KB to stripe boundary size 1056768 KB / 258 PE igor@0: lvcreate -- doing automatic backup of "vg01" igor@0: lvcreate -- logical volume "/dev/vg01/varlv" successfully created igor@0: \end{verbatim} igor@0: igor@0: После чего можно создавать файловую систему на логическом томе. igor@0: igor@0: \subsubsection{Добавление нового диска} igor@0: Рассмотрим систему со следующей конфигурацией: igor@0: igor@0: \begin{verbatim} igor@0: %# pvscan igor@0: pvscan -- ACTIVE PV "/dev/sda" of VG "dev" [1.95 GB / 0 free] igor@0: pvscan -- ACTIVE PV "/dev/sdb" of VG "sales" [1.95 GB / 0 free] igor@0: pvscan -- ACTIVE PV "/dev/sdc" of VG "ops" [1.95 GB / 44 MB free] igor@0: pvscan -- ACTIVE PV "/dev/sdd" of VG "dev" [1.95 GB / 0 free] igor@0: pvscan -- ACTIVE PV "/dev/sde1" of VG "ops" [996 MB / 52 MB free] igor@0: pvscan -- ACTIVE PV "/dev/sde2" of VG "sales" [996 MB / 944 MB free] igor@0: pvscan -- ACTIVE PV "/dev/sdf1" of VG "ops" [996 MB / 0 free] igor@0: pvscan -- ACTIVE PV "/dev/sdf2" of VG "dev" [996 MB / 72 MB free] igor@0: pvscan -- total: 8 [11.72 GB] / in use: 8 [11.72 GB] / in no VG: 0 [0] igor@0: igor@0: %# df igor@0: Filesystem 1k-blocks Used Available Use% Mounted on igor@0: /dev/dev/cvs 1342492 516468 757828 41% /mnt/dev/cvs igor@0: /dev/dev/users 2064208 2060036 4172 100% /mnt/dev/users igor@0: /dev/dev/build 1548144 1023041 525103 66% /mnt/dev/build igor@0: /dev/ops/databases 2890692 2302417 588275 79% /mnt/ops/databases igor@0: /dev/sales/users 2064208 871214 1192994 42% /mnt/sales/users igor@0: /dev/ops/batch 1032088 897122 134966 86% /mnt/ops/batch igor@0: \end{verbatim} igor@0: igor@0: Как видно из листинга, группы томов \dq{}dev\dq{} и \dq{}ops\dq{} практически заполнены. В систему добавили новый диск /dev/sdg. Его необходимо разделить между группами \dq{}ops\dq{} и \dq{}dev\dq{}, поэтому разобьем его на разделы: igor@0: igor@0: \begin{verbatim} igor@0: %# fdisk /dev/sdg igor@0: Device contains neither a valid DOS partition table, nor Sun or SGI igor@0: disklabel Building a new DOS disklabel. Changes will remain in memory igor@0: only, until you decide to write them. After that, of course, the igor@0: previous content won't be recoverable. igor@0: igor@0: Command (m for help): n igor@0: Command action igor@0: e extended igor@0: p primary partition (1-4) igor@0: p igor@0: Partition number (1-4): 1 igor@0: First cylinder (1-1000, default 1): igor@0: Using default value 1 igor@0: Last cylinder or +size or +sizeM or +sizeK (1-1000, default 1000): 500 igor@0: igor@0: Command (m for help): n igor@0: Command action igor@0: e extended igor@0: p primary partition (1-4) igor@0: p igor@0: Partition number (1-4): 2 igor@0: First cylinder (501-1000, default 501): igor@0: Using default value 501 igor@0: Last cylinder or +size or +sizeM or +sizeK (501-1000, default 1000): igor@0: Using default value 1000 igor@0: igor@0: Command (m for help): t igor@0: Partition number (1-4): 1 igor@0: Hex code (type L to list codes): 8e igor@0: Changed system type of partition 1 to 8e (Unknown) igor@0: igor@0: Command (m for help): t igor@0: Partition number (1-4): 2 igor@0: Hex code (type L to list codes): 8e igor@0: Changed system type of partition 2 to 8e (Unknown) igor@0: igor@0: Command (m for help): w igor@0: The partition table has been altered! igor@0: igor@0: Calling ioctl() to re-read partition table. igor@0: igor@0: WARNING: If you have created or modified any DOS 6.x partitions, igor@0: please see the fdisk manual page for additional information. igor@0: \end{verbatim} igor@0: igor@0: Перед тем как добавить разделы в группу томов, их необходимо инициализировать: igor@0: igor@0: \begin{verbatim} igor@0: %# pvcreate /dev/sdg1 igor@0: pvcreate -- physical volume "/dev/sdg1" successfully created igor@0: igor@0: # pvcreate /dev/sdg2 igor@0: pvcreate -- physical volume "/dev/sdg2" successfully created igor@0: \end{verbatim} igor@0: igor@0: Теперь можно добавлять физические тома в группы томов: igor@0: igor@0: \begin{verbatim} igor@0: %# vgextend ops /dev/sdg1 igor@0: vgextend -- INFO: maximum logical volume size is 255.99 Gigabyte igor@0: vgextend -- doing automatic backup of volume group "ops" igor@0: vgextend -- volume group "ops" successfully extended igor@0: igor@0: # vgextend dev /dev/sdg2 igor@0: vgextend -- INFO: maximum logical volume size is 255.99 Gigabyte igor@0: vgextend -- doing automatic backup of volume group "dev" igor@0: vgextend -- volume group "dev" successfully extended igor@0: igor@0: # pvscan igor@0: pvscan -- reading all physical volumes (this may take a while...) igor@0: pvscan -- ACTIVE PV "/dev/sda" of VG "dev" [1.95 GB / 0 free] igor@0: pvscan -- ACTIVE PV "/dev/sdb" of VG "sales" [1.95 GB / 0 free] igor@0: pvscan -- ACTIVE PV "/dev/sdc" of VG "ops" [1.95 GB / 44 MB free] igor@0: pvscan -- ACTIVE PV "/dev/sdd" of VG "dev" [1.95 GB / 0 free] igor@0: pvscan -- ACTIVE PV "/dev/sde1" of VG "ops" [996 MB / 52 MB free] igor@0: pvscan -- ACTIVE PV "/dev/sde2" of VG "sales" [996 MB / 944 MB free] igor@0: pvscan -- ACTIVE PV "/dev/sdf1" of VG "ops" [996 MB / 0 free] igor@0: pvscan -- ACTIVE PV "/dev/sdf2" of VG "dev" [996 MB / 72 MB free] igor@0: pvscan -- ACTIVE PV "/dev/sdg1" of VG "ops" [996 MB / 996 MB free] igor@0: pvscan -- ACTIVE PV "/dev/sdg2" of VG "dev" [996 MB / 996 MB free] igor@0: pvscan -- total: 10 [13.67 GB] / in use: 10 [13.67 GB] / in no VG: 0 [0] igor@0: \end{verbatim} igor@0: igor@0: Наконец, увеличим размеры логических томов и расширим файловые системы до размеров логических томов: igor@0: igor@0: \begin{verbatim} igor@0: %# umount /mnt/ops/batch igor@0: %# umount /mnt/dev/users igor@0: igor@0: # export E2FSADM_RESIZE_CMD=ext2resize igor@0: # e2fsadm /dev/ops/batch -L+500M igor@0: e2fsck 1.18, 11-Nov-1999 for EXT2 FS 0.5b, 95/08/09 igor@0: Pass 1: Checking inodes, blocks, and sizes igor@0: Pass 2: Checking directory structure igor@0: Pass 3: Checking directory connectivity igor@0: Pass 4: Checking reference counts igor@0: Pass 5: Checking group summary information igor@0: /dev/ops/batch: 11/131072 files (0.0