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

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

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

Конфигурационный файл описывает объекты Vinum. Описание простого тома может быть таким:

    drive a device /dev/da3h
    volume myvol
      plex org concat
        sd length 512m drive a

Здесь описываются четыре объекта Vinum:

В результате обработки такого конфигурационного файла 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). Графически созданный нами том представлен на Рис. 20-4.

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

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

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

20.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

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

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

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

20.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

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

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

20.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

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

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

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

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

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