Vinum ведет базу данных
конфигурации, в которой описаны все объекты Vinum в отдельной системе.
Начальная конфигурация создается пользователем при помощи системной утилиты vinum(8) из одного или
нескольких конфигурационных файлов. Копия конфигурации хранится в начале каждого
дискового раздела (привода) Vinum. Все копии обновляются при изменении состояния томов,
поэтому после перезапуска состояние объектов Vinum восстанавливается.
Конфигурационный файл описывает объекты Vinum. Описание простого тома может быть
таким:
drive a device /dev/da3h
volume myvol
plex org concat
sd length 512m drive a
Здесь описываются четыре объекта Vinum:
-
Строка drive объявляет дисковый
раздел (привод) и его
местоположение на физическом диске. Приводу дано символьное имя a. Разделение символьных имен и имен устройств дает
возможность перемещать физические диски (например, по разным контроллерам, или менять их
местами) без изменения конфигурации.
-
Строка volume описывает том.
Единственным требуемым параметром является имя тома myvol.
-
Строка plex определяет набор.
Единственный обязательный параметр -- метод организации набора, в нашем случае concat (сцепленный). Давать набору имя в
явном виде не обязательно: Vinum автоматически сгенерирует имя набора из имени тома и
суффикса .px, где x -- номер набора в томе. В нашем случае набор будет
называться myvol.p0.
-
Наконец, строка sd описывает
поддиск. Минимальными требованиями к его описанию являются имя привода, на котором он будет располагаться, и его размер. Как
и в случае набора, имя указывать не обязательно: имя поддиска будет построено добавлением
.sx к имени набора, где x будет номером поддиска в наборе. Наш поддиск получит имя
myvol.p0.s0.
В результате обработки такого конфигурационного файла vinum(8) выдаст нам
следующее:
# vinum -> create config1
Configuration summary
Drives: 1 (4 configured)
Volumes: 1 (4 configured)
Plexes: 1 (8 configured)
Subdisks: 1 (16 configured)
D a State: up Device /dev/da3h Avail:2061/2573 MB (80%)
V myvol State: up Plexes: 1 Size: 512 MB
P myvol.p0 C State: up Subdisks: 1 Size: 512 MB
S myvol.p0.s0 State: up PO: 0 B Size: 512 MB
На этом кратком листинге показан формат вывода vinum(8). Графически
созданный нами том представлен на Рис.
17-4.
Этот и последующие рисунки изображают том, содержащий один или несколько наборов,
каждый из которых, в свою очередь, состоит из одного или нескольких поддисков. В первом
тривиальном примере том состоит из одного набора, представленного одним поддиском.
Построенный нами только что том не имеет никаких преимуществ перед обычным дисковым
разделом. Он содержит единственный набор, так что не обеспечивает избыточность; набор
состоит из одного поддиска, поэтому методика распределения дисковых блоков ничем не
отличается от дискового раздела. В последующих параграфах мы рассмотрим более интересные
конфигурации.
Надежность тома может быть повышена при помощи зеркалирования. Планируя
зеркалированный том, важно не забыть о том, чтобы поддиски каждого набора располагались
на разных физических дисках, чтобы отказ одного из них не привел к выходу из строя более
чем одного набора. Вот конфигурация, определяющая зеркалированный том:
drive b device /dev/da4h
volume mirror
plex org concat
sd length 512m drive a
plex org concat
sd length 512m drive b
Как мы видим, нет необходимости вновь описывать привод a, поскольку Vinum сохраняет состояние уже сконфигурированных
объектов. После обработки этих определений конфигурация будет выглядеть так:
Drives: 2 (4 configured)
Volumes: 2 (4 configured)
Plexes: 3 (8 configured)
Subdisks: 3 (16 configured)
D a State: up Device /dev/da3h Avail: 1549/2573 MB (60%)
D b State: up Device /dev/da4h Avail: 2061/2573 MB (80%)
V myvol State: up Plexes: 1 Size: 512 MB
V mirror State: up Plexes: 2 Size: 512 MB
P myvol.p0 C State: up Subdisks: 1 Size: 512 MB
P mirror.p0 C State: up Subdisks: 1 Size: 512 MB
P mirror.p1 C State: initializing Subdisks: 1 Size: 512 MB
S myvol.p0.s0 State: up PO: 0 B Size: 512 MB
S mirror.p0.s0 State: up PO: 0 B Size: 512 MB
S mirror.p1.s0 State: empty PO: 0 B Size: 512 MB
Рис. 17-5 иллюстрирует структуру
полученного тома.
В данном примере каждый набор содержит все 512 MB адресного пространства тома.
Как и в предыдущем случае, каждый набор состоит из одного поддиска.
Зеркалированный том из предыдущего примера гораздо более отказоустойчив, чем обычный
том, но его производительность ниже: каждый запрос на запись выливается в две операции
физической записи, что вдвое увеличивает необходимую пропускную способность шины дисковой
подсистемы. Увеличение производительности требует иного подхода: вместо зеркалирования
данные распределяются (перемежением) по максимальному количеству физических дисков.
Следующий пример конфигурации создает том с перемежением на четырех дисках:
drive c device /dev/da5h
drive d device /dev/da6h
volume stripe
plex org striped 512k
sd length 128m drive a
sd length 128m drive b
sd length 128m drive c
sd length 128m drive d
Как и ранее, нет необходимости переопределять уже сконфигурированные приводы. Общий
вид базы конфигурации Vinum после создания нового тома будет таким:
Drives: 4 (4 configured)
Volumes: 3 (4 configured)
Plexes: 4 (8 configured)
Subdisks: 7 (16 configured)
D a State: up Device /dev/da3h Avail: 1421/2573 MB (55%)
D b State: up Device /dev/da4h Avail: 1933/2573 MB (75%)
D c State: up Device /dev/da5h Avail: 2445/2573 MB (95%)
D d State: up Device /dev/da6h Avail: 2445/2573 MB (95%)
V myvol State: up Plexes: 1 Size: 512 MB
V mirror State: up Plexes: 2 Size: 512 MB
V striped State: up Plexes: 1 Size: 512 MB
P myvol.p0 C State: up Subdisks: 1 Size: 512 MB
P mirror.p0 C State: up Subdisks: 1 Size: 512 MB
P mirror.p1 C State: initializing Subdisks: 1 Size: 512 MB
P striped.p1 State: up Subdisks: 1 Size: 512 MB
S myvol.p0.s0 State: up PO: 0 B Size: 512 MB
S mirror.p0.s0 State: up PO: 0 B Size: 512 MB
S mirror.p1.s0 State: empty PO: 0 B Size: 512 MB
S striped.p0.s0 State: up PO: 0 B Size: 128 MB
S striped.p0.s1 State: up PO: 512 kB Size: 128 MB
S striped.p0.s2 State: up PO: 1024 kB Size: 128 MB
S striped.p0.s3 State: up PO: 1536 kB Size: 128 MB
Новосозданный том представлен на Рис.
17-6. Плотность заштрихованных участков показывает расположение страйпов в адресном
пространстве набора (от светлых к темным).
При наличии достаточного
количества дисков можно создать том, сочетающий повышенную отказоустойчивость и высокую
производительность по сравнению со стандартными дисковыми разделами UNIX®. Типичная конфигурация может быть такой:
volume raid10
plex org striped 512k
sd length 102480k drive a
sd length 102480k drive b
sd length 102480k drive c
sd length 102480k drive d
sd length 102480k drive e
plex org striped 512k
sd length 102480k drive c
sd length 102480k drive d
sd length 102480k drive e
sd length 102480k drive a
sd length 102480k drive b
Как вы можете заметить, поддиски второго набора смещены на два привода относительно
поддисков первого. В результате даже при запросе на запись, пересекающем границы страйпа,
не возникнет двух обращений к одному физическому диску.
Рис. 17-7 отражает структуру нового
тома.