Если вы заметили, то последние недели мой унылый инженерный бложик то косячил-косячил, а последнюю неделю вообще лежал отдавая честный 500. Так что вбрасываю в толксы.
Но, обо всем по порядку. Начались проблемы с того, что накрылся жесткий диск в RAID-1 зеркале. Причем из двух жестких дисков: ветеран и новичок накрылся сравнительно новый сигейт, а WDшка как работала, так и работает. Да, в гуано скатился сигейт. WDшка хоть и сильно горячее была, но жива.
Держать данные на вырожденном массиве как-то некомильфо, да и материночка на которой у меня был построен NAS держалась на ладан, тормозила. В общем напрашивался апгрейд.
Руки в ноги, поехал и прикупил я обнову. Жесткий диск на замену, да модную коробочку NAS - Dlink DNS-327L, с прицелом на OpenWRT. Помятуя о том, какие длинк ребята, блок питания 12в 3А я сразу отложил - запитал от своего... Жить я решил на стоковой прошивке, ибо пока не хотелось терять гарантию.
Тут-то и начались приключения. В общем, сначала, он захотел сам переформатить диск. Готовое зеркало он почему-то не подхватил. Окей, придется делать маневр данными. Ну, думаю, создам сейчас вырожденный raid-1 массив из одного диска, скопирую данные, потом воткну второй, синхронизирую... профит!
Благо, mdadm --create /dev/md0 -l raid1 -f -n 1 /dev/sda1 сделать просто. Фиг вам!
Оно не дает создать вырожденный массив из одного веника. Только из двух. Воткнуть в PC и создать там? Но я не знаю в каком виде этот NAS хочет его отформатировать. На тот момент я даже не знал, mdadm там используется или нет.
Почесав голову, решил сделать тупо: воткнул почти_что_умерший сигейт, с релокейтами в пару с новым WD, отформатировал их. Оказалось, эта хрень создает GPT таблицу разделов, на ней создает несколько томов, откусывая под свои нужды несколько гигабайт, а потом на одном из них уже создает запрошенный RAID1 через mdadm. Секрет был в GPT таблице разделов и служебных разделах.
Даже по гигабитной сети данные по NFS копировались долго. Больше 700 гиг, причем дофига мелких файлов. Заняло это часов эдак 18.
Довольный, вытаскиваю убитый сигейт, втыкаю на его место старичка WD, с которого все это копировалось и запускаю перестройку. Через два часа оно меня обрадовало, что перестройка завершена. Однако массив так и остался degraded, и оно настойчиво предлагало мне повторить операцию.
На третий раз Шаман Зоркий Глаз понял, что это косяк в прошивке. Очередной. Про периодически съезжающие таблички, вырвиглазный дизайн и рекомендацию использовать IE я молчу. Быстрый взгляд выявил, что внутри используется глобальный и надежный PHP + mysql прикрученные к lighttpd. Сразу бросаются в глаза процессы php-fcgi в настройках. При этом пути в ардресной строке к html файликам. nmap так же рассказал, что порт mysql торчит во внешний мир. Данные о происходящих операциях оно в жабоскрипт получает ajax'ом... В виде XML! JSON? Не, не слышали. Все это составляет очень странное впечатление.
Ах да, и еще если старт/стоп службы, о котором он кидает POST запрос занимает слишком долго - lighttpd падает.
Ладно, раз косяк в прошивке, значит надо обновиться. На железке 1.0, а на сайте 1.3 и мой баг в списке. Выкачиваю свежую прошивку с сайта dlink, заливаю...
413 - request entity too large.
Тут уже утро, пора на работу. Пробрасываю порт наружу, с работы решил попробовать еще раз, как выдалась минутка. При заливке удаленно с небольшой скоростью оно прошивку скушало!
Перестраиваю рейд, теперь оно ожило. Вечером настраиваю шары, попутно проклиная криворуких людей, писавших фирмварю, перезагружаю железку и...
После перезагрузки меня радует информация о том, что он собрался авто-ребилдить массив. Опять. На этот раз проблема оказалас в джампере «Enable 1.5Gbps phy» на одном из веников. При нем веник инициализируется немного дольше, и это (моя догадка) вызывает в скриптах дибилинка рейс, который заставляет его перестроить массив. После снятия джампера и перестройки массива все заработало.
Глюки тем временем продолжались, lighttpd после обновления прошивки стал падать на каждый чих. Быстро сообразил, что проблема в настройках. Сразу видно миграцию конфигурации из одной фирмвари в другую они не осилили. Сбрасываюсь на за заводские настройки - о чудо, половина косяков ушла!
Подключаю NFS шары, настраиваю... И тут замечаю, что что-то не то с правами. А именно - на все стоит 777. Чиню... В какой-то момент опять 777. Методом проб и ошибок выясняется, что чудные ребята из dlink делают chmod -Rf 777 /mnt/ при !каждой! перезагрузке. Причем не только на этой модели. Взял с полки баночку, натер лицо фейспальмовым маслом
К слову сказать, железка внутри весьма любопытная. Marvell Armada 370 (armv7 + VFP, без неона) @ 1.2Ghz, 512MB DDR3, 128Mb NAND. USB3.0, 2xSATA, и прочие радости. И судя по всему есть поддержка в OpenWRT.
В общем, сижу и думаю, обменять по гарантии как лютое гавно, или забить на гарантию, вкатить debian || openwrt и не знать проблем. В пользу второго говорит и то, что можно устроить народный код-ревью быдлокоду дибилинка. Мир должен знать героев. (Опытные веб-девы желающие вылить ушат дерьма на их веб-гуй есть?)