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ık | Adreslendiği değer | Sahibi |
|---|---|---|
| Havuz | guid veya nodeId (hizmet veren düğüm) + name çifti | küme |
| Dataset | disk guid | havuz |
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 olan | Yöntem | Mod | Veri kaynağı |
|---|---|---|---|
| Düğüme göre gruplanmış tüm havuzlar | pool-map | eşzamanlı | vStack Center veritabanı |
| Kapasite ve durumuyla tüm havuzlar | pool-map-by-guid | eşzamanlı | vStack Center veritabanı |
| Bir düğümün hizmet verdiği havuzlar | pools-list | eşzamansız | Düğümün Storage ajanı |
| Bir havuzun tam özellikleri | pools-get | eşzamansız | Düğümün Storage ajanı |
| Dataset özellikleri | filesystems-get | eşzamansız | Düğümün Storage ajanı |
| Dataset özelliklerini değiştirme | filesystems-set | eşzamansız | Düğü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.
| Alan | Ne gösterir |
|---|---|
size_raw | Ham kapasite: havuz disklerinin kapasitelerinin toplamı |
size | Kullanılabilir kapasite: size_raw eksi yedekliliğe ayrılan pay |
used | Verilerin kullandığı alan |
free | Kalan kullanılabilir kapasite: size eksi used |
capacity_pct | Yüzde olarak havuz kullanımı |
provisioned | Havuzdaki tüm dataset'lerin talep edilen boyutlarının toplamı |
provisioned_pct | provisioned 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ğı
| Alan | Anlamı |
|---|---|
health | Havuz durumu; sağlıklı bir havuz için ONLINE |
consuming | Küme havuzu etkin veri depolaması için kabul etmiştir (1 / 0) |
scrubbing | Veri bütünlüğü denetimi sürüyor (1 / 0) |
resilvering | Disk 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.
Sırada ne okunmalı
- Küme havuzlarını görüntüleme: havuz tablosu, havuz sayfası ve havuzun disklere göre dökümü.
- Dataset özelliklerini görüntüleme ve değiştirme: ZFS özelliklerini okuma ve sıkıştırmayı değiştirme.
- Depolama yöntemlerinin alanları ve hata kodları: yanıt alanları ve hata kodlarının açıklamaları.
- Disk arızasından sonra havuzu kurtarma: "Prosedürler" bölümünde.