LINUX.ORG.RU

3ware


0

0

Имеем удалённую машину под FreeBSD 5.4 с доступом только по SSH и тупыми админами в датацентре, которые способны только на самые элементарные операции. В этой машине - рейд на контроллере 3ware, к двум портам которого подключены два винта: в нулевом рабочий, с несколькими ошибками, от которого нужно избавиться (из него одного собственно сейчас и состоит raid-1 юнит в состоянии DEGRADED), и в первом порту чистый. Ранее в первом порту был ещё один винт, который накрылся ещё сильнее, чем тот, что остался в нулевом.

В идеале всё понятно: делаем ребилд зеркала с нулевого порта, убираем нулевой винт и рейда, заменяем на свежий, опять перестраиваем зеркало уже с первого порта, и готово. Увы, этот вариант отпадает, ребилд до конца не доходит из-за ошибок на нулевом винте (даже с опцией ignoreECC).

Тогда я решил получить прямой доступ к первому винту за контроллером, разбить и разметить его так же, как разбит нынешний диск с ошибками, перенести на него все файлы простым dump|restore (заодно по выводу в stderr получить список файлов с ошибками), и попросить людей из датацентра загрузить систему с рейда на основе уже этого винта. Однако как это сделать?

Создать DEGRADED raid-1 из одного винта tw_cli не позволяет, говорит давай два винта (хотя именно такой юнит я сейчас имею на основе нулевого порта, но он понятное дело раньше состоял из двух портов). Попробовал создать юнит типа single - контроллер это не поддерживает. Создал jbod из него - создалось без проблем, вижу винт на первом порту как /dev/twed1, но это явно не то, что мне нужно (мне же надо, чтоб из этого винта потом получилась основа для raid-1), так как даже размер twed-1 ровно на один мегабайт больше, чем twed0, и совпадает с полным рамером винта, который видно через smart. То есть очевидно на винтах в raid-1 контроллер 3ware резервирует мегабайт для собственных нужд, и мне нужно сделать так же.

Видимо поможет временное подключение к контроллеру третьего винта, после чего можно будет сделать юнит из p1 и p2, а от винта в p0 потом просто избавиться. Но я к сожалению не уверен, что они мне согласятся впихнуть туда третий винт.

Есть какие-то соображения, ссылки, или просто место, где я мог бы спросить обо всём этом у более компетентных людей? Вообще кто-нибудь такими извратами тут занимался?

Пока что пошёл упрашивать их про третий винт...

★★★★★

Вариант с третьим винтом отпал, оказывается портов в контроллере всего два (хотя tw_cli и показывает четыре). Боюсь придётся мне ждать до выходных и восстанавливаться из бэкапа на переинсталлированную с нуля фрюху...

Teak ★★★★★
() автор топика
Ответ на: комментарий от Teak

А модель контроллера из dmesg слабо было бросить, чтобы не гадать две тычки там или четыре? Могу предложить вариант тупого копирования глючного винта на новый банальным dd с conv=noerror (или как там во фре).

Kuzmich ★★
()
Ответ на: комментарий от Kuzmich

Слюшай, дорогой, а ты мой пост до конца дочитал?

Мне надо чтоб он второй винт не просто так мне отдал, а в составе рейда (пусть и временно из одного винта). Иначе этот винт потом в составе рейда уже не взлетит.

И чем тебе поможет конкретная модель контроллера? Ты ж их небось всё равно в глаза не видел.

Teak ★★★★★
() автор топика
Ответ на: комментарий от Teak

А, понял твою мысль. Ты думаешь, что у меня есть полный доступ к нулевому винту, и можно с него всё dd слить. Таки нет, от первого винта у меня всё за минусом одного метра, зарезервированного контроллером для себя. Получить доступ к этому метру я не могу никак, для этого пришлось бы убрать деградированный юнит с нулевым винтом типа raid1 и создать юнит типа jbod из того же нулевого порта. Однако о таких манипуляциях мне остаётся только мечтать, учитывая что корень системы у меня как раз на этом юните, а доступ только по SSH.

Teak ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.