Historia padu pewnego dysku…

W piątek rano jeden z naszych serwerów nagle przestał odpowiadać, nawet na
konsoli szeregowej. Kumpel przeszedł się na serwerownie zobaczyć co jest.
Komputer nie reagował, a po resecie nie widział jednego dysku (tego z którego
miał się startować system). Uznałem, że dysk mógł się zawiesić na
twardo
i zaproponowałem odłączenie komputera całkowicie z zasilania na
chwilę. Po tej operacji system wystartował normalnie z właściwego dysku.

Jak już system działał postanowiłem dyskom bliżej się przyjrzeć.
smartctl -a stwierdził OK. scsinfo -a nie
wykazało żadnych bad sektorów. Zapuściłem jeszcze
SMART Extended Self Test i uznałem, że problem został
zażegnany. Niestety po chwili serwer zaczął się zachowywać dziwnie. Dawał
błąd read-only filesystem przy dowolnej próbie zapisu na głównej
partycji. W logach było jedynie nic nie mówiące Journal aborted. Gdy
chciałem sprawę bliżej zbadać, okazało się, że bash nie widzi podstawowych
binarek. Jakież było moje zdumienie, gdy się okazało, że ls -l /
nie pokazuje nic. Ale już np. ls -l /bin/ls
pokazywało poprawne informacje o pliku. Nie było co się więcej zastanawiać,
tylko downować serwer i lecieć na serwerownię.

Na serwerowni powtórzyliśmy operację, która poprzednio przywróciła maszynę
do życia. Bez skutku — system już nie startował z tego dysku. Co prawda, BIOS
kontrolera widział dysk, ale z Media format error i go od razu
wyłączał. Wyciągnęliśmy więc serwer z szafy i zanieśliśmy do biura.

Dysk podłączony do innej maszyny też nie działał, więc zabraliśmy się za
ratowanie systemu, wykorzystując to co zostało. Na szczęście okazało się, że
większość najistotniejszych plików (/var i /home)
leży na drugim, ocalałym dysku. Znalazło się też tam miejsce na odtworzenie
/ + /usr z backupu.

Backupy wszystkich naszych serwerów zapisujemy na tasiemkach przy pomocy
oprogramowania Bacula (It comes by
night and sucks the vital essence from your computers.
). Ten wspaniały
zestaw narzędzi pozwala nam zdalne backupowanie wszystkich systemów na jednym
streamerze, zachowując informacje o tym co, gdzie i kiedy zostało
zarchiwizowane. Niestety okazało się, że przy odtwarzaniu z tych kopii
zapasowych to już nie działa tak ładnie…

Pierwszy problem to to, że gdy Bacula skończył odtwarzanie z jednej
tasiemki, to nie poprosił o włożenie kolejnej, tylko wszedł w jakiś dziwny
stan w którym nic nie mógł przeczytać, ani nie dało się kasetki wyciągnąć.
Dało się to obejść rozpoczynając kolejny proces odtwarzania, tylko danych z
tej drugiej (chronologicznie pierwszej) tasiemki.

Gorszy był drugi problem. Odtwarzanie przerwało się gdzieś w środku (na
jakimś /dev/rd/cośtam. Puściłem jeszcze raz, omijając dane już
odtworzone, oraz katalog na którym się wywalił. Niby wszystko odzyskaliśmy,
ale okazało się, że prawa dostępu do wielu katalogów, utworzonych w tym
przerwanym procesie, są co najmniej dziwne. Np. 744 na /usr albo
777 na /usr/local/bin. Udało się to jednak RPMem do porządku
doprowadzić. Ostatecznie udało się, jeszcze w piątek, uruchomić na serwerze
podstawowe usługi, w tym Jabbera i pocztę, bez żadnych strat w danych.

Od razu, gdy stwierdziliśmy, że dysk padł, zamówiliśmy nowy. Była pewna
szansa, że przyjdzie w sobotę i plan, żeby w tę sobotę odzyskać resztę systemu
(w tym builder AMD64 dla PLD). Jak nie w sobotę, to w poniedziałek od rana.
Dysk przyszedł w poniedziałek (dzisiaj), ale dopiero w południe.
Spartycjonowałem go, założyłem wolumeny LVM i przegrałem większość danych z
tego ocalałego dysku. Zacząłem też odtwarzanie pozostałych danych z backupu.
Wszystko w trybie single, aby działające usługi (w tym Jabber i poczta)
nie nabruździły mi w tym. Niestety odtwarzanie z backupu nie zdążyło się
skończyć przed moim wyjściem z pracy. Koledzy zostali w pracy, aby po
zakończeniu operacji przywrócić serwer do życia. Niestety Bacula znów się
wywalił. Serwer działa (tyle co w piątek udało się odpalić), ale część danych
wciąż nie jest odzyskana. Jutro będę miał jeszcze z tym sporo roboty…

Advertisements

7 uwag do wpisu “Historia padu pewnego dysku…

  1. btw: jak wyglada odtwarzanie danych z takiego lvm i jak dane sa zapisywane na poszczegolnych dyskach? w normalnym ukladzie mam np. hda jako / i hdb jako /home, jak padnie hda to mam cale /home i nic z /. W lvm jak to sie miewa?

    Lubię to

  2. To już zależy, jak to masz na tym LVM porozkładane i jakie filesystemy tam masz. Może się okazać, że będzie tak samo jak w twoim przykładzie (jeśli / wyląduje na hda, a /home na hdb, mimo że oba w tym samym logicznym wolumenie), może być tak, że odzyskasz całe /home i połowę / (gdy tylko pół / jest na hda, a fsck do Twojego filesystemu umie sobie poradzić jak pół wolumenu dostanie), a może być tak, że masz duuży problem (np. jeśli używasz strippingu w LVM, albo straciłeś wszelkie metadane samego LVM (które na szczęście są dość mocno backupowane same z siebie)).
    Oczywiście LVM komplikuje tego typu sprawy, ale zawsze jest coś za coś. Backup wszystkich danych i tak warto mieć. Pod LVM może być RAID (sprzętowy lub programowy), który też w niektórych przypadkach pomoże.
    To testowe odtwarzanie z backupu, o którym wspomniałem, przeprowadzałem właśnie na systemie z LVM i programowym RAID, ale to było odtwarzanie na goły dysk (wszystko z kopii zapasowej). W systemie, o którym pisałem w tej notce, LVM jeszcze nie było (pad dysku był okazją, żeby go wreszcie założyć).

    Lubię to

  3. A takie pytanie jak by jeszcze oprócz backupow na tasiemke zainplementować robienie backapów w snapshotach z LVM lub "remote snapshot". Jako dodatkowe zabezpieczenie?? robiłeś moze coś takiego i jak to działa??

    Lubię to

  4. AlchemyX: bo nie ufam autorowi jnbackup 😉

    A tak serio, to:
    1. jnbackup, przynajmniej w wersji "oficjalnej" nie ma obsługi tasiemek, a wydawać nowej wersji mi się nie chciało
    2. w jnbackup nie ma żadnego zarządzania wolumenami, czy katalogowania backupów — przy tych kilku serwerach i kilkudziesięciu GB jakie mam do backupów mógłbym się w tym nie łapać
    3. jnbackup sam z siebie nie zapewniał żadnych mechanimów do odtwarzania wybranych plików. Jednak, w obliczu ostatnich wydarzeń (odtwarzanie w Baculi nie bardzo działa), ten pukt traci na znaczeniu.

    Lubię to

Co o tym sądzisz?

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Log Out / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Log Out / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Log Out / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Log Out / Zmień )

Connecting to %s