Größe eines Blocks
Eine dreidimensionale Spur (dieselbe Spur auf allen Platten) wird als Zylinder bezeichnet. Jeder Track ist in 63 Sektoren unterteilt. Jeder Sektor enthält 512 Datenbytes. Daher beträgt die Blockgröße in der Partitionstabelle 64 Köpfe * 63 Sektoren * 512 Bytes äh ... geteilt durch 1024 ... :-)
Quelle: Partitionierung mit fdisk
Jedes Mal, wenn Linux sich auf die Blockgröße bezieht, sind es fast immer 1024 Bytes - Linux verwendet 1024-Byte-Blöcke als primitive Einheiten für den Puffercache und alles. Dies ist nur in dateisystemspezifischen Treibern der Fall, da einige Dateisysteme andere verwenden Granularitäten (in einem ext3-Dateisystem normaler Größe beträgt die Blockgröße des Dateisystems normalerweise 4096 Byte). Die Blockgröße des Dateisystems wird jedoch fast nie angezeigt. Fast die einzige Möglichkeit, dies tatsächlich zu erkennen, besteht darin, ein Kernel-Hacker zu sein oder Programme wie dumpe2fs auszuführen.
Das Problem dabei ist, dass es vier verschiedene Einheiten gibt, die Sie berücksichtigen müssen. Um die Sache noch schlimmer zu machen, tragen zwei dieser Einheiten den gleichen Namen. Dies sind die verschiedenen Einheiten:
- Hardware-Blockgröße, "Sektorgröße"
- Blockgröße des Dateisystems, "Blockgröße"
- Blockgröße des Kernel-Puffer-Cache, "Blockgröße"
- Blockgröße der Partitionstabelle, "Zylindergröße"
Um zwischen der Blockgröße des Dateisystems und der Blockgröße des Puffer-Cache zu unterscheiden, folge ich der FAT-Terminologie und verwende "Clustergröße" für die Blockgröße des Dateisystems.
Die Sektorgröße ist die Einheit, mit der sich die Hardware befasst. Dies reicht von verschiedenen Hardwaretypen, aber die meisten PC-Hardware (Disketten, IDE-Festplatten usw.) verwenden 512-Byte-Sektoren.
Die Clustergröße ist die Zuordnungseinheit, die das Dateisystem verwendet, und verursacht die Fragmentierung - ich bin sicher, dass Sie darüber Bescheid wissen. Auf einem mittelgroßen ext3-Dateisystem sind dies normalerweise 4096 Bytes, aber Sie können dies mit überprüfen dumpe2fs
. Denken Sie daran, dass diese normalerweise auch als " Blöcke " bezeichnet werden, nur dass ich sie hier als Cluster bezeichne . Die Clustergröße wird st_blksize
im Statistikpuffer zurückgegeben, damit Programme die tatsächliche Festplattennutzung einer Datei berechnen können.
Die Blockgröße ist die Größe der Puffer, die der Kernel intern verwendet, wenn er Sektoren zwischenspeichert, die von Speichergeräten gelesen wurden (daher der Name "Blockgerät"). Da dies die primitivste Form der Speicherung im Kernel ist, müssen alle Clustergrößen des Dateisystems ein Vielfaches davon sein. Auf diese Blockgröße wird auch fast immer von Userspace-Programmen Bezug genommen. Wenn Sie beispielsweise du
ohne die Optionen -h oder -H ausführen
, wird zurückgegeben, wie viele dieser Blöcke eine Datei belegt. df
gibt auch Größen in diesen Blöcken an, die Spalte "Blöcke" in der fdisk -l
Ausgabe ist von diesem Typ und so weiter. Es ist das, was am häufigsten als "Block" bezeichnet wird. In jeden Block passen zwei Plattensektoren.
Die Zylindergröße wird nur in der Partitionstabelle und vom BIOS verwendet (und das BIOS wird von Linux nicht verwendet).
Quelle: Linux Disk Block Size ... Hilfe bitte
Sektoren 0-31
Um Ihre Frage zu den ersten 32 Sektoren zu beantworten: Da das Flash-Laufwerk ein FAT-formatiertes Gerät ist und die FAT-Dateisystemdefinition betrachtet, können Sie feststellen, dass ein FAT-Dateisystem aus vier verschiedenen Abschnitten besteht:
a) die reservierten Sektoren;
b) die FAT-Region (File Allocation Table);
c) die Stammverzeichnisregion und;
d) Der Datenbereich.
Die am Anfang befindlichen reservierten Sektoren sind (in diesem Fall) die Sektoren 0-31:
Der erste reservierte Sektor (logischer Sektor 0) der Boot - Sektor (aka
Volume Boot Record (VBR) ). Es enthält einen Bereich namens BIOS-Parameterblock (mit einigen grundlegenden Informationen zum Dateisystem, insbesondere seinem Typ, und Zeigern auf die Position der anderen Abschnitte) und enthält normalerweise den Bootloader-Code des Betriebssystems.
Auf wichtige Informationen aus dem Bootsektor kann über eine Betriebssystemstruktur zugegriffen werden, die unter DOS und OS / 2 als Drive Parameter Block (DPB) bezeichnet wird .
Die Gesamtzahl der reservierten Sektoren wird durch ein Feld im Bootsektor angezeigt und beträgt in FAT32-Dateisystemen normalerweise 32 .
Für FAT32-Dateisysteme umfassen die reservierten Sektoren einen Dateisysteminformationssektor im logischen Sektor 1 und einen Sicherungsstartsektor im logischen Sektor 6.
Während viele andere Anbieter weiterhin ein Einzelsektor-Setup (nur logischer Sektor 0) für den Bootstrap-Loader verwenden, ist der Bootsektor-Code von Microsoft seit Einführung von FAT32 auf die logischen Sektoren 0 und 2 angewachsen, wobei der logische Sektor 0 davon abhängt Unterroutinen im logischen Sektor 2. Der Bereich Backup Boot Sektor besteht ebenfalls aus drei logischen Sektoren 6, 7 und 8. In einigen Fällen verwendet Microsoft auch Sektor 12 des Bereichs für reservierte Sektoren für einen erweiterten Bootloader.
Nur zusätzliche Informationen, die für die OP-Frage nicht relevant sind
Die FAT-Region befindet sich in Sektor 32:
Diese enthält normalerweise zwei Kopien (kann variieren) der Dateizuordnungstabelle, um die Redundanz zu überprüfen, obwohl sie selbst von Dienstprogrammen zur Festplattenreparatur nur selten verwendet wird.
Hierbei handelt es sich um Karten der Datenregion, die angeben, welche Cluster von Dateien und Verzeichnissen verwendet werden. In FAT12 und FAT16 folgen sie unmittelbar den reservierten Sektoren.
In der Regel werden die zusätzlichen Kopien beim Schreiben eng synchronisiert, und beim Lesen werden sie nur verwendet, wenn Fehler in der ersten FAT auftreten. In FAT32 ist es möglich, vom Standardverhalten zu wechseln und aus den verfügbaren FAT eine einzelne FAT auszuwählen, die für Diagnosezwecke verwendet werden soll.
Die ersten beiden Cluster (Cluster 0 und 1) in der Karte enthalten spezielle Werte.
Die Stammverzeichnisregion :
Dies ist eine Verzeichnis-Tabelle, in der Informationen zu den Dateien und Verzeichnissen gespeichert sind, die sich im Stammverzeichnis befinden. Es wird nur mit FAT12 und FAT16 verwendet und legt dem Stammverzeichnis eine feste maximale Größe fest, die bei der Erstellung dieses Volumes vorab zugewiesen wird. FAT32 speichert das Stammverzeichnis im Datenbereich zusammen mit Dateien und anderen Verzeichnissen, sodass es ohne eine solche Einschränkung wachsen kann. Daher beginnt für FAT32 hier der Datenbereich.
Die Datenregion :
Hier werden die eigentlichen Datei- und Verzeichnisdaten gespeichert und nehmen den größten Teil der Partition ein. Traditionell werden die nicht verwendeten Teile des Datenbereichs beim Formatieren auf IBM-kompatiblen Computern mit einem Füllwert von 0xF6 gemäß der Festplattenparametertabelle (DPT) von INT 1Eh initialisiert, aber auch im Atari-Portfolio verwendet. 8-Zoll-CP / M-Disketten wurden normalerweise mit einem Wert von 0xE5 vorformatiert. Im Rahmen von Digital Research wurde dieser Wert auch für Atari ST-formatierte Disketten verwendet. Amstrad verwendete stattdessen 0xF4. Einige moderne Formatierer löschen Festplatten mit einem Wert von 0x00, während ein Wert von 0xFF, der Standardwert eines nicht programmierten Flash-Blocks, auf Flash-Disks verwendet wird, um den Verschleiß zu verringern. Der letztere Wert wird normalerweise auch auf ROM-Festplatten verwendet. (Einige erweiterte Formatierungswerkzeuge ermöglichen die Konfiguration des Formatfüllungsbytes.)
Die Größe von Dateien und Unterverzeichnissen kann beliebig erhöht werden (solange freie Cluster vorhanden sind), indem einfach weitere Links zur Dateikette in der FAT hinzugefügt werden. Beachten Sie jedoch, dass Dateien in Clustereinheiten zugewiesen werden. Wenn sich also eine 1-KiB-Datei in einem 32-KiB-Cluster befindet, werden 31 KiB verschwendet.
FAT32 beginnt normalerweise mit der Stammverzeichnis-Tabelle in Cluster Nummer 2: dem ersten Cluster der Datenregion.
Quelle: Wikipedia - Dateizuordnungstabelle