Buna düz bir cevap bulmaya çalıştım ve bu çok zor oldu. Bu soru ve cevabı yakın, ancak gerçekten istediğim özellikleri vermedi. Bildiğimi düşündüğüm şeyle başlayalım.
Standart bir blok aygıtınız varsa ve çalıştırırsanız sudo blockdev --report
şöyle bir şey elde edersiniz:
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
Şimdi, --setra
bölümlerden herhangi birini kullanarak bu varsayılan 256'yı 128'e değiştirmeye karar veriyorsunuz ve bu, aşağıdaki gibi, tüm blok aygıtına oluyor:
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
Bu benim için mükemmel bir anlam ifade ediyor - blok seviye cihazı, ayarın bölüm olduğu yer değil, her şeyin değiştiği yer. Ayrıca RA ayarları ve cihaz arasındaki varsayılan ilişki bana mantıklı geliyor, genel olarak:
RA * sector size (default = 512 bytes)
Bu nedenle, yukarıda yaptığım değişiklikler, varsayılan sektör boyutuyla birlikte, okuma hızı 128k'den 64k'ye düşecek. Şimdiye kadar hepsi iyi ve iyi.
Ancak, bir RAID yazılımı veya LVM ve cihaz eşleyici eklediğimizde ne olur? Raporunuzun bunun gibi göründüğünü hayal edin:
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
Bu durumda, mdadm tarafından yaratılan md0'ın üstünde, aslında dört aygıt xvdg-j'de bir RAID0 şeridi olan aygıt eşlemeli bir dm-0 LVM aygıtımız var.
Hem md0 hem de dm-0, RA için blok cihazlardan çok daha yüksek olan 4096 ayarlarına sahiptir. Yani, burada bazı sorular:
- RA ayarı sanal blok cihaz zincirinden nasıl geçer?
- Dm-0 hepsine güveniyor mu, çünkü gerçekte erişmekte olduğunuz en üst seviye blok aygıtı mı?
- Misiniz
lvchange -r
dm-0 cihazda bir etkiye sahip ve burada gösterilmeyecek?
Bu kadar basitse, kullandığınız sanal blok aygıtının RA ayarı devreye girer, bu dm-0 (veya md0) 'dan okunan değerin 4 x 4096 RA değerine çevrileceği anlamına mı gelir? (her blok cihazda bir tane). Öyleyse, bu ayarların yukarıdaki senaryoda okuyucunun boyutunu patlatması anlamına gelir.
Ardından, okuma kafası ayarının gerçekte ne yaptığını bulma açısından:
Sanal bir cihazın gerçek okuma değeri değerini belirlemek için yukarıdaki sektör boyutuna eşdeğer olarak ne kullanıyorsunuz:
- RAID'in şerit boyutu (md0 için)?
- Başka bir sektör büyüklüğü eşdeğeri?
- Yapılandırılabilir mi ve nasıl?
- FS bir rol oynuyor mu (öncelikle ext4 ve XFS ile ilgileniyorum)?
- Ya da henüz geçerse, sadece gerçek seviye cihazların sektör boyutuyla çarpılan üst seviye cihazdan gelen RA ayarı mıdır?
Son olarak, şerit boyutu ile RA ayarı arasında tercih edilen bir ilişki olur mu (örneğin)? Burada, şerit RAID cihazından çıkarılacak en küçük eleman ise, ideal olarak bu asgari veri birimine hizmet vermek için 2 disk erişimi olması gerekmeyeceğini ve RA yapmak istediğini düşünmek istemezsiniz. Tek bir erişimle isteği yerine getirmek için yeterince büyük.