Отказоустойчивость и производительность одновременно



 При наличии достаточного количества дисков можно создать том, сочетающий повышенную отказоустойчивость и высокую производительность по сравнению со стандартными дисковыми разделами 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

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

Рис. 20-7 отражает структуру нового тома.

Рисунок 20-7. Зеркалированный том с перемежением

Правила именования объектов

Как уже было описано, Vinum автоматически именует создаваемые наборы и поддиски, хотя эти имена и могут быть переопределены. На самом деле, мы не рекомендовали бы переопределять стандартные имена: опыт с дисковым менеджером VERITAS показал, что гибкость в именовании объектов не дает ощутимого преимущества, а запутать пользователя может.

Имена объектов могут состоять из любых непробельных символов. Впрочем, рекомендуем ограничиться буквами, цифрами и подчеркиваниями. Имена томов, наборов и поддисков могут быть до 64 символов длиной; максимальная длина имени привода — 32 символа.

Для объектов Vinum в иерархии /dev/gvinum создаются файлы устройств. Приведенный выше пример конфигурации создаст следующий набор устройств:

•  

Замечание: Данный список относится только к ранней реализации Vinum.

Управляющие устройства /dev/vinum/control и /dev/vinum/controld, используемые системной утилитой gvinum(8) и даемоном Vinum соответственно.

• Устройства для каждого из томов. Основные устройства, используемые Vinum'ом. Таким образом, вышеописанная конфигурация будет включать блоковые устройства /dev/gvinum/myvol, /dev/gvinum/mirror, /dev/gvinum/striped, /dev/gvinum/raid5 и /dev/gvinum/raid10.

•  

Замечание: Данный список относится только к ранней реализации Vinum.

Каталог /dev/vinum/drive с записями для каждого привода. В реальности, каждая запись является символьной ссылкой на соответствующий файл дискового устройства.

• Записи для томов располагаются в каталоге /dev/gvinum.

• Каталоги /dev/gvinum/plex и /dev/gvinum/sd содержащие устройства для наборов и для каждого из поддисков.

Например, для конфигурации, описываемой как

 drive drive1 device /dev/sd1h

   drive drive2 device /dev/sd2h

   drive drive3 device /dev/sd3h

   drive drive4 device /dev/sd4h

volume s64 setupstate

plex org striped 64k

   sd length 100m drive drive1

   sd length 100m drive drive2

   sd length 100m drive drive3

   sd length 100m drive drive4

после обработки gvinum(8), созданный набор устройств в каталоге /dev/gvinum будет таким:

drwxr-xr-x 2 root wheel  512 Apr 13 16:46 plex

   crwxr-xr-- 1 root wheel 91, 2 Apr 13 16:46 s64

   drwxr-xr-x 2 root wheel  512 Apr 13 16:46 sd

 

/dev/vinum/plex:

total 0

crwxr-xr-- 1 root wheel 25, 0x10000002 Apr 13 16:46 s64.p0

 

/dev/vinum/sd:

total 0

crwxr-xr-- 1 root wheel 91, 0x20000002 Apr 13 16:46 s64.p0.s0

crwxr-xr-- 1 root wheel 91, 0x20100002 Apr 13 16:46 s64.p0.s1

crwxr-xr-- 1 root wheel 91, 0x20200002 Apr 13 16:46 s64.p0.s2

crwxr-xr-- 1 root wheel 91, 0x20300002 Apr 13 16:46 s64.p0.s3

Заметим, что, несмотря на то что наборы и поддиски не рекомендуется называть каким-либо специальным образом, приводы Vinum должны быть поименованы. Именование позволяет отвязать приводы от физических устройств, и при этом обеспечить их автоматическое распознавание. Имена приводов могут достигать длины в 32 символа.

Создание файловых систем

Тома с точки зрения системы аналогичны дискам, за одним малым исключением: в отличие от дисков UNIX, тома Vinum не содержат таблиц разделов. В результате потребовалось модифицировать некоторые утилиты работы с дисками, в первую очередь newfs(8), которая ранее использовала последний символ имени тома для определения идентификатора раздела. Например, дисковое устройство может именоваться /dev/ad0a — первый раздел (a) первого (0) IDE-диска (ad) — или /dev/da2h — восьмой раздел (h) третьего (2) диска SCSI (da). Том Vinum может называться, например, /dev/gvinum/concat — как легко видеть, имя тома никак не связано с именем раздела.

Обычно newfs(8) пытается интерпретировать имя раздела и сообщает об ошибке при невозможности такой интерпретации:

# newfs /dev/gvinum/concat

newfs: /dev/gvinum/concat: can't figure out file system partition

Для создания файловых систем на томе Vinum следует использовать команду newfs(8):

# newfs /dev/gvinum/concat

Замечание: Для FreeBSD версий до 5.0 необходимо использовать флаг -v и старую схему именования устройств:

# newfs -v /dev/vinum/concat

Создание конфигурации Vinum

Стандартное (GENERIC) ядро FreeBSD не включает Vinum. Хотя и можно собрать специальное ядро с включенной поддержкой Vinum, этот вариант не рекомендуется. Обычный способ активизации Vinum — загрузка модуля для ядра (kld). При этом, явно использовать команду kldload(8) нет необходимости: при старте утилита gvinum(8) проверит наличие поддержки Vinum в ядре и при необходимости загрузит модуль автоматически.

Активация

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

volume myvol state up

volume bigraid state down

plex name myvol.p0 state up org concat vol myvol

plex name myvol.p1 state up org concat vol myvol

plex name myvol.p2 state init org striped 512b vol myvol

plex name bigraid.p0 state initializing org raid5 512b vol bigraid

sd name myvol.p0.s0 drive a plex myvol.p0 state up len 1048576b driveoffset 265b plexoffset 0b

sd name myvol.p0.s1 drive b plex myvol.p0 state up len 1048576b driveoffset 265b plexoffset 1048576b

sd name myvol.p1.s0 drive c plex myvol.p1 state up len 1048576b driveoffset 265b plexoffset 0b

sd name myvol.p1.s1 drive d plex myvol.p1 state up len 1048576b driveoffset 265b plexoffset 1048576b

sd name myvol.p2.s0 drive a plex myvol.p2 state init len 524288b driveoffset 1048841b plexoffset 0b

sd name myvol.p2.s1 drive b plex myvol.p2 state init len 524288b driveoffset 1048841b plexoffset 524288b

sd name myvol.p2.s2 drive c plex myvol.p2 state init len 524288b driveoffset 1048841b plexoffset 1048576b

sd name myvol.p2.s3 drive d plex myvol.p2 state init len 524288b driveoffset 1048841b plexoffset 1572864b

sd name bigraid.p0.s0 drive a plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 0b

sd name bigraid.p0.s1 drive b plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 4194304b

sd name bigraid.p0.s2 drive c plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 8388608b

sd name bigraid.p0.s3 drive d plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 12582912b

sd name bigraid.p0.s4 drive e plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 16777216b

Видно, что каждый объект имеет явно описанное имя, а поддиски еще и явное положение на приводе (и то и другое может, хотя это и не рекомендуется, устанавливаться пользователем). Помимо этого, для каждого объекта хранится его состояние (и установка состояния напрямую пользователю недоступна). Vinum не хранит в конфигурационных базах информацию о приводах: она создается при сканировании дисковых разделов, помеченных как Vinum. Это дает возможность Vinum правильно идентифицировать диски при смене имени устройства.

Автоматическая активация

Замечание: Данная информация относится к исторической реализации. Gvinum обеспечивает автоматическую активацию при условии загрузки модуля ядра.

Для автоматического старта Vinum при загрузке системы добавьте следующую строку в файл конфигурации системы /etc/rc.conf:

start_vinum="YES"           # set to YES to start vinum

Если в вашей системе нет файла /etc/rc.conf, создайте его с таким содержимым. Данная строка вызовет активацию kld модуля Vinum при загрузке, а также старт всех объектов, упомянутых в конфигурации Vinum. Активация Vinum происходит до монтирования файловых систем, так что возможны автоматическая проверка (fsck(8)) и монтирование файловых систем на томах Vinum.

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


Дата добавления: 2018-10-26; просмотров: 244; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!