Größe eines Blocks

Größe eines Blocks

Ich habe ein Flash-Laufwerk und möchte die Eigenschaften davon verstehen, wie sie ausgegeben werden fdisk. Ich habe es eingelegt und überprüft dmesgund konnte sehen, dass es als gemountet war, /dev/sdb1also bin ich gelaufen, fdiskum zu sehen, was gemeldet wird/dev/sdb

mike@mike-Qosmio-X770:~$ sudo fdisk -l
[sudo] password for mike: 

Disk /dev/sdb: 127 MB, 127926272 bytes
16 heads, 32 sectors/track, 488 cylinders, total 249856 sectors
 Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x6b3ee723

   Device Boot      Start         End      Blocks   Id  System
 /dev/sdb1   *          32      249854      124911+   b  W95 FAT32

Soweit ich weiß, handelt es sich bei dem Laufwerk um ein 128 MB großes, im FAT32-Format formatiertes Flash-Laufwerk, das nur eine Partition hat. Sie beginnt bei „32“ (für einige FTLs werden vermutlich 0-31 verwendet).

Es wird gemeldet, dass ein „Sektor“ 512 Byte groß ist und dass es 249.856 Sektoren gibt (insgesamt 122 MB).

Jetzt bin ich verwirrt über die Anzahl der Zylinder, Köpfe und Sektoren/Spur. Ich weiß, dass Zylinder/Köpfe mit den Speichertypen magnetischer Platten zu tun haben. Haben diese bei einem Flash-Gerät irgendeine Bedeutung? Oder sind das nur „übrig gebliebene“ Informationen, fdiskdie für ein nicht magnetisches Speichermedium wirklich keine Bedeutung haben? Wenn das Letztere zutrifft, warum werden dann überhaupt Werte angegeben?

Zweite Frage: Was ist die „Größe“ eines Blocks?:

Blocks
 124911+

Und was bedeutet das +nach der Blockzählung?

Antwort1

Größe eines Blocks

Eine dreidimensionale Spur (dieselbe Spur auf allen Platten) wird Zylinder genannt. Jede Spur ist in 63 Sektoren unterteilt. Jeder Sektor enthält 512 Bytes Daten. Daher beträgt die Blockgröße in der Partitionstabelle 64 Köpfe * 63 Sektoren * 512 Bytes ähm... geteilt durch 1024... :-)

Quelle:Partitionieren mit fdisk

Wenn Linux von der Blockgröße spricht, sind es fast immer 1024 Bytes- Linux verwendet 1024-Byte-Blöcke als Grundeinheiten für den Puffercache und alles andere. Nur bei dateisystemspezifischen Treibern ist dies nicht der Fall, da einige Dateisysteme andere Granularitäten verwenden (beispielsweise beträgt die Dateisystemblockgröße bei einem normal großen ext3-Dateisystem normalerweise 4096 Byte). Sie bekommen die Dateisystemblockgröße jedoch fast nie zu sehen; die einzige Möglichkeit, sie tatsächlich zu sehen, 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 im Auge behalten müssen. Um die Sache noch schlimmer zu machen, tragen zwei dieser Einheiten den gleichen Namen. Dies sind die verschiedenen Einheiten:

  1. Hardware-Blockgröße, „Sektorgröße“
  2. Dateisystem-Blockgröße, „Blockgröße“
  3. Blockgröße des Kernel-Puffercaches, „Blockgröße“
  4. Blockgröße der Partitionstabelle, „Zylindergröße“

Um zwischen der Blockgröße des Dateisystems und der Blockgröße des Puffercaches 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 die Hardware arbeitet. Sie variiert je nach Hardwaretyp, aber die meiste PC-Hardware (Disketten, IDE-Festplatten usw.) verwendet 512-Byte-Sektoren.

Die Clustergröße ist die Zuordnungseinheit, die das Dateisystem verwendet, und ist der Grund für die Fragmentierung - das wissen Sie sicher. Auf einem mittelgroßen ext3-Dateisystem sind das normalerweise 4096 Bytes, aber Sie können das mit überprüfen dumpe2fs. Denken Sie daran, dass diese normalerweise auch "Blöcke", nur dass ich sie bezeichne alsClusterhier. Die Clustergröße wird st_blksizeim 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 Speicherform im Kernel ist, müssen alle Dateisystemclustergrößen ein Vielfaches davon sein. Diese Blockgröße ist auch das, worauf sich Userspace-Programme fast immer beziehen. Wenn Sie beispielsweise duohne die Optionen -h oder -H ausführen, wird zurückgegeben, wie viele dieser Blöcke eine Datei einnimmt. dfgibt auch die Größen in diesen Blöcken an, die Spalte „Blöcke“ in der fdisk -lAusgabe ist von diesem Typ und so weiter. Es ist das, was am häufigsten als „Block“ bezeichnet wird. In jeden Block passen zwei Festplattensektoren.

Die Zylindergröße wird nur in der Partitionstabelle und vom BIOS verwendet (und das BIOS wird von Linux nicht verwendet).

Quelle:Linux-Festplattenblockgröße ... bitte helfen Sie

Sektoren 0-31

Um Ihre Frage zu den ersten 32 Sektoren zu beantworten: Da es sich bei dem Flash-Laufwerk um ein FAT-formatiertes Gerät handelt, kann man anhand der FAT-Dateisystemdefinition erkennen, dass ein FAT-Dateisystem aus vier verschiedenen Abschnitten besteht:

a) Die reservierten Sektoren;
b) Der Bereich der File Allocation Table (FAT);
c) Der Stammverzeichnisbereich und
d) Der Datenbereich.

Fettübersicht

Die reservierten Sektoren, ganz am Anfang gelegen, sind (in diesem Fall) die Sektoren 0-31:

Der erste reservierte Sektor (logischer Sektor 0) ist derBootsektor(auch bekannt als Volume Boot Record (VBR)). Es umfasst einen Bereich namensBIOS-Parameterblock(mit einigen grundlegenden Informationen zum Dateisystem, insbesondere seinem Typ, und Zeigern auf die Speicherorte der anderen Abschnitte) und enthält normalerweise den Bootloadercode des Betriebssystems.

Wichtige Informationen aus dem Bootsektor sind über eine Betriebssystemstruktur zugänglich, die alsAntriebsparameterblock (DPB)unter DOS und OS/2.

Die Gesamtzahl der reservierten Sektoren wird durch ein Feld im Bootsektor angezeigt.und ist in der Regel 32 auf FAT32-Dateisystemen.

Bei FAT32-Dateisystemen umfassen die reservierten Sektoren einenDateisystem-Informationssektorim logischen Sektor 1 und einemBootsektor sichernim logischen Sektor 6.

Während viele andere Anbieter weiterhin ein Ein-Sektor-Setup (nur logischer Sektor 0) für den Bootstrap-Loader verwenden, ist der Bootsektor-Code von Microsoft seit der Einführung von FAT32 so gewachsen, dass er die logischen Sektoren 0 und 2 umfasst, wobei der logische Sektor 0 von Unterprogrammen im logischen Sektor 2 abhängt. Der Backup-Bootsektor-Bereich besteht ebenfalls aus drei logischen Sektoren, nämlich 6, 7 und 8. In einigen Fällen verwendet Microsoft auch Sektor 12 des reservierten Sektorenbereichs für einen erweiterten Bootloader.


Nur zusätzliche Informationen, nicht relevant für die Frage des OP

Die FAT-Region, wird im Sektor 32 sein:

Dies enthält normalerweise zwei Kopien (kann variieren) der Dateizuordnungstabelle zum Zweck der Redundanzprüfung, wird jedoch selbst von Dienstprogrammen zur Festplattenreparatur nur selten verwendet.

Dabei handelt es sich um Karten des Datenbereichs, die angeben, welche Cluster von Dateien und Verzeichnissen verwendet werden. In FAT12 und FAT16 folgen sie unmittelbar den reservierten Sektoren.

Normalerweise werden die zusätzlichen Kopien beim Schreiben eng synchronisiert und beim Lesen nur verwendet, wenn im ersten FAT Fehler auftreten. In FAT32 ist es möglich, vom Standardverhalten abzuweichen und ein einzelnes FAT aus den verfügbaren auszuwählen, das zu Diagnosezwecken verwendet werden soll.

Die ersten beiden Cluster (Cluster 0 und 1) in der Karte enthalten spezielle Werte.

Der Stammverzeichnisbereich:

Dies ist eine Verzeichnistabelle, die Informationen zu den Dateien und Verzeichnissen im Stammverzeichnis speichert. Sie wird nur mit FAT12 und FAT16 verwendet und legt für das Stammverzeichnis eine feste Maximalgröße fest, die bei der Erstellung dieses Datenträgers vorab zugewiesen wird. FAT32 speichert das Stammverzeichnis zusammen mit Dateien und anderen Verzeichnissen im Datenbereich, sodass es ohne derartige Einschränkungen wachsen kann. Daher beginnt der Datenbereich für FAT32 hier.

Die Datenregion:

Hier werden die eigentlichen Datei- und Verzeichnisdaten gespeichert und nehmen den größten Teil der Partition ein. Traditionell werden die ungenutzten Teile des Datenbereichs während der Formatierung auf IBM-kompatiblen Maschinen mit einem Füllwert von 0xF6 gemäß der Disk Parameter Table (DPT) von INT 1Eh initialisiert, was aber auch auf dem Atari Portfolio verwendet wird. 8-Zoll-CP/M-Disketten wurden normalerweise mit einem Wert von 0xE5 vorformatiert; laut Digital Research wurde dieser Wert auch auf Atari ST-formatierten 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-Disks verwendet. (Einige erweiterte Formatierungstools ermöglichen die Konfiguration des Format-Füllbytes.)

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 zugeordnet werden. Wenn sich also eine 1-KiB-Datei in einem 32-KiB-Cluster befindet, werden 31 KiB verschwendet.

FAT32 beginnt die Stammverzeichnistabelle normalerweise im Cluster Nummer 2: dem ersten Cluster des Datenbereichs.

Quelle:Wikipedia - Dateizuordnungstabelle

Antwort2

Ich vermute, dass die Sektoren 1-31 für Startinformationen und Partitionstabelleninformationen reserviert sind. Die Partition /dev/sdb1 beginnt bei Block/Sektor 32 und geht bis 249854. Es handelt sich um eine logische Partition auf der physischen Festplatte.

Mit 124911+ erhalten Sie eine Anzahl von Blöcken zwischen 32 und 249854.

Folgendes wird über die Disk-Geometrie man fdsikgesagt:

Wenn möglich, ermittelt fdisk die Plattengeometrie automatisch. Dies ist nicht unbedingt die physische Plattengeometrie (tatsächlich haben moderne Platten nichts wie eine physische Geometrie, schon gar nichts, was in vereinfachter Zylinder-/Köpfe-/Sektorenform beschrieben werden kann), sondern die Plattengeometrie, die MS-DOS für die Partitionstabelle verwendet.

Normalerweise läuft alles standardmäßig einwandfrei und es gibt keine Probleme, wenn Linux das einzige System auf der Festplatte ist. Wenn die Festplatte jedoch mit anderen Betriebssystemen gemeinsam genutzt werden muss, ist es oft eine gute Idee, mindestens eine Partition mit einem fdisk eines anderen Betriebssystems erstellen zu lassen. Wenn Linux bootet, schaut es sich die Partitionstabelle an und versucht abzuleiten, welche (falsche) Geometrie für eine gute Zusammenarbeit mit anderen Systemen erforderlich ist.

verwandte Informationen