RAID1 на базе Promise Fasttrak во FreeBSD

Jul 14, 2009 10:39

Несколько лет назад общими стараниями меня, __mixa__ и
masha.xiii.su притащили из Японии на мою работу сервак Compaq (будущий HP) ProLiant DL320 G1. Заменили в нём штатный силиконовский IDE контроллер на PCI SATA300 Promise Fasttrak (на чипсете PDC20771) и решили построить RAID1. Замена контроллера прошла не особо гладко - пробывали некий VIA-контроллер (модель уже не помню) и Sil3512 - оба оказались говном, кривоработающим не только в никсах (VIA не определялась, а силикон вис через несколько часов работы), но и в венде (силикон отказывался работать на "дискеточных" драйверах). RAID строили с помощью atacontrol(8) (этот способ мне показался легче gmirror(8)).
Итак, ниже опишу, как это было и подводные камни (в т.ч. падение и восстановление зеркала).

Для начала я изучил несколько опеннетовских статей:
- FreeBSD и RAID1 на ICH5R (SATA) (Soft RAID1 на FreeBSD - оно же с неплохими комментариями);
- Создание atacontrol RAID1 под FreeBSD на живой системе.

Итак, понеслась:
Включаем сервер. Заходим в BIOS RAID-контроллера. Здесь массив я не создавал (потому что FreeBSD 7.0 массив почему-то не видел, а 7.3 вроде должен видеть, но не проверял), а просто создал два отдельных диска.
Ставим на один из дисков систему в обычном режиме. Перезагружаемся.
Создаем массив:

# atacontrol create RAID1 ad4 ad6
Проверяем его наличие:

# atacontrol status ar0
ar0: ATA RAID1 subdisks: ad4 ad6 status: READY
Затем отключаем второй диск (не тот на котором стоит система) от массива:

# atacontrol list
ATA channel 2:
Master: ad4 SATA revision 2.x
Slave: no device present
ATA channel 3:
Master: ad6 SATA revision 2.x
Slave: no device present
# atacontrol detach ata3

Убеждаемся, что массив у нас разрушен:

# atacontrol status ar0
ar0: ATA RAID1 subdisks: ad4 DOWN status: DEGRADED

Меняем в /etc/fstab ad4 на ar0:

# cat /etc/fstab
# Device Mountpoint FStype Options Dump Pass#
/dev/ar0s1b none swap sw 0 0
/dev/ar0s1a / ufs rw 1 1
/dev/ar0s1d /var ufs rw 2 2
/dev/ar0s1e /tmp ufs rw 2 2
/dev/ar0s1f /usr ufs rw 2 2
/dev/ar0s1g /opt ufs rw 2 2

Перезагружаемся, здесь BIOS контроллера увидел массив. Смотрим в системе, что с нашим массивом:

# atacontrol status ar0
ar0: ATA RAID1 subdisks: ad4 DOWN status: DEGRADED

Теперь начинаем его собирать. В моём случае почему-то контроллер создал два массива (ar0 - ad4+... и ar1 - ad6+...), тут споткнулось много народу, ибо ar1 использует ad6, и ad6 становится невозможно подключить к ar0. Удаляем ненужный массив ar1.

# atacontrol status ar1
ar0: ATA RAID1 subdisks: ad6 DOWN status: DEGRADED
# atacontrol delete ar1

Подключаем ad6 к ar0 и собираем массив:

# atacontrol status ar0
ar0: ATA RAID1 subdisks: ad4 DOWN status: DEGRADED
# atacontrol addspare ar4 ad6
# atacontrol rebuild ar0
# atacontrol status ar0
ar0: ATA RAID1 subdisks: ad4 ad6 status: REBUILDING 1% completed

Ну вроде всё отлично. Расскажу лишь, что 12 июня зеркало рассыпалось так, что даже перестала грузиться система. Причиной оказалась флешка, которую я воткнул в сервак для изменения размера разделов. Система в упор не видела RAID и не хотела с него грузится. Фря предложила мне указать загрузочный раздел - я выбрал ad4s1a. Загрузился в сингл-мод, поправил /etc/fstab. Перезагрузился, стандартный бутменеджер увидел две системы - на ad4 и ad6 соответственно. Вместо того, чтобы их загрузить, я решил создать вручную массив в BIOSе контроллера, чем угробил MBR нафиг. Благо, узнал, что в Frenzy есть волшебная тулза (название забыл), которая умеет восстанавливать UFS-разделы. До восстановления дело не дошло, ибо эта утилитка воссоздала родной MBR. Система загрузилась как и ранее.
Поменял размеры разделов как мне надо было, для этого воспользовался советами из статейки: Миграция FreeBSD с одного диска на другой. Затем вернул зеркало. Такие дела.

software, freebsd, work, hardware

Previous post Next post
Up