Backup RDB

Ten artykuî nie bëdzie zaczynaî sië w sposób ,,jeôli nie wiesz, co to sâ RDB, to nawet nie czytaj dalej''. Jego celem jest bowiem przedtstawienie sposobów zabezpieczania sië przed niebezpieczeïstwem utraty danych z twardego dysku -- a grozi Ci to nawet wtedy, jeôli nie wiesz, o czym mówi ten skrót. A z tego artykuîu masz szansë sië tego dowiedzieê.

Otóû RDB, czyli RigidDiskBlock to pewna przestrzeï na poczâtku twardego dysku, na której system trzyma dane o organizacji danych na caîym twardzielu. Dane te odczytywane sâ w momencie restartu systemu. Tam AmigaOS znajduje informacjë o tym, ile (i gdzie dokîadnie) na partycji znajduje sië na dysku, stamtâd odczytuje takûe systemy zapisu na nim uûyte oraz ewentualnie listë bad blocków oraz tzw. Drive Init, czyli kod uruchamiany podczas przyîâczenia dysku do systemu (zazwyczaj nie wykorzystywany). Oprócz tego kilka innych szczegóîow, których omawianie tutaj nie jest konieczne. Wîaôciwie jedynâ rzeczâ, która na pewno musi sië tam znajdowaê, jest informacja o partycjach (czy teû jednej partycji). Jeôli bowiem wszystkie partycje zapisane sâ np. w FFSie (który znajduje sië w ROMie), to odpada koniecznoôê przechowywania ,,specjalnych'' systemów w przestrzeni przeznaczonej na RDB.

Najbardziej popularnym programem do ,,grzebania'' w RDB jest HDToolBox, doîâczany do systemu operacyjnego Amigi. W zasadzie to nim wykonujemy pierwsze (i czësto ostatnie) kroki w zakresie partycjonowania. Po zakupie twardego dysku zazwyczaj za pomocâ jego i jakiegoô kumpla dzielimy nasz twardy dysk na kilka partycji, odpowiednio je nazywamy, wybieramy system zapisu i zapominamy o wszystkim.

Problemy zaczynajâ sië dopiero wtedy, gdy jakimô przypadkiem RDB ,,sië zgubiâ''. Przy normalnym uûywaniu komputera nie jest to rzeczâ czëstâ - ale niestety nie niemoûliwâ. Spotkaîem sië na przykîad z ,,programikiem'' wypisujâcym coô w rodzaju ,,Dr. Scarecrow has just erased all lameness'', po czym okazywaîo sië, ûe po moich RDB nie ma ôladu. Ze dwa razy takûe dziaîy sië rzeczy ,,niewyjaônione''. Na przykîad po przyniesieniu twardego dysku (a na zewnâtrz ciepîo nie byîo) Amiga najpierw sië z niego nie uruchomiîa. Potem sië uruchomiîa, ale gdy (kierowany ciekawoôciâ) uruchomiîem HDToolBoxa, ten zachowaî sië, jakby ûadnych RDB nie byîo. Prawdopodobnie po nastëpnym resecie mógîbym je juû tylko wspominaê... (tak nawiasem mówiâc to RDB ,,dziwnie'' mi zniknëîy ze dwa razy wîaônie wtedy, gdy je czytam HDTB, i zaczynam byê podejrzliwy).

Sytuacja komplikuje sië jeszcze bardziej, gdy wîaôciciel dysku jest z natury eksperymentatorem (ewentualnie ma ciekawych ôwiata kolegów) i do HDToolBoxa siëga raczej czësto. Prawdopodobieïstwo samodzielnego wyrzâdzenia sobie ,,krzywdy'' szybko wtedy roônie.

Artykuî ten zaô ma za zadanie powiedzieê, jak wróciê do stanu sprzed ,,wypadku''. Co czasem bywa bardzo proste, ale po uprzednim speînieniu kilku warunków -- czyli po zabezpieczeniu sië.

Najbardziej prymitywnym, choê wcale nie najgîupszym sposobem jest zapisanie sobie na jakiejô karteczce bloków poczâtku i koïca kaûdej partycji na dysku. Po utracie RDB moûna siëgnâê do karteczki, rëcznie wpisaê dane i cieszyê znów sië dostëpem do tego, co byîo na dysku. Nie zawsze zwróci to nam wszystko, ale jest jedynym sposobem nie polegajâcym na przechowywaniu danych na dyskietce czy twardzielu u kumpla -- a wiëc najbardziej niezawodnym :) No i bywa dobrym poczatkiem do próby odzyskania reszty.

Sam HDToolBox niestety nie ma moûliwoôci nagrywania RDB do pliku - moûemy nim tylko rëcznie wprowadzaê zmiany.

Programem napisanym specjalnie do nagrywania RDB do pliku (a potem z pliku na dysk) jest ReadRDB autorstwa Gérarda Cornu. Jest to program shellowy a jego skîadnia to:

D=DEVICE/K,U=UNIT/K/N,WRITE/S,FILE/K,FORCE/S,H=HELP/S

Program wyôwietla skrót informacje zawartych w RDB. Niejasny moûe byê parametr FORCE a wiâûe sië on trochë z podstawowâ wadâ programu - program nie znajdzie RDB, jeôli nie zaczynajâ sië one na zerowym bloku dysku. Zgodnie z zaîoûeniami (to znaczy z dokumentacjâ systemu) RDB muszâ zaczynaê sië na jednym z pierwszych 16 bloków. Niestety ReadRDB nie bierze tego pod uwagë i zakîada, ûe RDB zaczynajâ sië na bloku 0. Parametr FORCE powoduje, ûe program nagra RDB nawet, jeôli odczytane dane bëdâ ,,dziwne'' (co na pewno bëdzie miaîo miejsce, jeôli ich tam nie ma :). Niestety, co za tym idzie ReadRDB nagrywa RDB o przypadkowej dîugoôci -- w moim przypadku tak z poîowë.

Zaletë moûliwoôci nagrania RDB od bloku innego niû zerowy doceniîem wtedy, gdy potrzebowaîem stworzyê ,,hybrydë'' -- twardziela, z którego bootowaîaby sië zarówno Amiga, jak i pecet (zaîoûenie na dysku pecetowskiej partycji). Okazaîo sië, ûe moûna umieôciê pecetowski MBR na pierwszych blokach dysku a Amigowskie RDB zaczâê dopiero dalej. Niestety uniemoûliwiaîo to normalne backupowanie RDB za pomocâ ReadRDB.

Programem îâczâcym zalety HDToolBoxa i ReadRDB jest RDPrep. Jest to program autorstwa Joanne Dow i Boba Burnsa, kiedyô doîâczany do urzâdzeï firmy Microbotics. Pomimo, ûe starszy od HDToolboxa, pozwala doôwiadczonemu uûytkownikowi na duûo wiëcej. Jak dla mnie jego podstawowâ zaletâ jest moûliwoôê zmiany wielu parametrów zawartych w RDB, gîównie RDBLow -- czyli bloku, na którym ma zaczynaê sië RDB. Ma takûe opcjë zapisu i odczytu pliku zwanego Mountfile (z zaîoûenia nieco podobnego do Mountlisty) a wraz z nim plików systemów zapisu znajdujâcych sië w obszarze RDB. Umoûliwia wiëc juû normalny backup RDB na dyskietkë a potem ich odtworzenie na podstawie nagranych wczeôniej plików.

Jedynâ wadâ RDPrepa, jakâ zauwaûyîem jest bîëdne odczytywanie (w kaûdym razie w przypadku mojego twardego dysku) wartoôci BlocksPerCylinder, co nie powoduje bîëdnej pracy, ale w przypadku pewnych kombinacji (jakie byîem zmuszony wykonywaê:), przy których takie dane sâ potrzebne, moûe to prowadziê do maîej katastrofy. W kaûdym razie jeôli chodzi o odczyt parametrów dysku to polecam raczej opcjë Read Configuration w HDToolBoxie :)

W zasadzie przeciëtnemu amigowcowi wystarczy zapewne RDPrep. Ja jednakûe w zwiâzku z wymienionâ wyûej partycjâ pecetowskâ miaîem pewne dylematy -- amigowskie RDB mogîem i owszem, odczytaê i nagraê kiedy chciaîem i gdzie chciaîem, ale co z danymi peceta? Tych tak îatwo nie odzyskam. Sâ co prawda programy pozwalajâce na bezpoôredni odczyt z urzâdzenia do pliku, którymi moûnaby ,,na siîë'' to robiê. Nie chciaîem jednak robiê tego na dwa razy (osobno dane pc, osobno RDB), aby zaô zgraê jeden plik, trzeba byîoby jeszcze wiedzieê dokîadnie, gdzie koïczâ sië RDB. Jeôli jeszcze nie wiecie, to spieszë poinformowaê, ûe przestrzeï przeznaczona na RDB to pierwszy cylinder lub dwa dysku. U mnie jest to megabajt :) A ,,waûnych'' danych jest tam zazwyczaj niecaîe 50 kB. Oczywiôcie informacjë, gdzie koïczy sië RDB moûna odczytaê z samej struktury (do przeglâdania zawartoôci RDB polecam RDBInformera Davida Balazica), ale za kaûdym razem robiê to rëcznie...

Postanowiîem wiëc napisaê wîasny program nagrywajâcy zarówno pecetowskie MBR jak i amigowskie RDB. Rozwiâzuje on to w ten sposób, ûe nagrywa wszystko od poczâtku dysku (blok 0) aû do koïca RDB (chyba ûe ktoô sobie ûyczy tylko RDB). Program nazywa sië Rigids a jego skîadnia to:

D=DEVICE/K,U=UNIT/K/N,O=OFFSET/K/N,RDB=RDBONLY/S,WRITE/S,FORCE/S,F=FILE/A

Podanie RDBONLY powoduje, ûe przy odczycie do pliku zapisane zostanâ tylko RDB, nawet jeôli nie zaczynajâ sië na bloku zerowym.

OFFSET pozwala na odczytanie twardego dysku od bloku o podanym numerze. Jeôli jednak RDB zaczynaîy sië wczeôniej niû na podanym bloku, program ich nie znajdzie i pliku nie nagra.

Zapis (WRITE) standardowo po prostu wrzuca wszystko z pliku tam, gdzie byîo przedtem. Jednakûe podanie przy zapisie opcji RDBONLY spowoduje wykorzystanie tylko RDB zawartych w pliku (nawet, jeôli byîo coô przed nimi). Nagrwa je jednakûe dokîadnie w to miejsce, skâd zostaîy odczytane. Moûna to zmieniê podajâc parametr OFFSET -- wtedy RDB (ale wciâû tylko one) zostanâ nagrane rozpoczynajâc od bloku o podanym numerze. Jeûeli na którymô z wczeôniejszych bloków wczeôniej zaczynaîy sië RDB, zostanie on sformatowany (ale wtedy i tylko wtedy, wiëc nie ma obawy utraty MBR).

Rigids sprawdza sumy kontrolne wszystkich struktur zawartych w RDB. Jeôli sië nie zgadzajâ, odmówi wykonania operacji. Jeôli jednak jesteômy pewni tego, co chcemy zrobiê, naleûy podaê parametr FORCE.

Pozostaî jeszcze jeden jeden bardzo ciekawy program pomagajâcy w odzyskiwaniu RDB -- jest to RDBSalv autorstwa Angeli Schmidt (komercyjny). Przydaje sië on gîownie gdy zapomnieliômy o ,,prewencji'', czyli backupie, lub teû gdy z jakichô powodów odzyskane RDB nie sâ poprawne. W czasie testów opisanego wyûej programiku Rigids zdarzyîo sië, ûe w gîupi (jak zwykle:) sposób uszkodziîem sobie RDB. Zaraz potem straciîem backupy... W kaûdym razie w tym, co w koïcu gdzieô znalazîem i zapisaîem (notabene znalazîem na partycji Work, po wykorzystaniu HDToolBoxa i danych zapisanych na karteczce:), brakowaîo koïca (ôlad po ReadRDB). Niestety tym razem HDToolBox odmówiî wspóîpracy (chociaû zazwyczaj wîaônie w takich sytuacjach sië nim posîugiwaîem). Nie zgadzaîy sië sumy kontrolne struktur RDB. Jedynym ratunkiem okazaî sië wîaônie RDBSalv, który odczytaî RDB i zapisaî je tak, aby przynajmniej sumy sië zgadzaîy. Nastëpnie juû edycjë konkretnych bîëdnych parametrów (ujemny najwyûszy blok zajmowany przez RDB, przez co teraz HDToolBoxem moûna byîo je edytowaê, ale nie zapisaê) oraz update FileSystemów dokonaîem RDPrepem, który jest do tego doôê wygodny (pola z niewîaôciwymi lub brakujâcymi wartoôciami migajâ a przy wpisywaniu danych u góry wyôwietla na przykîad zakres, z jakiego liczbë moûemy wpisaê). Gdyby nie RDBSalv, musiaîbym partycjonowê od nowa.

Program moûe takûe odoszukaê dla nas tzw. lost blocks, czyli kawaîków RDB poza samâ strukturâ, które na przykîad straciliômy poprzez zapisanie jakiegoô przypadkowego, ,,mniejszego'' RDB.

Jeôli RDB sâ nie do odzyskania, moûemy RDBSalvem skanowaê caîy dysk a on na podstawie znalezionych danych wygeneruje nowe. Z tym, ûe nie znajdzie na pewno czegoô takiego jak partycja pecetowska. Co dziwne nie znalazî mi takûe pierwszej partycji, aczkolwiek to mogîo byê sposodowane zasugerowaniem sië (programu) bîëdnâ wartoôciâ LowCylinder (czyli pierwszy cylinder dostëpny dla partycji).

Ponadto RDBSalv umoûliwia nagranie ,,czystych'' RDB (same dane o dysku, bez partycji) a takûe odczyt/zapis RDB do pliku (ale we wîasnym formacie a nie -- jak ReadRDB czy Rigids -- blok po bloku).

Na koniec wypada jeszcze raz wspomnieê o RDBInformerze Davida Balazica. Co prawda nie sîuûy on do backupu czy odzyskiwania RDB, ale za to jest godny polecenia ze wzglëdu na bardzo dokîadne informacje o tym, co tam sië znajduje. Nieoceniona pomoc przy nauce lub przymusowych bojach z RigidDiskBlock.

A skâd to wszystko wziâê? Gîównie z sieci, chociaû moûliwe, ûe powyûsze programy znajdâ sië na którymô z dysków shareware czy cover CDs MA czy ACSu. Natomiast na sieci w wiëkszoôci wystarczy przejrzeê katalog disk/misc. Ponadto Rigids moûna ôciâgnâê ode mnie ze strony WWW.

A wszelkie uwagi dotyczâce tego artykuîu, zapytania etc proszë kierowaê na adres mailowy: tadek@malenstwo.iinf.polsl.gliwice.pl


Tadek Knapik
TxF on #amigapl