orm@doc-tcpip.org | Erstellt: März 2002 - Letzte Modifikation: März 2006 |
JFS AIX Standard-Filesystem für 32 Bit. Loggt Änderungen der File-Metadaten, bevor die Schreib-Operationen starten. Der Eintrag wird entfernt, wenn erfolgreich geschrieben wurde. So kann man nach einem System-Crash gezielt die Einträge im Log prüfen, korrigieren bzw. nachziehen (sonst wäre ein kompletter Check aller Einträge im Filesystem nötig - was lange dauert...). Kein integraler Bestandteil des LVM - benutzt ihn aber viel. Ein JFS wird auf einem LV angelegt. Filesystem - eine hierarchische Baumstruktur aus Files und Direktories. Hier wird die Information gespeichert, wo ein File physikalisch liegt, die Permissions, der Name und seine logische Stelle im System der Direktories. Ein FS besteht aus: Superblock Inodes Datenblöcken Allokations Bitmaps Files, Direktories Superblock - Informationen des ganzen FS Ist 4096 Bytes groß und beginnt bei 4096 auf dem LV. Es stehen folgende Infos im Superblock: - Größe des FS - Anzahl der Datenblöcke im FS - Flag über den Status des FS - Allocation Group Size AIX: dumpfs /dev/hd4 zeigt Superblock, Inode-Map, Disk-Map, des FS oder Special Device. Logische Blocks: 4096 Byte Ein File/Direktory hat nicht sofort einen ganzen logischen Block - zuerst werden die Daten zuerst in Fragmente geschrieben. Das sind weitere Untereinheiten eines Blocks. Inodes: Jedes File oder Direktory hat 1 Inode. Die enthaltene Information: File Typ Permissions Owner UID, GID Anzahl der Links Liste der physikalischen Daten-Blocks Array nummerischer Sektionen Pro Sektion 1 Adresse eines Logischen Blocks. Angegeben werden das Startfragment und die Gesamtanzahl der Fragmente in einer Allokation. Beispiel: File mit 4096 Byte => 1 Adresse eines Blocks in der Inode. Alle Daten ien einem logischen Block. File mit 6144 Byte => 2 Adressen eines Blocks in der Inode Die Daten werden auf die beiden Blocks verteilt, 1 Block mit 4096 Byte, einer mit 2048 Byte. Ist das File so groß, daß die Zeiger nicht in die Inode passen, dann wird auf einen Block gezeigt, der die zusätzlichen Adressen enthält. Das ist ein indirekter Block. Ein indirekter Block kann nun seinerseits auf einen Block mit Zeigern deuten. Das wird bei sehr großen Files notwendig, und nennt sich dann Doppelt-indirekter Block. Die Anzahl der Inodes wird beim Anlegen des FS festgelegt. Sie hängt von der Größe des FS der Größe der Allokations-Gruppe (8 MB ist Default) und dem Verhältnis "Bytes pro Inodes" ab (4096 ist Default). Die Anzahl der Inodes sieht man mit df -v (/usr/include/jfs/ino.h). Die Zahl der Inodes ist die Zahl der Files, die man maximal auf diesem FS ablegen kann - unabhängig von der Menge der freien Blocks. Inodes im JFS sehen so aus: 128 Byte Struktur in der Inode List. Der Offset in dieser Liste ist die eindeitige Inode-Nummer, mit deren Hilfe das System die Inodes erkennt. Inhalt einer Inode: File Type und Permission Mode Bit Größe des Files in Byte Permissions für Owner Group Anzahl der Blocks, die für das File alloziert sind Last modified Last accessed Last time Inode modified Anzahl der Hard Links Reale Disk Adresse der Daten bzw. Indirekten Blöcke. Fast man das File an, wird die Inode immer geändert. Allerdings kann man die Inode anfassen, ohne das File zu ändern. Die Inode enthält keine Pfade oder Dateinamen. Die Direktory Einträge verknüpfen Namen und Modes mit dem File. Man kann eine Inode zu vielen Namen verknüpfen (verlinken, ==> symlinks). Dazu wird ein neuer Direktory-eintrag angelegt, der auch auf diese Inode zeigt - ein Link. Der Link-Count der Inode wird dabei erhöht. Special Files sind Devices alles Art. Also Files, die eine Einheit (Platte, Soundkarte etc.) definieren und zugänglich machen. In solch einer Inode werden keine Datenblocks angezeigt, sondern es wird auf die Major und Minor Number gezeigt. Ist der Link Count 0 geworden, so gilt das File als gelöscht, die Listen werden gelöscht und die Blocks werden der Free List zugewiesen. Direkte Addressierung Es wird aud der Inode direkt auf die Datenblöcke gezeigt (8 Einträge zu je 4096 Byte, das File kann also maximal 32786 Byte groß werden). Einfache indirekte Addressierung Der letzte Eintrag des Direkten Blocks zeigt auf einen indirekten Block mit weiteren 1024 Verweisen auf die Datenblöcke. Die ersten 8 Einträge werden nicht benutzt. Doppelte indirekte Addressierung Hier zeigt der letzte Eintrag eines indirekten Blocks auf einen indirekten Block... 512 Verweise auf Blocks mit 1024 weiteren Verweisen. Fragmente Kommen aus BSD. Die Einzelnen Blocks werden in kleine Teile zerlegt. Ziel ist eine möglichst geringe IO Tätigkeit der Platte. Das kann man einmal erreichen durch große Blöcke, die ein einem Satz gelesen werden - man verschwendet viel Platz. Oder man passt die Blöcke auf der den logischen Blöcken zu. Die Hauptaufgabe des JFS, das Journaling, also die Sicherung der Filesystem Metadaten vor einem Schreibvorgang, kann man mit einer Mount-Option abschalten (weil es die Performace etwas drückt). Es ist dann natürlich die Integrität des FS nicht mehr gesichert, und nach einem Crash ist ein voller FS Check nötig - Datenverlust kann eintreten. Die Option ist nointegrity. JFS2 Das Standard-JFS für den 64-Bit Kernel. Alle Libraries, Kommandos, Services und Header-Files sind in AIX für beide FS ausgelegt. Nur auf 64-bittiger Hardware kann allerdings JFS2 im vollen Umfang eingesetzt werden. Im Fall des JFS2 sind die i-Nodes nicht mehr in einer verlinkten Liste angeordnet, sondern in einem B-Tree. Die Dauer von Suchanfragen ist also nicht mehr linear, sondern erheblich schneller. Die Anzahl der i-Nodes ist auch nicht mehr festgelegt; mehr i-Nodes werden dynamisch zugefügt. Bei JFS mußte das vor dem Anlegen des FS festgelegt werden - NBPI: Die Anzahl der Byte pro i-Node, also die Länge der verlinkten Liste, in denen die i-Nodes aufgeführt sind. Dem B-Tree ist daß egal... Weiterhin läßt JFS2 erheblich größere Files zu: ein File (oder Filesystem) kann 16 TB groß werden; architektonisch möglich wäre sogar 4 PB (JFS erlaubt Files mit max. 64 GB und Filesysteme mit max. 1 TB). Auch Zugriffe auf Filesysteme mit sehr vielen Einträgen sind erheblich verbessert worden.
[ Allgemein | UNIX | AIX | TCP-IP | TCP | ROUTING | DNS | NTP | NFS | FreeBSD | Linux | RPi | SMTP | Tracing | GPS | LW ]
Copyright 2001-2021 by Orm Hager - Es gilt die GPL