Sabit Diskimin Donanım Bloğu Okuma Boyutunu Nasıl Bulurum?


Yanıtlar:


44

Lsblk komut bunun için mükemmeldir:

lsblk -o NAME,PHY-SeC

Sonuçlar:

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

3
Mantıksal boyut ile fiziksel boyut arasında fark var mı?
CMCDragonkai

2
Gerçek fiziksel boyut sağlamaz.
sjas

7
Benim için çalışır, PHY-SEC doğru fiziksel ve LOG-SEC mantıksal boyutu gösterir.
soger

31

Linux, fiziksel sektör boyutunu dosyalarda gösterir /sys/block/sdX/queue/physical_block_size. Bununla birlikte, en iyi performansı elde etmek için muhtemelen farklı boyutlarda ve ölçülerde küçük bir test yapmanız gerekir. Ben olabilir değil bulmak bir net cevap (Ben kötü bir seçim olamaz varsayıyorum rağmen) tam olarak fiziksel blok boyutu kullanılarak optimum sonuç elde edeceğini de.


2
Sadece o konumda bir hw_sector_size ve her ikisini de sağlayan daha yeni bir Ubuntu Karmic sistemi (2.6.31 çekirdeği) ortaya çıkaran bir Debian Lenny sistemi (2.6.26 çekirdeği) var . bu yüzden kullanımdaki çekirdeğe biraz bağımlı.
quack quixote

Gerçek fiziksel boyut sağlamaz.
sjas

@sjas Genişletebilir misiniz? Bunu nasıl biliyorsun?
Hashim

1
@Hashim bazı yerlerde 512b ve bazı 4k sektör boyutuna sahip olduğum eski sabit diskleri test ettim. superuser.com/a/426015/145072 , gerçekten işe yarayan bir çözümdür. dışındaki her şey hdparmmuhtemelen sana yalan söyler.
sjas,


7

Benimki tam bir cevap olarak düşünülmedi, ama inşallah da yardımcı olur.

İşte http://mark.koli.ch/2009/05/howto-whole-disk-backups-with-dd-gzip-and-p7zip.html adresinden küçük bir şeyler


3 - Uygun Blok Boyutunu Belirle

Daha hızlı bir yedekleme için, yedekleyeceğiniz disk cihazının en uygun blok boyutunu belirlemenize yardımcı olabilir. / Dev / sda'yı yedekleyeceğinizi farz edersek, fdisk komutunu en iyi blok boyutunu belirlemek için nasıl kullanacağınızı varsayalım:

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

Units = cylinders of 16065 * 512 = 8225280 bytes

Fdisk çıktısının "16065 * 512 silindir" yazdığını unutmayın. Bu, diskte blok başına 512 bayt olduğu anlamına gelir. Blok boyutunu 2 ila 4 katları artırarak yedekleme hızını önemli ölçüde artırabilirsiniz. Bu durumda, en uygun blok boyutu 1k (512 * 2) veya 2k (512 * 4) olabilir. BTW, açgözlü olmak ve 5k (512 * 10) büyüklüğünde veya aşırı miktarda blok kullanmak yardımcı olmaz; Sonunda sistem cihazın kendisinde bir darboğaz oluşturacak ve yedekleme sürecindeki herhangi bir ek performansı kaldıramayacaksınız. (vurgu eklendi)


Veriler çok büyük olmadığı sürece, belirli bir konfigürasyon için optimal ve optimal blok büyüklüğü arasındaki performans farkının önemsiz olduğunu düşünüyorum. Nitekim, FixUnix'teki bir kullanıcı (2007'den sonraki yazı), optimal zamanlarının, optimal olmayan zamanlardan sadece% 5 daha hızlı olduğunu iddia etti. Belki de "küme" boyutunun ya da dosya sistemi blok boyutunun bir kısmını kullanarak biraz daha fazla verim alabilirsiniz.

Tabii ki, en uygun blok boyutunun her iki tarafına da çok uzaklaşırsanız, başınız belaya girer.

Sonuç olarak, mutlak en uygun blok boyutuyla performansta sadece yaklaşık% 5 (yani saatte 3 dakika) kazanacağınız için, daha fazla araştırma yapmak için zaman ve çaba harcadığınızı düşünün. Aşırı değerlerden uzak durduğunuz sürece, acı çekmemelisiniz.


1
echo "p" | /sbin/fdisk /dev/sda...yerine kullanmak için bazı nedenler /sbin/fdisk -l /dev/sda...? ikincisi daha temiz olacak ve değişiklik yapmaya çalışmaz.
quack quixote

Mark Kolich'e (bağlantılı) sormak en iyisidir. Yedek oluşturuyordu ve ben sadece makalesinin bir kısmını alıntı yaptım.
Mark

1
@MarkC Bağlantılı makale kullanır /sbin/fdisk -l /dev/sda | grep Units. Son iki yılda değiştirilmiş olabilir. Her durumda cevabınızı güncelledim.
Bob

2
IMO, bu, esasen son koyu paragraftan dolayı en faydalı cevaptır. Linux uygun erişim zamanlayıcı ve kirli arabellek ayarlarını kullandığınız sürece disk erişimini optimize etmek için çok çalışmaktadır ve herhangi bir durumda 8192 baytlık bir blok boyutu yeterli olacaktır.
soger,

4

Her disk transferi, işlemcinin işlemesi gereken bir kesinti oluşturur. Tipik 50Mb / s disk, 512b blok boyutunda saniyede 100000 tane üretmek isteyecektir. Normal işlemci, bunlardan 10'unu idare eder, bu nedenle daha büyük (2 ^ x) blok boyutu daha kullanışlı olur (çoğu zaman varsayılan FS blok boyutu olarak 4k). 64k ISA DMA boyutuna kadar olan sistemler) daha pratik olurdu ...


Aydınlatabilir misin?
sjas

1
@Sjas Söylediği şey, görünüşe göre, her sektörün, işlemcinin taşıması gereken ilişkili bir "kesme" ile ayrı ayrı transfer edildiği. Daha büyük bir blok boyutu aynı miktarda veri için daha az kesinti (ve dolayısıyla daha az CPU çevrimi) anlamına gelir.
Mark C

1

Ek olarak, lshwdiğer sonuçları doğrulamak için çıktılarına bakabilirsiniz (ve aynı zamanda hdparmdağıtımım için uygun görünmüyorum .) Bu, daraltılmasına yardımcı olabilir:

sudo lshw | awk 'BEGIN {IGNORECASE=1;} /SCSI/,!//{print}'
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.