Yazılım ve donanım RAID performansı ve önbellek kullanımı


73

RAID denetleyicileri / kurulumları hakkında çok şey okudum ve çok fazla çıkan bir şey, önbelleği olmayan donanım denetleyicilerinin RAID yazılımıyla aynı performansı nasıl sundukları. Bu gerçekten böyle mi?

Donanım RAID kartlarının önbellek olmasa bile daha iyi performans sağlayacağını her zaman düşündüm. Demek istediğim, görevleri yerine getirmek için özel bir donanıma sahipsiniz. Bu durumda, önbelleği olmayan bir RAID kart almanın faydası nedir, LSI 9341-4i gibi tam olarak ucuz olmayan bir şey.

Ayrıca bir performans kazancı yalnızca önbellekle mümkün ise, hemen diske yazan bir önbellek yapılandırması var mı, ancak BBU’yu öncelikli yapan işlemleri okumak için verileri önbellekte tutar?


HW baskınını desteklediğini fark ettiğim bir şey: Tecrübelerime göre, SW baskınını yapıyorsanız ve sistem temiz bir kapatma dışında bir şey yaparsa diziyi bozarsınız ve yeniden inşa etmeniz gerekir. Sistem düştüğünde yazmadıysa HW basımı hata yapmaz.
Loren Pechtel

Yanıtlar:


146

Kısacası: Düşük kaliteli bir RAID kartı kullanıyorsanız (önbellek olmadan), kendinize bir iyilik yapın ve RAID yazılımına geçin. Orta uçtan uca bir kart kullanıyorsanız (BBU veya NVRAM ile), donanım genellikle (ancak her zaman değil! Aşağıya bakınız) iyi bir seçimdir.

Uzun cevap: bilgi işlem gücü sınırlı olduğunda, donanım RAID kartları, onları içeren RAID şemaları için eşlik / sendrom hesaplamasında önemli bir avantaja sahipti (RAID 3/4/5, RAID6, ecc).

Ancak, artan CPU performansı ile bu avantaj temelde ortadan kalktı: dizüstü bilgisayarımın eski CPU'su (Core i5 M 520, Westmere nesil) bile, 4 GB / sn'den fazla XOR ve 3 GB / sn'den fazla RAID-6 sendromu performansına sahip. tek yürütme çekirdeği .

Donanım RAID'in bugün sağladığı avantaj, BBU veya NVRAM biçiminde, güç kaybına karşı korumalı bir DRAM önbelleğinin varlığıdır. Bu korumalı önbellek, rasgele yazma erişimi (ve bu isabet okur) için çok düşük gecikme süresi sağlar ve temelde rasgele yazmaları sıralı yazmalara dönüştürür. Böyle bir önbelleği olmayan bir RAID denetleyicisi işe yaramaz . Dahası, bazı düşük seviye RAID denetleyicileri yalnızca önbellek olmadan gelmekle kalmaz, aynı zamanda diskin özel DRAM önbelleğini de zorla devre dışı bırakır ve bu da RAID kartının olmamasından daha yavaş performansa yol açar. Örnek olarak DELL'in PERC H200 ve H300 kartları verilebilir: daha yeni bellenim bunu değiştirmediyse, diskin özel önbelleğini tamamen devre dışı bırakırlar (ve diskler RAID denetleyicisine bağlıyken yeniden etkinleştirilemezler). Kendinize bir iyilik yapın ve yapınasla, asla, böyle kontrolörleri satın almayın. Üst seviye denetleyiciler bile diskin özel önbelleğini sık sık devre dışı bıraksa da, en azından kendi korumalı önbelleklerine sahipler - HDD'leri (SSD'ler değil!) Özel önbellekleri biraz gereksiz hale getiriyor.

Ancak bu son değil. Hatta yetenekli denetleyiciler (BBU veya NVRAM önbellekli olan) bile SSD ile kullanıldığında tutarsız sonuçlar verebilir, çünkü SSD'lerin verimli FLASH sayfa programlama / silme için gerçekten hızlı bir özel önbelleğe ihtiyacı vardır . Bazı (çoğu?) Kontrolörler, diskin özel önbelleğini yeniden etkinleştirmenize izin verirken (örneğin: PERC H700 / 710 / 710P, kullanıcının yeniden etkinleştirmesine izin verir), bu özel önbellek, yazma korumalı değilse, verilerin kaybedilmesi riskini taşır. güç kaybı. Kesin davranış gerçekten denetleyici ve bağımlı firmware: (örn DELL S6 / i 256 MB WB önbellek ile etkin diskin önbellek , ben hiçbir belirsizlik ve çok endişe veren birden planlı güç kaybı test sırasında kayıpları).

Öte yandan, açık kaynaklı yazılım RAID'leri, daha kontrol edilebilir canavarlardır - yazılımları, özel bir ürün yazılımının içine alınmamıştır ve iyi tanımlanmış meta veri desenleri ve davranışlarına sahiptir. RAID yazılımı (doğru), diskin özel DRAM önbelleğinin korunmadığı varsayımını yapar, ancak aynı zamanda kabul edilebilir performans için kritik öneme sahiptir - bu nedenle tipik olarak devre dışı bırakmazlar, bunun yerine ATA FLUSH / FUA komutlarını kullanırlar; Sabit depolamada veri alanı. Genellikle yonga seti SB'ye bağlı SATA bağlantı noktalarından çalıştığından, bant genişliği çok iyidir ve sürücü desteği mükemmeldir.

Bununla birlikte, mekanik HDD'lerle birlikte kullanıldığında, senkronize, rasgele yazma erişim düzeni (örneğin: veritabanları, sanal makineler), WB önbellekli bir donanım RAID denetleyicisine kıyasla büyük ölçüde zarar görecektir. Öte yandan, kurumsal SSD'lerle (yani: bir powerloss korumalı yazma önbelleğiyle) kullanıldığında, RAID yazılımı genellikle donanım RAID kartlarıyla elde edilebilenden daha yüksek sonuçlar verir ve sonuçlar verir. Bu, tüketici SSD'lerinin (okuma: korumasız geri yazma önbelleği ile) okuma ve eşzamansız yazma konusunda çok iyi olmasına rağmen, senkronize yazma iş yüklerinde çok düşük IOPS verdiğini hatırlamanız gerektiğini söyledi.

Ayrıca, RAID'lerin tümünün eşit yaratılmadığını göz önünde bulundurun. Windows yazılımı RAID kötü bir üne, performansına sahip ve Depolama Alanı bile çok farklı görünmüyor. Linux MD Raid olağanüstü hızlı ve çok yönlüdür, ancak Linux I / O yığını maksimum performans elde etmek için dikkatlice anlamanız gereken birçok bağımsız parçadan oluşur. ZFS eşlik RAID (ZRAID) son derece gelişmiş ancak doğru bir şekilde yapılandırılmadıysa size çok zayıf GİB verebilir ; yansıtma + şeritleme, diğer tarafta oldukça iyi bir performans sergiliyor. Neyse, senkronize yazma işlemleri (ZIL) için hızlı bir SLOG cihazına ihtiyacı var.

Alt çizgi:

  1. eğer iş yükleriniz senkronize edilmemişse rastgele yazmaya duyarlı değildir, bir RAID kartına ihtiyacınız yoktur.
  2. Eğer bir RAID kartı gerekirse, yok değil WB önbellek olmadan RAID denetçisi satın
  3. SSD yazılımı kullanmayı planlıyorsanız RAID tercih edilir ancak yüksek senkronize edilmiş rastgele yazmalar için güçlü bir korumalı SSD'ye ihtiyacınız olduğunu unutmayın (ör. Intel S4600, Samsung PM / SM863, vb.). Saf performans için en iyi seçenek muhtemelen Linux MD Raid'dir, ancak bugünlerde genellikle çizgili ZFS aynaları kullanıyorum. Aynalar nedeniyle alanın yarısını kaybetmeyi göze alamazsanız ve ZFS'nin gelişmiş özelliklerine ihtiyacınız varsa, ZRAID ile gidin, ancak VDEV kurulumunuzu dikkatlice düşünün.
  4. Intel SSD kullanıyorsanız bile, gerçekten bir donanım RAID kartına ihtiyacınız varsa, yazmaya karşı korumalı önbellekleri olan SSD'leri kullanın (Micron M500 / 550/600 kısmi korumaya sahip - gerçekten yeterli değil ama hiç olmadığı kadar iyi - Intel DC ve S serisi tam güç kaybına sahipken) Koruma ve aynı kurumsal Samsung SSD'ler için söylenebilir)
  5. RAID6'ya ihtiyacınız varsa ve normal mekanik HDD'ler kullanacaksanız, 512 MB (veya daha fazla) WB önbellek içeren hızlı bir RAID kartı almayı düşünün. RAID6'nın yazma performansı yüksek bir cezası vardır ve düzgün boyutta bir WB önbelleği, en azından küçük senkronize yazmalar için hızlı bir ara depolama sağlayabilir (örneğin: dosya sistemi günlüğü).
  6. HDD’li RAID6’ya ihtiyacınız varsa ancak donanım RAID kartı satın almak istemiyorsanız / istemiyorsanız, RAID yazılımınızı dikkatlice düşünün. Örneğin, Linux MD Raid ile olası bir çözüm iki dizi kullanmaktır: günlük yazma / DB günlükleri için küçük bir RAID10 dizisi ve ham depolama için RAID6 dizisi (dosya sunucusu olarak). Öte yandan, SSD'ler ile RAID5 / 6 yazılımı çok hızlıdır, bu yüzden muhtemelen bir all-SSD kurulumu için bir RAID karta ihtiyacınız yoktur.

Harika açıklamalar için çok teşekkürler, RAID kartlarının HDD'lerin önbelleğini devre dışı bıraktığını bilmiyordum. Bu, 800 $ 'a yakın yatırımı garanti eden bir sunucu türü değil, bu yüzden Yazılım RAID kurulumlarını biraz daha okuyacağım ve muhtemelen bununla devam edeceğim.
ItsJustMe

2
OP bir hiper danışman hakkında konuşuyor. RAID5 söz konusu değil ve yazma önbelleği bir zorunluluk olacak.
ewwhite

1
Gerçekte, 2016'da bile, 6 sürücülü bir RAID 5/6 yazılımı <25 MB / s'de, 2010'dan itibaren uygun bir RAID kartı ise> 500 MB / s'de yazıyor. Bu, hem Intel RSTe hem de Windows Depolama Alanları'ndadır. Darboğazın modern bir CPU'da ne olduğunu anlamıyorum.
Monstieur

1
RAID 5/6 yazılımıyla ilgili sorun, yazma işleminin genellikle okuma-değiştirme-yazmayı tetiklemesidir, bu da diskleri önemli ölçüde yavaşlatır. BBU özellikli bir donanım RAID denetleyicisi, birden fazla yazma işlemini tek bir disk erişim / işleminde birleştirerek performansı büyük ölçüde artırabilir.
shodanshok

1
"[rastgele okur], SSD'lerle birlikte kullanıldığında, genellikle mükemmel olur" - SSD, bir kurumsal SSD değilse (genellikle güç kaybına karşı koruma için kapasitöre sahip olmadığı anlamına gelir) ve yalan söylemezse, SSD'ler bile sıralı gibi işlemler için son derece düşük IOPS var fsync(). Kapasitörsüz bir Samsung NVMe SSD'nin saniyede sadece ~ 250 fsyncs yaptığını gösteren bu makaleye bakın (Ben de bunu ölçtüm). Kapasitörlü SSD'ler ~ 100 kat daha fazla fsyncs / sn sağlar; akü 100 kat daha fazla olan bir donanım RAID denetleyicisi.
nh2

7

Satın aldığınız tüm donanım denetleyicileri için pil veya flash destekli önbellek çözümü isteyeceksiniz. Çoğu pişman olmadı .

Ama soruyu cevaplamak için, pek çok denetleyici yüzden% 100 ... yapılandırılabilir önbellek oranlarına sahip okumak önbellek ve% 0 yazma önbelleği BBU koruma gereksinimini ortadan kaldırır. Yazma performansınız sadece emecek.

Yazılım RAID sorunuzu yanıtlayamam çünkü buna bağlı. Linux MD RAID , ZFS gibi bir şeyden farklı olan Windows Software RAID'den farklıdır . ZFS gibi çözümler donanımdan daha iyi performans gösterebilir çünkü sunucunun RAM ve CPU kaynaklarını kullanırlar.


"Yazma performansı sadece emmek" derken, önbelleği olmayan Software RAID veya Hardware RAID ile aynı olacağını mı düşünüyorsunuz? Veya kart önbelleği okumaya adayorsa, bunun ötesinde performans yazma cezası var mı?
ItsJustMe

Bu ne yaptığınıza bağlı. Yazma yoğun bir uygulamanız yoksa, isabet performansı sorun olmayabilir.
ewwhite

Posta ve web barındırma için kullanılan Windows VM'leri olan bir Proxmox HOST. Çok fazla veritabanı kullanımı yok ama e-posta servisi muhtemelen çok fazla yazma aktivitesine sahip. Şu anda sadece Salt Okunur önbellek kartına sahip olmak Yazılım RAID değerine değip değmeyeceğini tartışıyorum.
ItsJustMe

Sanallaştırma için Flash destekli RAID denetleyici kullanın.
ewwhite

1
Yazılımını RAID kullanarak 4000 hesap içeren bir cyrus posta sunucusunu çalıştırdık. Her gün isabet eden aktif hesaplar 300 ila 600 arasındaydı. Performans, donanımsal RAID ve BBU içeren birincil cyrus posta sunucumuzdan çok daha kötüydü. BBU ve RAID denetleyici önbelleği veri güvencesi sağlar, ancak aynı zamanda performans sağlar. Bunun nedeni, veri denetleyiciye ulaştığında, işletim sistemine yazma işleminin tamamlandığını söyleyebilir. Aksi halde, sabit sürücünün yazma işleminin tamamlandığını bildirmesini beklemek zorunda kalır. Bu önemli saat çevrimlerini korur. Donanım RAID'e taşındı ve çözüldü.
labradort

7

Gözünüze sahip olduğunuz RAID denetleyicisi ucuz olanıdır ve temelde sahtedir. Bellek gibi bazı işlevler sağlamak için ana kartınıza bile bağlıdır ve çoğu anakart sürücüyü yükleyememenize neden olacak şekilde desteklemez.

HW vs SW-RAID'in kendisi hakkında. Mesela üzerinde EMC logolu bir kutu olmadığı sürece HW-RAID kullanmıyorum. Her şey için, birkaç basit sebeple tekrar birçok aydan SW-RAID'e geri döndüm.

  1. Ek donanıma ve bunlara uymaya ihtiyacınız var. Ayrıca üretici yazılımı ile eşleşmeniz ve senkronize tutmanız gerekir. Bir çok disk düzgün çalışmaz ve IO-latansınızdaki açık bir neden olmadan ani yükselirsiniz.

  2. Ek donanım pahalıdır, böylece küçük bir çözüm için daha iyi olan 1000 $ 'ı (iki / üç diskli iyi denetleyici) kullanabilirsiniz. Daha fazla diske ve standart kontrolöre, ECC belleğe, daha hızlı CPU'ya yatırım yapın. Ve yerinde bir yedek disk, eğer garanti süresinden daha uzun süre çalıştırmayı planlıyorsanız veya bir gecelik gönderiler için ekspres ücretini ödemek istemiyorsanız.

  3. Yükseltme, hem disk hem de denetleyici için işletim sistemi yamalarını ve ürün yazılımını izlemeniz gerektiği için acı vericidir. Artık yükseltme / güncelleme yapmanın mümkün olmadığı bir duruma neden olabilir.

  4. Disk biçimlerinde. Yeterli satıcı, donanım ve donanım yazılımı kombinasyonunuzun revizyonuna bağlı verileri saklamak için bazı kurum içi yerleşimi kullanır. Bu, yedek parçanın verilerinize erişmenizi imkansız hale getirdiği bir duruma neden olabilir.

  5. Bir SPOF ve bir darboğaz. Yalnızca bir PCI köprünün arkasında yalnızca bir denetleyiciye sahip olmak size gerçekten ihtiyacınız olan performansı ve fazlalığı vermez. Bununla beraber, kontrolörlerin ulaşamayacağı başka bir diskete veri aktarmak için hiçbir geçiş yolu mevcut değildir.

Bu noktaların çoğu yeni nesil SW-RAID yazılımı veya ZFS ve BtrFS gibi çözümlerle halledilmiştir. Sonunda verilerinizi korumak istediğinizi ve hızlı erişilebilen değil, gereksiz çöpleri unutmayın.


3
Katılmıyorum. Pek çok kişi Dell, HP, IBM ve üst seviye LSI RAID denetleyicilerinden memnun. Ancak dürüst olmak gerekirse, çoğu modern kalitede sunucu zaten RAID çözümlerine sahiptir, bu nedenle bireysel denetleyiciler için alışveriş yapma fikri biraz eskidir. Yazılım RAID çözümlerinin düşük gecikmeli yazma iş yüklerini de hesaba katması gerekir. ZFS bir ZIL'ye sahiptir, ancak diğer pek çok RAID uygulaması bu cephede bulunmamaktadır.
ewwhite

2
Son paragrafınıza göre de farklılık gösterirdim, RAID kullanılabilirliği koruma değil. Koruma, RAID değil, yedekleme gerektirir.
Rowan Hawkins

4

Geçen yıl (2014-2015 dönemine kadar kapalı), 2 LSI 9300 HBA ve 2 LSI 9361-8i RAID denetleyicileri kullanarak aşağıdakiler üzerine kurulu sistemlerle birkaç paralel CentOS 6.6 RAID 1 (yansıtılmış) yapılandırmasını test ederek geçirdim: 2U Supermicro CSE- 826BAC4-R920LPB kasa, bir ASUS Z9PE-D16 anakart, 2 Intel Xeon E5-2687W v2 Sekiz Çekirdekli 3.4 GHz İşlemci, yansıtılmış Seagate ST6000NM0014 6 TB SAS 12 Gbs, 512 GB RAM. Bunun tamamen SAS3 (12 Gbps) uyumlu bir yapılandırma olduğunu unutmayın.

Tuning yazılımı hakkında yazılmış makaleleri araştırdım ve 10 yıldan fazla bir süredir RAID yazılımını kullandım. Temel G / Ç testleri (dd-oflag = doğrudan 5k - 100G dosyaları, hdparam -t, vb.) Çalıştırırken, RAID yazılımı donanım baskısına uygun şekilde yığılmış gibi görünüyor. RAID yazılımı ayrı HBA'lar üzerinden yansıtılmıştır. Standart CentOS 6 çekirdeği, çekirdek-lt ve çekirdek-ml konfigürasyonları ile test yapmak kadar ileri gittim. Ayrıca Linux yazılımı RAID hakkında yazılmış çeşitli çevrimiçi makaleler tarafından önerilen çeşitli mdadm, dosya sistemi, disk alt sistemi ve o / s ayarlarını da denedim. Ayarlama, test etme, ayarlama ve test etmeme rağmen, okunan bir dünyada çalışırken, işlem işleme sistemi (MySQL veya Oracle veritabanına sahip), bir donanım RAID denetleyicisinin çalıştırılmasının performansında 50 kat artışla sonuçlandığını buldum.

Aylarca, aylarca donanım RAID'in çok daha iyi olabileceğine ikna olmadım, ancak Linux yazılımı RAID, test etme ve ayarlama üzerine kapsamlı bir araştırma yaptıktan sonra, bunlar benim sonuçlarımdı.


2

Buradaki yazarların çoğu, " yazma deliği " habersizdir . Bu, donanım RAID'lerinin toplu yedekleme birimleri için ağlamaya izin veren ve yazılım RAID'lerinde böyle bir şey bulunmadığı için temel oluşturur. Örneğin, Linux yazılımı RAID uygulaması ya yazma işlemlerinin bitmap'lerini destekler ya da temiz olmayan bir kapatma durumunda tam "eşlik" yeniden hesaplama yapar. ZFS, bu tutarsızlığı önlemek veya yeniden kontrolünü ertelemek için her zaman tam şerit yazmaya çalışır. Bu nedenle, bir özet olarak, yeterince akıllı bir yazılım olan RAID, bugünlerde “donanımsal RAID” olarak adlandırılan “içinde ne olduğunu bilen” yerine kullanılmak üzere genellikle yeterince iyi.

Sorunun önbellek kısmına gelince, bu gerçekten önemli değil, çünkü işletim sisteminin kendisinin yazma önbelleği "donanım" adaptöründen çok daha büyük olabilir.


1
Bu, uygun bir korumalı WB önbelleği olmadan donanım RAID kartlarını önlemek için başka bir nedendir. Linux MD Baskını ile ilgili bir not: Yazma deliğinden tamamen bağışık değildir. Güç kaybı koruması olmadığından, ani bir güç kaybı durumunda veriler sonunda kaybolur (transit veriyi ve / veya kısmi yazmaları düşünün). Bunun tek diskli senaryoda bile olacağından emin olun, ancak parite yapısı veya RAID5 / 6 bunu güçlendirir. En kötü senaryoda, kritik dosya sistemi meta verileri bozulabilir, ancak modern dosya sistemleri oldukça iyi bir şekilde kurtarılabilecek kadar esnektir. Yine de bazı veriler kaybolabilir.
shodanshok

@shodanshok, tamamen yanılıyorsunuz. Düşün
poige

1
Birçok durumda, iyi durumda tutulursa, WB önbelleğini 24-96 saat çalıştırabilir; bu da gerçekten aşırı durumlar haricinde gücü geri kazanmanın bolca zamanıdır . Ayrıca, modern kontrolör NVRAM (okuyun: Flaş) geçiş bellek olarak uzun süreli depolama, elektrik kesilmesi durumunda küçük bir pil / Özel kapasitör verilerini tutabilen bir NV belleğinde önbellek içeriğini temizlemek böylece aylarca ya da yıllarca Diğerinde Bir BBU RAID denetleyicisi , RAID5 / 6 deliklerinin neredeyse (her durumda) önlenmesini sağlar.
shodanshok

1
Delik açmanın bağışık olduğunu söylemiştin. Geliştiriciler , gerçek dünya kullanımında çok da önemli olmaması gerektiğini söyleseler de öyle olmadığını söylüyorlar .
shodanshok

1
Maalesef ama sen yazmış: "Bu yazılım baskınlar için böyle bir oid'in vs donanım baskınlar battey yedekleme birimleri için ağlama sağlayan temelidir" . Bu YANLIŞ . Uygun donanım RAID kartları daha fazla koruma sağlar ve size bunun aynı LSR geliştiricilerinin görüşü olduğunu defalarca söyledim. Şimdi size bir soru soruyorum: ifadeniz iyi mi yanlış mı? Yanlış olduğu için, lütfen cevabınızı düzenleyin, aksi halde diğer kullanıcı bu saçmalıktan kandırabilir.
shodanshok,

0

Bunu her zaman çalışıyorum. Bu ne yaptığınıza ve destekleyeceğiniz baskın seviyesine büyük ölçüde bağlı. İşletim sistemi için Raid 0 veya 1 çalıştıran bir SW denetleyicisi ve özel bir şey yok. Bir SW denetleyicisini bir veri tabanında Raid 5 ile çalıştırmak sorun istiyor! BAZI donanım denetleyicisi size daha iyi performans sağlar, ancak önbelleğe ve baskın kartın işlemci yonga kümesine sahip olup olmamasına bağlıdır. Ayrıca tüm yazılım denetleyicileri her işletim sistemi tarafından desteklenmez. Yani bazen ESXi'yi çalıştırmak için bir HW satın almanız gerekebilir ... sata bağlantıları kullanmıyorsanız.

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.