Иерархия объектов
Работа с объектами xlv
Особенности реализации менеджеров логических томов
Вместо эпилога
Литература

Операционная система UNIX, долго и успешно развивавшаяся в рамках университетов, постепенно приобрела ряд особенностей, позволяющих использовать работающий под ее управлением компьютер вместо подчас весьма дорогой, специализированной аппаратуры. Например, ПК с ОС FreeBSD благодаря наличию демонов routed или gated может прекрасно выполнять роль маршрутизатора, экономя средства заказчика на приобретение "железного" маршрутизатора, что в российских условиях часто оказывается весьма кстати. Другим примером является задача повышения производительности и надежности дисковых подсистем. Сегодня традиционный путь - это применение RAID-технологий [1], однако стоимость специализированного оборудования достаточно велика. Между тем многие версии UNIX имеют программные средства, функционально поддерживающие аналогичные возможности, или, подобно Disk Suite в Solaris, даже реализации уровней RAID. Зачастую такие функции относятся к менеджерам логических томов, которым и посвящена данная статья.

С прагматической точки зрения менеджеры логических томов целесообразно применять прежде всего в трех основных ситуациях:

1) Для зеркалирования данных на дисках с целью увеличения надежности (эквивалент RAID уровня 1).

2) Для увеличения емкости файловой системы. Например, имеется два жестких диска емкостью 1 Гбайт каждый, а требуется двухгигабайтная файловая система, следовательно, надо как-то объединить два физических диска в один "логический" емкостью 2 Гбайт.

3) Для увеличения производительности операций ввода-вывода с дисками. Вообще актуальность этой задачи в последние годы все время росла - быстрый прогресс в производительности микропроцессоров отнюдь не сопровождался адекватным ростом производительности как каналов, используемых для обмена данными с дисками, так и самих дисковых накопителей.

В последнем случае широко используется техника, называемая термином "striping" (эквивалент RAID уровня 0). Пока в отечественной литературе нет устоявшегося перевода этого термина, поэтому предлагается переводить его как "чередование ввода-вывода". Суть этой техники в следующем. Допустим, имеется 2 жестких диска, и требуется произвести запись большого файла данных. Тогда можно ускорить эту процедуру путем попеременной (чередующейся) записи относительно небольших смежных "кусочков" файла на диски: первую порцию - на первый диск, вторую порцию - на второй диск, третью порцию - на первый диск, четвертую порцию - на второй диск и т.д. (рисунок 1). Можно сказать, что файл как бы разрезается на полосы перед записью - отсюда и название striping. При этом размер всех полос одинаков.

Picture 1
2-кратное чередование
4-кратное чередование

Рисунок 1.
Чередование Ввода/вывода.

Хотя ускорение может быть достигнуто тогда, когда оба диска находятся на одном канале (обычно SCSI), наибольший эффект получается, если диски разнесены на разные каналы, поскольку в этом случае производительность ввода-вывода удваивается. Скажем, вместо одного канала F&W SCSI-2 с производительностью 20 Мбайт/с идет одновременная работа с двумя каналами с теоретической пропускной способностью 40 Мбайт/с. Можно использовать 4-кратное чередование (между 4 дисками). Тогда, если имеется 2 канала SCSI и на каждом канале по 2 диска, то будет в большей степени утилизироваться пропускная способность этих каналов. При наличии 4 каналов SCSI можно устроить чередование ввода-вывода между всеми четырьмя каналами и т.д.

В быстродействующих дисковых накопителях используется встроенная кэш-память большой емкости (например, 1 Мбайт - в четырехгигабайтных накопителях Seagate Barracuda ST15150). Некоторые современные версии UNIX имеют средство "read ahead", благодаря которому осуществляется предварительное "чтение вперед". Поэтому при последовательном чтении данные заранее, т. е. до выполнения прикладной программой следующего системного вызова read, могут оказаться в буфере. Оба этих фактора способствуют существенному увеличению эффективной скорости передачи при последовательном чтении, и задержки при относительно медленном считывании данных собственно с поверхности диска перестают сдерживать рост производительности.

Хотя идеи и многие понятия являются общими или весьма близкими для менеджеров логических томов в разных версиях ОС UNIX, имеются и существенные отличия. Возьмем за основу менеджер логических томов xlv в ОС IRIX компании SGI [2]. Приведенные конкретные примеры выполнены на компьютере Power Challenge L (ОС IRIX 6.1) в суперкомпьютерном центре Института органической химии РАН. Менеджер xlv является модернизацией более ранней реализации - стандартного менеджера томов lv в ОС IRIX 5.x.

В качестве других примеров можно например, отметить реализации ОС UNIX фирмами IBM, DEC и HP. Аналогичное средство в ОС AIX называется lvm, в Digital Unix - LSM (в более ранних версиях этой ОС - LVM). По системе понятий наиболее близким к xlv является именно менеджер LSM. Заметим, что многие файловые системы, предлагаемые современными версиями UNIX этих фирм-производителей (xfs в IRIX 6.x, jfs в AIX 4.x, AdvFS в Digital Unix, VxFS в HP-UX версии 10) используют средство журналирования транзакций.

Иерархия объектов

Рассмотрение иерархии объектов, которыми в ОС IRIX управляет xlv, следует предварить двумя замечаниями об особенностях файловой системы xfs. Во-первых, поскольку это файловая система с журналированием, то имеется соответствующий журнал, или протокол (log) транзакций ввода-вывода, который может размещаться в одном разделе диска вместе с файловой системой или выделяться в отдельный раздел диска. Во-вторых, xfs обладает особенностью, отсутствующей в других реализациях UNIX, а именно: возможностью обеспечения гарантированной пропускной способности ввода-вывода, которую можно эффективно использовать, в частности, в задачах реального времени, например, при обработке видеоинформации. Хотя xlv может функционировать вместе с более старой файловой системой efs, широко используемой в IRIX 5.x, будем рассматривать современную xfs. При этом работа с efs может быть неким частным случаем работы с xfs.

На самом нижнем уровне иерархии находятся традиционные разделы дисков, располагаемые на физических носителях. Этот уровень иерархии присутствует, естественно, не только в OC IRIX, но и, например, в OC AIX, HP-UX и Digital Unix. Однако как в терминологии, так и в самих понятиях, вводимых менеджерами lvm в трех последних ОС, имеются существенные отличия. В менеджере LSM фирмы DEC аналогом раздела диска является поддиск, хотя там он не относится к самому нижнему уровню иерархии.

Для более ясного понимания последующих примеров необходимо пояснить, что разделы дисков как блоковые устройства в ОС IRIX отвечают устройствам /dev/dsk/dksKdUsP, где K - номер канала SCSI, U - номер устройства (ID) диска, P - номер раздела. В этой системе обозначений обычно используется P = 7, если раздел занимает весь диск кроме метки.

На следующем, втором снизу уровне иерархии, находятся элементы томов VE (рисунок 2). В простейшем случае VE - это раздел диска. Однако бывают VE, состоящие из нескольких разделов, и VE с чередованием ввода-вывода. В последнем случае к VE "приписано" несколько разделов дисков, и ввод-вывод с ними осуществляется попеременно в соответствии с тем, как это описано выше. На рисунке 2 к VE с чередованием ввода-вывода относится два раздела (P = 7), фактически представляющих собой два различных диска.

Picture 2

Рисунок 2.
Иерархия объектов xlv.

На следующем уровне иерархии находятся плексы (plex) или "зеркальные копии". Плексы являются также объектами менеджера LSM от DEC и могут включать от 1 до 128 VE каждый. Когда число VE в плексе не меньше 2, говорят о конкатенации (сцеплении) VE (рисунок 3).

Picture 3

Рисунок 3.
Конкатенация VE в плексе.

При конкатенации данные, записываемые в плекс, последовательно заносятся в VE1, затем, когда он заполняется полностью - в VE2 и т.д. Это позволяет создавать файловые системы с размером, большим размера одного физического диска. Знатоки ОС MVS или ее предшественников вплоть до OS/360, а также аналогичных ОС для ЕС ЭВМ, найдут в конкатенации VE аналогию со сцеплением операторов DD в языке управления заданиями этих ОС.

Перепрыгнем теперь через одну ступеньку и обратимся к самому верхнему уровню - логическим томам (рисунок 2). Аналогичные объекты в LSM называются просто томами. Логические тома имеются также в ОС AIX, HP-UX и Digital Unix/lvm. Именно в логических томах обычно располагаются файловые системы. Хотя термин "логический том" может казаться интуитивно понятным, одни лишь особенности файловой системы xfs в ОС IRIX делают логический том достаточно нетривиальным образованием. Прежде всего, любой логический том состоит из подтомов. Бывают 3 типа подтомов: подтом данных (обязательный), журнальный подтом и подтом реального времени. Второй и третий типы подтомов могут отсутствовать. Таким образом, логический том может иметь от 1 до 3 подтомов. В случае файловой системы efs, не имеющей средств журналирования и возможностей поддержания гарантированной пропускной способности, два последних типа подтомов, естественно, отсутствуют, и логические тома всегда имеют по одному подтому данных.

Журнальный подтом, как явствует из названия, содержит журнал запросов к файловой системе xfs. Если он отсутствует, эта информация помещается в подтом данных. Подтом реального времени целесообразно использовать в приложениях реального времени, например, при обработке видеоинформации, когда требуется гарантированное время ответа. Введение подтомов обеспечивает разделение по типам данных. Например, пользователь не может занести в журнальный подтом данные, записываемые в файловую систему. Выделение подтомов способствует повышению производительности, если подтома будут размещаться на разных устройствах.

В свою очередь, подтома состоят из плексов (каждый подтом может иметь от 1 до 4 плексов), на которые заносится одна и та же запись (зеркалирование записи). Именно поэтому плексы можно назвать также "зеркальными копиями". Подтома организовываются независимо друг от друга. Например, журнальный подтом может быть зеркалирован для надежности, а в подтоме реального времени может применяться техника чередования ввода-вывода (рисунок 2). Такой подход можно рассматривать как общую рекомендацию. Поскольку IRIX 6.x является 64-разрядной операционной системой, она имеет, в частности, и увеличенные пределы размеров файловой системы. Соответственно максимальный размер подтома для xfs составляет 1 Тбайт. При использовании efs размер подтома данных не может превышать 8 Гбайт.

Работа с объектами xlv

Логический том xlv выглядит как устройство, которому отвечает файл /dev/dsk/xlv/<имя-диска>, где <имя-диска> задается при создании тома утилитой xlv_make. Информация о логических томах записывается в метки физических дисков. Базируясь на этой информации, xlv "собирает" логические тома из отдельных компонентов. Для работы с метками дисков имеется специальный демон xlv_labd, а за организацию обращений к плексам и зеркалирование отвечают два других демона, xlvd и xlv_plexd.

Для создания объектов логических томов используется xlv_make, результатами работы которой являются изменения дисковых меток: xlv_make не трогает данные в разделах дисков. Команда xlv_make работает в диалоговом или пакетном режимах. В пакетном режиме в файл, содержащий исходные данные для xlv_make, должна быть последовательно записана практически та же информация, которая задается при работе с xlv_make в диалоговом режиме. Рассмотрим только два практически полезных примера.

Пусть нам необходимо в интерактивном режиме создать логический том из двух разделов дисков с чередованием ввода-вывода. Имеется два раздела дисков Seagate ST15150WD емкостью 8202429 блоков по 512 байт каждый - всего около 4 Гбайт на раздел. Это /dev/dsk/dks7d3s6 и /dev/dsk/dks6d5s6. В данном случае используется наиболее эффективный вариант чередования ввода-вывода, поскольку диски находятся на разных каналах - 7 и 6 соответственно. Здесь необходимо указать, что для организации чередования ввода-вывода в VE размеры входящих в него разделов дисков должны быть одинаковы.

Пример 1.
Создание логического тома с чередованием ввода-вывода.

xlv_make        - вызов xlv_make
xlv_make> vol xlv1      - создаем xlv1
xlv1    - эхо
xlv_make> data  - создаем подтом данных
xlv1.data       - эхо
xlv_make> plex  - создаем плекс
xlv1.data.0     - эхо
xlv_make> ve -stripe /dev/dsk/dks7d3s6 /dev/dsk/dks6d5s6        - создаем ve
xlv1.data.0.0   - эхо
xlv_make> end   - конец спецификации
Object specification completed  - эхо
xlv_make> show  - показать созданные объекты
(1) ve xlv1.data.0.0 = 16404767,        - эхо
        (stripe)grp_size=2,stripe_unit_size=108
        /dev/dsk/dks7d3s6 (8202429 blocks)
        /dev/dsk/dks6d5s6 (8202429 blocks)
xlv_make> exit  - выход
Newly created objects will be writed to disk.   - эхо
Is this what you want (yes) ? y - подтверждение записи
Invoking xlv_assemble

При работе с xlv_make информация об объектах последовательно задается, начиная с верхнего уровня - логических томов. В данном примере том xlv1 содержит только подтом данных. Перед завершением сеанса xlv_make спрашивает, записывать ли в метку диска информацию о созданных объектах. Для активизации логических томов необходимо вызвать утилиту xlv_assemble, которая по умолчанию вызывается в конце выполнения xlv_make.

Во втором примере показано, как из двух разделов физических дисков сделать один логический диск путем конкатенации двух VE. В этом примере также используется только подтом данных, а обращение к xlv_make происходит только в пакетном режиме. Для выполнения поставленной задачи необходимо подготовить файл, например "xlv2.in", содержимое которого приведено под заголовком "Пример 2". Затем следует выдать команду xlv_make xlv2.in.

Пример 2.
Конкатенация VE в плексе (содержимое файла исходных данных для xlv_make).

vol xlv2
data
plex
ve dks7d2s6
ve dks6d4s6
end
show
exit

Из примера 2 видно, что "префикс" /dev/dsk/dksKdUsP при работе с xlv_make можно опускать. После создания логического тома на нем следует создать файловую систему путем вызова mkfs, а все последующие действия уже очевидны.

Для администрирования логических томов в xlv/IRIX используется утилита xlv_admin, которая работает в диалоговом режиме и предлагает пользователю меню, в частности позволяющее:

  • добавлять элементы томов в плексы, а их, в свою очередь, в логические тома;
  • отсоединять элементы томов от плексов, а их - от логических томов;
  • удалять объекты xlv и выдавать информацию об объектах xlv.

Особенности реализации менеджеров логических томов

Рассмотрим некоторые особенности реализации менеджеров логических томов в версиях UNIX, предлагаемых компаниями IBM, DEC и HP.

OC AIX [3]. Менеджер логических томов, появившийся когда-то в ОС AIX версии 3, открыл как бы новое направление усовершенствований ОС Unix. В таком менеджере логических томов на нижнем уровне иерархии находятся физические диски, или, иначе говоря, физические тома. Эти физические тома входят в группу томов, которая является поименованным набором физических дисков. Группа томов делится на распределяемые единицы дискового пространства - физические разделы. Размер дискового пространства для физического раздела составляет, по умолчанию, 4 Мбайт.

Следует сразу предостеречь от возможной путаницы. Физические разделы в терминологии lvm никак не являются традиционными разделами дисков, хорошо известных не только в UNIX, но и в других ОС. Физический раздел lvm - это единица распределения дискового пространства, и ничего больше. Аналогом же обычного физического диска с точки зрения способа его использования в lvm можно считать группу томов. Она позволяет организовать работу более чем с одним физическим диском как с неким целым.

Из физических разделов lvm строятся логические тома, которые состоят из нескольких физических разделов одной группы томов. Поэтому логический том может иметь любой размер, кратный размеру физического раздела в данной группе томов. Собственно в логических томах и располагаются файловые системы.

Логические тома можно разделить на логические разделы, которые в простейшем случае совпадают с физическими разделами. Однако логические тома в AIX допускают зеркалирование. Оно обеспечивается благодаря копированию данных, когда одному логическому разделу может соответствовать до 3 физических разделов, являющихся копиями друг друга (одиночное или двойное зеркалирование). На рисунке 4 приведен пример одиночного зеркалирования. Логические тома могут также использовать технику чередования ввода-вывода. Интересно, что lvm в AIX является единственным средством управления дисками - вся соответствующая работа идет через него.

Picture 4

Рисунок 4.
Зеркалирование в lvm для ОС AIX.

LVM в Digital Unix и HP-UX [4]. Понятийный аппарат средств LVM в Digital UNIX и HP-UX близок к рассмотренному выше для ОС AIX. Особенности более современного средства LSM в Digital Unix, а также некоторые близкие понятия файловой системы AdvFS в последней ОС рассмотрены ниже.

LVM в Digital Unix и HP-UX использует в основном ту же иерархическую модель, что и lvm/AIX. Аналогом физических разделов lvm/AIX в HP-UX и Digital UNIX являются физические экстенты. В HP-UX группу томов можно дополнительно разбить на группы физических томов (PVG-physical volume group). Эти наборы дисков (PVG) имеют доступ со стороны разных контроллеров и шин, что используется при построении систем высокой надежности. Аналогом логических разделов lvm/AIX в lvm ОС Digital Unix и HP-UX являются логические экстенты. Общая схема создания объектов lvm выглядит примерно следующим образом:

1) с помощью команды pvcreate обычные разделы дисков превращаются в физические тома;

2) вызовом mknod создаются необходимые файлы в директории /dev;

3) команда vgcreate создает группу томов;

4) с помощью команды lvcreate создается логический том.

Отметим, что HP-UX, как и Digital Unix, имеет возможность организации чередования ввода-вывода, не относящуюся к lvm (команда sdsadmin).

LSM в ОС Digital Unix [5]. В Digital Unix для файловой системы AdvFS имеются объекты и средства, которые могут применяться для решения проблем, сходных с теми, для которых используются менеджеры логических томов. Поэтому прежде чем обратиться к LSM кратко рассмотрим некоторые особенности AdvFS.

В файловой системе AdvFS имеется общее понятие "том". Томом может быть физический диск, раздел диска или логический диск, созданный утилитами LSM или более ранней LVM. Иерархическая совокупность объектов, которые целесообразно рассматривать вместе с понятием тома, в Digital Unix не ограничивается объектами LSM/LVM. В этой ОС имеются объекты более высокого уровня иерархии, чем уровень томов. Эти объекты относятся к самой AdvFS. А именно, в AdvFS имеется понятие файлового домена, который является фактически поименованным набором томов. Файловый домен создается командой mkfdmn и образует пул дисковой памяти, который используется различными наборами файлов (filesets). Каждому файловому домену ставится в соответствие подкаталог в каталоге /etc/fdmns. Для добавления томов в существующий файловый домен используется команда addvol, а для удаления можно воспользоваться командой rmvol.

Понятие "набор файлов" в AdvFS аналогично обычной файловой системе. Но если размер последней в Digital Unix ограничен размером раздела диска, то набор файлов может охватывать все тома в файловом домене. Тем самым AdvFS имеет собственные средства конкатенации. Набор файлов создается по команде mkfset. AdvFS всегда имеет файловый домен, содержащий хотя бы один набор файлов. AdvFS имеет также собственные средства организации чередования ввода-вывода на уровне файла с помощью команды stripe.

В случае применения файловой системы ufs, не имеющей, кстати, такой возможности, ситуация более проста: файловая система создается на томе и дополнительных уровней иерархии не возникает. И AdvFS, и ufs могут работать с томами, созданными как LVM, так и LSM. При использовании более современного средства LSM имеется 4 уровня объектов. На нижнем уровне расположены группы дисков, которые представляют собой поименованную коллекцию дисков, отмеченную в общей базе данных LSM. На втором уровне находятся поддиски (subdisks) - просто группа непрерывных блоков физического диска. Из поддисков формируются плексы, которые являются коллекцией поддисков. Каждый плекс позволяет осуществлять конкатенацию поддисков или организовывать чередование ввода-вывода между несколькими поддисками.

Наконец, том LSM является логическим образованием - коллекцией плексов. Зеркалирование, с точки зрения пользователя, осуществляется на уровне тома. Интересно, что в LSM зеркалированный том может включать разные поддиски. Например, первый плекс тома может состоять из 2 поддисков, а зеркальная копия - второй плекс - из 3 поддисков. Как LSM, так и LVM обеспечивают возможности создания одной или двух зеркальных копий - столько же, сколько в ОС SGI IRIX.

Возможности зеркалирования в комбинации "AdvFS + LSM" помогают создать высоконадежные кластерные системы, устойчивые по отношению к всевозможным дисковым сбоям. Следует учесть, что все это "хозяйство" может работать с RAID-массивами, имеющими собственные аппаратные средства повышения надежности.

Вместо эпилога

В данном обзоре средств, предлагаемых менеджерами логических томов ОС Unix, была предпринята попытка рассказать об основных понятиях, используемых в этой области, и показать некоторые типичные области применения данных средств. Естественно, здесь не затрагивались другие, не менее важные особенности менеджеров логических томов, в первую очередь связанные с обработкой ошибочных ситуаций на дисках - администраторы могут получить необходимую информацию из документации своих "родных" ОС. Цель же данной статьи - обратить внимание на весьма полезные средства менеджеров логических томов и рассказать об их базовых понятиях.

Работа выполнена при поддержке РФФИ
(грант РФФИ # 95-07-20201)


Литература

[1]. И. Байкова, М. Кулагин, Открытые системы, # 3, 1995, с. 50

[2]. SGI IRIX. Getting starting with XFS Filesystems.

[3]. IBM. AIX Management Guide.

[4]. E. Fish, Essential System Administration, 2nd Ed., O"Reilly & Assoc., 1995.

[5]. DEC. Digital Unix System Administration Guide.