Was bedeutet die Ausgabe von fdisk?

10

Ich habe ein Flash-Laufwerk und möchte dessen Eigenschaften verstehen, wie es ausgegeben wird fdisk. Ich habe es eingefügt und das überprüft dmesgund konnte sehen, dass es so montiert war, /dev/sdb1dass ich lief, um fdiskzu sehen, wofür 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 das beurteilen kann, handelt es sich bei dem Laufwerk um ein 128 MB FAT32-formatiertes Flash-Laufwerk, auf dem sich nur eine Partition befindet. Es beginnt bei "32" (vermutlich wird 0-31 für einige FTL verwendet).

Es wird berichtet, dass ein "Sektor" 512 Bytes groß ist und es 249.856 Sektoren gibt (insgesamt 122 MB).

Jetzt bin ich verwirrt über die Anzahl der Zylinder, den Kopf und die Sektoren / Spur. Ich weiß, dass Zylinder / Köpfe mit Lagertypen für Magnetplatten zu tun haben. Gibt es eine Bedeutung für diese, wenn es um ein Flash-Gerät geht? Oder sind dies nur "übrig gebliebene" Informationen, von fdiskdenen ein nichtmagnetisches Speichermedium wirklich keine Bedeutung hat? Wenn dies der Fall ist, warum überhaupt Werte angeben?

Zweite Frage, wie groß ist ein Block? ::

Blocks
 124911+

Und was bedeutet das +nach der Blockzählung?

Mike
quelle
1
Schöne Frage, +1, habe noch nie darüber nachgedacht. Was meinst du mit "FTL"? Für mich bedeutet das Schneller als Licht. Ich stelle mir vor, Sie beziehen sich auf etwas anderes?
Terdon
1
@terdon - FTL (Flash Translation Layer) das Zeug, das das Whare Leveling macht und so weiter
Mike

Antworten:

3

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:

  1. Hardware-Blockgröße, "Sektorgröße"
  2. Blockgröße des Dateisystems, "Blockgröße"
  3. Blockgröße des Kernel-Puffer-Cache, "Blockgröße"
  4. 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_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 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 duohne die Optionen -h oder -H ausführen , wird zurückgegeben, wie viele dieser Blöcke eine Datei belegt. dfgibt auch 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 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.

Fett Übersicht

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

Greenonline
quelle
1

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 zu 249854. Es handelt sich um eine logische Partition auf der physischen Festplatte.

Der 124911+ gibt Ihnen die Anzahl der Blöcke zwischen 32 und 249854.

Informationen zur Festplattengeometrie finden Sie hier man fdsik:

Wenn möglich, erhält fdisk die Plattengeometrie automatisch. Dies ist nicht unbedingt die physische Plattengeometrie (in der Tat haben moderne Platten nicht wirklich so etwas wie eine physikalische Geometrie, sicherlich nicht etwas, das in vereinfachter Form von Zylindern / Köpfen / Sektoren beschrieben werden kann), aber es ist die Plattengeometrie, die MS-DOS verwendet wird für die Partitionstabelle verwendet.

Normalerweise läuft standardmäßig alles gut, und es gibt keine Probleme, wenn Linux das einzige System auf der Festplatte ist. Wenn die Festplatte jedoch für andere Betriebssysteme freigegeben werden muss, empfiehlt es sich häufig, eine fdisk von einem anderen Betriebssystem mindestens eine Partition erstellen zu lassen. Beim Booten von Linux wird die Partitionstabelle überprüft und versucht, die (gefälschte) Geometrie zu ermitteln, die für eine gute Zusammenarbeit mit anderen Systemen erforderlich ist.

J Baron
quelle