= bubbalog =Дневникът на моето стадо

Съживих блога! Просто няма такова щастие…

Saturday 10.01.2009 01:09 EET · Публикувано от в = FreeBSD =

Направо не мога да опиша колко радостен и щастлив съм… просто защото блога пак е на крака и по-скоро сървъра на който живее. Направо ми се режеше по едно време…

Историята почна късно снощи, когато спряха тока. Понеже бях чувал доста истории за умрели уреди от варненските проблеми с тока отидох и дръпнах щепсела на сървъра, рутера и суича та да си спят както те, така и аз спокойно. Токът дойде сутринта докато се обличах и реших да ги пусна, та да си довърша опитите със скрипта за автоматичен бекъп на даден файл… и тогава започна проблема. За около 10 минути тока спира и тръгва 3-4 пъти и то на такъв интервал, колкото да зареди системата и да се ресетне тотално… Последния път пак им дръпнах шалтера, казах на жената да ги пусне като стане и ако има ядове да се обади и че се надявам да е жив сле толкова ресети…

Към обед се появи в чата. Каза, че блога не стартира и пуска една странна грешка при зареждане – опирва се да зареди кърнъла и вметсо това изписва

No /boot/kernel/kernel
error 16 lba 191

и оставаше да си мига на boot: промпта, да си чака да му кажеш от къде да зареди. Помеже не се сещах какво може да му се е случило, та да засича на толкова ранен етап и казах да му скубне кабела та да си почива докато се прибера вечерта.

Вечерта разбира се – от вратата на компютъра, а картинката никак не беше приятна. Седи си милото и не може да зареди нищичко. След няколко пцувни и няколко ресета (се се надявах да се оправи от самосебе си или поне да даде признак на живот) се сетих за “Live Filesystem CD”-то, което си е част от пакета на версията и го изрових, та да пробвам да направя с него – таман преди няколко седмици ми стана интересно за какво ли аджеба става това и какво може да се прави с него та се рожичках… Не че знаех конкретно какво да правя, но определено ми помогна, та да не го гледам като теле кисела зелка. Докато зареждаше ми направи итересно впечатление нещо, което беше на пръв поглед стряскащо, се оказа приятен косвен ключ за реюаване на загадката. Грешката беше

ad0: FAILURE – READ_DMA status=51<READY,DSC,ERROR> error=40<UNCORRECTABLE> LBA=191

като попринцип няма никакъв принос за оправянето на нещата, освен да ме доведе до заключението, че грешката и проблема е софтуерен, а не в самия диск. Все пак се опитваше да зареди FreeBSD-то, но ако бях видял първо грешката… Са кат се замисля изглежда доста стряскащо…

Цялото оправяне на проблема се разви вече за около час. След като зареди разбира се се опитах да проверя дисковете с fsck, където ударих на голям камик – живата дистрибуция не знаеше како да проверява. Направо ми умря настроението… как да го оправя това подяволите? Пробвах поне да маунтна слайсовете, та да видя дали няма да стане поне да спася базата данни на блога и каквото мога там да изкарам. Направих ддиректории за маунтпоинтове (/mnt/usr, /mnt/var, /mnt/tmp, /mnt/root), /usr, /tmp и /var се монтираха без ядове, но / не можа… даде ми някаква input/output error и засече, а именно там бяха кърнъла и каквото там му трябва за да зареди ОС-а. Тогава му хрумна, да проверя всеки диск както е един по един на слаисове. И така – един по един, от най-голямата буква назад, като ad0s1a остана за накрая (нямам си идея защо така го почнах)Когато стигнах и до него изведнъж  изрева, че не можел да прочете суперблока. Явно това е мястото, което оказва колко е голям слайса, от къде до къде е по диска и такива работи… Чудесно, значи това е проблема! просто тоя SUPER-BLOCK е гръмнал и сега всичко си е там, просто трябва някакси да се оправи. Следващия промпт беше дали искам да потърси резервни копия на суперблока (О, мамма миа! Има начи! Търси, търси, търси…), но… резултата отново беше срив… от целия списък не намери нито едно копие и пак започна да мирише на преинсталация. Е, поне бях спокоен, че мога да отворя другите слайсове ида си изкарам бекъпите на базата, които пък за щастие бяха съвсем пресни. И така унесен в мисли спонтанно реших да погугля малко за “restore super block” и “recover super block”. И там беше ключа от бараката. Имаше бая хора с този проблем, като се споменаваха много тактики за ресторване на тоя блок. Нахвърлях всичките които се повтаряха най-много на един тефтер и реших да пробвам, па каквото излезе. Като начало трябваше да се провери самия диск и каква информация може да е изкопа за него. Това можеше да стане с тази команда:

# newfs -N /dev/ad0s1a
/dev/ad0s1a: 512.0MB (1048576 sectors) block size 16384, fragment size 2048
using 4 cylinder groups of 128.02MB, 8193 blks, 16448 inodes.
super-block backups (for fsck -b #) at:
160, 262336, 524512, 786688
#

От тук разбрах, че все пак имам няколко резервни копия на суперблока, които странно защо се оказа, че не са в листа за търсене на алтернативи на fsck (след като го разгледах обстойно).  Следващата стъпка бе да се върне този суперблок, но как? Fsck нямаше нужната за това -b опция. След още малко гуглене и това разбира се намери своето решение, което беше директна проверка като тип на файлова система:

#fsck_ufs -b 160 /dev/ad0s1a

О, чудо! След няколко промта за това какво да направи точно, където навсякъде дадох YES, видях заветните няколко реплики:

Filesystem marked clean
Replace old super block [y/n]
Filesystem changed

И настана тишина… последва моменталната проверка

#mount /dev/ad0s1a /mnt
#ls /mnt

и в момента в който разлисти добре познатото ми съдржание всичко ми избухна, заподскачах из стаята, а жената ме обяви за куку. Но как да спре човек един толкова искрен порв на радост?!

Последваха рестарт, всичко си зареди без проблеми, един бърз чек на дисковете и… ето ни отново на линия.

P.S.: Намерих още няколко команди, с които доста от хората казват, че с успели да се оправят с проблема, но не ми остана начин да ги пробвам. Все пак мисля, че ще е интересно да го споделя, ей така за спорта или ако не за друго – просто да са на едно място с цялата тая писаница и информация.

dd if=<dsk> skip=32 of=<disk> seek=16 bs=512 count=16
fsck_ffs -b [nomer_na_bloka] /dev/ad0s1a
tunefs -A /dev/ad0s1a

Надявам се да съм помогнал на някой с това и да съм спестил няколко инфаркта на човечеството…

Има един коментар за “Съживих блога! Просто няма такова щастие…”

  1. Момчил says:

    Много полезна статия.
    Снощи и на мен ми угасна машинката, и точно с този един ред:

    #fsck_ufs -b 160 /dev/ad0s1a

    и няколко “y” и… заспа града :)
    Мерси

Остави коментар

Писането на кирилица е задължително!
Коментари, които не са на кирилица ще бъдат изтрити без предупреждение.
Всеки коментари съдържащи 1 или повече линка, ще бъдат публикувани след одобрение.