Soft RAID1 на FreeBSD

Данный раздел пополняется силами модераторов и постоянных посетителей.

Модераторы: Trinity admin`s, Free-lance moderator`s

Ответить
Аватара пользователя
Stranger03
Сотрудник Тринити
Сотрудник Тринити
Сообщения: 12979
Зарегистрирован: 14 ноя 2003, 16:25
Откуда: СПб, Екатеринбург
Контактная информация:

Soft RAID1 на FreeBSD

Сообщение Stranger03 » 09 ноя 2005, 13:20

Публикуется с разрешения автора...

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

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

Код: Выделить всё

- 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 и ad не трогаем. Установка 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_system ... OL.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
....  И  каждое  утро, приходя на работу, Вы будете получать письмо от сервера о статусе

Николай Солонин <mailto:nsol@REMOVE-THIS-FAKE.ukr.net>

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

Аватара пользователя
brj
Advanced member
Сообщения: 144
Зарегистрирован: 03 янв 2005, 21:29
Откуда: Красноярск
Контактная информация:

Сообщение brj » 09 ноя 2005, 22:09

Для 5.x, 6.x, 7.x ветки можно использовать gmirror. Немножко больше возможностей и не только для ATA дисков.

Как настроить и перенести существующую боевую систему  на gmirror: http://people.freebsd.org/~rse/mirror/

Из плюсов gmirror позволяет делать load balancing с наименее загруженного диска, round-robin и split. Рекомендации лучших собаководов так сказать :roll:

Аватара пользователя
brj
Advanced member
Сообщения: 144
Зарегистрирован: 03 янв 2005, 21:29
Откуда: Красноярск
Контактная информация:

Сообщение brj » 09 ноя 2005, 22:15

в догонку: ещё очень желательно использовать пакет smartmontools.

http://smartmontools.sourceforge.net/

Пакет позволяет следить за дисками. Есть в портах freebsd. Особенно полезно это для "софтрейдов" и gmirror, когда за самим массивом видно диски системы. Позволяет настроить что и как мониторить в SMART, что делать на ошибки, отсылает електропочту, производить short/full smart self тест по расписанию и ещё много полезного делает.

Аватара пользователя
Stranger03
Сотрудник Тринити
Сотрудник Тринити
Сообщения: 12979
Зарегистрирован: 14 ноя 2003, 16:25
Откуда: СПб, Екатеринбург
Контактная информация:

Сообщение Stranger03 » 10 ноя 2005, 17:05

brj писал(а):в догонку: ещё очень желательно использовать пакет smartmontools.
Спасибо за наводку, попробуем.

Ответить

Вернуться в «Серверы - FAQ»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 10 гостей