Bagaimana Cara Menemukan Ukuran Baca Blok Perangkat Keras untuk Hard Drive Saya?


47

Saya mencoba mencari ukuran optimal untuk salinan besar dari hard drive saya menggunakan dd. Saya mencoba mencari tahu apa ukuran blok terbaik untuk menggunakannya, yang akan saya asumsikan adalah ukuran blok perangkat keras untuk drive itu.



1
@Sepero memberikan satu-satunya jawaban nyata.
sjas

Jawaban:


44

The lsblk perintah besar untuk ini:

lsblk -o NAME,PHY-SeC

Hasil:

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

3
Apakah itu membedakan antara ukuran logis dan ukuran fisik?
CMCDragonkai

2
Tidak akan memberikan ukuran fisik aktual.
sjas

7
Bagi saya, PHY-SEC menunjukkan fisik yang benar dan LOG-SEC menunjukkan ukuran logis.
soger

31

Linux memperlihatkan ukuran sektor fisik dalam file /sys/block/sdX/queue/physical_block_size. Meskipun, untuk mendapatkan kinerja terbaik Anda mungkin harus melakukan sedikit pengujian dengan ukuran dan ukuran yang berbeda. Aku bisa tidak menemukan suatu yang jelas jawaban dalam menggunakan persis ukuran blok fisik akan mendapatkan hasil yang optimal (meskipun saya menganggap itu tidak bisa menjadi pilihan yang buruk).


2
Saya punya sistem Debian Lenny (kernel 2.6.26) yang hanya memperlihatkan hw_sector_size di lokasi itu, dan sistem Ubuntu Karmic yang lebih baru (kernel 2.6.31) yang menyediakan keduanya. jadi ini agak tergantung pada kernel yang digunakan.
quack quixote

Tidak akan memberikan ukuran fisik aktual.
sjas

@ sjas Bisakah Anda memperluas? Bagaimana kamu tahu ini?
Hashim

1
@ Hashim saya mengujinya beberapa harddisk lama saya punya di mana beberapa di antaranya memiliki 512b dan beberapa ukuran sektor 4k. superuser.com/a/426015/145072 adalah solusi yang benar-benar berfungsi. segala sesuatu di samping hdparmkemungkinan besar akan membohongi Anda.
sjas


7

Milik saya tidak dimaksudkan untuk menjadi jawaban yang lengkap, tapi saya harap itu juga membantu.

Berikut adalah sedikit sesuatu dari http://mark.koli.ch/2009/05/howto-whole-disk-backups-with-dd-gzip-and-p7zip.html


3 - Tentukan Ukuran Blok yang Tepat

Untuk pencadangan yang lebih cepat, ini dapat membantu menentukan ukuran blok optimal dari perangkat disk yang akan Anda cadangkan. Dengan asumsi Anda akan mencadangkan / dev / sda, inilah cara Anda dapat menggunakan perintah fdisk untuk menentukan ukuran blok terbaik:

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

Units = cylinders of 16065 * 512 = 8225280 bytes

Perhatikan output fdisk mengatakan "silinder 16065 * 512". Ini berarti bahwa ada 512 byte per blok pada disk. Anda dapat secara signifikan meningkatkan kecepatan cadangan dengan meningkatkan ukuran blok dengan kelipatan 2 hingga 4. Dalam hal ini, ukuran blok yang optimal mungkin 1k (512 * 2) atau 2k (512 * 4). BTW, menjadi serakah dan menggunakan ukuran blok 5k (512 * 10) atau sesuatu yang berlebihan tidak akan membantu; akhirnya sistem akan mengalami hambatan pada perangkat itu sendiri dan Anda tidak akan dapat memeras kinerja tambahan apa pun dari proses pencadangan. (penekanan ditambahkan)


Saya menduga perbedaan dalam kinerja antara ukuran blok hampir-optimal dan optimal untuk konfigurasi yang diberikan diabaikan kecuali kumpulan data sangat besar. Memang, seorang pengguna di FixUnix (posting dari 2007) mengklaim waktu optimalnya hanya 5% lebih cepat daripada yang sub-optimal. Mungkin Anda bisa memeras sedikit lebih banyak efisiensi dengan menggunakan beberapa ukuran "cluster" atau ukuran blok sistem file.

Tentu saja, jika Anda bergerak terlalu jauh ke kedua sisi ukuran blok optimal Anda akan mengalami masalah.

Intinya adalah Anda kemungkinan akan mendapatkan hanya sekitar 5% dalam kinerja (yaitu 3 menit per jam) dengan ukuran blok optimal mutlak, jadi pertimbangkan apakah sepadan dengan waktu dan upaya Anda untuk penelitian lebih lanjut. Selama Anda menjauh dari nilai-nilai ekstrem, Anda seharusnya tidak menderita.


1
beberapa alasan untuk menggunakan, echo "p" | /sbin/fdisk /dev/sda...bukan /sbin/fdisk -l /dev/sda...? yang kedua akan lebih bersih dan tidak akan berusaha melakukan perubahan.
quack quixote

Anda sebaiknya bertanya kepada Mark Kolich (ditautkan). Dia membuat cadangan, dan saya hanya mengutip bagian dari artikelnya.
Mark C

1
@MarkC Artikel yang ditautkan menggunakan /sbin/fdisk -l /dev/sda | grep Units. Itu mungkin telah berubah dalam dua tahun terakhir. Bagaimanapun, saya telah memperbarui jawaban Anda.
Bob

2
IMO ini adalah jawaban yang paling berguna terutama karena paragraf tebal yang terakhir. Linux bekerja sangat keras untuk mengoptimalkan akses disk sehingga selama Anda menggunakan io scheduler dan pengaturan buffer kotor yang sesuai untuk disk Anda, ukuran blok 8192 byte seharusnya boleh digunakan untuk situasi apa pun.
soger

4

Setiap transfer disk menghasilkan interupsi yang harus ditangani prosesor. Disk 50Mb / s biasanya ingin menghasilkan 100000 dari mereka setiap detik pada ukuran blok 512b. Prosesor normal akan menangani 10s dari ribuan, sehingga ukuran blok yang lebih besar (2 ^ x) akan lebih praktis (4k sebagai ukuran blok FS standar di sebagian besar sistem hingga ukuran 64k ISA DMA) akan lebih praktis ...


Bisakah Anda mengklarifikasi?
sjas

1
@ Sjas Apa yang dia katakan adalah, tampaknya, bahwa setiap sektor ditransfer secara terpisah dengan "interupsi" terkait yang harus ditangani oleh prosesor. Ukuran blok yang lebih besar berarti lebih sedikit interupsi (dan karenanya lebih sedikit siklus CPU yang digunakan) untuk jumlah data yang sama.
Mark C

1

Selain itu, Anda dapat melihat melalui keluaran lshwuntuk memverifikasi hasil lainnya, (dan juga karena saya tampaknya tidak hdparmtersedia di distro saya.) Ini mungkin membantu mempersempitnya:

sudo lshw | awk 'BEGIN {IGNORECASE=1;} /SCSI/,!//{print}'
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.