Saya telah mencoba untuk menemukan jawaban langsung untuk yang satu ini, dan itu terbukti sulit dipahami. Pertanyaan ini dan jawabannya sudah dekat, tetapi tidak benar-benar memberi saya spesifik yang saya inginkan. Mari kita mulai dengan apa yang saya pikir saya tahu.
Jika Anda memiliki perangkat blok standar dan Anda menjalankan sudo blockdev --report
Anda akan mendapatkan sesuatu seperti ini:
RO RA SSZ BSZ StartSec Size Device
rw 256 512 4096 0 500107862016 /dev/sda
rw 256 512 4096 2048 399999238144 /dev/sda1
rw 256 512 1024 781252606 1024 /dev/sda2
Sekarang, Anda memutuskan untuk mengubah default 256 menjadi 128 menggunakan --setra
salah satu partisi dan itu terjadi pada seluruh perangkat blok, seperti:
sudo blockdev --setra 128 /dev/sda1
sudo blockdev --report
RO RA SSZ BSZ StartSec Size Device
rw 128 512 4096 0 500107862016 /dev/sda
rw 128 512 4096 2048 399999238144 /dev/sda1
rw 128 512 1024 781252606 1024 /dev/sda2
Ini masuk akal bagi saya - perangkat tingkat blok adalah tempat pengaturan, bukan partisi, jadi semuanya berubah. Juga hubungan default antara pengaturan RA dan perangkat masuk akal bagi saya, umumnya:
RA * sector size (default = 512 bytes)
Oleh karena itu, perubahan yang saya buat di atas, dengan ukuran sektor default akan turun readahead dari 128k ke 64k. Semua baik dan bagus sejauh ini.
Namun, apa yang terjadi ketika kita menambahkan RAID perangkat lunak, atau LVM dan device-mapper? Bayangkan laporan Anda terlihat seperti ini sebagai gantinya:
RO RA SSZ BSZ StartSec Size Device
rw 256 512 4096 0 10737418240 /dev/xvda1
rw 256 512 4096 0 901875499008 /dev/xvdb
rw 256 512 4096 0 108447924224 /dev/xvdj
rw 256 512 4096 0 108447924224 /dev/xvdi
rw 256 512 4096 0 108447924224 /dev/xvdh
rw 256 512 4096 0 108447924224 /dev/xvdg
rw 4096 512 4096 0 433787502592 /dev/md0
rw 4096 512 512 0 429496729600 /dev/dm-0
Dalam hal ini kami memiliki perangkat LVM yang dipetakan perangkat di atas md0 yang dibuat oleh mdadm, yang sebenarnya merupakan garis RAID0 di keempat perangkat xvdg-j.
Baik md0 dan dm-0 memiliki pengaturan 4096 untuk RA, jauh lebih tinggi daripada perangkat blok. Jadi, beberapa pertanyaan di sini:
- Bagaimana pengaturan RA diturunkan dari rantai perangkat blok virtual?
- Apakah dm-0 mengalahkan semua karena itu adalah perangkat blok tingkat atas yang sebenarnya Anda akses?
- Akan
lvchange -r
berdampak pada perangkat dm-0 dan tidak muncul di sini?
Jika sesederhana, pengaturan RA dari perangkat blok virtual yang Anda gunakan diteruskan, apakah itu berarti bahwa pembacaan dari dm-0 (atau md0) akan diterjemahkan menjadi 4 x 4096 RA dibaca? (satu di setiap perangkat blok). Jika demikian, itu berarti bahwa pengaturan ini meledak ukuran readahead dalam skenario di atas.
Kemudian dalam hal mencari tahu apa yang sebenarnya dilakukan pengaturan readahead:
Apa yang Anda gunakan, setara dengan ukuran sektor di atas untuk menentukan nilai readahead sebenarnya untuk perangkat virtual:
- Ukuran garis RAID (untuk md0)?
- Beberapa ukuran sektor lain yang setara?
- Apakah bisa dikonfigurasi, dan bagaimana?
- Apakah FS berperan (saya terutama tertarik pada ext4 dan XFS)?
- Atau, jika baru saja diteruskan, apakah itu hanya pengaturan RA dari perangkat tingkat atas dikalikan dengan ukuran sektor dari perangkat blok nyata?
Akhirnya, apakah akan ada hubungan yang disukai antara ukuran garis dan pengaturan RA (misalnya)? Di sini saya berpikir bahwa jika strip adalah elemen terkecil yang akan ditarik dari perangkat RAID, Anda idealnya tidak ingin harus ada 2 akses disk ke layanan unit data minimum dan ingin membuat RA cukup besar untuk memenuhi permintaan dengan satu akses.