Zaloguj się

Jog Jajcusia

xmpp:jajcus@jajcus.net

Powrót na stronę główną

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...


Komentarze

DoomHammer

18 kwietnia 2005 22:17:30

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?

Jajcus

18 kwietnia 2005 22:24:16

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ć).

logan

19 kwietnia 2005 08:52:29

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??

Jajcus

19 kwietnia 2005 09:07:14

Snapshotami LVM się jeszcze nie bawiłem, a dysków nie mam za dużo (staram sie w serwerach używać SCSI, a to raczej kosztowne), żeby jeszcze na nie backupy robić.

AlchemyX

21 kwietnia 2005 00:10:32

No dobra, ale po co bacula skoro jest jnbackup, który u mnie się sprawdza od zawsze? :D

Jajcus

21 kwietnia 2005 08:15:02

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.

AlchemyX

21 kwietnia 2005 12:41:04

Ja backupuje nim cztery serwery i jestem bardzo bardzo zadowolony, ale kopie robię na dyskach a nie na tasiemkach :D. Już zdarzało mi się odtwarzać dane z tych backupów i nie było problemów :).

Dodaj nowy komentarz

Dostępne jest formatowanie Textile

Podpis:
Treść:
Strona WWW (opcjonalnie):
Wpisz kod:code
 
 

Śledzenie komentarzy (RSS) TrackBack URI


Jesteście obserwowani...