The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Раздел полезных советов: Горячая замена диска в RAID gmirror"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Раздел полезных советов: Горячая замена диска в RAID gmirror"  +/
Сообщение от auto_tips (ok) on 16-Ноя-09, 09:49 
Цель: Необходимо создать RAID - массив с возможностью горячей замены. После длительных и неудачных игр с попыткой создать массив RAID10 или RAID1 через ICH7R, было принято решение попробовать программный RAID1. Попытка оказалась удачной. Но пришлось наступить на несколько граблей. Что бы облегчить этот путь другим, знакомлю сообщество с проверенным решением.

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

Мои эксперименты проводились на:
FreeBSD  7.2-RELEASE #0:GENERIC  i386
Чипсет ICH7R
Диски WDC WD5001AALS

Требования:
BIOS
1.      SATA controller mode:   Enhanced
2.      SATA AHCI:              Enabled
или что то подобное

В противном случае подключенный диск не инициализируется системой, во всяком случае, у меня не получилось. Подозреваю, что диск не инициализируется на уровне BIOS. Возможно, это частный случай.
При использовании режима AHCI, диск инициализируется автоматом. Нет необходимости делать rescan или reinit и тому подобное. В моем случае все это не помогло, пока не выставил режим AHCI.

Находим и отключаем убитый диск:
Нам в помощь
   atacontrol list
   atacontrol cap device
   gmirror info
   gmirror status

Внимание номера каналов и разъемов SATA никак не совпадают, в том числе их порядок.

Например:

   # gmirror status

   Name                 Status                  Components
   mirror/gm0              COMPLETE                ad4
                                                   ad8
   mirror/gm1              DEGRADED                ad6

Видно что массив gm0 находится в нормальном состоянии (COMPLETE), а массив gm1 находятся в аварийном режиме (DEGRADED).

Так же видно в RAID gm1  один диск отсутствует!!! Его нужно найти и заменить. Предположим наихудший вариант - диск умер, и выяснить его серийный номер не представляется возможным.
Тогда нужно действовать методом исключения.

Выполняем команду "atacontrol cap device" для каждого видимого диска. Все диски можно увидеть с помощью "atacontrol list".

   # atacontrol list

   ATA channel 0:
      Master:      no device present
      Slave:  acd0 <LG CD-ROM CRD-8522B/2.01> ATA/ATAPI revision 0
   ATA channel 1:
      Master:      no device present
      Slave:       no device present
   ATA channel 2:
      Master:  ad4 <WDC WD5001AALS-00L3B2/01.03B01> SATA revision 2.x
      Slave:       no device present
   ATA channel 3:
      Master:  ad6 <WDC WD5001AALS-00L3B2/01.03B01> SATA revision 2.x
      Slave:       no device present
   ATA channel 4:
      Master:  ad8 <WDC WD5001AALS-00L3B2/01.03B01> SATA revision 2.x
      Slave:       no device present
   ATA channel 5:
      Master:     no device present
      Slave:       no device present
  
В нашем случае для ad4, ad8, ad6.

   # atacontrol cap ad8

В выводе этой команды мы увидим строку типа

   serial number         WD-WCASY6287255

Таким образом мы получили номера всех работающих дисков.

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

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

Путем исключения находим неработающий диск. Отключаем его следующим образом.
   1. Отключаем DATA кабель.
   2. Отключаем кабель питания.

Ставим новый диск и подключаем его

   1. Подключаем кабель питания.
   2. Подключаем DATA кабель.


"atacontrol list"  должен показать новое устройство ad#. Например: ad10

   # atacontrol list
   ATA channel 0:
      Master:      no device present
      Slave:  acd0 <LG CD-ROM CRD-8522B/2.01> ATA/ATAPI revision 0
   ATA channel 1:
      Master:      no device present
      Slave:       no device present
   ATA channel 2:
      Master:  ad4 <WDC WD5001AALS-00L3B2/01.03B01> SATA revision 2.x
      Slave:       no device present
   ATA channel 3:
      Master:  ad6 <WDC WD5001AALS-00L3B2/01.03B01> SATA revision 2.x
      Slave:       no device present
   ATA channel 4:
      Master:  ad8 <WDC WD5001AALS-00L3B2/01.03B01> SATA revision 2.x
      Slave:       no device present
   ATA channel 5:
      Master: ad10 <WDC WD5001AALS-00L3B2/01.03B01> SATA revision 2.x
      Slave:       no device present

Добавляем новый диск в  RAID-масив.

Во первых нужно  заставить RAID "забыть" об отключенном диске

   # gmirror forget gm1

Теперь команда "gmirror status gm1" покажет нам что RAID gm1 в полном порядке, правда состоит из одного диска.

   # gmirror status gm1

   Name           Status                  Components
   mirror/gm1  COMPLETE            ad6

Можно приступить к добавлению нового подключенного винчестера.

   # gmirror insert gm1 /dev/ad10

Эта команда автоматически начинает перестроение массива.

Теперь gmirror status покажет примерно такое:

   # gmirror status gm1
   Name            Status                  Components
   mirror/gm1  DEGRADED            ad6
                                   ad10 (1%)

Наберитесь терпения эта процедура займет некоторое время. Для дисков 500G около двух часов. Естественно в это время все службы продолжают работать.

По окончании процесса синхронизации порлучим:

   # gmirror status gm1

   Name           Status                  Components
   mirror/gm1  COMPLETE            ad6
                                   ad10

Если интересно  то с помощью  команд gstat или systat -io можно посмотреть активность процесса синхронизации.


URL:
Обсуждается: http://www.opennet.dev/tips/info/2230.shtml

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по ответам | RSS]

2. "Горячая замена диска в RAID gmirror"  +/
Сообщение от LeNiN (ok) on 16-Ноя-09, 11:51 
> 1. Подключаем кабель питания.
> 2. Подключаем DATA кабель.

Интересно, а все SATA-диски при получении питания не будут сразу пытаться раскручивать пластины? Иначе, мне кажется, из-за резкого скачка тока можем получить проблемы.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

3. "Горячая замена диска в RAID gmirror"  +/
Сообщение от pavlinux (ok) on 16-Ноя-09, 12:14 
А сам WD умеет HotSwap ?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

4. "Горячая замена диска в RAID gmirror"  +/
Сообщение от Nas_tradamus email(ok) on 16-Ноя-09, 15:50 
Познавательно. Спасибо автору.

Не знал про gmirror forget gm1

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

5. "Горячая замена диска в RAID gmirror"  +/
Сообщение от zakat email(??) on 16-Ноя-09, 18:21 
Где то  смотрел спецификации, так там сказано, что можно на ходу подключать, отключать SATA диски с 15-пиновими разьемами питания. А вот экспериментировать с четырех-пиновыми не рекомендуют. Я так понял в связи с возможным импульсом тока и возможным зависанием материнки или выходом из строя блока питания (заметьте не винчестера)

Сегодня провел испытания, у меня прошло все нормально, зависаний не было. Очевидно зависит от блока питания (мой на 500W удержал без проблем). Хотя нужно отметить что искрение есть. На боевом сервере я бы подобные эксперименты  с 4-пиновым питанием не проводил.
На SATA разьемах искрения, нет вообще! Лично многократно проверял.
В этой статье, я не пытаюсь создать велосипед. Я описываю способ позволяющий выполнить гарячую замену винта при слабом финансировании. Согласитесь далеко не каждая контора купит девайс с правильной горячей заменой. Это мягко говоря не совсем дешево.

RAID хоть и не спасает от дурака,но дает некий запас прочности, позволяющий спать спокойно. А гарячая замена нужна для случая, когда остановка сервера крайне нежелательна.
Особенно если замену можно провести или на горячую, или с 23:30 до 4:00. Я в это время предпочитаю мирно спать, или как минимум заниматься чем то полезным....
Например: пить чай.

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

6. "Горячая замена диска в RAID gmirror"  +/
Сообщение от zakat email(??) on 16-Ноя-09, 18:24 
>А сам WD умеет HotSwap ?

Я указал модель винчестеров. Если интересно можно воспользоваться спецификацией.

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

7. "Раздел полезных советов: Горячая замена диска в RAID gmirror"  +/
Сообщение от zakat email(ok) on 16-Ноя-09, 19:04 
Для того чтобы получать статус RAID в письменных отчетах системы, нужно подправить файл periodic.conf на предмет daily_status_gmirror_enable="YES"
Для тех кто ленится читать сообщения системы в письменном виде, при условии что сервер находится в непосредственной близости можно рекомендовать звуковое сопровождение.
Для этого:

1.Устанавливаем beep
#cd /usr/ports/audio/beep
#make install

2.В файл /boot/loader.conf добавляем строку
speaker_load=YES

Это для будущих загрузок системы, а сейчас нужно подгрузить вручную
#kldload speaker

3. Создаем скрипт raid_alarm следующего содержания
#!/bin/sh
#alarm=`/sbin/gmirror status | /usr/bin/grep COMPLETE |/usr/bin/awk '{ print $2 }'`
alarm=`/sbin/gmirror status | /usr/bin/grep DEGRADED |/usr/bin/awk '{ print $2 }'`
echo $alarm
if [ "X$alarm" = 'X' ]
then
exit
fi
LIMIT=30
LIMIT2=5
a=1
d=1
while [ "$d" -le $LIMIT2 ]
do
d=$(expr 1 + $d)
while [ "$a" -le $LIMIT ]
do
  a=$(expr 1 + $a)
  b=$(expr 100 \* $a)
  /usr/local/bin/beep -p $b 1
done

while [ ! "$a" -le 1 ]
do
  a=$(expr $a - 1)
  b=$(expr 100 \* $a)
  /usr/local/bin/beep -p $b 1
done
done

Запускаем скрипт через крон, например раз в час
0     *       *       *       *       root    /.../raid_alarm

При проблемах с массивом раз в час сервер будет заливаться трелью сирены.

Для проверки скрипта можно закоментировать третью строку скрипта и раскоментировать вторую(только для проверки, если есть RAID gmirror!!!) Потом все вернуть на место.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

8. "Горячая замена диска в RAID gmirror"  +/
Сообщение от аноним on 17-Ноя-09, 05:40 
блин, автор, читай ман по поводу:
atacontrol attach channel
atacontrol detach channel
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

10. "Раздел полезных советов: Горячая замена диска в RAID gmirror"  +/
Сообщение от sHaggY_caT (ok) on 17-Ноя-09, 07:38 
>[оверквотинг удален]
> ad10
>
>Если интересно  то с помощью  команд gstat или systat -io
>можно посмотреть активность процесса синхронизации.
>
>
>
>
>URL:
>Обсуждается: http://www.opennet.dev/tips/info/2230.shtml

Стоит делать gmirror не из непосредственно дисков, то есть {ad,da}[0-9], а из слайсов. Зачем? Затем, что бы можно было поменять диск на диск другой модели:) Нужно просто сделать слайс такого же размера :)
Обращаю внимание, что часто требуется диск большего размера, чем был (если используется диск другого размера) из-за геометрии

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

11. "Раздел полезных советов: Горячая замена диска в RAID gmirror"  +/
Сообщение от zakat email(ok) on 17-Ноя-09, 10:40 

>Стоит делать gmirror не из непосредственно дисков, то есть {ad,da}[0-9], а из
>слайсов. Зачем? Затем, что бы можно было поменять диск на диск
>другой модели:) Нужно просто сделать слайс такого же размера :)
>Обращаю внимание, что часто требуется диск большего размера, чем был (если используется
>диск другого размера) из-за геометрии

Согласен, но статья немного одругом!

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

12. "Горячая замена диска в RAID gmirror"  +/
Сообщение от zakat email(ok) on 17-Ноя-09, 10:52 
>блин, автор, читай ман по поводу:
>atacontrol attach channel
>atacontrol detach channel

Читал, но кроме мана, еще и голова нужна.

Только желательно наоборот
atacontrol detach channel
atacontrol attach channel

При отключеном AHCI, например имею:
atacontrol list

ATA channel 3:
      Master:  ad6 <WDC WD5001AALS-00L3B2/01.03B01> SATA revision 2.x
      Slave:   ad8 <WDC WD5001AALS-00L3B2/01.03B01> SATA revision 2.x

Заметьте, на одном канале!!!

Пусть,оба диска в массиве и на них система. Допустим ad8 умер. Ну и сделай detach, а я посмотрю!!!
#atacontrol detach ata3
Все приехали!!! Кнопка reset как раз для этого случая, пользуйтесь.

Повторяю еще раз, я не на что не претендую, просто даю проверенный,рабочий вариант!!!

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

13. "Горячая замена диска в RAID gmirror"  +/
Сообщение от XoRe (ok) on 17-Ноя-09, 16:49 
> ... один диск отсутствует!!! Его нужно найти и заменить.

Вот на этом этапе, возможно, сможет помочь glabel.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

14. "Горячая замена диска в RAID gmirror"  +/
Сообщение от аноним on 17-Ноя-09, 17:59 
когда на одном канале, да, не получится, но в статье у разные каналы с _включеном_ ahci и мудрствовать особо не нужно...
Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

15. "Горячая замена диска в RAID gmirror"  +/
Сообщение от аноним on 17-Ноя-09, 18:08 
>> ... один диск отсутствует!!! Его нужно найти и заменить.
>
>Вот на этом этапе, возможно, сможет помочь glabel.

к сожалению, glabel здесь не поможет.

Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

16. "Горячая замена диска в RAID gmirror"  +/
Сообщение от zakat email(ok) on 17-Ноя-09, 18:18 
>когда на одном канале, да, не получится, но в статье у разные
>каналы с _включеном_ ahci и мудрствовать особо не нужно...

Не очень то понял о чем речь?

Но все же, рассмотрим мой случай. Есть четыре порта , и четыре винта. Собрано два массива.
Если AHCI отключен то имеем:
ATA channel 3:
      Master:  ad6 <WDC WD5001AALS-00L3B2/01.03B01> SATA revision 2.x
      Slave:   ad8 <WDC WD5001AALS-00L3B2/01.03B01> SATA revision 2.x
ATA channel 4:
      Master:  ad10 <WDC WD5001AALS-00L3B2/01.03B01> SATA revision 2.x
      Slave:   ad12 <WDC WD5001AALS-00L3B2/01.03B01> SATA revision 2.x

Тут detach не пройдет!!! Это понятно. А новый диск при подключении автоматически не инициализируется.
Включаем AHCI:
ATA channel 2:
      Master:  ad4 <WDC WD5001AALS-00L3B2/01.03B01> SATA revision 2.x
      Slave:       no device present
   ATA channel 3:
      Master:  ad6 <WDC WD5001AALS-00L3B2/01.03B01> SATA revision 2.x
      Slave:       no device present
   ATA channel 4:
      Master:  ad8 <WDC WD5001AALS-00L3B2/01.03B01> SATA revision 2.x
      Slave:       no device present
   ATA channel 5:
      Master: ad10 <WDC WD5001AALS-00L3B2/01.03B01> SATA revision 2.x
      Slave:       no device present
В этом случае можно использовать detach - attach, но нужды нет. Новый диск инициализируется автоматически.
Я особо не понимаю, с чем я мудрствую

Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

17. "Горячая замена диска в RAID gmirror"  +/
Сообщение от zakat email(ok) on 17-Ноя-09, 18:19 
>>Вот на этом этапе, возможно, сможет помочь glabel.
>
>к сожалению, glabel здесь не поможет.

Тут я согласен, не поможет!

Ответить | Правка | ^ к родителю #15 | Наверх | Cообщить модератору

18. "Горячая замена диска в RAID gmirror"  +/
Сообщение от Анонимуз on 18-Ноя-09, 02:51 
Как это. Нужно сделать метки verhny_vint, sredny_vint, nizhny_vint ну или по номерам сата-портов.
Ответить | Правка | ^ к родителю #17 | Наверх | Cообщить модератору

19. "Горячая замена диска в RAID gmirror"  +/
Сообщение от zakat email(ok) on 18-Ноя-09, 10:06 
>> ... один диск отсутствует!!! Его нужно найти и заменить.
>
>Вот на этом этапе, возможно, сможет помочь glabel.
>Как это. Нужно сделать метки verhny_vint, sredny_vint, nizhny_vint ну или по номерам сата-портов.

Да, но это не на этапе когда "... один диск отсутствует!!!"

Это скорее для "Как вывод, нужно метить винчестеры  в момент установки и  брать соответствующий корпус для удобной замены."

Согласен, метить можно любым способом!!!

Ответить | Правка | ^ к родителю #18 | Наверх | Cообщить модератору

20. "Горячая замена диска в RAID gmirror"  +/
Сообщение от аноним on 18-Ноя-09, 12:53 
у меня все сервера обходит паук, который собирает конфигурашки, и в том числе снимает данные с atacontrol, gmirror, smartctl, таким образом выпавший винт можно найти всегда.
а glabel... был случай когда винт навернулся и при любом его заюзывании система "замирала" на минуту-две, даже от glabel status, и поменять его быстро не получалось, сутки жил сервак с дохлым винтом, тогда пытался даже не дышать :) заблаговременный сбор информации спасает, да.
Ответить | Правка | ^ к родителю #19 | Наверх | Cообщить модератору

21. "Горячая замена диска в RAID gmirror"  +/
Сообщение от XoRe (ok) on 18-Ноя-09, 16:02 
>Это скорее для "Как вывод, нужно метить винчестеры  в момент установки
>и  брать соответствующий корпус для удобной замены."

Да, согласен, я имел в виду именно это)

Ответить | Правка | ^ к родителю #19 | Наверх | Cообщить модератору

22. "Горячая замена диска в RAID gmirror"  +/
Сообщение от BlackHawk (ok) on 18-Ноя-09, 18:47 
1. надо убирать AUTOSYNC с рейда - потому как если сервак бутнется он будет 3 года делать fsck на пару с ребилдом гмирорра(-ов)
2. уже писали - гмиррор строить надо на слайсах
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

23. "Горячая замена диска в RAID gmirror"  +/
Сообщение от zuborg email on 18-Ноя-09, 19:00 
> надо убирать AUTOSYNC с рейда - потому как если сервак бутнется он будет 3 года делать fsck на пару с ребилдом гмирорра(-ов)

верно, но тогда надо не забывать после ребута проверять gmirror, и автоматом ребилдить, если что

>уже писали - гмиррор строить надо на слайсах

желательно, на слайсах чуть неполного размера, по сравнению с винтом. т.к. другая 500Г модель винта может оказаться на 100М меньше чем текущая, и воткнуть её в рейд уже не получится

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

24. "Горячая замена диска в RAID gmirror"  +/
Сообщение от аноним on 18-Ноя-09, 19:46 
>верно, но тогда надо не забывать после ребута проверять gmirror, и автоматом ребилдить, если что

еще правильнее настроить в мониторилке проверку статуса gmirror-a.

Ответить | Правка | ^ к родителю #23 | Наверх | Cообщить модератору

25. "Горячая замена диска в RAID gmirror"  +/
Сообщение от sHaggY_caT (ok) on 19-Ноя-09, 11:52 
>> надо убирать AUTOSYNC с рейда - потому как если сервак бутнется он будет 3 года делать fsck на пару с ребилдом гмирорра(-ов)
>
>верно, но тогда надо не забывать после ребута проверять gmirror, и автоматом
>ребилдить, если что

Ну да, и сделать мониторинг этого события:)

>>уже писали - гмиррор строить надо на слайсах
>
>желательно, на слайсах чуть неполного размера, по сравнению с винтом. т.к. другая
>500Г модель винта может оказаться на 100М меньше чем текущая, и
>воткнуть её в рейд уже не получится

Я это и имела ввиду, как-то неточно написала про меньший размер, спасибо.
Давайте добавим эти советы в статью? Конечно, она немного о другом, но сами советы, мне кажется, лишними не будут...

Ответить | Правка | ^ к родителю #23 | Наверх | Cообщить модератору

26. "Горячая замена диска в RAID gmirror"  +/
Сообщение от Plaguer email on 13-Апр-16, 10:09 
А не проще было узнать серийники так:
less /var/run/dmesg.boot | grep ada
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру