FreeBSD и RAID1 на ICH5R (SATA)


История началась с того, что перед организацией возникла задача поставить коммуникационный сервер. Слишком высоких требований по производительности не предъявлялось, и был выбран одноюнитовый сервер Entry p115

Итак, имеем сервер следующей конфигурации:

- MB Tyan Tomcat i875PF (S5105) http://tyan.com/products/html/tomcati875pf.html
- CPU Intel Prescott Pentium4 3.0 GHz / 1Mb / 800 MHz
- RAM 2*DDR 512Mb PC3200 Kingston
- HDD 2 * 80 GB WD Caviar 7200 SATA 8Mb (WD800JD)
- CDROM 52x TEAC
- Case 1U, rack mount.


Поскольку современный винчестер - "не то место где нужно хранить информацию" (с) не помню чей, то для обеспечения надежности систему будем ставить на RAID1 (т.е. mirror).

В качестве операционной системы была выбрана FreeBSD 5.3R, как одна из лучших систем для Internet сервера, и последняя версия с большим спектром поддерживаемого оборудования и стабильная в работе. В версии 5.3 особенно радовала нормальная поддержка SATA и конкретно стоящего на нашей материнке южника ICH5R. На этом южнике стоит остановиться особо. Часто в руководстве к материнкам использующим этот чип (а в буклетах - так вообще всегда), говориться, что он "RAID 0 или 1", но при детальном рассмотрении оказывается что оно "The Intel(R) RAID
feature is available in Win2000 and WinXP". Т.е. он то конечно raid, но не полностью аппаратный, часть функций реализуется на программном уровне. Несмотря на создание RAID1 в BIOS'е контроллера, при установке системы видим 2 диска. В общем, поставить систему в лоб, на raid, как на один диск, созданный в BIOS'е полностью аппаратного контроллера как Adaptec или HighPoint у Вас не получится.

Но способ установки есть, хотя и чуть менее простой.

Выбирая между atacontrol, vinum или ccd я остановился на первом

Итак, установка пошагово:

1. При загрузке машины нажимаем <Ctrl>+<A> для входа в Array Configuration Utiliry
2. Выбираем Create RAID Volume
3. RAID Level: RAID1 (Mirroring)
4. Нажимаем кнопочку и ждем пока RAID1 будет собираться.

По окончании работы утилиты, вставляем диск с FreeBSD 5.3 и загружаемся с него

Выбираем стандартную установку и ставим систему по минимуму и, что называется "абы поставить". Эта система все равно ставиться на 5 минут. Дело в том, что при выборе дисков мы, к сожалению, увидим только ad4 и ad6 - рейда не видим. Ставимся на любой диск, не имеет
значения, и после установки и перезагрузки (уже с HDD) набираем заветную команду:

# atacontrol
create RAID1 ad4 ad6

ar0 created

- создано устройство ar0 - собственно RAID1 из дисков ad4 и ad6

Собственно ради этого и нужна была черновая установка системы

Конечно, проще было бы загрузиться с rescue-диска (со второго диска комплекта.), но его чаще всего нет под рукой.

Теперь можно перегрузиться и по настоящему поставить FreeBSD по вкусу.
Ставить нужно на ar0 (этот пункт появиться в fdisk при установке), диски ad4 и ad6 не трогаем. Установка FreeBSD на наш RAID ничем не
отличается от установки на обычный жесткий диск. Об установке написано достаточно много, тут все зависит от Ваших потребностей. Поэтому этот вопрос не затрагиваем, а сразу к вкусненькому. J

Итак, система живет на рейде ar0. Что мы можем с ним делать?

Посмотреть ATA устройства можно так:

# atacontrol list

ATA channel 0:
Master: no device present
Slave: no device present

ATA channel 1:
Master: acd0 <TEAC CD-552E/VER 1.00> ATA/ATAPI revision 0
Slave: no device present

ATA channel 2:
Master: ad4 <WDC WD800JD-00JNA0/05.01C5> Serial ATA v1.0
Slave: no device present

ATA channel 3:
Master: : ad6 <WDC WD800JD-00JNA0/05.01C5> Serial ATA v1.0
Slave: no device present

проверить состояние рейда можно командой:

# atacontrol status ar0
ar0: ATA RAID1 subdisks: ad4 ad6 status: READY


и вообще man atacontrol - очень полезно J, к примеру здесь:
http://www.citforum.ru/operating_systems/manpages/freebsd/ATACONTROL.8.shtml

Проверка функционирования RAID 1

Проверить работу RAID1 в действии довольно просто и очень стоит попробовать поиграться с этим до того как сервер станет боевым, с полезной нагрузкой.

# atacontrol list

ATA channel 0:
Master: no device present
Slave: no device present

ATA channel 1:
Master: acd0 <TEAC CD-552E/VER 1.00> ATA/ATAPI revision 0
Slave: no device present

ATA channel 2:
Master: ad4 <WDC WD800JD-00JNA0/05.01C5> Serial ATA v1.0
Slave: no device present

ATA channel 3:
Master: ad6 <WDC WD800JD-00JNA0/05.01C5> Serial ATA v1.0
Slave: no device present

# atacontrol status ar0

ar0: ATA RAID1 subdisks: ad4 ad6 status: READY

пока все нормально

Моделируем вылет одного из дисков - отсоединяем любой из дисков рейда, например ad6. Для этого диск отсоединяем, или можно дать команду atacontrol detach

# atacontrol detach 3

Диск выключен физически, с остановкой шпинделя, и через некоторое время мы увидим в окне первого терминала предупреждение

ad6: deleted from ar0 disk1
ar0: WARNING - mirror lost
ad6: WARNING - removed from configuration

проверяем состояние ar0

# atacontrol status ar0

ar0: ATA RAID1 subdisks: ad4 DOWN status: DEGRADED

система заметила нарушение работы рейда

# atacontrol list

ATA channel 0:
Master: no device present
Slave: no device present

ATA channel 1:
Master: acd0 <TEAC CD-552E/VER 1.00> ATA/ATAPI revision 0
Slave: no device present

ATA channel 2:
Master: ad4 <WDC WD800JD-00JNA0/05.01C5> Serial ATA v1.0
Slave: no device present

ATA channel 3:
Master: ad6 no device present
Slave: no device present

Естественно, диска ad6 нет - мы его выключили

Подключаем винт назад (можно дать команду atacontrol attach)

# atacontrol attach 3
Master: ad6 <WDC WD800JD-00JNA0/05.01C5> Serial ATA v1.0
Slave: no device present

А в системной консоли:

ad6: 76319MB <WDC WD800JD-00JNA0/05.01C5> [155061/16/63] at ata3-master SATA150

# atacontrol status ar0

ar0: ATA RAID1 subdisks: ad4 DOWN status: DEGRADED

При этом винт появился физически, но он не в рейде

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

- один из винтов DOWN, несмотря на то, что физически он поднялся. Тут дело в логике работы raid - произошел развал зеркала - винт ad6 был
исключен из состава рейда. В контейнере ar0 остался один из двух работающих винтов - ad4. Несмотря на подключение винта ad6 назад, он уже не входит в состав контейнера ar0, и его нужно туда внести

# atacontrol addspare ar0 ad6

В системной консоли:

ad6: inserted into ar0 disk1 as spare

проверим

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

Осталось восстановить зеркалирование

# atacontrol rebuild ar0

Процесс запустился в фоновом режиме и можно посмотреть его текущее состояние

# atacontrol status ar0
ar0: ATA RAID1 subdisks: ad4 ad6 status: REBUILDING 1% completed
...

Через час

atacontrol status ar0
ar0: ATA RAID1 subdisks: ad4 ad6 status: READY

- зеркало восстановлено J

Для контроля состояния RAIDа можно вписать в crontab:

0 8 * * * root atacontrol status ar0 | mail -s "server1 RAID status" mymail@mydomain.com

.... И каждое утро, приходя на работу, Вы будете получать письмо от сервера о статусе

Николай Солонин <nsol@ukr.net.>

atacontrol - программа управления драйвером устройства ATA созданная
Soren Schmidt, появилась в составе FreeBSD с версии 4.

Обновлено: 12.03.2015