Ana içeriğe geç

Depolama havuzları

Sorun ve neden önemli olduğu​

Hiper yakınsak bir kümede harici bir depolama sistemi yoktur. Diskler, sanal makineleri çalıştıran sunucuların içine takılır ve yazılım tanımlı depolama katmanı (SDS) bu diskleri havuzlarda birleştirir. Bir havuz yedeklilik, sıkıştırma ve tekilleştirme sağlar ve kümenin tüm verilerini depolar.

Bu durum yöneticiler için pratik bir soru doğurur: bir havuz yalnızca "kullanım yüzdesi olan bir disk" değil, iki farklı kapasitesi, dört durum bayrağı ve tüm küme düğümlerinde diskleri olan bir nesnedir. Bu modeli anlamadan arayüzdeki sayıları yanlış yorumlayabilirsiniz: ham kapasite kullanılabilir kapasite sanılır, sanal makine disklerinin toplam boyutu ise kullanılan alan sanılır.

Bu sayfa modeli açıklar. Havuzları görüntülemek için Küme havuzlarını görüntüleme sayfasına; dataset özellikleriyle çalışmak için Dataset özelliklerini görüntüleme ve değiştirme sayfasına bakın.

Model ve varlıklar​

Küme depolama katmanı üç düzeyden oluşur.

Diskler ve havuz. Havuz, ZFS tarafından birleştirilmiş bir disk grubudur. Tek bir düğümün değil, tüm küme düğümlerinin disklerinden oluşur ve yedekliliği kümenin yedekliliğiyle eşleşir. Bu nedenle bir diskin kaybı, tek bir sanal makineyi etkileyen bir olay değil, havuz düzeyinde bir olaydır. Disklerin havuzlara dağılımı, ortaya çıkan RAID-Z düzeyi ve uyumlu diskler vStack OS belgelerinde açıklanmıştır: Depolama diskleri ve havuzlar.

Bir havuzun bir adı (name), kalıcı bir tanımlayıcısı (guid) ve şu anda ona hizmet veren düğümün numarası (node_id) vardır; bu, kümenin havuza şu anda üzerinden eriştiği düğümdür. Arayüzde bu, Current node sütunudur. Havuzun diskleri bu düğüme ait değildir: tüm düğümlere dağıtılmıştır ve her havuz diskinin kendi düğüm numarası vardır.

Dataset. Bir havuz içinde sanal makine diskini barındıran birimdir. pool-a/vm-100-disk-0 gibi tam bir adla ve kendi GUID'siyle adreslenir. Dataset özellikleri (sıkıştırma, tekilleştirme, birim boyutu, sağlama toplamları) havuz özelliklerinden ayrı saklanır ve ayrı yöntemlerle değiştirilir.

VarlıkAdreslendiği değerSahibi
Havuzguid veya nodeId (hizmet veren düğüm) + name çiftiküme
Datasetdisk guidhavuz

Nasıl çalışır​

vStack Center depolama katmanında veriye giden iki bağımsız yol vardır ve aralarındaki fark beklenmedik yanıtların çoğunu açıklar.

Birinci yol, vStack Center veritabanındaki havuz haritasıdır. Küme dağıtıcısı tüm havuz durumlarının bir kopyasını tutar ve isteklere anında, eşzamanlı olarak yanıt verir. Harita bir düğüm yanıt vermediğinde bile kullanılabilir, ancak güncel durumu değil, en son yakalanan durumu gösterir.

İkinci yol, düğüme canlı sorgudur. İstek, ilgili düğümdeki Storage ajanına aktarılır. Önce {"message": "relayed"} ara yanıtı gelir, ardından ajandan geri çağrı (callback) yoluyla nihai yanıt gelir. Canlı yöntemler ZFS özelliklerinin tam kümesini sağlar, ancak yanıt vermeyen bir düğüm veri yerine hata anlamına gelir.

İhtiyacınız olanYöntemModVeri kaynağı
Düğüme göre gruplanmış tüm havuzlarpool-mapeşzamanlıvStack Center veritabanı
Kapasite ve durumuyla tüm havuzlarpool-map-by-guideşzamanlıvStack Center veritabanı
Bir düğümün hizmet verdiği havuzlarpools-listeşzamansızDüğümün Storage ajanı
Bir havuzun tam özellikleripools-geteşzamansızDüğümün Storage ajanı
Dataset özelliklerifilesystems-geteşzamansızDüğümün Storage ajanı
Dataset özelliklerini değiştirmefilesystems-seteşzamansızDüğümün Storage ajanı

Havuzun iki kapasitesi​

Yedi alan havuz kapasitesini tanımlar ve bunları karıştırmak pahalıya mal olabilir: ham ve kullanılabilir kapasite arasındaki fark, yedekliliğe ayrılan paydır.

AlanNe gösterir
size_rawHam kapasite: havuz disklerinin kapasitelerinin toplamı
sizeKullanılabilir kapasite: size_raw eksi yedekliliğe ayrılan pay
usedVerilerin kullandığı alan
freeKalan kullanılabilir kapasite: size eksi used
capacity_pctYüzde olarak havuz kullanımı
provisionedHavuzdaki tüm dataset'lerin talep edilen boyutlarının toplamı
provisioned_pctprovisioned değerinin kullanılabilir kapasiteye oranı, yüzde olarak

Dataset'ler ince hazırlama (thin provisioning) kullanır: talep edilen birim boyutu hemen ayrılmaz. Bu nedenle provisioned talep edilen boyutlardan hesaplanırken used gerçek kullanımı yansıtır ve ilk sayı ikinciyi kolayca aşabilir. 100'ün üzerindeki bir provisioned_pct değeri aşırı tahsisi (overcommitment) gösterir: havuzun dataset'leri, havuzun kullanılabilir kapasitesinden daha fazla alan talep etmiştir. Bu tek başına acil bir durum değildir, ancak bu noktadan itibaren havuz kullanımını kalan kotalarla değil, capacity_pct ile izleyin.

Dört durum bayrağı​

AlanAnlamı
healthHavuz durumu; sağlıklı bir havuz için ONLINE
consumingKüme havuzu etkin veri depolaması için kabul etmiştir (1 / 0)
scrubbingVeri bütünlüğü denetimi sürüyor (1 / 0)
resilveringDisk değişiminden sonra yedeklilik geri yükleniyor (1 / 0)

Bu alanlarla birlikte harita, havuzun erişilebilir olduğu ağ adresi olan lif değerini de döndürür.

consuming bayrağı havuza yazmayı denetler. Küme, değeri 0 olan bir havuza veri yazmaz ve yazma gerektiren işlemler reddedilir: sanal makine anlık görüntülerini oluşturma ve silme, bir anlık görüntüye geri alma, yedek gönderme, açıkça seçilmiş bir havuzda makine oluşturma, kaynak havuzu kullanarak makine klonlama, makine diskini silme ve yedek dataset'leri üzerindeki işlemler. Sanal makine çalışırken böyle bir işlem başarısız olursa, nedeni makinenin kendisinde aramadan önce havuzunun consuming değerini denetleyin. Disk ekleme ve genişletme bu bayrağı denetlemez.

Kim neyi görebilir​

İki düzeyin görünürlük kapsamları farklıdır. Bu bir ayar değil, yöntemlerin bir özelliğidir.

Havuz küme düzeyinde bir nesnedir. Canlı havuz yöntemleri (pools-list, pools-get) yalnızca global Cluster master rolü tarafından kullanılabilir. Havuz haritasını (pool-map) iki global rol okuyabilir: Cluster master ve Resource Viewer. Bir VDC (sanal veri merkezi) yöneticisi havuzu göremez: havuzun sahibi olan bir VDC yoktur ve tek bir havuz farklı VDC'lerin dataset'lerini barındırır. İstisna pool-map-by-guid yöntemidir: kanonik API belgeleri bu yönteme erişimi belirtmez.

Dataset, VDC düzeyinde bir nesnedir. Özellikleri okuma (filesystems-get) ve değiştirme (filesystems-set) VDC yöneticisi rolü ve üzeri tarafından ve yalnızca kendi VDC'leri içinde kullanılabilir. Dataset sahipliği düğüme başvurulmadan önce denetlenir ve başka bir VDC'ye ait bir dataset, var olmayan bir dataset ile aynı hata koduyla reddedilir: başka bir VDC'de bir dataset'in varlığı açığa çıkarılmaz. Global bir rol herhangi bir VDC'deki dataset'lerle çalışabilir.

Sınırlamalar​

Havuz düzeyinde küme API'si salt okunurdur. Depolama grubunda havuz oluşturma, silme veya genişletme yöntemleri yoktur; bir harita, bir liste ve özellikler sağlar. Bir istek bunu aşamaz: bu düzeydeki depolama katmanında tek yazma işlemi, filesystems-set aracılığıyla dataset özelliklerini değiştirmektir.

Canlı havuz yöntemleri tek bir düğümden geçer. Herhangi bir anda bir havuzun hizmet veren tek bir düğümü vardır ve istek ona aktarılır. Bu nedenle erişilemeyen bir düğüm, havuz özellikleri yerine bir aktarma hatası üretir. Geçici çözüm: arayüzdeki havuz tablosunu görüntüleyin; tablo vStack Center veritabanından yanıt verir ve düğüm erişilemez olduğunda da kullanılabilir kalır, ancak en son yakalanan durumu gösterir.

Dataset özellikleri bir özellik bayrağıyla (feature flag) denetlenir. Kümede filesystem_options özelliği etkinleştirilene kadar arayüzdeki dataset özellikleri formu açılmaz ve filesystems-set bir hata döndürür.

Depolama katmanları (tier) yoktur. Platform "SSD önbellek artı sabit disk kapasitesi" düzenini desteklemez ve ayrı bir "yavaş" havuz da oluşturulamaz; disk gereksinimleri için vStack OS belgelerine bakın.