Тема: Узнаем какой диск из софтварного райда надо менять

Есть сервер Sun Fire x2100. Особенность санов такова что точно неизвесно с какой стороны начинается нумирация именно в этой модели (у нас мнения разделились). Поэтому вот способ как найти какой диск надо менять.

1. Смотрим сосояние raid'a (raid1)

# cat /proc/mdstat
Personalities : [raid1]
md4 : active raid1 sdb1[2](F) sda1[0]
      4192832 blocks [2/1] [U_]

md5 : active raid1 sdb2[2](F) sda2[0]
      3148672 blocks [2/1] [U_]

md1 : active raid1 sdb5[1] sda5[0]
      521984 blocks [2/2] [UU]

md2 : active raid1 sda6[0]
      186442240 blocks [2/1] [U_]

md0 : active raid1 sdb3[1] sda3[0]
      1052160 blocks [2/2] [UU]


у md4 и md5 около sdb1 и sdb2 наблюдаем буковку (F), что означает что этот диск надо заменить. Тоесть плохой sdb.

2. Смотрим точно ли чтото плохо

mdadm --detail /dev/md4

    Number   Major   Minor   RaidDevice State
       0       8        1        0      active sync   /dev/sda1
       1       0        0       -1      removed
       2       8       17       -1      faulty   /dev/sdb1

mdadm --detail /dev/md5

    Number   Major   Minor   RaidDevice State
       0       8        2        0      active sync   /dev/sda2
       1       0        0       -1      removed
       2       8       18       -1      faulty   /dev/sdb2

нас интерисует faulty. У хорошего диска этой строки просто нету

    Number   Major   Minor   RaidDevice State
       0       8        5        0      active sync   /dev/sda5
       1       8       21        1      active sync   /dev/sdb5

3. Осталось выяснить какой именно диск менять. Для этого используем тулc hdparm

hdparm -I /dev/sdb

...
ATA device, with non-removable media
        Model Number:       ST3200820DS
        Serial Number:      3DE08W1C
        Firmware Revision:  3.AAC
...

4. Вот и все. Тормозим машину, вытаскиваем диск и ищим на нем серийник 3DE08W1C и меняем его на новй. Как это сделаю напишу что делать дальше.

Добавлено: 30-09-2009 09:05:13

Продолжение...

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

Меняя диски на лету надо вытащить плохой диск из массива, для этого

mdadm --manage /dev/md0 --fail /dev/sdb3

где /dev/md0 - массив, а /dev/sdb3 - плохой диск

Вставить новый диск и создать такие же разделы что и на хорошем диски массива. Для этого можно воспользоватся sfdisk'ом

sfdisk -d /dev/sda | sfdisk /dev/sdb

значит что мы имеем:

md4 sda1
md5 sda2
md1 sda5
md2 sda6
md0 sda3

это массив и sdb который разбит также как и sda. Осталось только вставить диски в массив:

mdadm --manage /dev/md0 --add /dev/sdb3
mdadm --manage /dev/md2 --add /dev/sdb6
mdadm --manage /dev/md1 --add /dev/sdb5
mdadm --manage /dev/md5 --add /dev/sdb2
mdadm --manage /dev/md4 --add /dev/sdb1

и смотрим что получилось:

cat /proc/mdstat
Personalities : [raid1]
md4 : active raid1 sdb1[2] sda1[0]
      4192832 blocks [2/1] [U_]
        resync=DELAYED
md5 : active raid1 sdb2[2] sda2[0]
      3148672 blocks [2/1] [U_]
        resync=DELAYED
md1 : active raid1 sdb5[2] sda5[0]
      521984 blocks [2/1] [U_]
        resync=DELAYED
md2 : active raid1 sdb6[2] sda6[0]
      186442240 blocks [2/1] [U_]
      [===>.................]  recovery = 19.8% (37084416/186442240) finish=57.0min speed=43600K/sec
md0 : active raid1 sdb3[1] sda3[0]
      1052160 blocks [2/2] [UU]
unused devices: <none>

все :)

2

Re: Узнаем какой диск из софтварного райда надо менять

Красиво!

3

Re: Узнаем какой диск из софтварного райда надо менять

То же самое но с GPT

root@osd0009:~# cat /proc/mdstat 
Personalities : [raid1] 
md1 : active raid1 sdb2[0]
      9992064 blocks super 1.2 [2/1] [U_]
md0 : active raid1 sdb1[2] sda1[0](F)
      19514240 blocks super 1.2 [2/1] [_U]

убираем поломанный диск

root@osd0009:~# mdadm --manage /dev/md0 --remove failed
mdadm: hot removed 8:1 from /dev/md0

размечаем новый

root@osd0009:~# parted /dev/sdj
GNU Parted 2.3
Using /dev/sdj
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print
Error: /dev/sdj: unrecognised disk label
(parted) mklabel gpt
(parted) mkpart primary 1 20480
(parted) mkpart swap 20480 30720
(parted) q
Information: You may need to update /etc/fstab.

добавляем новые диски в массив

root@osd0009:~# mdadm --manage /dev/md0 --add /dev/sdj1
mdadm: added /dev/sdj1
root@osd0009:~# mdadm --manage /dev/md1 --add /dev/sdj2
mdadm: added /dev/sdj2

в процессе

root@osd0009:~# cat /proc/mdstat 
Personalities : [raid1] 
md1 : active raid1 sdj2[2] sdb2[0]
      9992064 blocks super 1.2 [2/1] [U_]
          resync=DELAYED
md0 : active raid1 sdj1[3] sdb1[2]
      19514240 blocks super 1.2 [2/1] [_U]
      [=>...................]  recovery =  8.1% (1600000/19514240) finish=1.3min speed=228571K/sec
unused devices: <none>

и не помешает поставить boot флаг

root@osd0009:~# cat /proc/mdstat 
Personalities : [raid1] 
md1 : active raid1 sdj2[2] sdb2[0]
      9992064 blocks super 1.2 [2/2] [UU]
md0 : active raid1 sdj1[3] sdb1[2]
      19514240 blocks super 1.2 [2/2] [UU]
unused devices: <none>
root@osd0009:~# parted /dev/sdj set 1 boot on
Information: You may need to update /etc/fstab.                           
root@osd0009:~# parted /dev/sdb set 1 boot on
Information: You may need to update /etc/fstab.