Wie finde ich die Lesegröße für den Hardwareblock für meine Festplatte?

51242
Flame

Ich versuche, die optimale Größe für eine große Kopie von meiner Festplatte mit dd herauszufinden. Ich versuche herauszufinden, welche Blockgröße am besten geeignet ist, und ich würde davon ausgehen, dass es sich um die Hardwareblockgröße für dieses Laufwerk handelt.

43
Siehe auch [SF]: [Ext3 / Ext4-Ansicht für physikalische Blockgröße] (http://serverfault.com/q/604893/197218) Palec vor 9 Jahren 0
@Sepero lieferte die einzig wahre Antwort. sjas vor 9 Jahren 0

6 Antworten auf die Frage

43
Thomas Bratt

Der Befehl lsblk ist dafür großartig:

lsblk -o NAME,PHY-SeC 

Die Ergebnisse:

NAME PHY-SEC  sda 512  ├─sda1 512  ├─sda2 512  └─sda5 512  
Unterscheidet es zwischen logischer Größe und physischer Größe? CMCDragonkai vor 10 Jahren 3
Gibt nicht die tatsächliche physische Größe an. sjas vor 9 Jahren 2
Funktioniert für mich, PHY-SEC zeigt den korrekten physischen Wert und LOG-SEC zeigt die logische Größe. soger vor 8 Jahren 5
30
hlovdal

Linux macht die physische Sektorgröße in Dateien verfügbar /sys/block/sdX/queue/physical_block_size. Um die beste Leistung zu erzielen, sollten Sie jedoch wahrscheinlich ein paar Tests mit verschiedenen Größen und Maßen durchführen. Ich konnte nicht finden, eine klare Antwort, dass genau die physikalische Blockgröße würde das optimale Ergebnis erhalten (obwohl ich es annehmen kann keine schlechte Wahl sein).

Ich habe ein Debian-Lenny-System (2.6.26-Kernel), das an diesem Ort nur ein * hw_sector_size * enthält, und ein neueres Ubuntu-Karmic-System (2.6.31-Kernel), das beide bietet. Dies hängt also etwas vom verwendeten Kernel ab. quack quixote vor 14 Jahren 2
Gibt nicht die tatsächliche physische Größe an. sjas vor 9 Jahren 0
@sjas Könntest du erweitern? Woher weißt du das? Hashim vor 6 Jahren 0
@Hashim Ich testete einige alte Festplatten, die ich hatte, wo einige 512b und einige 4k-Sektorgröße hatten. https://superuser.com/a/426015/145072 ist die Lösung, die tatsächlich funktioniert hat. Alles außer "hdparm" wird Sie wahrscheinlich anlügen. sjas vor 6 Jahren 1
@sjas Vielen Dank, danke. Hashim vor 6 Jahren 0
24
Sepero
$ sudo hdparm -I /dev/sda | grep -i physical Physical Sector size: 4096 bytes 

http://wayback.archive.org/web/20150921015457/https://nxadm.wordpress.com/2010/04/30/4096-physical-block-size-drives/

Dies sollte die akzeptierte Antwort sein, da sie die einzige ist, die den realen physikalischen Wert liefert. sjas vor 9 Jahren 3
`hdparm -I / dev / sda | Der grep-Sektor ist schöner, da er sowohl physikalische als auch logische Größen auf einmal anzeigt, um einen Vergleich zu erleichtern. sjas vor 9 Jahren 4
7
Mark C

Meine soll keine vollständige Antwort sein, aber ich hoffe, es hilft auch.

Hier ist etwas von http://mark.koli.ch/2009/05/howto-whole-disk-backups-with-dd-gzip-and-p7zip.html


3 - Bestimmen Sie die geeignete Blockgröße

Für eine schnellere Sicherung kann es hilfreich sein, die optimale Blockgröße des zu sichernden Plattengeräts festzulegen. Angenommen, Sie erstellen eine Sicherungskopie von / dev / sda. So können Sie den Befehl fdisk verwenden, um die beste Blockgröße zu ermitteln:

rescuecd#/> /sbin/fdisk -l /dev/sda | grep Units  Units = cylinders of 16065 * 512 = 8225280 bytes 

Beachten Sie, dass die Ausgabe von fdisk "Zylinder von 16065 * 512" angibt. Dies bedeutet, dass sich auf der Platte 512 Bytes pro Block befinden. Sie können die Geschwindigkeit der Sicherung erheblich verbessern, indem Sie die Blockgröße um ein Vielfaches von 2 bis 4 erhöhen. In diesem Fall könnte eine optimale Blockgröße 1k (512 * 2) oder 2k (512 * 4) betragen. Übrigens, gierig zu werden und eine Blockgröße von 5k (512 * 10) oder etwas zu viel zu verwenden, wird nicht helfen. Dies führt zu Engpässen am Gerät selbst und Sie können keine zusätzliche Leistung aus dem Sicherungsprozess herausholen. (Betonung hinzugefügt)


Ich vermute, dass der Unterschied in der Leistung zwischen einer nahezu optimalen und optimalen Blockgröße für eine gegebene Konfiguration vernachlässigbar ist, sofern der Datensatz nicht enorm ist. Ein Benutzer von FixUnix (Post aus 2007) gab an, seine optimalen Zeiten waren nur 5% schneller als die suboptimalen. Vielleicht können Sie ein bisschen mehr Effizienz herausholen, indem Sie ein Vielfaches der "Cluster" - Größe oder Blockgröße des Dateisystems verwenden.

Wenn Sie sich zu weit weg von der optimalen Blockgröße bewegen, können Sie natürlich Probleme bekommen.

Unter dem Strich gewinnen Sie mit der absoluten optimalen Blockgröße wahrscheinlich nur etwa 5% Leistung (dh 3 Minuten pro Stunde). Überlegen Sie sich also, ob es Ihre Zeit und Mühe wert ist, weiter zu forschen. Solange Sie sich von extremen Werten fernhalten, sollten Sie nicht leiden.

Grund für die Verwendung von * `echo" p "| / sbin / fdisk /dev/sda...`* anstelle von * `/ sbin / fdisk -l /dev/sda...`*? Der zweite wird sauberer sein und nicht versuchen, Änderungen vorzunehmen. quack quixote vor 14 Jahren 1
Am besten fragen Sie Mark Kolich (verlinkt). Er hat gerade ein Backup erstellt und ich habe nur einen Teil seines Artikels zitiert. Mark C vor 14 Jahren 0
@MarkC Der verknüpfte Artikel verwendet `/ sbin / fdisk -l / dev / sda | grep Units ". Möglicherweise wurde es in den letzten zwei Jahren geändert. In jedem Fall habe ich Ihre Antwort aktualisiert. Bob vor 11 Jahren 1
IMO Dies ist die nützlichste Antwort, hauptsächlich wegen des letzten fetten Absatzes. Linux ist sehr bemüht, den Festplattenzugriff zu optimieren. Solange Sie die entsprechenden io-Scheduler- und Dirty-Buffer-Einstellungen für Ihre Festplatte verwenden, sollte eine Blockgröße von 8192 Byte für jede Situation in Ordnung sein. soger vor 8 Jahren 2
4
ZaB

Bei jeder Datenträgerübertragung wird ein Interrupt erzeugt, den der Prozessor verarbeiten muss. Eine typische 50-MBit / s-Platte möchte 100000 von ihnen pro Sekunde bei einer Blockgröße von 512 Bit generieren. Ein normaler Prozessor würde Zehntausende davon handhaben, daher wäre eine größere Blockgröße (2 × x) praktischer (4 KByte als Standardgröße für FS-Blöcke) Systeme bis 64k ISA DMA-Größe) wären praktischer ...

Könnten Sie das klarstellen? sjas vor 9 Jahren 0
@Sjas Was er oder sie sagt, ist offensichtlich, dass jeder Sektor separat mit einem zugehörigen "Interrupt" übertragen wird, den der Prozessor behandeln muss. Eine größere Blockgröße bedeutet weniger Interrupts (und damit weniger verwendete CPU-Zyklen) für dieselbe Datenmenge. Mark C vor 7 Jahren 1
1
Eliptical View

Darüber hinaus können Sie durch die Ausgabe von schauen lshw, um andere Ergebnisse zu überprüfen (und auch, weil ich anscheinend nicht hdparmauf meiner Distribution verfügbar bin.) Dies kann helfen, die Suche einzugrenzen :

sudo lshw | awk 'BEGIN /SCSI/,!//'