Bagaimana saya menguji untuk melihat apakah semua penulisan ke hard drive saya selaras dengan sektor 4k?

9

Saya menggunakan Linux dengan 4 hard drive yang menggunakan sektor 4k. Ada beberapa lapisan antara sistem file saya dan perangkat mentah: Disk> Linux Raid 5> dm-crypt> LVM.

Setiap sumber yang saya temukan telah menjelaskan cara mengatur setiap lapisan untuk memastikan bahwa tulisan di atas lapisan itu akan diselaraskan dengan batas sektor 4k. Namun, saya belum menemukan apa pun yang menjelaskan cara memverifikasi bahwa penulisan yang dibuat ke hard drive benar-benar terjadi pada batas 4k.

Saya tidak tertarik memeriksa ulang set saya untuk menggunakan logika untuk menentukan apakah itu benar. Saya ingin memeriksa apa yang sebenarnya terjadi ketika menulis dibuat ke disk.

Bagaimana saya bisa login atau melihat alamat dan ukuran penulisan yang dibuat ke hard drive saya, jadi saya bisa memverifikasi bahwa mereka benar diluruskan?

Brian Pellin
sumber

Jawaban:

2

Bertanya pada diri sendiri pertanyaan yang sama beberapa waktu lalu dan hanya melakukan hal berikut:

Menulis dengan shell beberapa kali string yang agak tidak biasa ke file (sesuatu seperti "WackaWacka") Kemudian cukup mencari dengan hex dump (digunakan od ) isi sebenarnya dari disk dan memeriksa apakah kemunculan pertama string disimpan tepatnya di awal blok 4k.

Petunjuk: Jangan gunakan editor - itu dapat membuat file sementara yang Anda tidak tahu yang mungkin berisi string. Lakukan seperti ini:

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

Jadi .sh_history mungkin berisi string pencarian, tetapi tidak 5 kali berturut-turut ;-)

Dan kemudian, cari saja:

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

Yah, sebaiknya dilakukan pada disk yang agak kosong untuk menghindari serching melalui Gigabytes data ;-)

ktf
sumber
1
Karena dm-crypt adalah salah satu lapisan dalam tumpukan saya, solusi ini tidak cukup, karena karakter ini tidak akan ditulis ke disk.
Brian Pellin
Itu buruk. Hanya solusi lain yang bisa saya pikirkan adalah mengubah satu blok 4k secara eksplisit dalam sebuah file dan memeriksa apakah hanya isi dari satu blok fisik pada disk telah berubah (atau jika dua blok berturut-turut terpengaruh) - dan ini hanya akan berfungsi jika data tidak dikompresi oleh lapisan enkripsi. Namun demikian kita harus tahu, di mana disk blok file tersebut disimpan dan mencari setiap perubahan mungkin sulit pada disk yang besar.
ktf
2

Tulis blok 4k dan perhatikan seberapa banyak data dibaca / ditulis dengan iostat(kolom 'Blk_read' 'Blk_wrtn'). Jika data tidak selaras, penulisan akan memicu baca lebih dulu dan akan memicu lebih dari 4k penulisan.

Anda harus berhati-hati untuk tidak mengukur pembaruan metadata, meskipun ... atau hanya menenggelamkannya dengan membuat 1000s dari 4k menulis .... Jadi pastikan tidak ada lagi yang memindai disk atau memegang file yang terbuka (saya pikir lsofakan menjadi cukup?), lalu buka file baru, tunggu, jalankan iostat, tulis 4k ke file, sinkronkan tulisan (atau tunggu sebentar?) lalu periksa iostatlagi.

Ini sepertinya memberikan hasil yang masuk akal bagi saya:

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

iostatHalaman manual Note mengklaim untuk melaporkan dalam blok 512 byte, dan saya melihat lebih dari 80000 blok tambahan ditulis, dan tidak ada blok yang terbaca. Jika penyelarasan Anda tidak aktif, Anda akan melihat jumlah pembacaan yang sama (karena untuk menulis 4k yang tidak selaras, mengharuskan membaca dua blok yang terkena dampak, memutasikannya, dan menuliskannya kembali). Faktanya, satu-satunya alasan penyelarasan itu penting adalah untuk menghindari pembacaan seperti itu (jadi itulah yang ingin Anda cari: apakah pemicu beban kerja tulis terbaca?)

PT
sumber
Apakah Anda tahu jika iostat melaporkan jumlah baca / tulis yang dibuat OS ke perangkat blok, atau apakah angka ini didasarkan pada drive yang melaporkan berapa banyak blok yang telah dibaca dan ditulisnya?
Brian Pellin
Saya menduga itu dari abstraksi perangkat blok OS, tidak langsung dari drive, tapi saya tidak tahu pasti. Saya juga tidak yakin apakah itu akan "di atas" atau "di bawah" lapisan dm-crypt, baik.
PT