RAIDFrame, failed component

classic Classic list List threaded Threaded
10 messages Options
Reply | Threaded
Open this post in threaded view
|

RAIDFrame, failed component

Dennis S.Davidoff
Привет всем.

Такой вопрос, делаю RAID1 с автоконфигом и рутовой партицией, два
винта wd0 wd1. Дело было так (вкраце):
- поставил систему на wd0
- пересобрал ядро с поддержкой RAID, перезагрузился

Подготовил wd1 (про неRAID-овую партицую не буду тут писать):
- разметил disklabel-ом wd1
- сконфигурировал raid:

raid0.conf
START array
1 2 0

START disks
/dev/wd1e
/dev/wd2e

START layout
128 1 1 1

START queue
fifo 100

- разметил raid0, залил и сконфигурировал туда систему, включил -A root
- перезагрузился, переразметил wd0 под использование raid-а

Теперь после перезагрузки пишет:

# raidctl -s raid0
raid0 Components:
           /dev/wd1e: optimal
          component1: failed
No spares.
Parity status: DIRTY
Reconstruction is 100% complete.
Parity Re-write is 100% complete.
Copyback is 100% complete.
#

По мануалу сделал следующее:
raidctl -a /dev/wd0e raid0
raidctl -vF component1 raid0
raidctl -P raid0

После чего результатом было:
# raidctl -s raid0
raid0 Components:
           /dev/wd1e: optimal
          component1: spared
Spares:
           /dev/wd0e: used_spare
Parity status: clean
Reconstruction is 100% complete.
Parity Re-write is 100% complete.
Copyback is 100% complete.
#

Перезагружаюсь и вижу вновь ту же самую ошибку:

# raidctl -s raid0
raid0 Components:
           /dev/wd1e: optimal
          component1: failed
No spares.
Parity status: DIRTY
Reconstruction is 100% complete.
Parity Re-write is 100% complete.
Copyback is 100% complete.
#

Где грабли? Может надо вновь сделать -C, предварительно поменяв в
конфиге wd2e на wd0e?

Прим.: raid0.conf в /etc/ не перекладывал, он нужен был только для
создания, поэтому я так понимаю -c при начальной загрузке не делается,
пробовал класть его в /etc/ поменяв wd2e на wd0e - тоже самое:
component1: failed. Еще заметил: ядро перестало читать /etc/boot.conf,
где у меня перенаправление на консоль настроено.

disklabel wd0 и wd1:
16 partitions:
#             size        offset  fstype [fsize bsize  cpg]
  a:        257985            63  4.2BSD   2048 16384  256 # Cyl     0*-   255
  c:     156301488             0  unused      0     0      # Cyl     0 -155060
  e:     156038337        258048    RAID                   # Cyl   256 -155055*

disklabel raid0:
16 partitions:
#             size        offset  fstype [fsize bsize  cpg]
  a:        257920           128  4.2BSD   2048 16384  251 # Cyl     0*-   251
  b:       2097152        258048    swap                   # Cyl   252 -  2299
  c:     156038272             0  unused      0     0      # Cyl     0 -152381*
  e:       8388608       2355200  4.2BSD   2048 16384  323 # Cyl  2300 - 10491
  f:        514048      10743808  4.2BSD   2048 16384  323 # Cyl 10492 - 10993
  g:       8388608      11257856  4.2BSD   2048 16384  323 # Cyl 10994 - 19185
  h:     136391680      19646464  4.2BSD   2048 16384  323 # Cyl 19186 -152380
#
 
--
Sincerely,
Dennis


Reply | Threaded
Open this post in threaded view
|

Re: RAIDFrame, failed component

Dmitry Bogdan
> Где грабли?
Как лечить:
Отресторить массив, чтоб spare стал used и
выдернуть шнур питания. Подождать 15 секунд,
воткнуть шнур обратно, включить машину и
идти гонять чаи, пока не пройдёт raidctl -P.
У меня только после такой случайной махинации
(хотел проверить, как долго будет длиться проверка
чётности) запаска честно встала в массив.

Raidframe - тот ещё подарок.

> Еще заметил: ядро перестало читать
> /etc/boot.conf,
> где у меня перенаправление на консоль настроено.
boot.conf читает загрузчик, а не ядро, поэтому
он (boot.conf) находиться должен на wd0a:/etc/boot.conf


Reply | Threaded
Open this post in threaded view
|

Re[2]: RAIDFrame, failed component

Dennis S.Davidoff
По поводу boot.conf - да, поспешил :) Конечно читает загрузчик,
переложил в неRAID-вую партицую wd0{a,b}:/etc/boot.conf - заработало.

Еще положил в /etc/raid0.conf с измененным wd2e->wd0e, загружаюсь,
вижу в консоли:
..
raid0: Device already configured!
raidctl: raid0: Error re-writing parity!
ioctl (RAIDFRAME_CONFIGURE) failed
raid0: Parity status: DIRTY
raid0: Initiating re-write of parity
Automatic boot in progress: starting file system checks.
..

А что значит отресторить массив? Это не пройдет, т.к. RAIDFrame не
считает wd0e компонентом:
# raidctl -R /dev/wd0e raid0
raidctl: /dev/wd0e is not a component of this device
#
Я ведь ранее его конфигурировал (-C) с несуществующим винтом (wd2):
START disks
/dev/wd1e
/dev/wd2e
А теперь задача стоит назначить вместо wd2e: wd0e.

Я еще раз повторюсь: я пытался сделать так:
raidctl -a /dev/wd0e raid0
raidctl -vF component1 raid0
raidctl -P raid0

После перезагрузки все равно система показывает component1 failed:

# raidctl -vs raid0
raid0 Components:
           /dev/wd1e: optimal
          component1: failed
No spares.
Component label for /dev/wd1e:
   Row: 0, Column: 0, Num Rows: 1, Num Columns: 2
   Version: 2, Serial Number: 777, Mod Counter: 329
   Clean: No, Status: 0
   sectPerSU: 128, SUsPerPU: 1, SUsPerRU: 1
   Queue size: 100, blocksize: 512, numBlocks: 156038272
   RAID Level: 1
   Autoconfig: Yes
   Root partition: Yes
   Last configured as: raid0
component1 status is: failed.  Skipping label.
Parity status: DIRTY
Reconstruction is 100% complete.
Parity Re-write is 100% complete.
Copyback is 100% complete.
#

ЗЫ. И не понятно зачем выдергивать шнур питания? Это из шаманства
что-то...

Wednesday, November 16, 2005, 4:11:10 PM, you wrote:

>> Где грабли?
DB> Как лечить:
DB> Отресторить массив, чтоб spare стал used и
DB> выдернуть шнур питания. Подождать 15 секунд,
DB> воткнуть шнур обратно, включить машину и
DB> идти гонять чаи, пока не пройдёт raidctl -P.
DB> У меня только после такой случайной махинации
DB> (хотел проверить, как долго будет длиться проверка
DB> чётности) запаска честно встала в массив.

DB> Raidframe - тот ещё подарок.

>> Еще заметил: ядро перестало читать
>> /etc/boot.conf,
>> где у меня перенаправление на консоль настроено.
DB> boot.conf читает загрузчик, а не ядро, поэтому
DB> он (boot.conf) находиться должен на wd0a:/etc/boot.conf

--
Sincerely,
Dennis


Reply | Threaded
Open this post in threaded view
|

Re: Re[2]: RAIDFrame, failed component

Dmitry Bogdan
On Wed, 16 Nov 2005 16:52:17 +0300
 "Dennis S.Davidoff" <[hidden email]> wrote:
> По поводу boot.conf - да, поспешил :) Конечно читает
> загрузчик, переложил в неRAID-вую партицую
> wd0{a,b}:/etc/boot.conf - заработало.
Отлично !

> Еще положил в /etc/raid0.conf с измененным
> wd2e->wd0e, загружаюсь, вижу в консоли:
Верните всё на место, чтоб у вас опять было:
# raidctl -s raid0
raid0 Components:
           /dev/wd1e: optimal
          component1: spared
Spares:
           /dev/wd0e: used_spare
Parity status: clean
Reconstruction is 100% complete.
Parity Re-write is 100% complete.
Copyback is 100% complete.
#
После этого _проделайте_ манипуляцию
со шнуром питания, про которую я вам
рассказал.


Reply | Threaded
Open this post in threaded view
|

Re[3]: RAIDFrame, failed component

Anton Maksimenkov
In reply to this post by Dennis S.Davidoff
Hi, Dennis.

> Еще положил в /etc/raid0.conf с измененным wd2e->wd0e, загружаюсь,
> вижу в консоли:
> ..
> raid0: Device already configured!
> raidctl: raid0: Error re-writing parity!
> ioctl (RAIDFRAME_CONFIGURE) failed
> raid0: Parity status: DIRTY
> raid0: Initiating re-write of parity
> Automatic boot in progress: starting file system checks.
> ..

Не надо ложить в /etc. Если РАИД автоконфигурируемый, то raid0.conf
больше не нужен, ибо инфа где-то в РАИД структурах диска хранится. А
то что лежит в /etc система при загрузке и пытается сконфигурировать
(предполагается, что они не автоконфигурируемые), это в rc есть.
Смысл - даже когда ядро без опции автоконфигурирования, РАИДы после
загрузки будут подключены. А в твоём случае - она пытается
сконфигурить already configured РАИД.

> А что значит отресторить массив? Это не пройдет, т.к. RAIDFrame не
> считает wd0e компонентом:
> # raidctl -R /dev/wd0e raid0
> raidctl: /dev/wd0e is not a component of this device
> Я ведь ранее его конфигурировал (-C) с несуществующим винтом (wd2):
> START disks
> /dev/wd1e
> /dev/wd2e
> А теперь задача стоит назначить вместо wd2e: wd0e.
> Я еще раз повторюсь: я пытался сделать так:
> raidctl -a /dev/wd0e raid0
> raidctl -vF component1 raid0
> raidctl -P raid0

Попробуй сделать это с wd2e, он добавится, отресторится. Потом с wd0e
то же проделать попробуй.
И попробуй ему с новым конфигом (где wd0 и wd1) сделать
# raidctl -C raid0.conf
# raidctl -A no raid0
# raidctl -A yes raid0
# raidctl -A root raid0
ибо, повторюсь, инфа о том, что в РАИДе должны быть wd1 и wd2 записана
в структурах РАИДа, при перезагрузке оттуда и берется. Так вот, я
думаю, что после насильственной конфигурации (-C) и выкл./вкл.
автоконфигурации конфиг будет прописан "в РАИД".


> После перезагрузки все равно система показывает component1 failed:
--
engineer


Reply | Threaded
Open this post in threaded view
|

Re[4]: RAIDFrame, failed component

Dennis S.Davidoff
Wednesday, November 16, 2005, 5:30:22 PM, you wrote:

[snip]
ehr> Попробуй сделать это с wd2e, он добавится, отресторится. Потом с wd0e
ehr> то же проделать попробуй.
ehr> И попробуй ему с новым конфигом (где wd0 и wd1) сделать
ehr> # raidctl -C raid0.conf
ehr> # raidctl -A no raid0
ehr> # raidctl -A yes raid0
ehr> # raidctl -A root raid0

# raidctl -C ./raid0.conf raid0
raidctl: ioctl (RAIDFRAME_CONFIGURE) failed
#

Похоже это надо делать с ядром, которое без автоконфигурации.

--
Sincerely,
Dennis


Reply | Threaded
Open this post in threaded view
|

Re[5]: RAIDFrame, failed component

Anton Maksimenkov
Hi, Dennis.

ehr>> Попробуй сделать это с wd2e, он добавится, отресторится. Потом с wd0e
ehr>> то же проделать попробуй.
ehr>> И попробуй ему с новым конфигом (где wd0 и wd1) сделать
ehr>> # raidctl -C raid0.conf
ehr>> # raidctl -A no raid0
ehr>> # raidctl -A yes raid0
ehr>> # raidctl -A root raid0
> # raidctl -C ./raid0.conf raid0
> raidctl: ioctl (RAIDFRAME_CONFIGURE) failed
> Похоже это надо делать с ядром, которое без автоконфигурации.

Да, да. Кстати, можно попробовать ещё -с (не -С), то есть
ненасильственную. Может она прокатит.

--
engineer


Reply | Threaded
Open this post in threaded view
|

Re[4]: RAIDFrame, failed component

Dennis S.Davidoff
In reply to this post by Dmitry Bogdan
Wednesday, November 16, 2005, 5:09:24 PM, you wrote:

DB> On Wed, 16 Nov 2005 16:52:17 +0300
DB>  "Dennis S.Davidoff" <[hidden email]> wrote:
>> По поводу boot.conf - да, поспешил :) Конечно читает
>> загрузчик, переложил в неRAID-вую партицую
>> wd0{a,b}:/etc/boot.conf - заработало.
DB> Отлично !

>> Еще положил в /etc/raid0.conf с измененным
>> wd2e->wd0e, загружаюсь, вижу в консоли:
DB> Верните всё на место, чтоб у вас опять было:
DB> # raidctl -s raid0
DB> raid0 Components:
DB>            /dev/wd1e: optimal
DB>           component1: spared
DB> Spares:
DB>            /dev/wd0e: used_spare
DB> Parity status: clean
DB> Reconstruction is 100% complete.
DB> Parity Re-write is 100% complete.
DB> Copyback is 100% complete.
DB> #
DB> После этого _проделайте_ манипуляцию
DB> со шнуром питания, про которую я вам
DB> рассказал.

Сделал как вы сказали.

# raidctl -sv raid0
raid0 Components:
           /dev/wd1e: optimal
          component1: spared
Spares:
           /dev/wd0e: used_spare
Component label for /dev/wd1e:
   Row: 0, Column: 0, Num Rows: 1, Num Columns: 2
   Version: 2, Serial Number: 777, Mod Counter: 348
   Clean: No, Status: 0
   sectPerSU: 128, SUsPerPU: 1, SUsPerRU: 1
   Queue size: 100, blocksize: 512, numBlocks: 156038272
   RAID Level: 1
   Autoconfig: Yes
   Root partition: Yes
   Last configured as: raid0
component1 status is: spared.  Skipping label.
raidctl: ioctl (RAIDFRAME_GET_COMPONENT_LABEL) failed
#

Вырубил питание у машины. Секунд через 15 включил и загрузился, при
этом на консоли было:

raidctl: raid0: Error re-writing parity!
ioctl (RAIDFRAME_CONFIGURE) failed
raid0: Parity status: DIRTY
raid0: Initiating re-write of parity
Automatic boot in progress: starting file system checks.
/dev/rraid0a: 1653 files, 9867 used, 53364 free (12 frags, 6669 blocks, 0.0% fragmentation)
/dev/rraid0a: MARKING FILE SYSTEM CLEAN
и т.д.

Теперь смотрим состояние:

# raidctl -sv raid0
raid0 Components:
           /dev/wd1e: optimal
          component1: failed
No spares.
Component label for /dev/wd1e:
   Row: 0, Column: 0, Num Rows: 1, Num Columns: 2
   Version: 2, Serial Number: 777, Mod Counter: 356
   Clean: No, Status: 0
   sectPerSU: 128, SUsPerPU: 1, SUsPerRU: 1
   Queue size: 100, blocksize: 512, numBlocks: 156038272
   RAID Level: 1
   Autoconfig: Yes
   Root partition: Yes
   Last configured as: raid0
component1 status is: failed.  Skipping label.
Parity status: DIRTY
Reconstruction is 100% complete.
Parity Re-write is 100% complete.
Copyback is 100% complete.
#

Как видно, ничего не изменилось.

ЗЫ. Нашел тут howto: http://www.eclectica.ca/howto/openbsd-software-raid-howto.php
Мой вариант, у него по мануалу удалось поменять несуществующий диск
wd2 на wd0, но складывается впечатление что автор сего опуса писал
этот мануал вслепую, т.к. по этой схеме у меня ничего не сработало.

И вообще, думается мне что RAIDFrame сырой какой-то (хотябы в
отношении raidctl). Почему-то нельзя добавить диск вот так просто, а
надо как-то с бубном это делать, мне не понятно. Кстати, попутно в
misc@ задал вопрос (кто подписан, видел), мне там предлагали после
реконструирования сделать -R:
# raidctl -Rv /dev/wd0e raid0
raidctl: ioctl (RAIDFRAME_GET_INFO) failed
#

Блин, жаль дежелоперы реализации RAIDFrame в опене не читают misc@ (по
крайней мере, ткнули бы пальцем что нужно сделать).

--
Sincerely,
Dennis


Reply | Threaded
Open this post in threaded view
|

Re[5]: RAIDFrame, failed component

Anton Maksimenkov
Hi, Dennis.

> И вообще, думается мне что RAIDFrame сырой какой-то (хотябы в
> отношении raidctl). Почему-то нельзя добавить диск вот так просто, а
> надо как-то с бубном это делать, мне не понятно. Кстати, попутно в
> misc@ задал вопрос (кто подписан, видел), мне там предлагали после
> реконструирования сделать -R:
> # raidctl -Rv /dev/wd0e raid0
> raidctl: ioctl (RAIDFRAME_GET_INFO) failed
> Блин, жаль дежелоперы реализации RAIDFrame в опене не читают misc@ (по
> крайней мере, ткнули бы пальцем что нужно сделать).

Повторюсь - если у тебя не автоконфигурируемый раид, то после загрузки
его просто надо сконфигурить с другим конфигом. Автоконфигурируемый -
попробуй загрузиться с ядром, которое без опции автоконфигурации,
подключить его (сконфигурировать, -с), затем сделать -A no,
расконфигурировать (-u), сконфигурировать с другим конфигом (-с или
-С), сделать -A yes. Смысл шаманства - обновить "конфиг" который
хранится в структурах автоконфигурируемого РАИДа.
--
engineer


Reply | Threaded
Open this post in threaded view
|

Re: Re[4]: RAIDFrame, failed component

Dmitry Bogdan
In reply to this post by Dennis S.Davidoff
> Как видно, ничего не изменилось.
Чьорт побери.

У меня 1 раз такое сработало, иначе не стал бы
тревожить.