Flash Sanallaştırma Platformu'nun (FVP) temel öğeleri, bölüm 2. Kendi platformunuzu veya dosya sisteminizi kullanma

Satyam ve Murali Vilayannur ile tartıştığım konulardan biri, flash cihazlarda veri depolamak için kullanılan dosya sistemi idi. Aşağıdaki dikkate değer gerçekler akılda tutulmalıdır: Satyam VMFS3'ü yarattı, Murali, VMFS5'in lider geliştiricisi oldu. Bu açıdan VMFS kullanımı açık görünecektir. Ancak benim için en büyük sürpriz, flash cihazlarda VMFS kullanmadığımız, daha da büyük bir sürpriz, dosya sistemini hiç kullanmadığımızdı.

Neden VMFS değil?
Dosya sistemleri, gerekmeyen ve hatta bazen flash cihazlarda etkin I / O işleyen platformun gereklilikleriyle çakışan özellikler sağlar. Bir flash cihazda VMFS'ye benzer bir dosya sistemi kullanmayla ilgili en büyük sorunlardan biri, SAN depolama sistemleri ve veri yönetimi modelleri için optimize edilmiş olmasıdır; Satyam, VMware'de çalışırken ACM için bu konuda bir makale yazdı. Ne yazık ki, bu dosya sistemini FVP görevleri için uygun olmayan bir araç yapar.

Doğrudan adres dosya sistemleri, flash aygıtlarını aşırı yükler, ömrünü kısaltır, keyfi G / Ç işlemlerini en uygun şekilde işlemezler, (genellikle çok kırılgan) çöp toplama algoritmalarını mukavemet açısından test ederler ve nesneleri (dosyalar ve dizinler) için daha az uygundur sanal makine seviyesi ve FVP görevleri için son derece önemli olan hizmet yönetimi kalitesi. Bir sonraki bölüm, flash cihazlardaki verileri yönetme sorununu detaylandıracak, ancak şimdilik kısa bir sonuç: eğer flash cihazınız sizin için pahalıysa, üzerine doğrudan bir adresleme dosya sistemi koymayın.

Dosya sistemleri ayrıca FVP'nin gereksinimlerini büyük ölçüde aşan yetenekler de sağlar. Örneğin, disk kilitlenir. VMFS, farklı ESXi ana bilgisayarlarının disklere erişimini kontrol eden gelişmiş bir dağıtılmış kilitleme yöneticisine sahiptir. FVP, ana bilgisayarın yerel disklerini yönetir ve diğer ana bilgisayarlara kilit gerektirmez, bunun sonucunda dağıtılmış kilit yöneticisi tamamen gereksiz hale gelir. Aynı POSIX uyumluluğu ve dağıtılmış işlemler için de söylenebilir. Ve benzeri.

Düşük seviye flaş işlemleri
Flash aygıtlara yazmanın, sabit disklerdeki kayıtlardan temel olarak farklı olduğuna bir örnek. Flash mevcut verilerin üzerine yazılamıyor. Flash bellekteki veriler yalnızca boş bir sayfaya yazılabilir. Flash belleğin bir özelliği, kaydın sayfalar tarafından yapılabilmesi ve silme işleminin yalnızca bloklar halinde yapılabilmesidir. Sayfa nedir ve blok nedir? Flash, verileri hücrelerde depolar; hücreler sayfalara birleştirilir (4 KB); sayfalar bloklar halinde gruplandırılmıştır. Çoğu üretici 128 sayfayı bir blokta birleştirir. Sayfayı silmek istiyorsanız, tüm bloğu silmeniz gerekir. Diğer sayfalardan gerekli tüm veriler başka bir yere kaydedilmelidir. Flaş cihazlarının sınırlı sayıda yazma ve silme döngüsüne sahip olduğu bilinmektedir.

Sonuç olarak, rastgele bir G / Ç yazması düşündüğünüzden daha büyük bir etkiye sahip olabilir. Sorun şu ki, çoğu dosya sistemi 80'li ve 90'lı yıllarda geliştirildi ve o zamandan beri ilerleme kaydetmedi. Dosya sistemleri, sabit diskler için tasarlanan düşük seviyeli işlemleri kullanarak aygıtları flaş etmelerine neden oldukları performans düşüşünü dikkate almaz; Çoğu flash cihaz üreticisi, aşamalı performans düşüşünü hesaba katan çeşitli mekanizmalar uygular. Birkaç şema yardımıyla, bu mekanizmaları göz önünde bulunduruyoruz ve parçalanmanın neden flaş aygıtları üzerinde böyle bir etkisi olduğunu buluyoruz.

Aşınma yönetimi
Basitlik için, blok başına 128 sayfa yerine bir blokta 9 sayfa göstermeye karar verdim.

Aşınma yönetimi süreciyle başlayalım. Bu örnekte, uygulama verileri zaten oluşturmuş ve A, B ve C sayfalarında blok 1'de kaydetmiştir (Adım 1). D, E ve F sayfalarına yazılan yeni veriler (Adım 2) gelir. Uygulama önceki verileri (AC) günceller ve önceki sayfaları kullanmak yerine, flaş cihazı yeni sayfaları kullanmaya devam eder. Bu yeni veri A-1, B-1 ve C-1 olarak etiketlenmiştir. Kayıtların mümkün olduğunca eşit bir şekilde dağıtılması “aşınma yönetimi” olarak adlandırılır. Eski sayfalar artık süresi dolmuş olarak işaretlendi.

Çöp toplama ve çoklu giriş
Bu örnekte, A bloğu doludur, kullanıcının kayıt için kullanabileceği alan biterse ve yeni veriler gelirse ne olur?

Flash, mevcut verileri boş hücrelere kopyalar. Bloktaki gerçek veriler okunur ve başka bir bloğa yazılır. Geciken veriler sayfalarında kalır ve blok sayfaların geri kalanıyla birlikte silinir. Bu sürece "çöp toplama" denir.

Çöp toplama iyi, ancak çalışması sırasında gerçekleşen çoklu giriş, flaş aygıtlarına ciddi zararlar veriyor. 3 sayfa kaydetmek için, flash cihaz 6 sayfa okumalı ve yeni veri yazmadan önce 6 sayfayı başka bir yere yazmalıdır. Silme döngüsünü de unutmayın. Diskin dolu olduğu bir senaryo olduğunu varsayalım, yeni verileri kaydetmeden önce verileri (geçici olarak) nereye taşıyacağız? Diyagramımda bu seçenek için B bloğunu ekledim. Bunu gerçek bir durumda yapmak için (dosya sistemini kullanırken), kontrolör flaşı için ayrılan fazla boşluğu ayırmanız gerekir.

Bunu gerçek bir durumda yapmak için (dosya sistemini kullanırken), kontrolör flaşı için ayrılan fazla boşluğu ayırmanız gerekir

Fazla alan
Bir flaş denetleyicisi tarafından yönetilen işlemler için flaş kapasitesi ayrılabilir. Bu, hem flaş aygıtının üreticisi hem de kullanıcı tarafından yapılabilir. Örneğin, 160 GB flash PCIe hızlandırıcı satın aldığınızda, aslında 192 GB kart alıyorsunuz. Kullanıcı için 160 GB mevcuttur ve ayrıca atık toplama, hata düzeltme ve denetleyici ürün yazılımı gibi flaş seviyesi denetleyici düzeyinde işlemler için 32 GB ayrılmıştır. Endüstriyel olmayan bir SSD sürücüsü satın aldığınızda, genellikle biraz daha fazla alan ayırırsınız. Bu flash cihazını herhangi bir dosya sisteminde biçimlendirirken, bu özelliklerin farkında olmalı ve muhtemelen mevcut kapasitenin dışında ilave yer ayırmalısınız. Şu anda standart bir ölçeklendirme önerisi yoktur, bu nedenle kendi deneyimlerinize dayanarak seçimler yapmak zorundasınız. En kötü durumda, kendinizi parçalı bir diskle bulacaksınız ve SSD'nin sürekli yeni veri yazmak için veri aktarması gerekecek. Çocukların etiket oynayan hayal edin, sadece hareket düzeni biraz daha karmaşıktır.

Flash cihazlarda veri yönetimini yeniden değerlendirme
PernixData mühendisleri, FVP için flaş aygıtlarındaki verileri yönetmek için yeni bir format geliştirdi. Detaylar aşağıdaki makalelerde ve şimdi birkaç temel noktada açıklanacaktır.

Flaş için optimize edilmiş
Biçim, geçici G / Ç verilerini mümkün olan en düşük meta veri kümesiyle saklamak ve bunun için maksimum kullanılabilir performansa sahip bir flaş aygıtıyla çalışmak üzere tasarlanmıştır. Sıralı yazma modunda daha yüksek flaş performansından yararlanmak için rasgele girişleri ardışık girişlere dönüştürür. Bu, gereksiz verilerin üzerine yazma sayısını ve döngüleri silme sayısını azaltır. Ve algoritma, büyük blok boyutları, dizinler, dosyalar, uzun işlemler, kilit yöneticileri gibi dosya sistemlerinin kalıtsal sınırlamalarını içermez.

Sanal makineler arasında dinamik olarak paylaşılan kapasite
teşekkürler derin entegrasyon VMkernel ile FVP, veri bloklarını izleyebilir ve sanal makinelerinin okuma veya yazma olup olmadığını belirleyebilir. Bu tür işlemleri bağımsız olarak takip eden platform, sanal makine için ayrılan alanda tamponları ölçeklendirebilir ve yazabilir. FVP, rasgele bir dizi sanal makine verisini önbellekten önbelleğe alabilir veya silebilir. Buna karşılık, bir flash cihaz için geleneksel dosya sistemindeki veri tahliye politikası yetersiz olabilir ve o zamandan beri birden çok yeniden yazma ile sonuçlanacaktır. dosya sistemi sadece dosyanın sonuna veri yazabilir veya blokları sondan silebilir.

Ayrıca, doğrudan adresleme özellikli bir dosya sistemi kullanıyorsanız, her sanal makine için statik önbellek alanı yapılandırması atamanıza gerek kalmayacağı anlamına gelir. Bu bizim için büyük bir karardı; Üründen gelen kullanıcı deneyimi mümkün olduğunca sezgisel olmalıdır.

Ürün yöneticimiz Bala'ya, "Ürünün zarafeti, bence, kullanıcının herhangi bir şekilde yeni veya olağandışı bir işlem yapmasını GEREKMEZ."

Günlük işler açısından bu mükemmel: Her sanal makine için önbelleği ölçeklendirmenize gerek yok. Bu, gelecekteki flaş kullanımını bilmeniz ve öngörmeniz gerekmediği anlamına gelir - FVP sizin için her şeyi yapar. Sert bir kaynak tahsisinin olmayışı, boş sanal makineler tarafından flaşın yeterince kullanılmaması ve flash önbellek boyutunun yetersiz olduğu aktif sanal makineler için yedek blok temizleme çevrimlerinin ortaya çıkması anlamına gelir. Bu, çoklu kayıt sorununu en aza indirir ve flaş cihazlarının maksimum performans ve güvenilirliğini sağlar.

Orijinal makale .

2016'dan beri FVP satıştan çekildi.

Neden VMFS değil?
Sayfa nedir ve blok nedir?
Diskin dolu olduğu bir senaryo olduğunu varsayalım, yeni verileri kaydetmeden önce verileri (geçici olarak) nereye taşıyacağız?