Arama süreleri
Sorun şu ki, yazma arayışı yazma çok farklı amplifikasyon davranır üretilen iş yükseltilmesi. Eşlik ile minimum yazma çıktısı amplifikasyonu, tüm şerit bir kerede yazıldığında (bu sıfıra 'tam şerit' diyelim) gerçekleşir, ancak tersine, sanal aygıtta bir aramayı takiben tüm yazma işlemi uygun olduğunda minimum yazma arama amplifikasyonu gerçekleşir. tek bir yığın. Ayrıntılara girmeden önce, ilişkilerin tablo halinde iletilmesi çok daha kolaydır:
RAID | write throughput amplification factor | write seek amplification factor
| full-stripe (e.g.) | single-chunk | full-stripe | single-chunk
0 | 1 ; 1 | 1 ; 1 | n ; 12 | 1 ; 1
1 | n ; 12 | n ; 12 | n ; 12 | n ; 12
5 | n/(n - 1) ; ~1.1 | min [3, n] ; 3 | n ; 12 | min [3, n] ; 3
6 | n/(n - 2) ; 1.2 | min [5, n] ; 5 | n ; 12 | min [5, n] ; 5
*1+0 | n₁ ; 3 | n₁ ; 3 | n ; 12 | n₁ ; 3*
1+5 | n/(n₅ - 1) ; 2.4 | expr₁ ; 5 | n ; 12 | expr₁ ; 5
*1+6 | n/(n₆ - 2) ; 3 | expr₂ ; 8 | n ; 12 | expr₂ ; 8*
expr₁ = 2n₁ + min [1, n₅ - 2]
expr₂ = 3n₁ + min [2, n₆ - 3]
burada n toplam sürücü sayısıdır, n₁, RAID 1 gruplarındaki sürücü sayısıdır ve n₅ ve n₆, sırasıyla RAID 5 veya RAID 6 dizilerindeki grup sayısıdır. Örnekler, sorudaki 12-sürücü örneğiyle ilgilidir (ilgili satırlar ' *bolded*
'); RAID seviyeleri 1 + 0, 1 + 5, 1 + 6 için örnekler sırasıyla 4 × 3, 6 × 2, 6 × 2'dir.
Yalnızca tam şeritli yazma çıktısı amplifikasyon faktörünün artıklık oranıyla doğrudan ilişkili olduğunu unutmayın. Tek yığınlı vakalar paritesi olanlar için daha karmaşıktır. Yeni bir veri parçasıyla birlikte parite parçalarını yazmadan önce, tek bir parça yazmak için eşlik parçalarından veya diğer veri parçalarından hangisinin daha kolay olduğunu okumak gerekir. (İndüklenen okumalar bunun yerine RAID 1 için ilgili okuma / arama amplifikasyon faktörü ile çarpılmalıdır, ikisi de 1'dir; aşağıya bakınız.)
Ne yazık ki, bu ekstra yazma çıktısı amplifikasyonunu en aza indiren bir yığın boyutu seçmek, gerçekte maksimize etmenin yan etkisine sahiptir. yazma arama amplifikasyonunun . Arama süresine kıyasla önemsiz yazma süresine sahip küçük yazılar için, çok küçük bir yığın boyutuna sahip (tam şeritli olmak üzere) şeritleme yazma performansı, tüm sürücülerin aramasını gerektirdiğinden, yansıtma gibi sadece 1 ×'dir. her yazma için parçalar ve tüm bu sürücülerin harekete geçirilmesinden elde edilen verim önemsizdir. Bu, yazma zamanı yazma süresinin, dizideki sürücü sayısına bölünmesini sağladı, ancak küçük yazılar için bu zaten önemsizdi. Küçük yazıların bile tam şerit olmasını sağlayacak kadar küçük bir yığın boyutu kullanmak mantıklı olmaz. Aramanın etkilerini hissetmek için yeterince küçük yazarlar için, tek bir parçaya sığmaları en iyisidir.
RAID | large contiguous write throughput | concurrent tiny writes throughput
| full-stripe | single-chunk | full-stripe | single-chunk
0 | n× ; 12× | n× ; 12× | 1× ; 1× | n× ; 12×
1 | 1× ; 1× | 1× ; 1× | 1× ; 1× | 1× ; 1×
5 | (n - 1)× ; 11× | max[n/3, 1]×; 4× | 1× ; 1× | max[n/3, 1]×; 4×
6 | (n - 2)× ; 10× | max[n/5, 1]×; 2.4× | 1× ; 1× | max[n/5, 1]×; 2.4×
*1+0 | n₀× ; 4× | n₀× ; 4× | 1× ; 1× | n₀× ; 4× *
1+5 | (n₅ - 1)×; 5× | expr₃× ; 2.4× | 1× ; 1× | expr₃× ; 2.4×
*1+6 | (n₆ - 2)×; 4× | expr₄× ; 1.5× | 1× ; 1× | expr₄× ; 1.5×*
expr₃ = n/(2n₁ + min [1, n₅ - 2]) = max [n/(2n₁ + 1), n/(2n₁ + n₅ - 2)]
expr₄ = n/(3n₁ + min [2, n₆ - 3]) = max [n/(3n₁ + 2), n/(3n₁ + n₆ - 3)]
Not: Orta 2 çıkış sütunları, arama süresinin önemli olduğu yazmalardan daha büyük, ancak büyük yazmaların tam şeritli olacağı kadar küçük olan makul bir yığın boyutu göz önüne alındığında yok sayılabilir. 2. çıkış sütununun büyük yığın boyutu, yayılmış sürücülere daha çok benzemektedir. 'Minik' yazma, verimin etkisinin ihmal edilebilir olduğu yerdir.
Uygun olmayan şekilde küçük bir yığın boyutuna sahip olmak, aynı zamanda ve sadece tam şeritli durumda değil, okumalar için arama amplifikasyonunun etkisini arttırır.
RAID | read throughput amplification factor | read seek amplification factor
| full-stripe | single-chunk | full-stripe (e.g.) | single-chunk
0 | 1 | 1 | n to n; 12 | 1
1 | 1 | 1 | 1 to n; 1–12 | 1
5 | 1 | 1 | n - 1 to n; 11–12 | 1
6 | 1 | 1 | n - 2 to n; 10–12 | 1
*1+0 | 1 | 1 | n₀ to n; 4–12 | 1 *
1+5 | 1 | 1 | n₅ - 1 to n; 5–12 | 1
*1+6 | 1 | 1 | n₆ - 2 to n; 4–12 | 1 *
Not: 'to n' aynı anda gerçekleşen yalnızca bir okuma olduğunda, teorik olarak tüm sürücülerin uygun yerlere ulaşmak ve maksimum büyük bitişik okuma verimi için verileri toplu olarak okumak için harekete geçirilmesi mümkündür.
RAID | large contiguous read throughput | concurrent tiny reads throughput
| full-stripe (e.g.)| single-chunk | full-stripe | single-chunk
0 | n× ; 12× | n× ; 12× | 1× ; 1× | n× ; 12×
1 | n× ; 12× | n× ; 12× | n× ; 12× | n× ; 12×
5 | n× ; 12× | n× ; 12× | n/(n - 1)× ; ~1.1× | n× ; 12×
6 | n× ; 12× | n× ; 12× | n/(n - 2)× ; 1.2× | n× ; 12×
*1+0 | n× ; 12× | n× ; 12× | n₁× ; 3× | n× ; 12×*
1+5 | n× ; 12× | n× ; 12× | n/(n₅ - 1)× ; 2.4× | n× ; 12×
*1+6 | n× ; 12× | n× ; 12× | n/(n₆ - 2)× ; 3× | n× ; 12×*
Not: Yine, makul bir yığın boyutu göz önüne alındığında orta 2 çıkış sütunu göz ardı edilebilir. 3. çıkış sütunu, artıklık oranına tekrar yakından bağlıdır.
Ancak, yeterince büyük bir yığın boyutu, küçük okumaların hiçbir zaman tam şerit olmadığı anlamına gelir. Bu nedenle, verimli bir uygulama ve uygun yığın boyutu göz önüne alındığında, okuma performansı, bozulmadığında aynı sürücü sayısıyla orantılı olmalıdır.
Gerçekten de, 'amplifikasyon faktörü', sadece tam şeritli çıkış amplifikasyonunun dikkate alındığı sorudaki formülden çok daha karmaşıktır. Özellikle, aramaya bağlanacak kadar küçük olan eşzamanlı yazma işlemleri için 6 × 2 RAID 1 + 6 yazma performansı 4 × 3 RAID 1 + 0'dan daha kötü olacaktır. Ve hepsi aranan küçük yazılar için, performans en iyi 4 × 3 RAID 1 + 0'ın sadece üçte biri kadar olabilir (yani mükemmel bir uygulama verilir).
Bu sorunu giderdikten sonra, 12 çekişli karşılaştırmanın kesin bir kazananı yok:
| 4×3 RAID 1+0 | 6×2 RAID 1+6
number of identical 1TB drives | 12 | 12
storage capacity | 4TB | 4TB
redundancy proportion | 2/3 | 2/3
large contiguous write throughput | 4× | 4×
large contiguous read throughput | 12× | 12×
concurrent tiny writes throughput |*4× | 1.5×
concurrent tiny reads throughput | 12× | 12×
safe number of random drive loses | 2 |*5
12 - 1 large write throughput | 4× | 4×
12 - 1 large read throughput | 8× |*11×
12 - 1 tiny writes throughput |*4× | ~1.42×
12 - 1 tiny reads throughput | 8× |*~9.33×
can split-off a copy for backup | yes[1] | yes[1]
2-site failover | yes | yes
2-copy large write throughput | 4× | 4×
2-copy large read throughput |*8× | 6×
2-copy tiny writes throughput |*4× | ~1.28×
2-copy tiny reads throughput |*8× | 6×
2-copy safe random drive loses | 1 |*2
2-copy - 1 large write throughput | 4× | 4×
2-copy - 1 large read throughput | 4× |*5× or 6×[2]
2-copy - 1 tiny writes throughput |*4× | ~1.46× or 1.2×[2]
2-copy - 1 tiny reads throughput | 4× |*3.6x or 6×[2]
can be divided into 3 full copies | yes | yes
3-site failover | yes | yes
1-copy large write throughput | 4× | 4×
1-copy large read throughput | 4× | 4×
1-copy tiny writes throughput |*4× | ~0.85×
1-copy tiny reads throughput |*4× | 2×
1-copy safe random drive loses | 0 | 0
complexity |*simple | more complex
Not 1: Saklanan verilerin tam bir kopyası sırasıyla bir RAID 0 dörtlü veya 4/6 bozulmuş RAID 6 dizisidir. Not 2: Sürücü arızasının 4 adet bozulmuş RAID 1 çiftinden birini devre dışı bırakma veya 2 normal çiftten birini düşürme ihtimali vardır.
Bununla birlikte, RAID 6 dizilerinin 6 sürücüsünün okuma performansını iki katına çıkarır ve gerekli okumaların RAID 1 çiftleri arasında bölünmesi nedeniyle küçük yazma verimi% 25 daha iyi (1.5 / 1.2) olmalıdır ve açıkça RAID 6 bu nedenle daha fazla yazma performansı daha okuma performansı hakkında endişe daha büyük yazma sahip veya yüksek kullanılabilirlik uygulamalarında uygun uygulamaları var, belki orada olan RAID 1 + 6 afterall için bir niş. Ama hepsi bu değil…
karmaşa
Bu hala şimdiye kadar teoride (çoğunlukla kombinatorik ), pratikte karmaşıklık RAID 1 + 6 uygulamalarının fırsatları kaçıran ve teorik sonuçları elde etmeyen eksikliklere sahip olabileceği anlamına gelecektir. RAID 6 zaten daha karmaşıktır ve yuvalama bunun üstüne biraz daha karmaşıklık katar.
Örneğin, 6 × 2 RAID 1 + 6'nın, her biri 4 × 3 RAID 1 + 0 gibi, her biri 4 × verimde 3 bitişik büyük okumayı aynı anda okuyabilen 3 bağımsız sanal okuma kafasına sahip olacağı hemen anlaşılamaz. Bir yazılım RAID kullanarak 6 RAID 1 çiftini bir RAID 6 dizisine yerleştirmek o kadar zarif olmayabilir; uygulama aptal ve thrash olabilir (bu hipotezi henüz test etmedim).
Karmaşıklık ayrıca uygulamaların ve araçların geliştirme maliyetinin artmasını da sağlar. Böyle bir iç içe yerleştirmeden faydalanabilecek uygulamalar olsa da, iyileştirmeler geliştirme maliyetlerine değmeyebilir.