Руководство FreeBSD
Пред. | Глава 18. GEOM: Модульная инфраструктура преобразования дисковых запросов | След.

# 18.4. RAID1 - Зеркалирование (Mirroring)

Зеркалирование (Mirroring) -- технология, применяемая как в корпоративной среде, так и на домашних компьютерах. Она позволяет создавать резервные копии ''на лету''. Зеркалирование, по сути, означает, что диск A является копией диска B. Или, возможно, диск C+D является копией диска A+B. Вне зависимости от конфигурации, основной аспект -- дублирование информации. Позже, эта информация может быть с легкостью восстановлена или сохранена как резервная копия без остановки системы, или даже физически помещена в хранилище данных.

Перед началом, убедитесь, что у вас есть два физических диска равной емкости. Далее в этом примере подразумевается, что это диски прямого доступа (direct access, da(4)) с интерфейсом SCSI.

## 18.4.1. Зеркалирование первичных дисков

В статье предполагается, что FreeBSD установлена на первый жесткий диск, определяемый системой как `da0`. Это устройство будет целевым для утилиты gmirror(8).

Перед построением зеркала включите дополнительную отладочную информацию и откройте доступ к устройству. Это достигается установкой следующего значения переменной sysctl(8) `kern.geom.debugflags`:

    # sysctl kern.geom.debugflags=17

Теперь создайте зеркало. Начните процесс с сохранения метаданных на первом диске. В результате выполнения следующей команды будет создано устройство вида `/dev/mirror/gm`:

> Внимание: Создание зеркала на диске, с которого произведена загрузка, может повлечь за собой потерю данных в том случае, если данными занят последний сектор диска. Риск повреждения данных меньше, если создание зеркала немедленно следует за свежей установкой FreeBSD.

    # gmirror label -vb round-robin gm0 /dev/da0

Система должна выдать следующее сообщение:

    Metadata value stored on /dev/da0.
    Done.

Инициализируйте GEOM, это повлечет за собой загрузку модуля ядра `/boot/kernel/geom_mirror.ko`:

    # gmirror load

> Замечание: После успешного завершения команды будет создано устройство `gm0` в каталоге `/dev/mirror`.

Включите автоматическую загрузку модуля `geom_mirror.ko` во время старта операционной системы:

    # echo 'geom_mirror_load="YES"' >> /boot/loader.conf

Отредактируйте файл `/etc/fstab`, заменив в нём упоминания старого имени устройства `da0` новым именем устройства зеркала `gm0`.

> Замечание: Если vi(1) -- ваш любимый текстовый редактор, то эта задача решается просто:

>     # vi /etc/fstab

> Сделайте резервную копию файла `fstab`, набрав в vi(1) `:w /etc/fstab.bak`. Затем замените все части строк, содержащие имя устройства `da0`, на имя `gm0`, набрав `:%s/da/mirror\/gm/g`.

Независимо от аппаратного интерфейса дисков (SCSI или ATA), устройство RAID будет именоваться всегда одинаково -- `gm`. Содержимое файла `fstab` должно выглядеть подобно следующему:

    # Device                Mountpoint      FStype  Options         Dump    Pass#
    /dev/mirror/gm0s1b      none            swap    sw              0       0
    /dev/mirror/gm0s1a      /               ufs     rw              1       1
    /dev/mirror/gm0s1d      /usr            ufs     rw              0       0
    /dev/mirror/gm0s1f      /home           ufs     rw              2       2
    #/dev/mirror/gm0s2d     /store          ufs     rw              2       2
    /dev/mirror/gm0s1e      /var            ufs     rw              2       2
    /dev/acd0               /cdrom          cd9660  ro,noauto       0       0

Перезагрузите систему:

    # shutdown -r now

С этого момента во время каждой загрузки система должна использовать устройство `gm0` вместо устройства `da0`. Удостовериться в этом можно так: дождитесь загрузки системы, наберите команду `mount` и просмотрите её вывод:

    # mount
    Filesystem         1K-blocks    Used    Avail Capacity  Mounted on
    /dev/mirror/gm0s1a   1012974  224604   707334    24%    /
    devfs                      1       1        0   100%    /dev
    /dev/mirror/gm0s1f  45970182   28596 42263972     0%    /home
    /dev/mirror/gm0s1d   6090094 1348356  4254532    24%    /usr
    /dev/mirror/gm0s1e   3045006 2241420   559986    80%    /var
    devfs                      1       1        0   100%    /var/named/dev

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

    # gmirror insert gm0 /dev/da1

Во время построения зеркала статус процесса построения может быть проверен следующей командой:

    # gmirror status

Вывод вышеприведённой команды для построенного и синхронизированного зеркала выглядит подобно следующему:

          Name    Status  Components
    mirror/gm0  COMPLETE  da0
                          da1

Если есть какие-либо неполадки или зеркало находится в процессе построения, в выводе команды будет обозначен статус `DEGRADED` вместо статуса `COMPLETE`.

## 18.4.2. Решение проблем

### 18.4.2.1. Система не загружается

Если система прекращает загрузку и выдает строку:

    ffs_mountroot: can't find rootvp
    Root mount failed: 6
    mountroot>

Перезагрузите компьютер кнопкой питания или кнопкой ''Reset''. В загрузочном меню выберите опцию (6). Это приведет к тому, что система выдаст приглашение loader(8). Загрузите модуль ядра вручную:

    OK? load geom_mirror
    OK? boot

Если это сработало, модуль ядра по какой-либо причине не загрузился правильно. Проверьте корректность соответствующей записи в `/boot/loader.conf`. Если проблема осталась, добавьте строку:

    options    GEOM_MIRROR

в файл конфигурации ядра, пересоберите и переустановите ядро. Это должно устранить проблему.

## 18.4.3. Восстановление после дисковых сбоев

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

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

    # gmirror forget gm0

    # gmirror insert gm0 /dev/da1

Для наблюдения за статусом построения используйте команду `gmirror` `status`. Вывод этой команды достаточно прост и понятен.

Пред. | Начало | След.
RAID0 - Создание дисковой последовательности (Striping) | Уровень выше | Сетевые устройства GEOM Gate

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

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