# Raid-1, что чинить сначала: "maintenance" или "last Erred"?

Нурлан Мухамедьевич Тлеушев

Иногда кто-то не помнит, а кто-то не знает как надо поступить в случае если у вас "сломался" RAID-1 (зеркало). Надеюсь это руководство чем-то поможет.

Solaris Volume Manager (svm, former Solstice Disk Suite)


RAID-1, что чинить сначала: "Maintenance" или "Last Erred"?


Данная статья никоим образом не является панацеей от всех бед, также не стоит ее рассматривать как замену документации по Solaris Volume manager. В статье описаны часто задаваемые вопросы "как чинить" и "с чего начать".


Рассмотрим ситуации:

-- нормальный вывод metastat, ошибок нет (Пример 1)

-- одна половинка в состоянии "Maintenance" (Пример 2, см.Таблицу 1)

-- одна половинка в состоянии"Maintenance", вторая в состоянии "Last Erred" (Пример 3, см. Таблицу 1)

-- обе половинки в состоянии "Maintenance" (см. Таблицу 1)


Примечание 1:

В приведенных примерах имя зеркального тома обозначено десятком (например, d10), имена зеркальных половинок обозначены следующими за десятком цифрами (например, d11 - первая половинка, d12 - вторая половинка)


Пример 1 - нормальный вывод команды metastat для зеркала d40, ошибок нет (у всех половинок статус "Okay"):

d40: Mirror

Submirror 0: d41

State: Okay

Submirror 1: d42

State: Okay

Pass: 1

Read option: roundrobin (default)

Write option: parallel (default)

Size: 33240834 blocks (15 GB)


d41: Submirror of d40

State: Okay

Size: 33240834 blocks (15 GB)

Stripe 0:

Device Start_Block Dbase State Reloc Hot Spare

c0t0d0s7 0 No Okay Yes


d42: Submirror of d40

State: Okay

Size: 33240834 blocks (15 GB)

Stripe 0:

Device Start_Block Dbase State Reloc Hot Spare

c0t1d0s7 0 No Okay Yes

Действий не требуется.


Пример 2 -вывод команды metastat для зеркала d30, ошибка на одной из половинок:


d30: Mirror

Submirror 0: d31

State: Okay

Submirror 1: d32

State: Needs maintenance

Pass: 1

Read option: roundrobin (default)

Write option: parallel (default)

Size: 61412160 blocks (29 GB)


d31: Submirror of d30

State: Okay

Size: 61412160 blocks (29 GB)

Stripe 0:

Device Start_Block Dbase State Reloc Hot Spare

c1t0d0s3 0 No Okay Yes


d32: Submirror of d30

State: Needs maintenance

Invoke: metareplace d30 c1t2d0s3 <new device>

Size: 61412160 blocks (29 GB)

Stripe 0:

Device Start_Block Dbase State Reloc Hot Spare

c1t2d0s3 0 No Maintenance Yes

Рассмотрим подробнее: одна половинка находится в состоянии"Maintenance".

Смотрим Таблицу 1 и принимаем правильное решение по ситуации.


Пример 3 - вывод команды metastat для зеркала d60, ошибки есть:


d60: Mirror

Submirror 0: d61

State: Needs maintenance

Submirror 1: d62

State: Needs maintenance

Pass: 1

Read option: roundrobin (default)

Write option: parallel (default)

Size: 70994286 blocks (33 GB)


d61: Submirror of d60

State: Needs maintenance

Invoke: after replacing "Maintenance" components:

metareplace d60 c0t8d0s7 <new device>

Size: 70994286 blocks (33 GB)

Stripe 0:

Device Start_Block Dbase State Reloc Hot Spare

c0t8d0s7 0 No Last Erred Yes


d62: Submirror of d60

State: Needs maintenance

Invoke: metareplace d60 c0t9d0s7 <new device>

Size: 70994286 blocks (33 GB)

Stripe 0:

Device Start_Block Dbase State Reloc Hot Spare

c0t9d0s7 0 No Maintenance Yes


Рассмотрим подробнее Пример 3: на первый взгляд, обе половинки находятся в состоянии"Maintenance", однако, не нужно паниковать, давайте изучим весь листинг.

Обращаем внимание на столбик State. Теперь мы видим, что одна половинка Maintenance, а вторая Last Erred.

Далее смотрим Таблицу 1 и принимаем правильное решение по ситуации.


Таблица 1.


Keyword


Статус


Meaning


Action


Необходимые действия


Last Erred

The submirror has errors, and data for the mirror has potentially been corrupted.


Зеркальная половина имеет ошибки и вся информация на зеркале, потенциально, может быть утеряна.

Fix submirrors in the

"Maintenance" state first, then

fix the submirror in the "Last Erred" state. See "How to Enable a Slice in a Submirror (DiskSuite Tool)" on page 149, or "How to Replace a Slice in a Submirror (DiskSuite Tool)" on page 150. After fixing the error, validate the data.


Сначала чиним половинки, находящиеся в состоянии "Maintenance", затем, те, что в состоянии "Last Erred"

Maintenance

The submirror has an error.


Зеркальная половина сломана.

Repair the submirror. You can fix submirrors in the "Errored" state in any order. See "How to Enable a Slice in a Submirror (DiskSuite Tool)" on page 149, or "How to Replace a Slice in a Submirror (DiskSuite Tool)" on page 150.


Чиним половинки, находящиеся в состоянии "Maintenance" или "Errored" в любом порядке, затем, те, что в состоянии "Last Erred"


Для разрешения проблемы мы должны сначала вставить новый диск в свободный трей и запустить команду из строки "Invoke" для замены сбойного диска на новый согласно Таблицы 1. Однако, такое возможно лишь на тех машинах, где есть свободный дисковый трей. На остальных же машинах придется установить новый диск в тот же трей, где был сбойный диск. Теперь даем такую команду:

metareplace d60 c0t9d0s7 <new device>

Зачастую диски могу оказаться исправными, и тогда ничего переставлять не нужно. Мы даем такую команду:

metareplace -e d60 c0t9d0s7

тем самым разрешая использовать в зеркале "старый" компонент.

Но вы должны быть уверенны, что диск исправен, иначе, в лучшем случае вы останетесь в прежней ситуации, а в худшем - потеряете все данные.

Следующая команда поможет вам узнать диагностическую информацию о дисках:

iostat -E (или iostat -En)


В ситуации, когда обе половинки в состоянии "Maintenance", можно попробовать выполнить команду:

metasync (например metasync d60)

если не помогло, то следовать инструкции из Таблицы1.


Примечание (касательно реплик svm - metadb):

1. на машинах с количеством дисков до четырех включительно можно устанавливать по три реплики на каждый из дисков.

2. на машинах, где стоит более четырех НЖМД нужно ставить не более, чем по одной реплике на каждый диск.