Wie man binäre Bitmap handelt
IP-Lookup-Tabelle als Baum-Bitmap dargestellt. Der Zeitplan, nach dem der Strom in einem physischen Vertrag geliefert oder in einem Finanzvertrag eingepreist wird. Beschreibt eine Serviceklasse für einen bestimmten Datenfeed. Das Mindesthandelsvolumen für ein Wertpapier. Das gesamte geclearte Volumen des während der vorherigen Handelssitzung gehandelten Instruments. Frei formatierter Text Gesamtzahl der Instrumente in der Replay-Schleife. Mindestmenge, die für die Auftragserfassung akzeptiert wird. Sequenznummer des letzten inkrementellen Feed-Pakets, das verarbeitet wurde. Das maximale Handelsvolumen für ein Wertpapier. Dieses Feld enthält die Kontraktgröße für jedes Instrument. Referenzpreis für vorbörslich gehandelte Instrumente oder die letzte berechnete Abrechnung, unabhängig davon, ob es sich um Theoretical, Preliminary oder Final Settle der Sitzung handelt.
Das gesamte offene Interesse für den Markt am Ende der vorherigen Handelssitzung. Marktdateneingabeaktualisierungsaktion. Gibt den Typ des Multiplikators an, der auf das Produkt angewendet wird. Differenzwert für die Preisbildung. Beginn der Ereignisverarbeitungszeit in Nanosekunden seit der Unix-Epoche. Identifiziert den aktuellen Status des Instruments. Gerätename oder Symbol Der Umgang mit dem Volumen, der Komplexität und der Vielfalt der Daten, die derzeit durch wissenschaftliche Experimente und Simulationen erzeugt werden, führt oft dazu, dass Wissenschaftler produktive Zeit verschwenden. Diese neue Realität hat jede mögliche Sphäre unseres Bestehens durchdrungen. Der It-Industrie.
Informationstechnologie definiert heute S World. Die Aufzeichnungslänge ist lang genug, um alle htree-Daten abzudecken. Hash-Wert aller Attribute Dateisystem verfolgt Projektquoten. EA, ein regulärer Block wird zugewiesen und der Inhalt wird in diesen Block verschoben. Diese Funktion ist weder im Kernel noch in e2fsprogs enthalten. Hostname des Knotens, der das Dateisystem geöffnet hat. Der gewünschte Prüfsummenalgorithmus wird im Superblock angezeigt, obwohl der einzige unterstützte Algorithmus seit Oktober 2012 crc32c ist. Anzahl der Halterungen, ab denen ein Fsck benötigt wird. Der MMP-Code verwendet diese Werte nicht; Sie dienen ausschließlich zu Informationszwecken. Dieser Block zeigt den Abschluss einer Transaktion an. Daher sollten Zeitstempel erst im Mai 2446 überlaufen.
Sperrsumme des Verzeichnisblattblocks. Beginn der Liste verwaister Inodes, die gelöscht werden sollen. Länge der Bauminformation, 0x8. Maximale Anzahl von dx_entries, die diesem Header folgen können, plus 1 für den Header selbst. Tiefe dieses Extent-Knotens im Extent-Baum. Alle Daten werden auf die Festplatte geschrieben, bevor Metadaten an das Journal übergeben werden. Metadata-Prüfsummenalgorithmus-Typ.
Die Gesamtgröße beträgt 64 Byte. Größe der Gruppendeskriptoren in Byte, wenn das 64-Bit-Inkompat-Feature-Flag gesetzt ist. Limit von Journalblöcken pro Transaktion Zeilennummer, bei der der letzte Fehler aufgetreten ist. Die Sicherungen befinden sich in der zweiten und letzten Gruppe jeder Metablock-Gruppe. In einem flex_bg sind mehrere Blockgruppen zu einer logischen Blockgruppe zusammengefasst; Die Bitmap-Bereiche und der Inode-Tabellenbereich in der ersten Blockgruppe von flex_bg werden um die Bitmaps und Inode-Tabellen aller anderen Blockgruppen in flex_bg erweitert. Wenn eine Übereinstimmung gefunden wird, wird das Attributnamen-Indexfeld festgelegt, und die übereinstimmende Zeichenfolge wird aus dem Schlüsselnamen entfernt. Im Allgemeinen werden reguläre Dateien und Verzeichnisse sie für die Indizierung von Dateiblockinformationen verwenden, und spezielle Dateien verwenden sie für spezielle Zwecke. Dieses Feld scheint offen zu sein. Die Arbeitsannahme hier ist, dass alle Dateien in einem Verzeichnis verwandt sein können, daher ist es nützlich zu versuchen, sie alle zusammen zu halten. Datenreihenfolge wird nicht beibehalten; Daten können geschrieben werden, nachdem die Metadaten geschrieben wurden.
Sowohl Block - als auch Inode-Bitmap-Prüfsummen werden anhand der FS UUID, der Gruppennummer und der gesamten Bitmap berechnet. Wenn das Merkermerkmal meta_bg gesetzt ist, werden mehrere Blockgruppen zu einer Metagruppe zusammengefasst. Reservierte Gruppendeskriptoren inode. Das zugehörige Merkmalsflag ist metadata_csum. Anzahl der in diesem Block verwendeten Bytes. Dies wird mit der Kopie im ext4-Superblock zur Laufzeit verglichen. Erste Dateiblocknummer, die dieser Bereich umfasst. Im Gegensatz zu den Kommentaren bedeutet dieses Feld Null nicht, dass das Journal sauber ist! Sie sind das Gleiche. Dies hat zur Folge, dass das Dateisystem während eines Metadaten-Updates nicht blockiert wird.
Für ein Dateisystem mit meist großen Dateien ist es jedoch wünschenswert, Plattenblöcke in Einheiten von mehreren Blöcken zuordnen zu können, um sowohl die Fragmentierung als auch den Metadaten-Overhead zu reduzieren. Zusätzliche Änderungszeit-Bits. Das Prüfsummenfeld ist auf Null gesetzt. Wenn der MMP-Code all diese Überprüfungen besteht, wird eine neue MMP-Sequenznummer erzeugt und in den MMP-Block geschrieben, und das Einhängen wird fortgesetzt. Der Baumknoten, auf den gezeigt wird, kann entweder ein anderer interner Knoten oder ein Blattknoten sein, der unten beschrieben wird. Wenn die Sequenznummer EXT4_MMP_SEQ_CLEAN lautet, wird das Öffnen fortgesetzt. Es gibt eine Diskussion darüber unten. Kompatible Feature-Set-Flags. Mit der META_BG-Funktion werden ext4-Dateisysteme in viele Metablock-Gruppen partitioniert.
Die Datenblock-Bitmap verfolgt die Verwendung von Datenblöcken innerhalb der Blockgruppe. In allen Fällen werden nur die unteren 16 Bits gespeichert. Erster Block der Protokollinformationen Anzahl der Blöcke, die am letzten Fehler beteiligt waren. Wenn sich die Sequenznummer geändert hat, ist das Dateisystem auf einem anderen Computer aktiv und das Öffnen schlägt fehl. Block Map oder Extent-Baum. Dies ist die Anzahl der logischen Blöcke, die von der Festplatte gelesen oder auf die Festplatte geschrieben werden, bevor sie zur aktuellen Festplatte zurückkehren. Daher ist es genauer zu sagen, dass ein Verzeichnis eine Reihe von Datenblöcken ist und dass jeder Block ein lineares Array von Verzeichniseinträgen enthält. Für alle anderen Blockgruppen gibt es kein Padding. Anzahl der gesehenen Fehler Der Inode, in dem der Wert gespeichert ist.
Prüfsummenalgorithmus für das Journal. Restplatz wird für Dateidatenblöcke, indirekte Blockzuordnungen, Erweiterungsbaumblöcke und erweiterte Attribute verwendet. Die Verzeichnisvorbelegung sollte nur stattfinden, wenn das Flag EXT4_FEATURE_COMPAT_DIR_PREALLOC aktiviert ist. Die Größe einer Blockgruppe wird in sb angegeben. Theoretisch ist MMP ein Mechanismus, um im Superblock aufzuzeichnen, welcher Host und welches Gerät das Dateisystem gemountet haben, um mehrere Mounts zu verhindern. Salt für den String2key-Algorithmus für die Verschlüsselung. Dies bedeutet in der Tat eine sehr große Datei!
Dateityp, der 0xDE sein muss. Anzahl der Mounts seit dem letzten fsck. Abhängig vom Dateityp beschreibt ein Inode die 60 Byte des Speichers in Inode. Wenn Sie diesen Schritt _ignore_, werden Ihre Verzeichnisse nicht durch eine Prüfsumme geschützt! Bei einem ext4-Dateisystem mit aktivierter 64-Bit-Funktion erweitert sich der Blockgruppendeskriptor auf mindestens die unten beschriebenen 64 Byte. Die Größe wird im Superblock gespeichert. Wenn das Inline-Datenfeature für das Dateisystem aktiviert ist und das Flag für den Inode gesetzt ist, können die ersten 60 Byte der Dateidaten hier gespeichert werden. Schlüssel werden im Allgemeinen als ASCIIZ-Strings angenommen, während Werte Strings oder binäre Daten sein können. Die Art der Prüfsumme, mit der die Integrität der Datenblöcke in der Transaktion überprüft werden soll.
Direkte Zuordnung zu den Dateiblöcken 0 bis 11. Inline-Verzeichniseinträge sind keine Prüfsumme, da die Inode-Prüfsumme alle Inline-Dateninhalte schützen sollte. Alle Daten und Metadaten werden dem Journal übergeben. Dies ist die Anzahl der logischen Blöcke, die von der Festplatte gelesen oder auf die Festplatte geschrieben werden, bevor zur nächsten Festplatte gewechselt wird. Auf einer sich drehenden Platte reduziert das Beieinanderhalten verwandter Blöcke die Bewegungsmenge, die der Kopfaktuator und die Platte ausführen müssen, um auf einen Datenblock zuzugreifen, wodurch der Platten-IO beschleunigt wird. Bei der Anordnung von Elementen in einer Blockgruppe wird allgemein festgestellt, dass der Superblock und die Gruppendeskriptortabelle, falls vorhanden, am Anfang der Blockgruppe stehen. Diese Ineffizienz führte zur Schaffung des Ausmaß-Mapping-Schemas, das unten diskutiert wird. Letzte Inode-Änderungszeit in Sekunden seit der Epoche. Beachten Sie, dass nur die unteren 16 Bits gespeichert werden.
Generation des Baumes. Die erste Commit-ID wird im Protokoll erwartet. Daher ist es sinnvoll, die Fragmentierung nach Möglichkeit zu reduzieren. Verhalten bei der Erkennung von Fehlern. Ab Anfang 2012 wurden Metadaten-Prüfsummen zu allen wichtigen ext4- und jbd2-Datenstrukturen hinzugefügt. Für den speziellen Fall der Blockgruppe 0 werden die ersten 1024 Bytes nicht verwendet, um die Installation von x86-Bootsektoren und anderen Kuriositäten zu ermöglichen. Wenn in vorformatierten Textblöcken referenziert wird, bezieht sich sb auf Felder in dem Superblock und inode auf Felder in einem Inode-Tabelleneintrag.
Die Datei verbraucht normalerweise eine ganze Blockgruppe, obwohl mke2fs versucht, sie in die Mitte der Platte zu legen. Dies ist dasselbe wie v2, aber die Größe des Journalblock-Tags ist unabhängig von der Größe der Blocknummern festgelegt. Zum ersten Mal ist ein Fehler passiert, in Sekunden seit der Epoche. Die UUID lebt im Superblock. Die Größe beträgt 16 oder 32 Bytes. In diesem Fall sollte s_journal_inum auf dem Dateisystemgerät null sein und s_journal_uuid sollte gesetzt sein. Es kommt immer am Ende des Tags nach t_checksum.
Prüfsumme der Journal-UUID, der Sequenznummer und des Datenblocks. Cluster pro Gruppe, wenn Bigalloc aktiviert ist. MMP-Block bei dem angegebenen MMP-Prüfintervall. Durch das Nicht-Schreiben von Nullen in die Bitmap - und Inode-Tabelle wird die mkfs-Zeit erheblich reduziert. UUID, um mit diesem Tag zu gehen. Gesamtzahl der Blöcke in diesem Journal Wenn Sie denken, dass das alles ziemlich clever und eigenartig ist, tut es auch der Autor. Prüfsummenstartwert für metadata_csum-Berechnungen. Diese dritte Blocknummer wird ein lineares Array von Verzeichniseinträgen sein. Zum Beispiel, wenn inode. Wenn eine Datei zum ersten Mal erstellt wird, ordnet der Blockzuordner der Datei spekulativ 8 KB Plattenspeicherplatz zu, unter der Annahme, dass der Speicherplatz bald geschrieben wird.
Blocknummer des Beginns des Protokolls. Ein ext4-Dateisystem ist in eine Reihe von Blockgruppen aufgeteilt. Anzahl der Dateisysteme, die dieses Journal gemeinsam nutzen Das Ziel einer symbolischen Verbindung wird in diesem Feld gespeichert, wenn die Zielzeichenfolge weniger als 60 Byte lang ist. Wenn sie in einem externen Block gespeichert sind, müssen die Einträge struct ext4_xattr_entry in sortierter Reihenfolge gespeichert werden. Gerätenummer der Journaldatei, wenn das Merker-Flag für externes Journal gesetzt ist. Das Superblockfeld s_last_orphan zeigt auf den ersten Inode in der Waisenliste; dtime ist dann die Nummer der nächsten verwaisten Inode oder Null, wenn keine Waisen mehr vorhanden sind. Speicherort der dynamischen Superblockkopie Dieses Feld scheint aus dem Feld j_uuid in struct journal_s kopiert zu werden, aber nur tune2fs berührt dieses Feld.
Inode-Nummer der Benutzer-Quotendatei. Auf einer SSD gibt es natürlich keine beweglichen Teile, aber Lokalität kann die Größe jeder Übertragungsanforderung erhöhen, während die Gesamtzahl der Anforderungen reduziert wird. Aus Leistungsgründen schreibt ext4 standardmäßig nur Dateisystem-Metadaten über das Journal. Magische Anzahl von verwaisten Dateiblöcken, 0x0B10CA04. Siehe s_first_ino im Superblock. Natürlich, wenn alle diese Mechanismen fehlschlagen, kann man immer e4defrag verwenden, um Dateien zu defragmentieren. Nicht im Linux-Kernel, scheint für nicht initialisierte Blockgruppen gewesen zu sein? Dies ist eine etwas merkwürdige Codierung, da effektiv sieben Mal so viele positive Werte wie negative Werte vorliegen. Dies ist das Gegenteil von ext4. Die Inode-Prüfsumme wird gegen die FS-UUID, die Inode-Nummer und die Inode-Struktur selbst berechnet.
Tiefe des Baumes. Inode-Nummer, die Null sein muss. Zeilennummer, an der der Fehler aufgetreten ist. Das Journal hat Blockwiderrufsaufzeichnungen. Die Inode-Tabelle ist ein lineares Array der Struktur ext4_inode. Andernfalls wartet der offene Code auf das zweifache des angegebenen MMP-Prüfintervalls und überprüft die Sequenznummer erneut. Da Dateinamen nicht länger als 255 Bytes sein dürfen, verkürzt das neue Verzeichniseintragsformat das rec_len-Feld und verwendet den Platz für ein Dateityp-Flag, wahrscheinlich um zu vermeiden, dass jeder Inode während der Verzeichnisbaum-Traversierung geladen werden muss. Die ersten 68 Byte des Journal-Inode werden im ext4-Superblock repliziert.
Der zweite Ort, an dem erweiterte Attribute gefunden werden können, ist der Block, auf den inode zeigt. Wenn JBD2_FEATURE_INCOMPAT_CSUM_V3 festgelegt ist, wird das Journalblock-Tag als struct journal_block_tag3_s definiert, das wie folgt aussieht. Metadata Checksum Seed wird im Superblock gespeichert. Der Deskriptorblock enthält ein Array von Journalblock-Tags, die die endgültigen Positionen der Datenblöcke beschreiben, die im Journal folgen. Dieser Block hat die gleiche UUID wie zuvor, daher wird das UUID-Feld weggelassen. Anzahl der KiB, die während der gesamten Lebensdauer in dieses Dateisystem geschrieben wurden. Jeder Inode hat seine eigene Prüfsumme. Nummer des betroffenen Blocks des ersten Fehlers. Wenn ein Block einer Transaktion hinzugefügt wird, werden alle vorhandenen Sperrdatensätze für diesen Block gelöscht. Alternativ die Größe der erweiterten Inode-Felder über die ursprüngliche ext2-Inode hinaus, einschließlich dieses Felds.
Es kommt immer am Ende des Tags nach t_flags oder t_blocknr_high. Die Position der Inode-Tabelle ist durch grp gegeben. Wenn die Gruppe keine redundante Kopie hat, beginnt die Blockgruppe mit der Datenblock-Bitmap. Prüfsumme des erweiterten Attributblocks Länge des Attributwerts Padding auf 64 Bytes. Dies ist ein glücklicher Umstand, da ext4-Code nicht für den Fall vorbereitet ist, dass die Blockgröße die Seitengröße überschreitet. HINWEIS: Sowohl ext4 als auch ocfs2 verwenden jbd2. Die ersten vier Bytes von i_block sind die Inode-Nummer des übergeordneten Verzeichnisses. Die 4 Extents im Inode benötigen keine Checksummen, da der Inode bereits checksummiert ist.
Dies hat den zusätzlichen Vorteil, dass slack-Speicherplatz aus den Verzeichnisdateien entfernt und die htree-Indizes neu gewichtet werden. Der Datenblock wurde durch die Transaktion gelöscht. Die Prüfsumme wird anhand der FS UUID und der MMP-Struktur berechnet. Um diesen klassischen Verzeichnisblöcken Prüfsummen hinzuzufügen, wird eine gefälschte Struktur ext4_dir_entry am Ende jedes Blattblocks platziert, um die Prüfsumme zu halten. Die Inode-Bitmap zeichnet auf, welche Einträge in der Inode-Tabelle verwendet werden. RO_COMPAT_METADATA_CSUM Feature ist festgelegt. Wenn JBD2_FEATURE_INCOMPAT_CSUM_V2 oder JBD2_FEATURE_INCOMPAT_CSUM_V3 gesetzt sind, ist das erste __be32 die Prüfsumme der Journal-UUID und der gesamte Festschreibungsblock, wobei dieses Feld auf Null gesetzt ist.
Wie bei den meisten Bitmaps repräsentiert ein Bit den Verwendungsstatus eines Datenblock - oder Inode-Tabelleneintrags. Dieser Block geht einer Reihe von Datenblöcken voraus, die während einer Transaktion durch das Journal geschrieben wurden. Wenn huge_file gesetzt ist und EXT4_HUGE_FILE_FL in inode gesetzt ist. Prüfsumme des MMP-Blocks. Jede CPU sollte in der Lage sein, einen eigenen Block zu beanspruchen, was bedeutet, dass die verwaiste Liste ohne Sperre aktualisiert werden kann. Der Inode-Tabelleneintrag ist in der Struktur ext4_inode angelegt. Dieser Wert wird im übergeordneten Block gespeichert. Für ext4-Dateisysteme mit 4 KB Blockgröße enthält eine einzelne Metablockgruppenpartition 64 Blockgruppen oder 8 GiB Festplattenspeicher. MMP blockiert bis zum Prüfsummenfeld. Der Hostname und der Gerätedateiname werden immer dann in den MMP-Block geschrieben, wenn ein offener Vorgang erfolgreich ist.
Beachten Sie, dass die ersten und letzten zwei Blockgruppen in der größeren Metagruppe im meta_bg-Fall jedoch nur Gruppendeskriptoren für die Gruppen innerhalb der Metagruppe enthalten. Null, damit es so aussieht, als ob dieser Eintrag nicht verwendet wird. Die Metablock-Gruppenfunktion verschiebt die Position der Gruppendeskriptoren von der überlasteten ersten Blockgruppe des gesamten Dateisystems in die erste Gruppe jeder Metablockgruppe selbst. Wenn jedoch das Inode-Flag EA_INODE gesetzt ist, speichert dieser Inode einen erweiterten Attributwert und dieses Feld enthält die Prüfsumme des Wertes. Nummer des Inodes, auf den dieser Verzeichniseintrag zeigt. Attribute, die in einem Inode gespeichert sind, müssen nicht in sortierter Reihenfolge gespeichert werden. Name der Funktion, bei der der Fehler aufgetreten ist. Zusätzliche Zugriffszeit-Bits. Jede Metablock-Gruppe ist ein Cluster von Blockgruppen, deren Gruppen-Deskriptor-Strukturen in einem einzigen Plattenblock gespeichert werden können.
Der gesamte Superblock bis zum Checksummenfeld. Länge des Dateinamens Mehrere Attribute können denselben Wert haben. Verzeichniseinträge zeichnen den Dateityp auf. Nach r_count ist ein lineares Array von Blocknummern, die durch diese Transaktion effektiv widerrufen werden. Name der Funktion, in der der letzte Fehler aufgetreten ist. Dieses Feld wird nur verwendet, wenn die Funktion INCOMPAT_EA_INODE aktiviert ist. Größe der Inode-Struktur in Bytes. Journal behält Prüfsummen auf den Datenblöcken bei.
Flags, die zum Deskriptor gehören. Um ext4 zu aktivieren, erweiterte Attributwerte zu speichern, die nicht in den Inode oder den einzelnen erweiterten Attributblock passen, der an einen Inode angehängt ist, ermöglicht die Funktion EA_INODE, den Wert in den Datenblöcken eines regulären Dateiinode zu speichern. Tatsächliche Anzahl von dx_entries, die diesem Header folgen, plus 1 für den Header selbst. Die ersten vier Bytes des Datenblocks passierten zufällig die magische Zahl jbd2. Die Gesamtgröße beträgt 1024 Byte. Zusätzliche Modifikationszeit-Bits. Die Transaktions-ID, die zu diesem Block gehört. Die Bigalloc-Funktion bietet genau diese Fähigkeit. Alle Kommentare und Korrekturen sind willkommen, da es zweifellos viele Überlieferungen gibt, die sich nicht in frisch erstellten Demonstrations-Dateisystemen widerspiegeln. Wenn gdt_csum gesetzt ist und metadata_csum nicht gesetzt ist, ist die Blockgruppen-Prüfsumme das crc16 der FS-UUID, die Gruppennummer und die Gruppendeskriptorstruktur.
Beachten Sie, dass eine Transaktion entweder mit einem Deskriptor und einigen Daten oder einer Blockwiderrufsliste beginnt. Prüfsumme des gesamten Superblocks, wobei dieses Feld auf Null gesetzt ist. Limit von Datenblöcken pro Transaktion Länge dieses Verzeichniseintrags Um das Verzeichnis als htree zu durchlaufen, berechnet der Code den Hash des gewünschten Dateinamens und verwendet ihn, um die entsprechende Blocknummer zu finden. Blockgröße des Journalgeräts Der Journal Superblock wird im nächsten vollen Block nach dem Superblock sein. Die Blockgröße wird zur Zeit von mkfs angegeben und beträgt in der Regel 4 KB. Sobald dieser Commit-Block das Journal erreicht, können die mit dieser Transaktion gespeicherten Daten an ihre endgültigen Speicherorte auf der Festplatte geschrieben werden. Daher beträgt die maximale Länge eines initialisierten Extents 32768 Blöcke und die maximale Länge eines nicht initialisierten Extents beträgt 32767. Siehe Abschnitt Inode-Zeitstempel. Kann nicht größer als 3 sein, wenn das INCOMPAT_LARGEDIR-Feature festgelegt ist; kann nicht größer als 2 sein sonst. Hash-Wert des Attributnamens und des Attributwerts Aktivieren Sie die DISCARD-Unterstützung, wenn dem Speichergerät mitgeteilt wird, dass Blöcke nicht mehr verwendet werden. Signed Directory Hash in Verwendung.
Attributwerte können dem Ende der Eingabetabelle folgen. Dies ist Null, wenn JBD2_FEATURE_INCOMPAT_64BIT nicht aktiviert ist. Anzahl der reservierten GDT-Einträge für zukünftige Dateisystemerweiterungen. Anzahl der verwendeten Festplattenblöcke. In ext3 eingeführt, verwendet das ext4-Dateisystem ein Journal, um das Dateisystem im Falle eines Systemabsturzes vor Beschädigung zu schützen. Letzte Zugriffszeit in Sekunden seit der Epoche. Die restlichen Felder sind nur in einem Superblock Version 2 gültig. Statische Informationen, die das Journal beschreiben. EA-Wert ist auch ein Array der Struktur ext4_dir_entry.
Im Allgemeinen werden die Datenblöcke, die durch das Journal auf die Platte geschrieben werden, nach dem Deskriptorblock wörtlich in die Journaldatei geschrieben. Um den logischen Block zu finden, der einen bestimmten Dateiblock speichert, würde der Code durch diese zunehmend komplizierte Struktur navigieren. Sollte das System während des zweiten langsamen Schreibvorgangs abstürzen, kann das Journal bis zum letzten Übergabedatensatz wiederholt werden, wodurch die Atomarität von allem gewährleistet wird, was durch das Journal auf den Datenträger geschrieben wird. Standardmäßig darf ein Dateisystem gegenüber der ursprünglichen Dateisystemgröße um den Faktor 1024x größer werden. Genug Tags, um entweder den Block zu füllen oder um alle Datenblöcke zu beschreiben, die diesem Deskriptorblock folgen. Das INODE_ZEROED-Flag bedeutet, dass die Inode-Tabelle initialisiert wurde; mkfs hebt dieses Flag auf und verlässt sich auf den Kernel, um die Inode-Tabellen im Hintergrund zu initialisieren. Länge dieses Verzeichniseintrags, der 12 sein muss. Magische Nummer zur Identifikation, 0xEA020000. Dies wirkt sich auf die Platzierung von Dateisystemmetadaten aus, wodurch der RAID-Speicher hoffentlich schneller wird.
Checksumme des htree Verzeichnisblocks. Standard-Hash-Algorithmus für Verzeichnishashes. Standard-UID für reservierte Blöcke. In ext4 wurde die Datei für die logische Blockzuordnung durch einen Erweiterungsbaum ersetzt. Das Ende des gesamten Verzeichnisses wird natürlich durch Erreichen des Dateiendes angezeigt. Die Sortierreihenfolge lautet e_name_index, dann e_name_len und schließlich e_name. Löschzeit in Sekunden seit der Epoche. Liste der defekten Blöcke. Die Anzahl der Blockgruppen ist die Größe des Geräts geteilt durch die Größe einer Blockgruppe.
Wenn JBD2_FEATURE_COMPAT_CHECKSUM festgelegt ist, ist das erste __be32 das crc32 aller Blöcke, die bereits in die Transaktion geschrieben wurden. Zeitpunkt des letzten Fehlers in Sekunden seit der Epoche. Dateierstellungszeit in Sekunden seit der Epoche. Verzeichnis, in dem das Dateisystem zuletzt geladen wurde. Verschlüsselte Inodes sind im Dateisystem vorhanden. Es ist eine kontinuierliche Reihe von Blöcken, die groß genug sind, um jd zu enthalten. Der Verzeichniseintrag ist 12 Byte lang. Jeder Inode-Datensatz kann so groß wie die Dateisystemblockgröße sein, obwohl dies nicht besonders effizient ist. Zuvor war das Limit 156 Bytes aufgrund der ineffizienten Verwendung von Inode-Speicherplatz.
Null gibt an, dass sich der Wert im selben Block wie dieser Eintrag befindet. Inode, der Projektkontingente verfolgt. Sicherungskopien der Superblock - und Gruppendeskriptoren stehen immer am Anfang von Blockgruppen, auch wenn flex_bg aktiviert ist. Der Inhalt von inode. Wenn das Dateisystem erstellt wurde, in Sekunden seit der Epoche. Nach der Struktur ext4_xattr_header oder struct ext4_xattr_ibody_header ist ein Array der Struktur ext4_xattr_entry; Jeder dieser Einträge ist mindestens 16 Byte lang. Standard-GID für reservierte Blöcke. Die wichtigsten Daten sind die Größe des Journals und wo der Beginn des Transaktionsprotokolls zu finden ist.
Dieses Feld ist immer Null, was bedeutet, dass der Kernel es dynamisch berechnet. Journaling-Unterstützung gültig, wenn EXT4_FEATURE_COMPAT_HAS_JOURNAL gesetzt ist. ACLs sind natürlich eines von vielen möglichen erweiterten Attributen; Ich denke, der Name dieses Feldes ist ein Ergebnis der ersten Verwendung von erweiterten Attributen für ACLs. Die Größe des Blocks, um alle dx_node-Daten auszublenden. Journalblock-Tags haben eines der folgenden Formate, abhängig davon, welche Journalfunktions - und Block-Tag-Flags gesetzt sind. Irgendwann wird der Kernel repariert und e2fsck wird diese Situation beheben, vorausgesetzt es wird vor 2310 ausgeführt. Erste Metablock-Blockgruppe, wenn das Feature meta_bg aktiviert ist. Maximale Anzahl von Einträgen, die dem Header folgen können. Um die mit einer Datei verknüpften Informationen zu finden, müssen die Verzeichnisdateien durchsucht werden, um den mit einer Datei verknüpften Verzeichniseintrag zu finden, und dann der Inode geladen werden, um die Metadaten für diese Datei zu finden. Wenn das EA_INODE-Inode-Flag jedoch festgelegt ist, speichert dieser Inode einen erweiterten Attributwert, und dieses Feld enthält die Nummer des Inode, der das erweiterte Attribut besitzt.
Die Superblock-Prüfsumme wird anhand der Superblock-Struktur berechnet, die die FS-UUID enthält. Um Entwicklungscode zu testen. Vor dieser Funktion konnten Verzeichnisse nicht größer sein als 4GiB und konnten keinen htree mehr als 2 Ebenen tief haben. Schreibe Zeit, in Sekunden seit der Epoche. ASCIIZ-Zeichenfolge von Mount-Optionen. Der Commit-Block ist ein Sentry, der angibt, dass eine Transaktion vollständig in das Journal geschrieben wurde. Sequenzielle ID des aktiven Snapshots Sobald die wichtige Datentransaktion vollständig auf den Datenträger geschrieben und aus dem Festplattenschreibcache gelöscht wurde, wird ein Datensatz der zu übertragenden Daten ebenfalls in das Journal geschrieben. Wenn die Datei kleiner als 60 Byte ist, werden die Daten inline in Inode gespeichert. Dies hat zur Folge, dass die Blockmetadaten für ein schnelleres Laden nahe beieinander gruppiert werden und große Dateien kontinuierlich auf der Festplatte gespeichert werden.
Auf dem Journalgerät befindet sich an der üblichen Stelle ein ext4-Superblock mit einer passenden UUID. Padding bis zum Ende des Blocks. Die Tabelle ist so groß, dass sie genügend Blöcke enthält, um mindestens jdn. Diese Lokalität kann auch dazu führen, dass Schreibvorgänge auf einen einzelnen Löschblock konzentriert werden, was das erneute Schreiben von Dateien erheblich beschleunigen kann. Gruppendeskriptoren haben Prüfsummen. Länge dieses Datensatzes, 12. Nanosekunden-Komponente des obigen Zeitstempels. EXT4_FL_USER_MODIFIABLE-Maske, da sie die Einstellung dieser Flags in einer speziellen Weise handhaben muss und sie aus dem Satz von Flags maskiert werden, die direkt in i_flags gespeichert werden. Maximale Zeit zwischen den Überprüfungen in Sekunden.
Diese Funktion wird mit einem Merker für die Eigenschaft "rocompat" geliefert, um anzuzeigen, dass eine verwaiste Datei und ein Kompat-Flag verwendet werden können, das angibt, dass die verwaiste Datei tatsächlich verwaiste Inode-Datensätze enthält. Wenn JBD2_FEATURE_INCOMPAT_CSUM_V3 NICHT festgelegt ist, wird das Journalblock-Tag als struct journal_block_tag_s definiert, das wie folgt aussieht. Wenn das Flag nicht gesetzt ist, werden redundante Kopien in allen Gruppen gespeichert. Die Anzahl der Bytes, die von der Prüfsumme verwendet werden. Der erste Platz ist zwischen dem Ende jedes Inode-Eintrags und dem Beginn des nächsten Inode-Eintrags. Der Zugriff auf Felder außerhalb von EXT2_GOOD_OLD_INODE_SIZE sollte innerhalb von i_extra_isize überprüft werden. Dieses Dateisystem unterstützt Metadaten-Checksummen.
Dies beschleunigt die Wiederherstellung, indem es dem Journal ermöglicht, Schreibblöcke zu überspringen, die anschließend neu geschrieben wurden. Es gibt zwei Stellen, an denen erweiterte Attribute gefunden werden können. Der Stamm des Baums befindet sich immer im ersten Datenblock des Verzeichnisses. Der Wurzelknoten des Extent-Baums wird in Inode gespeichert. Dynamische Information, die den aktuellen Status des Protokolls beschreibt. Wenn die beiden kollidieren, wird der Überlauf in einen separaten Plattenblock gelegt. Die Standardkonfiguration sieht vor, dass jede Blockgruppe eine vollständige Kopie der Blockgruppendeskriptortabelle enthält, es sei denn, das Merkmalsmerkmal sparse_super ist gesetzt.
Siehe den Abschnitt Erweiterte Attribute unten. Der Blockgruppen-Deskriptor ist in der Struktur ext4_group_desc angelegt. Das ist langsamer aber am sichersten. Die ersten vier Felder von ext4_xattr_entry werden auf Null gesetzt, um das Ende der Schlüsselliste zu markieren. Beschreibung dessen, was dieser Block enthält. Hash für nicht signierten Verzeichnisses wird verwendet. Sequenznummer, wird regelmäßig aktualisiert. Wenn huge_file gesetzt ist und EXT4_HUGE_FILE_FL NICHT in inode gesetzt ist. Zeitpunkt, zu dem der MMP-Block zuletzt aktualisiert wurde. Wenn metadata_csum gesetzt ist, dann ist die Blockgruppen-Prüfsumme die unteren 16 Bits der Prüfsumme der FS-UUID, der Gruppennummer und der Gruppendeskriptorstruktur.
Diese Funktion scheint nicht implementiert zu sein. Anzahl der Blöcke, die vom Umfang abgedeckt sind. Dies ist das letzte Tag in diesem Deskriptorblock. Anzahl der gültigen Einträge nach dem Header. Der vierte Trick besteht darin, dass alle Inodes in einem Verzeichnis, wenn möglich, in der gleichen Blockgruppe wie das Verzeichnis platziert werden. Länge des Dateinamens, der Null sein muss. Wenn der Baum flach ist, ist der Block ein lineares Array von Verzeichniseinträgen, die durchsucht werden können; Andernfalls wird der kleinere Hash des Dateinamens berechnet und für diesen zweiten Block verwendet, um die entsprechende dritte Blocknummer zu finden.
Der Zeitpunkt, an dem die Transaktion ausgeführt wurde, in Sekunden seit der Epoche. Diese Felder sind nur für EXT4_DYNAMIC_REV-Superblöcke vorgesehen. Andernfalls werden entweder Blöcke oder Blockzuordnungen verwendet, um Datenblöcke zum Speichern des Verknüpfungsziels zuzuordnen. Die Felder inode number und name_len werden auf Null gesetzt, um alte Software dazu zu bringen, einen scheinbar leeren Verzeichniseintrag zu ignorieren, und die Prüfsumme wird an der Stelle gespeichert, an der der Name normalerweise geht. Sparse Super Block, v2. Blockieren Sie den Gerätenamen des Dateisystems. Jeder Blockgruppe im Dateisystem ist einer dieser Deskriptoren zugeordnet. Letzte Datenänderungszeit in Sekunden seit der Epoche. Wenn eine Datei mehr Blöcke benötigt, um Dateischreibvorgänge zu absorbieren, weist das Dateisystem bei diesem Schema darauf hin, dass die genaue Position auf dem Datenträger festgelegt wird, bis alle fehlerhaften Puffer auf den Datenträger geschrieben wurden.
Ohne die Option META_BG werden aus Sicherheitsgründen alle Kopien der Blockgruppendeskriptoren in der ersten Blockgruppe beibehalten. Bitte beachten Sie die Anmerkung zu i_blocks_lo. Mount Zeit, in Sekunden seit der Epoche. Wenn flex_bg aktiviert ist, können sehr große Dateien mit einem einzigen Extent zugewiesen werden, was zu einer erheblichen Reduzierung der Metadatenblocknutzung und einer gewissen Verbesserung der Festplatteneffizienz führt. Die folgende Tabelle beschreibt die Datenelemente, die in jede Art von Prüfsumme eingehen. Dies bedeutet, dass innerhalb einer Blockgruppe die einzigen Datenstrukturen mit festen Positionen der Superblock und die Gruppendeskriptortabelle sind. Inode-Nummer der Gruppenkontingentdatei. Der Superblock zeichnet verschiedene Informationen über das umschließende Dateisystem auf, wie beispielsweise Blockzählungen, Inode-Zählungen, unterstützte Funktionen, Wartungsinformationen und mehr. Beachten Sie, dass für Inline-Verzeichnisse der i_block und der EA-Space als separate Dirent-Blöcke behandelt werden; Verzeichniseinträge können die zwei nicht umfassen. Beachten Sie, dass es bei diesem Blockzuordnungsschema erforderlich ist, viele Zuordnungsdaten selbst für eine große zusammenhängende Datei auszufüllen!
Bitte beachten Sie einen wichtigen Hinweis zu BLOCK_UNINIT im Abschnitt über Block - und Inode-Bitmaps. Gemeinsamer Header, der dies als Superblock identifiziert. Blöcke werden wiederum in größere Einheiten gruppiert, die Blockgruppen genannt werden. Jeder Journal-Metadatenblock erhält seine eigene Prüfsumme und die Block-Tags in der Deskriptor-Tabelle enthalten Prüfsummen für jeden der Datenblöcke im Journal. Jeder Knoten des Baums beginnt mit einer Struktur ext4_extent_header. Dies beschränkt natürlich die Menge der erweiterten Attribute, die an einen Inode angehängt werden können. Extents sind wie ein Baum angeordnet.
Verschlüsselungsalgorithmen im Einsatz. Dies wird verwendet, um Blöcke zu markieren, die zu einem Zeitpunkt gleichzeitig gespeichert wurden, aber nicht mehr geloggt werden. Extra-Datei-Erstellungszeit-Bits. Der zusätzliche Abstand zwischen dem Ende der Inode-Struktur und dem Ende des Inode-Datensatzes kann zum Speichern erweiterter Attribute verwendet werden. Zeitpunkt der letzten Überprüfung, in Sekunden seit der Epoche. EA inode ist der richtige, auf den zugegriffen wird. Verfolgen Sie, welche Blöcke in einem Dateisystem Metadaten sind und daher nicht als Datenblöcke verwendet werden sollten. Die Länge des Arrays ist die Größe des Blocks minus dem Schwanz.
Schließt NULL nicht mit ein. Data Warehousing and Mining: Konzepte, Methoden, Tools und Anwendungen bietet die umfassendste Zusammenstellung von Forschungsergebnissen in diesem aufstrebenden und zunehmend wichtigen Bereich. Sie bieten ausgereifte Technologien von Datenintegration, Datenerfassung und - abruf, Abfrageoptimierung und Datenanalyse bis hin zu erweiterten Benutzeroberflächen. Dieses Buch ist das begleitende Protokoll des 15. Internationalen Symposiums über die Verarbeitung von Stringverarbeitungen und Information Retrieval, SPIRE 2008, das im November 2008 in Melbourne, Australien, stattfand. Die 25 revidierten vollständigen Arbeiten, die zusammen mit zwei eingeladenen Gesprächen vorgestellt wurden, wurden sorgfältig geprüft und aus 54 ausgewählt. Es ist das vollständige Geheimnis der Spielcodierung. Sie können es auch einen kompletten Game Coding Guide nennen.
Kommentare
Kommentar veröffentlichen