fsdb(1M-ufs) fsdb(1M-ufs)
NAME
fsdb (ufs) - Fehlersuchprogramm für ufs-Dateisysteme
SYNTAX
fsdb [-F ufs] [genericoptions] special [-]
BESCHREIBUNG
Mit fsdb kann ein beschädigtes ufs-Dateisystem nach einem Absturz kor-
rigiert werden. fsdb verfügt über Umwandlungsmöglichkeiten, die Block-
und I-Node-Nummern in die entsprechenden Plattenadressen konvertieren.
Außerdem stehen mnemonische Offsets zur Verfügung, mit denen auf
unterschiedliche Teile eines I-Node zugegriffen werden kann. Dadurch
wird die Korrektur von Einträgen im Steuerblock oder der Weg durch den
Dateisystembaum erheblich vereinfacht.
fsdb enthält mehrere Fehlerprüfroutinen zur Überprüfung von I-Node-
und Blockadressen. Diese Routinen können bei Bedarf durch Aufruf von
fsdb mit dem optionalen Argument "-" oder durch Verwendung des Symbols
O deaktiviert werden. (fsdb liest die Einträge für i-size (I-Größe)
und f-size (F-Größe) aus dem Superblock des Dateisystems als Grundlage
für diese Überprüfungen.)
OPTIONEN
-F ufs Gibt den Typ des ufs-Dateisystems an.
genericoptions Optionen, die von dem generischen fsdb-Kommando
unterstützt werden.
Zahlen werden standardmäßig als Dezimalzahlen angesehen. Oktalzahlen
muß das Präfix 0 (null) vorangestellt sein. Bei jeder Zuweisungsopera-
tion wird überprüft, ob dadurch ein Fehler entstanden ist, daß die
Zahlen möglicherweise abgeschnitten wurden, weil die Größen der Quelle
und des Ziels nicht zueinander passen.
fsdb liest blockweise und arbeitet daher bei der Ein-/Ausgabe sowohl
im Raw-Modus als auch blockorientiert. Mit einer Pufferverwaltungsrou-
tine werden häufig verwendete Datenblöcke in Puffern belassen. Dadurch
wird die Anzahl der Systemaufrufe zum Lesen möglichst gering gehalten.
Alle Zuweisungsoperationen bewirken eine sofortige Aktualisierung des
entsprechenden Blocks.
fsdb erkennt folgende Symbole:
# absolute Adresse
#i Umwandlung von I-Nummer in I-Node-Adresse
#b Umwandlung in Blockadresse
#f Umwandlung in die Adresse eines Fragments in einem Block
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
fsdb(1M-ufs) fsdb(1M-ufs)
#fn wie oben, außer daß die Länge des Fragments als n angese-
hen wird, wobei n einen der Werte 1, 2, ..., MAXFRAG
Fragmente darstellt
c# Umwandlung der Zylindergruppennummer in den Plattenoffset
für die Überblicksinformationen.
d# Verzeichnisposition-Offset
d#i wie oben, zusätzlich wird fsdb angewiesen, zu dem I-Node
i zu springen, der zu dem Verzeichnis gehört
d#c wie oben, zusätzlich wird fsdb angewiesen, zu der Zylin-
dergruppe c zu springen, die zu dem Verzeichnis gehört
+, -, *, / Arithmetik für Adressen
q verlassen (quit)
>, < sichern bzw. wiederherstellen einer Adresse
= numerische Zuweisung
=+ Zuweisung mit Erhöhung
=- Zuweisung mit Erniedrigung
=" Zeichenkettenzuweisung
O Fehlerprüf-Flipflop
p allgemeine Druckeinrichtungen
f Einrichtung zum Drucken von Dateien
B Byte-Modus
S Wort-Modus (short)
L Doppelwort-Modus (int)
I I-Node-Modus
R VeRzeichnis-Modus
W wie S
D wie L
! Sub-Shell aufrufen
? Hilfe-Menü ausgeben
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
fsdb(1M-ufs) fsdb(1M-ufs)
N neues Dateisystem für die Fehlersuche öffnen
C aktuelle Angaben für das Dateisystem ausgeben, in dem
gerade Fehler gesucht werden
P aktuellen Zustand der globalen fsdb-Parameter ausgeben
F Zustand der aktuellen Plattenblockpuffer ausgeben
Die Ausgabeeinrichtungen erstellen formatierte Ausgaben in verschiede-
nen Formen. Die aktuelle Adresse wird vor der Ausgabe auf eine ent-
sprechende Wortgrenze ausgerichtet. Diese Adresse bewegt sich mit dem
Ausgabevorgang weiter und bleibt dann bei der Adresse des letzten aus-
gegebenen Elements stehen. Sie können die Ausgabe jederzeit beenden,
indem Sie ein Löschzeichen (Hex-Code: 0x7F) eingeben. Folgt auf das
Symbol p eine Zahl, so gibt diese an, wieviele Einträge ausgegeben
werden. Es wird geprüft, ob ein Blockgrenzenüberlauf vorliegt, da
logisch sequentielle Blöcke im allgemeinen nicht physisch sequentiell
sind. Wird der Zähler null verwendet, so werden alle Einträge bis zum
Ende des aktuellen Blockes ausgegeben.
Folgende Optionen stehen für die Ausgabe zur Verfügung:
i Ausgabe als I-Nodes
d Ausgabe als Verzeichnisse
s Ausgabe als Überblicksstrukturen von Zylindergruppen
o Ausgabe als Oktalwörter
x Ausgabe als Hexadezimalwörter
e Ausgabe als Dezimalwörter
c Ausgabe als Zeichen
b Ausgabe als Oktalbytes
Das Symbol f dient zur Ausgabe von Datenblöcken, die zum aktuellen I-
Node gehören. Folgt danach eine Zahl, wird der entsprechende Block der
Datei ausgegeben. (Die Numerierung der Blöcke beginnt mit null.) Der
Buchstabe für die gewünschte Ausgabeoption folgt auf die Blocknummer,
sofern diese vorhanden ist, oder nach dem Symbol f. Diese Ausgabeein-
richtung funktioniert sowohl für kleine als auch für große Dateien.
Sie prüft, ob Gerätedateien vorhanden sind, und stellt sicher, daß die
zum Auffinden der Daten benutzten Blockzeiger nicht null sind.
Punkte, Tabulatorzeichen und Leerzeichen können als Funktionsbegrenzer
angegeben werden, sind aber nicht notwendig. Eine Zeile, die nur ein
Zeilenendezeichen enthält, erhöht die aktuelle Adresse um die Größe
des zuletzt ausgegebenen Datentyps. D. h. die Adresse wird auf das
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98
fsdb(1M-ufs) fsdb(1M-ufs)
nächste Byte, Wort, Doppelwort, den nächsten Verzeichniseintrag oder
I-Node gesetzt. Dadurch kann der Benutzer einen ganzen Bereich eines
Dateisystems durchsuchen. Die Informationen werden in einem für den
Datentyp geeigneten Format ausgegeben. Bytes, Wörter und Doppelwörter
werden mit der oktalen Adresse, gefolgt von dem Wert in Oktal- und
Dezimalschreibweise angezeigt. An die Adresse wird .B, .W oder .D
angehängt, wenn es sich um Byte-, Wort- (short) bzw. Doppelwort-
(int)-Werte handelt. Verzeichnisse werden mit einem Verzeichnispositi-
on-Offset, gefolgt von der dezimalen I-Nummer und der Zeichendarstel-
lung des Eintragsnamens ausgegeben. I-Nodes werden mit gekennzeichne-
ten Feldern ausgegeben, in denen die einzelnen Elemente beschrieben
werden.
Die folgenden Mnemonics werden für die Prüfung von I-Nodes verwendet
und beziehen sich auf den aktuellen I-Node:
md Modus
ln Verweiszähler
uid Benutzernummer
gid Gruppennummer
sz Dateigröße
bc Blockzähler
a # Datenblocknummern (0-13)
db # Nummern der direkten Datenblöcke (0-10)
ib # Nummern der indirekten Datenblöcke (11-13)
at Zugriffszeit
mt Änderungszeit
ct Zeitpunkt, an dem der I-Node erzeugt wurde
maj Geräteklassennummer
min Gerätenummer
SYNTAX
Das Kommando fsdb benutzt die folgende grundlegende Syntax:
[item][offset][print/replace]
Hierbei ist item entweder ein Block, ein Verzeichnis, eine Zylinder-
gruppe oder ein I-Node; offset ist ein Mnemonic für den Offset eines
I-Node oder eine beliebige Anzahl von Byte; print/replace gibt
Seite 4 Reliant UNIX 5.44 Gedruckt 11/98
fsdb(1M-ufs) fsdb(1M-ufs)
entweder das angegebene Element in der angegebenen Form aus oder es
ersetzt das angegebene Element mit dem angegebenen Wert. Außerdem
sollten Sie beachten, daß eine durch Carriage-Return-Zeichen getrennte
Folge von Kommandos in ihrer Funktionsweise äquivalent ist zu einer
auf einer Zeile eingegebenen Folge derselben Kommandos.
BEISPIELE
386i Gibt die I-Nummer 386 in einem I-Node-Format aus. Die-
ser I-Node wird nun zum aktuellen I-Node.
ln=4 Ändert den Verweiszähler für den aktuellen I-Node auf
4.
ln=+1 Erhöht den Verweiszähler um 1.
fc Gibt Block Null der zum aktuellen I-Node gehörenden
Datei im ASCII-Format aus.
2i.fd Gibt die ersten 32 Verzeichniseinträge für den root-
I-Node dieses Dateisystems aus.
d5i.fc Ändert den aktuellen I-Node in den I-Node, der zum
fünften Verzeichniseintrag gehört (Numerierung ab null
und vom vorhergehenden Kommando aus gerechnet). Der
erste logische Block der Datei wird dann im ASCII-
Format ausgegeben.
8192B.p0o Gibt den Superblock dieses Dateisystems in Oktalformat
aus.
2i.a0b.d7=3 Ändert die I-Nummer für die siebte Verzeichnisposition
im root-Verzeichnis in 3. Dieses Beispiel zeigt auch,
wie mehrere Optionen auf einer Kommandozeile zusammen
benutzt werden können.
d7.nm="name" Ändert das Namensfeld in der Verzeichnisposition in
die angegebene Zeichenkette. Ist das erste Zeichen ein
Buchstabe, brauchen bei nm keine Anführungszeichen
angegeben werden.
a2b.p0d Gibt den dritten Block des aktuellen I-Nodes in Form
von Verzeichniseinträgen aus.
HINWEISE
Nachlässigkeiten bei der Verwendung von fsdb führen zu einem inkonsi-
stenten Dateisystem und eventuell auch zu Datenverlusten. Darüber hin-
aus kann ein derartiges Dateisystem unter Umständen nicht mit fsck
wieder hergestellt werden.
SIEHE AUCH
fsck(1M), das generische Kommando fsdb(1M), dir(4), fs(4).
Seite 5 Reliant UNIX 5.44 Gedruckt 11/98