19.6. Несколько примеров

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

19.6.1. Конфигурационный файл

Конфигурационный файл описывает объекты 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.

В результате обработки такого конфигурационного файла gvinum(8) выдаст нам следующее:

  # gvinum -> 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

На этом кратком листинге показан формат вывода gvinum(8). Графически созданный нами том представлен на Рис. 19-4.

Рисунок 19-4. Простой том Vinum



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

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

19.6.2. Повышаем надежность: зеркалирование

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

 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

Рис. 19-5 иллюстрирует структуру полученного тома.

Рисунок 19-5. Зеркалированный том Vinum



В данном примере каждый набор содержит все 512 MB адресного пространства тома. Как и в предыдущем случае, каждый набор состоит из одного поддиска.

19.6.3. Оптимизируем производительность

Зеркалированный том из предыдущего примера гораздо более отказоустойчив, чем обычный том, но его производительность ниже: каждый запрос на запись выливается в две операции физической записи, что вдвое увеличивает необходимую пропускную способность шины дисковой подсистемы. Увеличение производительности требует иного подхода: вместо зеркалирования данные распределяются (перемежением) по максимальному количеству физических дисков. Следующий пример конфигурации создает том с перемежением на четырех дисках:

 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

Рисунок 19-6. Том с перемежением



Новосозданный том представлен на Рис. 19-6. Плотность заштрихованных участков показывает расположение страйпов в адресном пространстве набора (от светлых к темным).

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

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

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

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

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



Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам, связанным с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам, связанным с русским переводом документации, пишите в рассылку <frdp@FreeBSD.org.ua>.
Информация по подписке на эту рассылку находится на сайте проекта перевода.

Обновлено: 12.03.2015