Wie groß sind die Sektoren unter Mac OS X?

15

Ich habe auf der Wikipedia-Seite von HFS Plus gelesen, dass die Standard-Sektorgröße auf einem Mac 512 b beträgt. Ich habe jedoch auch gelesen, dass Macs 4-KB-Sektoren unterstützen. Wie kann ich feststellen, welche 512 b- oder 4 kb-Sektoren ich habe? Ich denke 512 ist die richtige Antwort, aber ich möchte sicher sein.

Kalaracey
quelle

Antworten:

27

Im Terminal können Sie diskutil verwenden, um Informationen über das Laufwerk abzurufen, einschließlich der Geräteblockgröße:

$ diskutil info / | grep "Block Size"
  Device Block Size:        512 Bytes
Tim B
quelle
1
Danke Timothy - wusste nichts von diesem Befehl. Sieht aus wie eine Fundgrube für Datenträgerinformationen / -manipulation unter OS X.
Kalaracey
Achtung: Diese Antwort unterscheidet nicht zwischen Geräteblockgröße und Zuordnungsblockgröße. Sie können sehr unterschiedlich sein, und die Größe des Zuweisungsblocks kann genau das sein, wonach das OP sucht, da es das Dateisystem verwendet. Siehe Mikes Antwort.
LarsH
12

Beachten Sie zunächst, dass sich die Geräteblockgröße von der vom Dateisystem verwendeten Blockgröße unterscheidet. Der von diskutil angegebene frühere Wert bezieht sich auf die von der Hardware verwendete Rohblockgröße. Ich habe keine einfache Möglichkeit gefunden, den zuletzt genannten Wert über die Befehlszeile zu überprüfen, aber Sie können einfach eine Null-Byte-Datei erstellen und dann Informationen aus dem Finder abrufen. Es wird 0 Bytes sagen, aber 4k auf der Festplatte verwendet.

Zweitens können Sie mit dem Befehlszeilenprogramm ein HFS + -Dateisystem mit mehr als 4 KB großen Blöcken erstellen newfs_hfs. Am einfachsten ist es, das Festplatten-Dienstprogramm zu verwenden, um das Laufwerk zu partitionieren, eine Partition mit der Standardformatierung zu erstellen und dann /bin/dfdas Block-Gerät zu bestimmen (nur ein Beispiel:) /dev/disk0s2. Hängen Sie dann diese Partition aus (mit umount /dev/diskXXXoder dem Festplatten-Dienstprogramm) und formatieren Sie sie als HFS + mit 64-KByte-Blöcken neu:

newfs_hfs -v VolumeName -b 65536 /dev/disk0s2

Verwenden Sie den obigen Tipp zum Abrufen von Informationen, um zu überprüfen, ob eine kleine Datei jetzt 64 KB auf der Festplatte belegt (dies kann bei Einheiten mit 10 Potenzen 65 KB bedeuten).

Die Leistung ist der Hauptgrund, warum Sie dies möglicherweise tun möchten, wenn es sich bei den meisten zu speichernden Daten um große Dateien handelt (z. B. MP3s, Fotos, Videos, ZIP-Dateien usw.), und dies hilft auch dabei, die Fragmentierung der Festplatte gering zu halten. Es ist natürlich egal, ob Sie vorhaben, hauptsächlich kleine Dateien zu speichern.

Ich habe festgestellt, dass auf großen Laufwerken (> 1 TB), die als HFS mit der Standardblockgröße von 4 KB formatiert sind, die Schreibleistung erheblich abnimmt, wenn sich das Laufwerk der Kapazität nähert. Ich vermute, das liegt daran, dass die Partition fragmentiert ist und nach freien Blöcken suchen muss, um die letzten 1% der Daten zu schreiben. Ich hoffe, dass größere Blöcke dieses Problem etwas lindern.

Mike Gleason
quelle
Die Blockgröße des Dateisystems wird durch angegeben stat -f %k ..
lhf
Außerdem ist es für das Laufwerk einfacher, wenn die Blockgröße Ihres Dateisystems mit der physischen Blockgröße des Laufwerks übereinstimmt. Andernfalls muss jeder Schreibvorgang tatsächlich ein Lese-, Änderungs- und Schreibzyklus sein (Caching hilft natürlich)
Edward Falk,
Betreff: "Ich habe keine einfache Möglichkeit gefunden, den zuletzt genannten Wert über die Befehlszeile zu überprüfen." Ich kenne keine älteren Versionen, aber unter macOS Sierra 10.12.6 diskutil infowird manchmal die Größe des Zuweisungsblocks angegeben: Allocation Block Size: 32768 Bytessowie die Geräteblockgröße. Ich habe festgestellt, dass dies zutrifft, wenn das Raw-Gerät rdisk2s0mit einer SD-Karte im Kartenleser verwendet wird. Ich weiß nicht, wie ich es für die Festplatte machen soll.
LarsH
9

Die Blockgröße des OS X-Geräts kann durch Ausführen des folgenden Befehls an einer Eingabeaufforderung im Terminalfenster bestimmt werden:

diskutil info / | grep "Block Size"

Welches wird die folgenden Informationen ausgeben:

Device Block Size: 512 Bytes

Die Blockgröße des Dateisystems kann mithilfe des statDienstprogramms bestimmt werden:

stat -f %k .

Welche zeigt Ihnen die optimale Größe des E / A-Operationsblocks für das Dateisystem in Bytes:

4096
rjb
quelle
4

Mit dem älteren HFS-Dateisystem, Apples zweitem Versuch, ein Dateisystem für den Macintosh zu entwickeln, konnten auf einer Festplatte nur bis zu 65.535 Zuordnungsblöcke vorhanden sein. Die Blockgröße war eine Funktion der Plattengröße in Bytes geteilt durch die maximale Anzahl von Zuordnungsblöcken, 65.535. Bei kleinen Datenträgern war dies in Ordnung. Als sich die Größe der Datenträger jedoch 1 GB näherte, betrug die Mindestgröße des Zuweisungsblocks 16 KB (1073741824/65535) = 16384,25. Sie müssen jedoch auf 16384 abschneiden.

Dies bedeutet, dass für eine 1-Byte-Datei auf einer 1-GB-HFS-Festplatte 16.384 Byte zum Speichern auf der Festplatte erforderlich sind, sodass zu viel Speicherplatz verschwendet wurde. Deshalb hat Apple den HFS + Wrapper entwickelt, um den verschwendeten Speicherplatz zu reduzieren.

Es kann eine Möglichkeit geben, die Blockgröße zu erhöhen, aber warum sollten Sie dies tun?

Hier ist ein schnelles Bash-Skript, das die gesamte Diskinfo-Ausgabe für alle derzeit verbundenen Festplatten auflistet.

#!/bin/bash

for disk in /dev/disk*s*
do
    diskutil info $disk
    echo "**************************************************************************************"
    echo " "
done
Ɱark Ƭ
quelle
Vielen Dank für Ihre Antwort, Mark, aber ich glaube, Sie haben meine Frage falsch verstanden. Ich bin auf der Suche nach der Größe eines Blocks auf HFS Plus (dem aktuellen Standard-Dateisystem für Macs). Das ist aber interessant an den Fehlern von HFS.
Kalaracey
Der Punkt ist, dass es variiert, aber es scheint im Allgemeinen 512 Bytes zu sein.
Ɱark Ƭ
0

Es sieht so aus, als ob die Geräteblockgröße in den 2017 iMacs (iMac18,1) jetzt 4096 Byte beträgt, was Probleme für Benutzer von ntfsprogs verursacht.

js2010
quelle