Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ fsdb_vxfs(1M-vxfs) — Reliant UNIX 5.44c4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

fsck(1M)

fsdb(1M)

fs(4-vxfs)

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

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026