RAID (англ. redundant array of independent/inexpensive disks — избыточный массив независимых/недорогих жёстких дисков) — массив из нескольких дисков, управляемых контроллером, взаимосвязанных скоростными каналами и воспринимаемых внешней системой как единое целое. В зависимости от типа используемого массива может обеспечивать различные степени отказоустойчивости и быстродействия. Служит для повышения надёжности хранения данных и/или для повышения скорости чтения/записи информации (RAID 0).

Аббревиатура RAID изначально расшифровывалась как «Redundant Arrays of Inexpensive Disks» («избыточный (резервный) массив недорогих дисков», так как они были гораздо дешевле RAM). Именно так был представлен RAID его создателями Петтерсоном (David A. Patterson), Гибсоном (Garth A. Gibson) и Катцом (Randy H. Katz) в 1987 году. Со временем RAID стали расшифровывать как «Redundant Array of Independent Disks» («избыточный (резервный) массив независимых дисков»), потому как для массивов приходилось использовать и дорогое оборудование (под недорогими дисками подразумевались диски для ПЭВМ).

Калифорнийский университет в Беркли представил следующие уровни спецификации RAID, которые были приняты как стандарт де-факто:

* RAID 0 представлен как неотказоустойчивый дисковый массив.
* RAID 1 определён как зеркальный дисковый массив.
* RAID 2 зарезервирован для массивов, которые применяют код Хемминга.
* RAID 3, 4, 5 используют чётность для защиты данных от одиночных неисправностей.
* RAID 6 используют чётность для защиты данных от двойных неисправностей

Более подробно про уровни RAID можно почитать вот здесь.

Для создания RAID 1 я использую утилиту gmirror. Все что необходимо администратору — это создать зеркало. Все остальные операции с зеркалом (включая синхронизацию дисков, нахождение и исправление ошибок) будут производиться автоматически.

Чтобы создать зеркало, надо ввести команду:

# gmirror label -v -b round-robin gm0 /dev/ad4

label — указывает, что надо создать зеркало
-v — включает режим отладки
-b round-robin — как распределяем нагрузку. В данном случае — методом перебора её элементов по круговому циклу.
gm0 — имя первого зеркала
/dev/ad4 — диск с данными для зеркалирования (в вашем случае может быть совершенно другой, например /dev/ad0)

Но т.к. диск в настоящее время используется для записи и недоступен нам таким образом, то мы получим ошибку:

gmirror: Can't store metadata on /dev/ad4: Operation not permitted.

Чтобы от нее избавиться надо поменять параметры sysctl (после перезагрузки они вернутся на значения по умолчанию):

# sysctl kern.geom.debugflags=16

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

Metadata value stored on /dev/ad4.
Done.

Теперь добавляем следующую строчку в /boot/loader.conf:

geom_mirror_load="YES"

Так же надо отредактировать файл /etc/fstab (тут будьте очень внимательны!). Сейчас файл должен выглядеть примерно вот так:

# Device                Mountpoint      FStype  Options         Dump    Pass#
/dev/ad4s1b             none            swap    sw              0       0
/dev/ad4s1a             /               ufs     rw              1       1
/dev/ad4s1e             /tmp            ufs     rw              2       2
/dev/ad4s1f             /usr            ufs     rw              2       2
/dev/ad4s1d             /var            ufs     rw              2       2
/dev/acd0               /cdrom          cd9660  ro,noauto       0       0

Надо изменить все ad на gm, а после /dev/ добавить mirror/. В итоге должно получиться что-то наподобие вот этого:

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

Тут есть одно НО. Если ваша команда по созданию зеркала имела вид как и у меня, т.е. диск был ad4, а вы создавали gm0, то надо поменять ad4 на gm0. Я специально привел листинг файла /dev/fstab ДО и ПОСЛЕ редактирования, чтобы было понятно.

Перезагружаемся. Если не было допущено никаких ошибок, то все заработает после перезагрузки. Останется лишь добавить в зеркало второй диск. Делается это командой:

# gmirror insert gm0 /dev/ad6

Если просмотреть в логе /var/log/messages, то там должна появиться следующая строчка:

Aug  4 21:34:13 server kernel: GEOM_MIRROR: Device gm0: rebuilding provider ad6.

Если она есть, то все хорошо. Если нет — проверяем правильно ли указан диск. Проверить состояние массива можно следующей командой:

# gmirror status

или для более детальной информации:

# gmirror list

Как только после команды gmirror list вы увидите статус

STATE: COMPLETE

то знайте — диски синхронизировались и raid 1 успешно создан.