Sabit diskime tüm yazıların 4 k sektörlerine göre hizalanıp hizalanmadığını nasıl test edebilirim?


9

Ben 4 k sektör kullanan 4 sabit disk ile Linux kullanıyorum. Dosya sistemim ve ham aygıtlar arasında birkaç katman var: Diskler> Linux Raid 5> dm-crypt> LVM.

Bulduğum her kaynak, bu katmanın üzerindeki yazma işlemlerinin 4k sektör sınırına hizalanmasını sağlamak için her katmanın nasıl ayarlanacağını açıkladı. Ancak, sabit disklere yapılan yazma işlemlerinin aslında 4 k sınırlarında gerçekleştiğini nasıl doğrulayacağımı açıklayan hiçbir şey bulamadım.

Doğru hizalanıp hizalanmadığını belirlemek için mantığı kullanmak için kurulumumu yeniden incelemekle ilgilenmiyorum. Yazma diske yapıldığında gerçekte ne olduğunu incelemek istiyorum.

Sabit disklerime yapılan yazmaların adreslerini ve boyutlarını nasıl kaydedebilirim veya görüntüleyebilirim, böylece doğru hizalandıklarını doğrulayabilir miyim?

Yanıtlar:


2

Aynı soruyu bir süre önce kendime sordum ve şunları yaptım:

Kabuk ile birkaç kez bir dosyaya oldukça alışılmadık bir dize yazdı ("WackaWacka" gibi bir şey) Daha sonra sadece bir hex dökümü ( od kullanıldı ) ile diskin gerçek içeriğini aradı ve dizenin ilk oluşumunun depolanıp depolanmadığını kontrol etti tam bir 4k bloğun başlangıcında.

İpucu: Bir düzenleyici kullanmayın - bilmediğiniz, dizeleri de içerebilecek geçici dosyalar oluşturabilir. Bu şekilde yapın:

 $ for i in 1 2 3 4 5 ...
 >  do
 >   echo "WackaWacka!"
 >  done > mytestfile

Yani .sh_history arama dizesini içerebilir, ancak üst üste 5 kez içeremez ;-)

Ve sonra, sadece ara:

 # sync
 # od -c /dev/sda | grep 'W   a   c   k   a'

Peki, en iyi Gigabyte veri ;-) ile serching önlemek için oldukça boş bir disk üzerinde yapılır


1
Dm-crypt yığınımdaki katmanlardan biri olduğundan, bu karakterler yeterli değildir, çünkü bu karakterler diske yazılmaz.
Brian Pellin

Bu kötü. Sadece düşünebildiğim diğer bir çözüm, bir dosyadaki bir 4k bloğu açıkça değiştiriyor ve sadece diskteki bir fiziksel bloğun içeriğinin değişip değişmediğini (veya iki ardışık blok etkileniyorsa) kontrol ediyor - ve bu sadece veriler sıkıştırılmamışsa işe yarayacak şifreleme katmanı tarafından. Bununla birlikte, dosyanın hangi disk bloğunda saklandığını bilmek ve büyük disklerde herhangi bir değişiklik aramak zor olabilir.
ktf

2

Bir 4k blok yazın ve ne kadar verinin okunduğunu / yazıldığını iostatizleyin ('Blk_read' 'Blk_wrtn' sütunları). Veriler hizalanmazsa, bir yazma önce okumaları tetikler ve 4 k'dan fazla yazma işlemini tetikler.

Gerçi, herhangi bir meta veri güncellemelerini ölçmek ... ya da sadece 4k yazma 1000'ler yaparak onları bastırmak değil Sen Yani bence (Açık dosyaları diskleri tarayarak ya düzenliyor başka hiçbir şeyin .... dikkatli olmak gerekir lsofolurdu yeterli?), ardından yeni bir dosya açın, bekleyin, çalıştırın iostat, dosyaya 4k yazın, yazmayı senkronize edin (veya sadece biraz bekleyin?) sonra iostattekrar kontrol edin .

Bu benim için makul bir çıktı veriyor gibi görünüyor:

iostat  -d /dev/hdb3
dd if=/dev/urandom of=/mount/path/ofhdb3/tmptest bs=4k count=10000 conv=fdatasync
iostat  -d /dev/hdb3

Notun iostatman sayfası, 512 baytlık bloklar halinde rapor ettiğini iddia ediyor ve 80000'den fazla ek blok yazıldığını ve blok okunmadığını görüyorum. Hizalamanız kapalıysa, benzer sayıda okuma görürsünüz (yanlış hizalanmış bir 4k yazmak için, etkilenen iki bloğun okunması, mutasyona uğratılması ve geri yazılması gerekir). Aslında, hizalamanın önemli olmasının tek nedeni, bu tür okumalardan kaçınmaktır (bu yüzden gerçekten aramak istediğiniz şey budur: yazma iş yükü tetikleyicisi okur mu?)


Iostat'ın işletim sisteminin blok cihaza yaptığı okuma / yazma sayısını raporlayıp raporlamadığını biliyor musunuz, yoksa bu sayı kaç blok okuduğunu ve yazdığını rapor eden sürücüye dayanıyor mu?
Brian Pellin

Ben doğrudan sürücüden değil, OS blok cihaz soyutlama şüpheli, ama emin değilim. Ayrıca dm-crypt katmanının "üstü" veya "altı" olacağından da emin değilim.
PT
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.