fsdb(1M-vxfs) (VxFS) fsdb(1M-vxfs)
NAME
fsdb (vxfs) - Fehlersuchprogramm für Veritas-Dateisysteme (VxFS)
SYNTAX
fsdb [-F vxfs] [genericoptions] special
BESCHREIBUNG
genericoptions sind Optionen, die durch das generische Kommando fsdb
unterstützt werden.
fsdb kann zur Korrektur eines beschädigten Veritas-Dateisystems
benutzt werden. Es enthält Umwandlungsfunktionen, um Block- und I-
Node-Nummern in die entsprechenden Plattenadressen umzuwandeln. Ferner
enthält es mnemonische Offsets zum Zugriff auf unterschiedliche Teile
einer I-Node. Dadurch wird die Korrektur von Einträgen im Steuerblock
oder der Weg durch den Dateisystembaum wesentlich vereinfacht.
OPTIONEN
-F vxfs Gibt den zu bearbeitenden Veritas-Dateisystemtyp
an.
genericoptions Optionen, die von dem generischen fsdb-Kommando
unterstützt werden.
Zahlen gelten standardmäßig als Dezimalwerte. Oktalzahlen muß das Prä-
fix 0 vorausgehen. Hexadezimalzahlen muß das Präfix 0x vorausgehen.
Bei der Verwendung von Hexadezimalzahlen sollte nach jeder Zahl ein
Leerzeichen eingegeben werden, da einige Kommandos Buchstaben enthal-
ten, die auch einstellige Hexadezimalzahlen sind. In dieser Beschrei-
bung zeigt das Gatterzeichen (#) an, daß eine Zahl angegeben werden
muß.
fsdb liest immer einen Block auf einmal und arbeitet daher mit
zeichen- und blockorientierter E/A. Mit einer Pufferverwaltungsroutine
werden häufig verwendete Datenblöcke in Puffern zurückgehalten, um die
Anzahl der Systemaufrufe zum Lesen gering zu halten. Alle Zuweisungs-
operationen bewirken eine sofortige Aktualisierung des entsprechenden
Blocks.
Folgende Symbole erkennt fsdb:
? h help Ausgabe der gültigen Kommandooptionen.
! Shell aufrufen.
q Quit (Verlassen).
"string" Eine Zeichenkette. Innerhalb einer Zeichenkette müssen
der Wert Null mit \0, doppelte Anführungszeichen mit \"
und Gegenschrägstriche mit \\ angegeben werden.
+ - * / Addiert, subtrahiert, multipliziert und dividiert.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
fsdb(1M-vxfs) (VxFS) fsdb(1M-vxfs)
= Numerische Zuweisung.
i Eine I-Node.
au Eine Zuweisungseinheit.
b Ein Block.
im Der unmittelbare Datenbereich einer I-Node. Kleine
Dateien (mit 96 Bytes oder weniger) können in der I-Node
direkt gespeichert werden. Dies geschieht in dem Datenbe-
reich, der sonst für die Anzahl der Datenblöcke und Spei-
cherbereichsgrößen benutzt wird.
cdb Der gegenwärtige Dateiverzeichnisblock.
d Ein Dateiverzeichniseintrag.
a Ein I-Node-Adreßeintrag.
B Ein Byte.
H Ein Halbwort (2 Bytes).
W Ein Wort (4 Bytes).
D Ein Doppelwort (8 Bytes).
p Allgemeine Druckeinrichtungen.
calc Ein einfacher Rechner und Basiskonverter.
find Suche nach einem passenden Muster im Dateisystem.
Die Druckeinrichtungen erkennen folgende Druckformate:
S Ausgabe als Superblock.
A Ausgabe als Header einer Zuweisungseinheit.
L Ausgabe als Datensätze eines Absichts-Protokolls.
I Ausgabe als I-Nodes.
dent Ausgabe als Verzeichniseinträge.
db Ausgabe als Verzeichnisblock.
dh Ausgabe als Verzeichnisheader.
o Ausgabe als Oktalwörter.
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
fsdb(1M-vxfs) (VxFS) fsdb(1M-vxfs)
oB oH oW oD Ausgabe als oktale Bytes, Halbwörter, Wörter oder Doppel-
wörter.
x Ausgabe als Hexadezimalwörter.
xB xH xW xD Ausgabe als hexadezimale Bytes, Halbwörter, Wörter oder
Doppelwörter.
e Ausgabe als Dezimalwörter.
eB eH eW eD Ausgabe als dezimale Bytes, Halbwörter, Wörter oder Dop-
pelwörter.
c Ausgabe als Zeichen.
Die folgenden mnemonischen Symbole werden für die Prüfung der I-Nodes
verwendet und beziehen sich auf die aktuelle I-Node:
md Modus.
ln Verweiszähler.
uid Benutzernummer.
gid Gruppennummer.
sz Dateigröße.
de # Datenblocknummern der direkten Speicherbereiche (0 - 9).
e # Größe der direkten Speicherbereiche (0 - 9).
ie # Datenblocknummern der indirekten Speicherbereiche (0 -
1).
ies # Größe der indirekten Speicherbereiche.
im Der unmittelbare Datenbereich. Kleine Dateien (mit 96
Bytes oder weniger) können in der I-Node direkt gespei-
chert werden. Dies geschieht in dem Datenbereich, der
sonst für die Anzahl der Datenblöcke und Speicherbe-
reichsgrößen benutzt wird.
at Zugriffszeit.
ct Feld, das den Zeitpunkt der letzten Änderung einer I-Node
enthält.
mt Änderungszeitpunkt.
af Zuweisungskennzeichen.
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98
fsdb(1M-vxfs) (VxFS) fsdb(1M-vxfs)
gen Feld, das die Anzahl der generierten I-Nodes enthält.
org Feld, das den Abbildungstyp der I-Node enthält
(diorgtype).
fe Feld, das die feste Speicherbereichsgröße enthält.
bl Feld, das die belegten I-Node-Blöcke enthält.
eopflg Feld, das die Optionen für die erweiterten I-Node-
Operationen enthält.
eopdat Feld, das die Daten für die erweiterten I-Node-
Operationen enthält.
maj Falls Gerät, I-Node-Geräteklasse (major number).
min Falls Gerät, I-Node-Gerätenummer (minor number).
pd Falls Gerät, I-Node-Vaterverzeichnis.
res Falls reguläre Datei, I-Node-Reservierung.
serhi Höherwertiges Wort (32 Bit) der "Seriennummer"
(dihserial) [vgl. inode(4)].
serlo Niederwertiges Wort (32 Bit) der "Seriennummer"
(dilserial) [vgl. inode(4)].
Änderungen in den Einträgen für Dateiverzeichnisblöcke können symbo-
lisch vorgenommen werden. Die folgenden Symbole repräsentieren die
Felder der Dateiverzeichnisblöcke:
tfree Gesamter freier Speicherplatz (nur in einem Datenblock).
hash # Beginn einer Hash-Kette (0 bis 31, nur in einem Daten-
block).
nhash Anzahl Hash-Ketten.
d # Dateiverzeichniseintrag (variable Anzahl von Einträgen).
Änderungen in den Einträgen für Dateiverzeichniseinträge können symbo-
lisch vorgenommen werden. Die folgenden Symbole repräsentieren die
Felder der Dateiverzeichniseinträge:
ino I-Node-Nummer.
nm Name des Eintrags.
nmlen Länge des Namens.
Seite 4 Reliant UNIX 5.44 Gedruckt 11/98
fsdb(1M-vxfs) (VxFS) fsdb(1M-vxfs)
nmmax Maximale Länge des Namens (nur wenn er sich im unmittel-
baren Datenbereich befindet).
reclen Länge des Datensatzes (nur in einem Datenblock).
hnext Name der nächsten Hash-Kette (nur in einem Datenblock).
Es ist empfehlenswert, die Zeichenketten in der Kommandozeile mit
einem Leerzeichen voneinander abzutrennen. Sie verhindern damit
Schreibfehler und Zweideutigkeiten. Z. B. setzt das Kommando "0x23b b"
die aktuelle Position hexadezimal auf den Block 0x23b. Das Kommando
"0x23bb" ist ungültig, da das Kommando nur als eine hexadezimale Zahl
interpretiert wird. Das Kommando "23b" positioniert dezimal auf den
Block 23, da das Kommando nicht zweideutig ist.
Mehrere Kommandos werden durch das Neue-Zeile-Zeichen oder in einer
Zeile durch einen Punkt (.) bzw. Strichpunkt (;) getrennt. Wenn meh-
rere Kommandos in einer Zeile angegeben werden, dann wird immer nur
die Ausgabe des letzten Kommandos angezeigt. Das erlaubt, Positionie-
rungskommandos gefolgt von Ausgabekommandos oder Änderungskommandos
einzugeben, ohne zwischendurch eine Ausgabe zu erhalten. Folgende Kom-
mandos werden unterstützt:
# B|H|W|D Setzen der aktuellen Position im Dateisystem auf die
angegebene relative Position in Bytes, Halbwörtern, Wör-
tern oder Doppelwörtern. Wenn dies das letzte Kommando
einer Zeile ist, wird das Byte, Halbwort, Wort oder Dop-
pelwort hexadezimal ausgegeben.
+|- # B|H|W|D
Setzen der aktuellen Position auf die angegebene relative
Position in Bytes, Halbwörtern, Wörtern oder Doppelwör-
tern. Wenn dies das letzte Kommando einer Zeile ist, wird
das Byte, Halbwort, Wort oder Doppelwort hexadezimal aus-
gegeben.
# b Setzen der aktuellen Position im Dateisystem auf die
angegebene relative Position in Blöcken. Setzen der aktu-
ellen Blockposition auf die resultierende relative Posi-
tion. Die Blockgröße entspricht der des Dateisystems.
Wenn dies das letzte Kommando einer Zeile ist, wird das
erste Wort im Block hexadezimal ausgegeben.
+|- # b Setzen der aktuellen Position auf die angegebene relative
Position in Blöcken. Setzen der aktuellen Blockposition
auf die resultierende Position. Wenn dies das letzte Kom-
mando einer Zeile ist, wird das erste Wort im Block hexa-
dezimal ausgegeben.
Seite 5 Reliant UNIX 5.44 Gedruckt 11/98
fsdb(1M-vxfs) (VxFS) fsdb(1M-vxfs)
b Setzen der aktuellen Position auf die aktuelle Blockposi-
tion (des Blocks, der beim letzten [+|-] # b angegeben
wurde). Wenn dies das letzte Kommando einer Zeile ist,
wird das erste Wort im Block hexadezimal ausgegeben.
# i Setzen der aktuellen Position im Dateisystem auf den Ein-
trag in der I-Node-Liste für die angegebene I-Node. Set-
zen der aktuellen I-Node-Position auf die resultierende
relative Position. Wenn dies das letzte Kommando einer
Zeile ist, wird der Eintrag in der I-Node-Liste für die
I-Node ausgegeben.
+|- # i Setzen der aktuellen Position im Dateisystem auf den Ein-
trag in der I-Node-Liste für die angegebene relative I-
Node. Setzen der aktuellen I-Node-Position auf die resul-
tierende relative Position. Wenn dies das letzte Kommando
einer Zeile ist, wird der Eintrag in der I-Node-Liste für
die I-Node ausgegeben.
i Setzen der aktuellen Position im Dateisystem auf die
aktuelle I-Node-Position. Wenn dies das letzte Kommando
einer Zeile ist, wird der Eintrag in der I-Node-Liste für
die I-Node ausgegeben.
a # Setzen der aktuellen Position auf die angegebene relative
Position in Blöcken, die durch die I-Node-Adresse # spe-
zifiziert wird. Die Adressen von 0 bis 9 sind für direkte
Speicherbereiche (de). Die Adressen 10-11 sind für indi-
rekte Speicherbereiche (ie). Beim Ausgeben eines Eintrags
der I-Node-Liste werden auch die Adressen angezeigt. Set-
zen der aktuellen Blockposition auf die resultierende
Position. Wenn dies das letzte Kommando einer Zeile ist,
wird des erste Wort im Block hexadezimal ausgegeben.
im Setzen der aktuellen Position auf den unmittelbaren
Datenbereich der aktuellen I-Node. Setzen der aktuellen
Blockposition auf die resultierende Position. Wenn dies
das letzte Kommando einer Zeile ist, wird das erste Wort
im Block hexadezimal ausgegeben.
Seite 6 Reliant UNIX 5.44 Gedruckt 11/98
fsdb(1M-vxfs) (VxFS) fsdb(1M-vxfs)
# B|H|W|D = # [#]
Setzen der aktuellen Position und Ändern der Zahl an der
angegebenen relativen Position auf die neue Zahl. Wenn
ein Doppelwort-Versatz spezifiziert wird, müssen zwei
Zahlen getrennt durch ein Leerzeichen angegeben werden.
Das Ergebnis wird hexadezimal ausgegeben.
+|- # B|H|W|D = # [#]
Setzen der aktuellen Position und Ändern der Zahl am
angegebenen relativen Versatz auf die neue Zahl. Wenn ein
Doppelwort-Versatz spezifiziert wird, müssen zwei Zahlen
getrennt durch ein Leerzeichen angegeben werden. Das
Ergebnis wird hexadezimal ausgegeben.
# B|H|W|D = "string"
Setzen der aktuellen Position und Ändern der Zeichen an
der angegebenen relativen Position in die neue Zeichen-
kette. Das Ergebnis wird als Zeichenkette ausgegeben.
+|- # B|H|W|D = "string"
Setzen der aktuellen Position und Ändern der Zeichen am
angegebenen relativen Versatz in die neue Zeichenkette.
Das Ergebnis wird als Zeichenkette ausgegeben.
p [#] format Ausgeben des Inhalts des Dateisystems ab der aktuellen
relativen Position als Zahl von Einträgen eines bestimm-
ten Formats. Zu den erlaubten Ausgabeformaten siehe oben.
Wenn die Zahl der Einträge nicht angegeben wird, wird nur
ein Eintrag ausgegeben.
inodefield = #
Der Inhalt des I-Node-Feldes wird auf die angegebene Zahl
gesetzt. Die aktuelle I-Node bestimmt, welcher Eintrag in
der I-Node-Liste geändert werden soll. Die Symbole, die
die I-Node-Felder repräsentieren, sind weiter oben aufge-
listet.
directoryblockfield = #
Der Inhalt des Verzeichnisblock-Feldes wird auf die ange-
gebene Zahl gesetzt. Der aktuelle Block wird wie ein Ver-
zeichnisblock behandelt und die relative Position in die-
sem Block, die durch des Feld repräsentiert wird, geän-
dert. Die Symbole, die die Verzeichnisblock-Felder reprä-
sentieren, sind weiter oben aufgelistet.
Seite 7 Reliant UNIX 5.44 Gedruckt 11/98
fsdb(1M-vxfs) (VxFS) fsdb(1M-vxfs)
d # Setzen des aktuellen Verzeichniseintrags auf die angege-
bene Zahl. Der aktuelle Block wird wie ein Verzeichnis-
block behandelt. Wenn der aktuelle Block ein unmittelba-
rer Datenbereich einer I-Node ist, wird er behandelt, als
würde er unmittelbare Verzeichniseinträge enthalten. Wenn
dies das letzte Kommando einer Zeile ist, wird der Ver-
zeichniseintrag der resultierenden relativen Position
ausgegeben.
directoryentryfield = #
Der Inhalt des Verzeichnisfeldes wird auf die angegebene
Zahl gesetzt. Der aktuelle Verzeichniseintrag gibt an, wo
sich der Verzeichniseintrag befindet. Das Ergebnis wird
hexadezimal ausgegeben.
nm = "string"
Setzen des Feldes mit dem Verzeichnisnamen des aktuellen
Verzeichniseintrags auf die angegebene Zeichenkette. Das
Ergebnis wird als Zeichenkette ausgegeben.
calc # [+|-|*|/ #]
Eine Zahl oder die Summe, die Differenz, das Produkt oder
die Division zweier Zahlen werden dezimal, oktal, hexade-
zimal als Zahl oder Zeichen ausgegeben.
find # B|H|W|D [#]
Suchen nach dem angegebenen numerischen Muster im Datei-
system. Die Größe des gesuchten Objekts wird mit angege-
ben. Wenn ein Doppelwort gesucht wird, sind zwei Zahlen
anzugeben. Die Suche wird vorwärts ab der aktuellen Posi-
tion gestartet. Eine maximale Anzahl von zu suchenden
Blöcken kann angegeben werden. Existiert das Muster, wer-
den Fundstelle und Wert hexadezimal ausgegeben.
find # B|H|W|D "string"
Suchen nach der angegebenen Zeichenkette im Dateisystem.
Eine maximale Anzahl von zu suchenden Blöcken kann ange-
geben werden. Existiert das Muster, werden Fundstelle und
Zeichenkette ausgegeben.
fmtlog Formatieren aller Einträge im Absichts-Protokoll. Ein
vollständig formatiertes Absichts-Protokoll kann sehr
groß werden. Es ist vorteilhaft, fsdb als Filter zu
benutzen und die Ausgabe in eine Datei umzuleiten, oder
sie seitenweise auszugeben, um sich das formatierte Pro-
tokoll anzusehen.
Seite 8 Reliant UNIX 5.44 Gedruckt 11/98
fsdb(1M-vxfs) (VxFS) fsdb(1M-vxfs)
BEISPIELE
386i Gibt die I-Node-Nummer 386 im I-Node-Format aus. Diese
wird nun zur aktuellen I-Node.
ln=4 Ändert den Verweiszähler für die aktuelle I-Node in 4.
1024B.pS Gibt den Superblock dieses Dateisystems im symboli-
schen Format aus. 1024B.p0o gibt den Superblock im
Oktalformat aus.
2i.a0b.d7.ino=3 Ändert die I-Node-Nummer für die 7. Verzeichnisposi-
tion im root-Verzeichnis in 3. Dieses Beispiel zeigt
auch, daß mehrere Operationen in einer Kommandozeile
zusammengefaßt werden können.
d7.nm="name" Ändert das Namensfeld in der Verzeichnisposition in
die angegebene Zeichenkette.
23i.im.pdb Gibt den unmittelbaren Datenbereich der I-Node mit der
Nummer 23 als Verzeichnisblock aus.
23i.im.d5 Gibt den sechsten Verzeichniseintrag im unmittelbaren
Datenbereich der I-Node mit der Nummer 23 aus.
SIEHE AUCH
fsck(1M), generisches Kommando fsdb(1M), fs(4-vxfs).
Seite 9 Reliant UNIX 5.44 Gedruckt 11/98