md'de bcache veya bcache'de md


11

bcache , flash tabanlı yarıiletken sürücüler (SSD'ler) gibi bir veya daha fazla hızlı disk sürücüsünün bir veya daha yavaş sabit disk sürücüsü için önbellek görevi görmesini sağlar .

Eğer doğru anlıyorsam,

  • çoklu destek HDD'lerini önbelleğe almak için bir SSD * atanabilir ve daha sonra önbelleğe alınan önbellek cihazlar mdadm
    veya
  • birden fazla HDD tek bir destek md cihazına RAIDlenebilir ve SSD,

Acaba hangi akılcı yaklaşım. Bir RAID5 / 6 büyütmenin bir veya başka bir teknikle daha basit olabileceği bana geliyor, ancak hangisinden emin değilim!

Bir yaklaşımı diğerine (VM destek dosyaları içeren kök olmayan büyük bir dosya sistemi için) seçmek için iyi bir neden var mı (örneğin, yedekleme deposunu veya başka bir şeyi büyütmek)?


* "bir SSD" ile, bir çeşit gereksiz SSD cihazı kastediyorum, örneğin iki fiziksel SSD'den oluşan bir RAID1


Her iki durumda da, bcacheyedeklemelerin biçimlendirilmesi gereken tüm diskler bcache- böylece bir mddizi oluşturmanız , ortaya çıkan tek diski tamamen bcacheyedeklenmiş bir bölüm olarak biçimlendirmeniz, önbellek sürücüsüne bağlamanız ve oradan gitmeniz ya da ile bcacheönbellek sürücülerine bağlayın, ardından birçok diski tek bir dizi olarak biçimlendirin. Her iki durumda da, hepsi iki dosya sistemi arasındaki birlikte çalışabilirliğe bağlı olan olası son hata noktaları vardır - son fs'den bahsetmiyoruz bile. buraya bakın : aşağı kaydırın .
mikeserv

Github.com/g2p/blocks sayesinde , bazı sınırlamalar olsa da, yerinde dönüştürebilirsiniz.
Adam Ryczkowski

Tüm bunları anlıyorum, bu bir amaca yönelik sunucu içindir, bu yüzden hepsi iyi. Ne demek "iki dosya sistemi"? bcache bir dosya sistemi değildir - sahip olacağım tek dosya sistemi son bcache veya mdadm cihazında XFS olacaktır (hangi seçeneği seçtiğime bağlı olarak).

@Adam teşekkürler, yerinde dönüşüm benim için sorun değil.

@mikeserv hayır değil. Dosya sistemleri (örn. Btrfs, xfs, extN vb.) Blok cihazların üstünde yaşar. mdadm ve bcache, dosya sistemi düzeyinde değil, blok cihaz seviyesinde çalışır (btrfs, sorunu katman ihlali ile karıştırır, ancak bu tamamen ayrı bir konuşmadır).

Yanıtlar:


4

Tüm md cihazını önbelleğe almanın en anlamlı olduğunu düşünüyorum.

Tüm md aygıtını önbelleğe almak için bcache koymak, baskın olma fikrini feda eder, çünkü başka bir tek hata noktası sunar.

  • SSD disklerin OTH arızaları nispeten nadirdir ve bcache, yalnızca önbellek cihazında depolanmış hiçbir verinin olmadığı ve writethrough/ writearoundkipine (kipin aksine writeback) konabilir ve önbellek arızası, baskın onu nispeten güvenli bir seçenek haline getiriyor.

  • Diğer bir gerçek, yumuşak RAID-5'in önemli hesaplama yükünün olmasıdır; her eğirme baskını üyesini ayrı ayrı önbelleğe alırken, bilgisayarın önbellek isabetlerinde bile tüm pariteleri yeniden hesaplaması gerekir

  • Açıkçası, her bir iplik sürücüsünü ayrı ayrı önbelleğe alırsanız, bazı pahalı SSD alanlarından feda edersiniz. - Baskın SSD önbellek kullanmayı planlamıyorsanız.

  • Her iki seçenek de büyüme sürecinin süresini etkilemez - eğirme tahrikleri ayrı ayrı önbelleğe alınan seçeneğin daha fazla veri yolu trafiği nedeniyle daha yavaş olma potansiyeli vardır .

Değiştirmeniz gerektiğinde ssd sürücüsünü kaldırmak için bcache yapılandırmak hızlı ve nispeten basit bir işlemdir. Bloklar sayesinde raid kurulumunu her iki şekilde de yerinde taşımak mümkün olmalıdır.

Ayrıca şu anda en çok (? Tümü) canlı CD dağılımları yani hatırlamalıyız desteklemezbcache basitçe bakılmaksızın bu tür araçları ile verilere erişemez, böylece bcache- mdraidSeçtiğin düzeni seçeneği.


1
Bunu ben değilim temizlemek hale getirilecek soruyu güncelledik değil yedekli olmayan SSD önbelleğe sahip planlayan. İkinci mermi noktanız mükemmel bir nokta, bunun için teşekkürler. Uzay hakkında üçüncü merminiz: Yani parseli SSD'de saklayacağınız anlamına mı geliyor? senin son para, ben F20 kullanıyorum ama sonunda RHEL / CentOS7 veya Debian Jessie (bcache-tools kesim yaparsa) kullanacaktır.

@JackDouglas Reklam 3. madde işareti: Evet, aynen öyle. Ancak, baskılanmış SSD sürücüleri kullanmayı planladığınızdan, bu sizin için geçerli değildir.
Adam Ryczkowski

1
Hala aynısı çünkü sadece yansıtılmakla kalmayacak, aynı zamanda destek sürücüleri için RAID paritesini de saklamaları gerekecek. RAID, sizin fikriniz olduğunu düşündüğüm bcache altında yapıldığında durum böyle değil

Sanırım tam tersini kastediyorsunuz: SSD matris, tüm mdraid sürücüyü besliyorsa, dönen disklerin paritesini saklamak zorunda değildir.
Adam Ryczkowski

1
evet, demek istediğim bu!

1

Aklı başında yaklaşımın ortaya çıkan MD cihazını önbelleğe almak olduğunu düşünüyorum.

bcache sıralı okuma ve yazma işlemlerini tamamlamak için tasarlanmıştır.

Her cihazı ayrı ayrı mantıksal olarak önbelleğe alırsanız, baskın veya soyulmuş bir MD'ye şeritlenmiş birkaç cihaz, önbellek perspektifinden sürekli olarak rastgele bloklar yazacaktır.

Bcached MD birimi normal gibi görünse de, dosyaları birkaç cihaza rastgele bloklar yerine birime yazmak.

Sabit ve yazılım baskınının tüm amacı, sonuçta ortaya çıkan dosya sisteminin normal birime benzemesi için arka uçta veri şeritlemesi yapmaktır.

Bu doğru olmayabilir (bcache geliştiricileri akıllı olabilir ve bu tür bir durumu açıklayabilir), ancak yapılacak mantıklı en uygun şey birimleri engellemek yerine birimleri önbelleğe almaktır.


ayrıca çok iyi bir nokta

Bir RAID5 / 6'ya büyük bir ardışık yazma, tüm bileşen cihazlara sıralı yazma işlemleri üretir. Her bileşen cihazı her N-1 veri bloğunu (veya paritesini) alır, ancak aldığı veriler sıralıdır. Ama haklısın, bir şeyleri bozacak. Sıkça kısmi şerit yazmalarını gören ve parite şeridinin (değiştirilen bir parçasının) bir okuma-değiştirme-yazma ile sonuçlanan ve bcache tarafından önbelleğe alınabilen bazı parçalar varsa. Kısmi şeritli yazma MD cihazına çarpmadan önce daha yüksek önbellekleme, daha da iyi olurdu.
Peter Cordes
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.