Примерно с неделю назад мне пришллось столкнуться с ситуацией - вылетел жёсткий диск на Sun'овском сервере, пришлось его заменить, приведу команды и последовательность действий, которые были предприняты в этой связи:
для начала мне надо было определить конфигурацию устройств хранения, тут пригодилась команда

**metastat**

я обнаружил что диски объединены в raid 0+1 - не самый эффективный рэйд на мой взгляд, но sun придерживается другого мнения, самое интересное, что Sun Volume Manager по какой-то причине написан таким образом, что stripe/concat массивы(мета-устройства) он создаёт только из физических устройств, а raid 1 создаётся только из stripe/concat метаустройств, кстати об этой особенности упоминается в Sun'овском курсе по SVM, и в man'е однако упоминание лишь вскользь...
вобщем-то практически сразу бросились девайсы, для которых maintenance needed, следующим шагом было задать команду:

**cfgadm -x unconfigure <device>**

что привело к загранию синего огонька на устройстве, ждём останоки шпинделя с диками и можно вынимать дисковод...
Дальше надо вставить замену - такой же по ёмкости аппарат, или более ёмкий, в моём случае это был Ultra SCSI 320 винчестер ёмкостью 76 гигабайт. Следующим шагом надо вписать в командной строке

**cfgadm -x configure /dev/rdsk/c??t??d??s??**

то есть сказать системе что у неё появилось новое устройство, мало того с ним уже можно работать(дать солярису официальное разрешение на задействование устройства SunOS и Sun'овские железки разрабатываются для вояк, поэтому всё так строго)
Шаг номер следующий - убедиться, что файлы устройств на месте и связаны со свежеобретённым устройством:

**devfsadm -C -v**

это для вытирания файлов устройств, не связанных с устройствами, и

**devfsadm -c disk**

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

**format**

она интерактивная и довольно простая, самое главное - новый диск нарезать на слайсы также, как нарезана рабочая половинка рэйда.
Удаляем несуществуещие реплики метабазы данных о массивах:

**metadb -d -f <device>**

где device - это это слайс на котором лежит удаляемая реплика базы.
Создаём, если нужно, на новом устройстве метабазу:

**metadb -a -c 3 -l <length> <device>**

где device - это это слайс на котором будет лежать создаваемая реплика базы.
length длина записи, должна совпадать с такими же репликами на др. разделах.
дальше надо убрать несуществующие рэйды из metadatabase - базы, где хранятся записи о массивах
для начала вынем несуществующие устройства из raid-1:

**metadetach -f <mirror> <submirror>**

тут миррор - это рэйд-1, а submirror - это один из компонентов зеркала (максимальное количество компонентов в зеркале - 3 или меньше, обычно 2-х хватает)
очищаем метабазу, удаляем сведения о несуществующих слайсах:

**metaclear <device>**

выполняем эту команду для каждого несуществующего слайса
далее на полученных слайсах я нарезал липовый рэйд-0

**metainit -f <device> 1 1**

и повтыкал получившиеся половинки зеркал в зеркала с имеющимися половиками и начался процесс автоматического восстановления данных

**metattach <miror> <submirror>**

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

З.Ы. есть такой мануал у санок - 816-4520.pdf ака Solaris Volume Manager Administration Guide на него я и опирался.

Next Post