Come posso trovare le dimensioni di lettura del blocco hardware per il mio disco rigido?


47

Sto cercando di capire la dimensione ottimale per una copia di grandi dimensioni dal mio disco rigido utilizzando dd. Sto cercando di capire quale sia la dimensione di blocco migliore per usarlo, che suppongo sia la dimensione del blocco hardware per quell'unità.



1
@Sepero ha fornito l'unica vera risposta.
sjas,

Risposte:


44

Il comando lsblk è ottimo per questo:

lsblk -o NAME,PHY-SeC

I risultati:

NAME   PHY-SEC 
sda        512 
├─sda1     512 
├─sda2     512 
└─sda5     512 

3
Distingue tra dimensione logica e dimensione fisica?
CMCDragonkai,

2
Non fornirà la dimensione fisica effettiva.
sjas,

7
Funziona per me, PHY-SEC mostra il fisico corretto e LOG-SEC mostra la dimensione logica.
soger,

31

Linux espone le dimensioni del settore fisico nei file /sys/block/sdX/queue/physical_block_size. Tuttavia, per ottenere le migliori prestazioni dovresti probabilmente fare un piccolo test con dimensioni e misure diverse. Non sono riuscito a trovare una risposta chiara in quanto l'utilizzo esatto della dimensione del blocco fisico avrebbe ottenuto il risultato ottimale (anche se presumo che non possa essere una scelta sbagliata).


2
ho un sistema Debian Lenny (kernel 2.6.26) che espone solo una dimensione hw_sector in quella posizione, e un nuovo sistema Ubuntu Karmic (kernel 2.6.31) che fornisce entrambi. quindi questo dipende in qualche modo dal kernel in uso.
Quack Quixote

Non fornirà la dimensione fisica effettiva.
sjas,

@sjas Potresti espandere? Come fai a saperlo?
Hashim,

1
@Hashim l'ho testato su alcuni vecchi hard disk che avevo in alcuni in cui alcuni avevano 512b e alcuni 4k dimensioni del settore. superuser.com/a/426015/145072 è la soluzione che ha funzionato davvero. inoltre hdparm, probabilmente ti mentiranno.
sabato


7

Il mio non vuole essere una risposta completa, ma spero che aiuti anche.

Ecco qualcosa da http://mark.koli.ch/2009/05/howto-whole-disk-backups-with-dd-gzip-and-p7zip.html


3 - Determinare la dimensione del blocco appropriata

Per un backup più rapido, può essere d'aiuto stabilire la dimensione ottimale del blocco del dispositivo disco su cui si intende eseguire il backup. Supponendo che stai per eseguire il backup / dev / sda, ecco come è possibile utilizzare il comando fdisk per determinare la dimensione del blocco migliore:

rescuecd#/> /sbin/fdisk -l /dev/sda | grep Units

Units = cylinders of 16065 * 512 = 8225280 bytes

Nota l'output di fdisk indica "cilindri di 16065 * 512". Ciò significa che ci sono 512 byte per blocco sul disco. È possibile migliorare in modo significativo la velocità del backup aumentando la dimensione del blocco di un multiplo da 2 a 4. In questo caso, una dimensione ottimale del blocco potrebbe essere 1k (512 * 2) o 2k (512 * 4). A proposito, diventare avidi e usare una dimensione del blocco di 5k (512 * 10) o qualcosa di eccessivo non aiuterà; alla fine il sistema si strozzerà con il dispositivo stesso e non sarà possibile ottenere ulteriori prestazioni dal processo di backup. (enfasi aggiunta)


Sospetto che la differenza di prestazioni tra una dimensione di blocco quasi ottimale e ottimale per una determinata configurazione sia trascurabile a meno che il set di dati non sia enorme. In effetti, un utente di FixUnix (post dal 2007) ha affermato che i suoi tempi ottimali erano solo del 5% più veloci di quelli non ottimali. Forse puoi ottenere un po 'più di efficienza usando un multiplo della dimensione "cluster" o della dimensione del blocco del filesystem.

Naturalmente, se ti sposti troppo lontano da entrambi i lati della dimensione ottimale del blocco, avrai dei problemi.

La linea di fondo è che probabilmente otterrai solo circa il 5% in termini di prestazioni (ovvero 3 minuti all'ora) con la dimensione del blocco ottimale assoluta, quindi considera se vale la pena il tuo tempo e il tuo sforzo per ulteriori ricerche. Finché stai lontano da valori estremi, non dovresti soffrire.


1
qualche motivo per usare echo "p" | /sbin/fdisk /dev/sda...invece di /sbin/fdisk -l /dev/sda...? il secondo sarà più pulito e non tenterà di apportare modifiche.
Quack Quixote

Faresti meglio a chiedere a Mark Kolich (collegato). Stava creando un backup e ho citato solo una sezione del suo articolo.
Segna C

1
@MarkC L'articolo utilizzato utilizza /sbin/fdisk -l /dev/sda | grep Units. Potrebbe essere stato cambiato negli ultimi due anni. In ogni caso, ho aggiornato la tua risposta.
Bob,

2
IMO questa è la risposta più utile principalmente a causa dell'ultimo paragrafo in grassetto. Linux lavora molto duramente per ottimizzare l'accesso al disco, quindi fino a quando si utilizzano le impostazioni appropriate dello scheduler io e del buffer sporco per il proprio disco, una dimensione del blocco di 8192 byte dovrebbe andare bene per qualsiasi situazione.
soger,

4

Ogni trasferimento su disco genera un interrupt che il processore deve gestire. Il tipico disco da 50 Mb / s vorrà generarne 100000 ogni secondo con dimensioni del blocco di 512b Il processore normale gestirà 10 di migliaia di quelli, quindi dimensioni del blocco più grandi (2 ^ x) sarebbero più utili (4k come dimensione predefinita del blocco FS nella maggior parte sistemi fino a 64k di dimensioni ISA DMA) sarebbero più pratici ...


Potresti chiarire?
sjas,

1
@Sjas Ciò che sta dicendo è, a quanto pare, che ogni settore viene trasferito separatamente con un "interrupt" associato che il processore deve gestire. Una dimensione di blocco maggiore significa meno interruzioni (e quindi meno cicli CPU utilizzati) per la stessa quantità di dati.
Segna C

1

Inoltre, puoi esaminare l'output di lshwper verificare altri risultati (e anche perché non sembro avere a hdparmdisposizione sulla mia distribuzione). Ciò potrebbe aiutare a restringerlo:

sudo lshw | awk 'BEGIN {IGNORECASE=1;} /SCSI/,!//{print}'
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.