Linux üzerinde RAID ve LVM yazılımı kullanılırken, hangi IO zamanlayıcı ve okuma kafası ayarları kabul edilir?


28

Birden fazla katman olması durumunda (fiziksel sürücüler -> md -> dm -> lvm), zamanlayıcılar, okuma kafası ayarları ve diğer disk ayarları nasıl etkileşimde bulunur?

Mdadm ile oluşturulan bir RAID aygıtının (/ dev / md0) bir parçası olan birkaç diskiniz (/ dev / sda - / dev / sdd) olduğunu hayal edin. Her cihazın (fiziksel diskler ve / dev / md0 dahil) IO zamanlayıcısı ( böyle değişti ) ve okuma kafası ( blockdev kullanılarak değiştirildi ) için kendi ayarları vardır . Dm (crypto) ve LVM gibi şeyleri attığınızda, kendi ayarlarıyla daha da fazla katman eklersiniz.

Örneğin, fiziksel cihaz 128 bloktan önce bir okumaya sahipse ve RAID / dev / md0'den bir okuma yaptığımda onurlandırılan 64 blokluk bir okumaya sahipse? Md sürücüsü 64 blok okumaya çalışıyor mu, fiziksel aygıt sürücüsünün 128 blok okumaya dönüştüğünü biliyor mu? Yoksa RAID okuma kafası, altta yatan cihaza "geçiş" uygulayarak 64 bloğun okunmasına neden oluyor mu?

Aynı tür soru zamanlayıcılar için de geçerli mi? Birden fazla GÇ zamanlayıcı katmanı ve bunların nasıl etkileşime gireceği konusunda endişelenmeli miyim veya / dev / md0 altta yatan zamanlayıcıları etkin bir şekilde geçersiz kılıyor mu?

Bu soruyu cevaplama denemelerimde, zamanlayıcılar ve araçlar hakkında ilginç bir veri buldum:

Yanıtlar:


7

Md0'dan bir okuma yaparsanız, md0 için okuma noktası kullanılır. Eğer md0'ın bir bileşeni olan sda'dan okuma yaptıysanız, sda ayarını kullanır. Aygıt eşleyici yalnızca bir G / Ç'yi birden fazla okula böler ve RAID'i yazmak için yazar; ancak bu, okuyucunun gerçekleştiği blok önbellek katmanının altındadır. Depolama yığını şöyle görünür:

dosya sistemi - O_DIRECT ile açtığınızda önbelleği atlar

blok önbellek - okuma kafası, yazma önbelleği, zamanlayıcı

aygıt eşleyici - dm, lvm, yazılım RAID, anlık görüntü vb.

sd - disk sürücüsü

SCSI - hata yönetimi, cihaz yönlendirme

donanım sürücüsü - scsi kartı, FC kartı, ethernet

Bunu yaptığınızda unutmayın

dd if=/dev/sda of=foo

sda'yı bir dosya olarak okuyorsunuz, bu yüzden blok önbelleğini geçiyorsunuz. Diske doğrudan gitmek için,

dd if=/dev/sda of=foo iflag=direct

G / Ç asansör zamanlayıcılarına gelince, bunlar yalnızca disk sürücüsünde (sd) bulunur. / Sys / block / md veya / sys / block / dm altında bir kuyruk dizini yok. Disk asansör sıralamasından sadece bir kez geçersiniz.


2
/sys/block/md0/queue/schedulerBenim sistemlerimde bir var ama oradaki tek seçenek bu none.
Peter Eisentraut
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.