Bozulmuş bir havuzu kurtarma
Bozulmuş (DEGRADED) bir havuz çalışmaktadır ancak yedekliliğini kaybetmiştir: aynı aygıt grubunda bir disk daha arızalanırsa veri kaybı yaşanır. Bu prosedürün tek bir amacı vardır: yol boyunca hiçbir şey kaybetmeden yedekliliği geri yüklemek. Burada hız önemlidir, ancak sıra daha da önemlidir: bir diski yanlış tanımlamak bir olayı veri kaybına dönüştürür.
vStack Center havuzun sağlık durumunu iki kaynaktan alır ve bunlar bir olay sırasında birbiriyle çelişebilir. vStack Center veritabanı envanter tarafından toplanan durumu saklar; arayüz ekranları bu durumu gösterir. Doğrudan düğüm sorguları veritabanını atlar: düğümleri o anda sorgular ve veritabanına hiçbir şey yazmaz. Bir olay sırasında doğrudan sorguya güvenin; ekranları ise kapasite bilgileri ve devam eden süreçlerin göstergeleri için kullanın.
| Kaynak | Nerede kullanılabilir | Ne sağlar | Ne zaman kullanılmalı |
|---|---|---|---|
| Doğrudan düğüm sorgusu | Yalnızca API üzerinden | Her öğenin durumuyla birlikte havuz ve aygıt ağacı | Olayı doğrulamak ve arızalı diski bulmak |
| ZFS'in bildirdiği havuz özellikleri | Havuz kartı, Properties bölümü | Kapasite, kullanılan kapasite, verimlilik ve havuzu barındıran düğüm | Belirli bir havuzun özelliklerini incelemek |
| vStack Center veritabanı | Storage Resources, ZFS pools tablosu | Sağlık, kullanılan kapasite, resilver ve scrub göstergeleri | Kurtarmanın devam edip etmediğini ve yeterli alan olup olmadığını belirlemek |
Düğüm belirtilmeden yapılan doğrudan bir sorgu, tüm küme düğümlerini aynı anda sorgular ve
yanıtları tek bir listede birleştirir. Kısmi yanıtlara izin verilir: erişilemeyen bir düğüm
UNAVAILABLE durumuyla ayrı bir kayıt olarak görünür ve sorgunun tamamının başarısız olmasına
neden olmaz. Bu, yanıtı okumak için önemli bir kurala yol açar: "düğüm yanıt vermedi" ile
"havuz arızalandı" farklı olaylardır ve birbirine karıştırılmamalıdır.
Yedekliliğin geri yüklenmesi planlı değişimle aynı işlemi kullanır: havuz yerine geçecek bir diske geçer, ardından resilver başlar. Veri kaybına karşı koruma bir olay sırasında da geçerlidir: vStack Center düğüme yerine geçecek diski sorar ve komutu yalnızca bu disk boşsa gönderir. Durumu bilinmiyorsa işlem reddedilir.
Göstergelerin yakılması dışındaki fiziksel disk işlemleri web arayüzünde kullanılamaz. Bir yönetici, havuzları doğrudan sorgulamak, bir diskin rolünü sorgulamak, bir diski yedek olarak işaretlemek, bir diski değiştirmek ve bir diski kümeden kaldırmak için API'yi kullanır — API başvurusuna bakın.
Ön koşullar
- Fiziksel disk işlemleri ve küme havuzlarının okunması için gerekli olan Cluster master rolü (role_id=1);
feature.physical_disc_managementbayrağı: bu bayrak olmadan doğrudan havuz sorguları, disk listesi, değişim, diskin yedek olarak işaretlenmesi ve göstergelerin yakılması dahil disk alt sistemi kullanılamaz;- Bozulmuş havuzla aynı düğümde yerine geçecek bir disk: boş veya yedek. Başka bir düğümdeki bir disk kullanılamaz;
- Bu havuzda başka bir değişim devam etmiyor olmalıdır: aynı anda havuz başına yalnızca bir değişim;
- vStack Center 3.0.5 sürümü.
Adım 1. Havuzun bozulmuş olduğunu doğrulayın
Önce bozulmanın gerçek olduğundan ve eski veritabanı bilgilerinden kaynaklanmadığından emin olun.
-
Provider Data Center → Storage Resources bölümünü açın. ZFS pools tablosu GUID, Name, Health, Consuming, Scrubbing, Resilvering, Current node ve Capacity (RAW) sütunlarını içerir. Health sütunu sağlıksız bir havuzu belirtir.
-
Havuzları API üzerinden doğrudan sorgulayın. Sorgu salt okunurdur ve tekrarlanması güvenlidir; ayrıca ekranın yanıtlamadığı bir soruyu yanıtlar: havuzun içindeki hangi aygıtın arızalandığı.
-
Yanıtı bir listeye düzleştirilmiş bir ağaç olarak okuyun.
Kayıt düzeyi Neyi tanımlar Ne kontrol edilmeli Bir düğümdeki havuz Havuzun tamamı Havuz adı, durum, düğüm Aygıt grubu Havuz içindeki bir grup, örneğin bir ayna (mirror) Grup durumu Aygıt Belirli bir disk Aygıt yolu ve durumu
Bir düğümü UNAVAILABLE durumunda gösteren bir kayıt, düğümün havuzunun arızalandığı anlamına
gelmez; düğümün sorguya yanıt vermediği anlamına gelir. Bu düğümü Server
Nodes tablosunun Health sütununda ayrıca kontrol edin; olay disklerle ilgili olmayabilir.
ZFS pools tablosundaki veriler veritabanından gelir; bu nedenle bir olay sırasında bunları doğrudan bir sorguyla karşılaştırın: ekran en son kaydedilen durumu gösteriyor olabilir.
Adım 2. Kurtarmanın zaten devam edip etmediğini belirleyin
Resilver zaten başlamışsa, örneğin havuz otomatik olarak bir yedek diski devreye aldığı için, müdahale etmek zarar verir.
- ZFS pools tablosunda ilgili havuzun Resilvering sütununu kontrol edin. 1 değeri "kurtarma devam ediyor" anlamına gelir: bitmesini bekleyin, ardından değişimin gerekip gerekmediğine karar verin.
- Havuzu açın ve Properties bölümünü okuyun: Capacity, Provisioned, Used ve Free. Aşırı dolu bir havuzun kurtarılması daha uzun sürer ve resilver için yeterli alan olmalıdır.
- Scrubbing değerini de kontrol edin: düğümde başlatılmış bir bütünlük denetimi de havuza yük bindirir.
Adım 3. Arızalı diski bulun
Doğrudan sorgu aygıt yolunu sağlar; ekranlar ise modeli, kasadaki konumu ve diskin sağlık durumunu sağlar. Bunları kesin olarak eşleştirin: kasası ve yuvasıyla tanımlanan fiziksel bir diski çıkaracaksınız.
- Anormal durumdaki doğrudan sorgu kaydından aygıt yolunu alın.
- Havuz kartının Pool Disks bölümünü (veya düğüm kartındaki Disks bölümünü) açın ve bu yolu Placement sekmesinde Device sütununda bulun. Yanındaki Enclosure_device, Enclosure_id ve Dev_index alanları diskin kasadaki konumunu verir.
- Modeli ve diskin sağlık durumunu Disk props sekmesinde Model, Size (GB) ve Status sütunlarında kontrol edin.
- Sunucu odasındaki mühendisin doğru yuvayı seçmesi için diskin göstergesini yakın. Düğüm kartının Disks bölümünde Front view veya Inner view sekmesine gidin. Her diskin orada konum ve arıza göstergesi düğmeleri vardır. Bir olay sırasında arıza göstergesi daha uygundur: açıkça "bu disk arızalandı" anlamını taşır.
- Göstergelerin yandığını LED on panel sekmesinde Led_fault ve Led_locate sütunlarında kontrol edin.
Doğrudan yanıttaki yol disk listesinde yoksa, diskin envanteri çıkarılmamıştır. cam sınıfı,
ardından ses için bir düğüm envanteri çalıştırın ve listeyi yeniden açın.
Adım 4. Havuzun içe aktarılmış olup olmadığını kontrol edin
Ayrı bir olay türü bozulmaya benzer ancak farklı bir çözüm gerektirir: havuz düğümde çalışmıyordur. Bir havuz kümede bir servis olarak çalışır. Servis durdurulmuşken küme havuzu göremez.
- ZFS pools tablosunda Current node sütununu kontrol edin: bu sütun havuzu şu anda hangi düğümün barındırdığını belirtir. Boş bir değer veya tabloda havuzun bulunmaması, havuz servisinin çalışmadığını gösterir.
- Tablodan havuzu açın ve Actions menüsünde Start pool öğesini seçin.
- Havuzun tabloda çalışıyor olarak göründüğünden emin olun, ardından doğrudan sorguyu tekrarlayın: havuz bu yanıtta da görünmelidir.
Servis izni ikinci, bağımsız bir özelliktir: devre dışı bırakılmış bir servis, kaç kez başlatmaya çalışırsanız çalışın başlamaz. Etkinleştirme ve devre dışı bırakma web arayüzünde kullanılamaz; bir yönetici bu işlemleri API üzerinden gerçekleştirir. Prosedür "Küme servislerini yönetme" sayfasında açıklanmıştır.
Kabul edilen bir komut, servisin fiilen başladığını değil, Cluster Manager'ın komutu aldığını doğrular. Havuz tablosu, düğüm geri bildirimde bulunduğunda gerçek durumu gösterir.
Adım 5. Yerine geçecek bir disk bulun veya hazırlayın
Düğümde boş bir disk bulunana kadar değişim başlamaz. Boş, "spare" veya "unused" rolü anlamına gelir. Veritabanındaki rol eski olabilir; bu nedenle doğrudan bir sorguyla doğrulayın.
- Adayları düğüm kartının Disks bölümünde bulun: ZFS props sekmesinde boş bir diskin Pool name ve Vdev_pool_name alanları boştur. Size (GB) değerini kontrol edin: yerine geçecek disk en az değiştirilen disk kadar büyük olmalıdır.
- Adayın rolünü düğümü API üzerinden doğrudan sorgulayarak güncelleyin: düğüm disk hakkında aygıt yoluna göre bilgi verir ve vStack Center güncel rolü kaydeder.
- Hiçbir disk açıkça yedek olarak işaretlenmemişse, boş bir diski API üzerinden yedek olarak işaretleyin. Düğüm, işlem zorlanmadıkça canlı veri içeren bir diskte bu işlemi reddeder. Bu bir koruma mekanizmasıdır.
- Disk listesini yeniden okuyun ve yerine geçecek diskin Pool name alanının boş olduğundan emin olun.
Boş görünse bile başka bir havuzdaki bir diski yerine geçecek disk olarak kullanmayın. Koruma komutu -24907 koduyla reddeder, ancak rolü çağrıdan önce kontrol etmek, bir olay sırasında bir reddi araştırmaktan daha kolaydır.
Adım 6. Değişimi başlatın
Bir yönetici değişimi API üzerinden gerçekleştirir. Tüm denetimler komut düğüme gönderilmeden önce yapılır: geçersiz bir çağrı diske ulaşmaz.
Şunları hazırlayın:
- Arızalı diski ve yerine geçecek diski içeren düğüm;
- ZFS pools tablosundaki Name sütunundan havuz adı;
- Doğrudan sorgudan arızalı aygıtın yolu;
- Arızalı aygıtın yolundan farklı olması gereken yerine geçecek diskin yolu.
Kabul edilen bir komut "düğüme gönderildi" anlamına gelir. Fiili sonuç düğümün yanıtıyla gelir: başarılı olursa yerine geçen disk havuz üyesi olarak işaretlenir; başarısız olursa bir hata döndürülür ve eski disk otomatik olarak arızalı olarak işaretlenmez.
Aynı komutu yeniden göndermeyin. Aynı havuzdaki ikinci bir değişim -24906 koduyla, aynı diskteki ikinci bir yıkıcı işlem ise -24504 koduyla reddedilir.
Adım 7. Yedekliliğin geri yüklenmesini bekleyin
Kurtarma düğümde çalışır; vStack Center yalnızca onu gösterir. İki yeri kontrol edin: doğrudan sorgudan gelen güncel ağaç durumunu ve havuzlar ekranındaki süreç göstergesini.
- ZFS pools tablosunda Health ve Resilvering sütunlarını izleyin. Resilvering sütunundaki 1 değeri kurtarmanın devam ettiği anlamına gelir; sağlıklı bir Health değeriyle birlikte 0 ise tamamlandığı anlamına gelir.
- Bu düğüm için doğrudan sorguları tekrarlayın. Başarı, yerine geçen diskin yolunun eski yolun yerini aldığı ve havuz ile aygıt grubu durumlarının normale döndüğü anlamına gelir.
- Havuz üyeliğini havuz kartında, Pool Disks bölümünün Placement sekmesinde doğrulayın.
Havuz sağlıklı bir duruma dönene kadar onu savunmasız kabul edin: yedeklilik henüz geri yüklenmemiştir ve aynı aygıt grubundaki bir arıza daha veri kaybına neden olur.
İşin tamamlanması
- Göstergeleri söndürün: düğüm kartı → Disks bölümü → Front view veya Inner view sekmesi. Sonucu LED on panel sekmesinde kontrol edin.
- Arızalı diski fiziksel olarak çıkarmadan önce kümeden kaldırın. Bu işlem seri numarası veya aygıt yoluyla API'yi kullanır. Havuzun artık bu diski kullanmadığını doğrudan bir sorguyla doğrulayın.
- Yedek disk rezervini geri yükleyin. Yerine geçen disk artık havuzdadır ve düğümde yedek kalmamıştır: yeni bir diski kümede çevrimiçi yapın ve yedek olarak işaretleyin.
- Fiziksel değişikliklerden sonra envanteri güncelleyin:
sessınıfı, ardındancamiçin bir düğüm envanteri çalıştırın. Aksi takdirde disk listesi, çıkarılan disk için eski bir Last_seen değerine sahip bir kaydı tutmaya devam eder. - Havuzun
autoreplaceözelliğini API üzerinden okuyun. Bu özellik devre dışıysa, yedek disk otomatik olarak devreye alınmaz ve bir sonraki değişimin de yine elle başlatılması gerekir.
Sonucun doğrulanması
| Ne kontrol edilmeli | Nereye bakılmalı | Beklenen sonuç |
|---|---|---|
| Havuz yedekliliğini yeniden kazanmış | Storage Resources, Health sütunu | Havuz sağlıklı olarak gösteriliyor |
| Havuz yerine geçen diski kullanıyor | API üzerinden doğrudan sorgu | Yerine geçen diskin yolu arızalı aygıtın yolunun yerini almış |
| Resilver tamamlanmış | Storage Resources, Resilvering sütunu | Sağlıklı bir Health değeriyle birlikte 0 değeri |
| Yerine geçen disk havuz üyesi olarak kaydedilmiş | Havuz kartı, Pool Disks → ZFS props | Yerine geçen diskin Pool name ve Vdev_pool_name alanları dolu |
| Arızalı disk kümeden kaldırılmış | API üzerinden | "Kümede çevrimiçi" bayrağı temizlenmiş |
| Göstergeler sönük | Disks bölümü → LED on panel | Led_fault ve Led_locate kapalı |
| Yedek disk rezervi geri yüklenmiş | API üzerinden | Düğümde "spare" rolüne ve boş Pool name alanına sahip bir disk var |
| Tüm düğümler yanıt veriyor | API üzerinden doğrudan sorgu | Yanıt UNAVAILABLE durumunda hiçbir kayıt içermiyor |
Bir sorun çıkarsa
| Ne görüyorsunuz | Neden | Ne yapmalı |
|---|---|---|
Doğrudan sorgu yanıtında bir düğüm UNAVAILABLE durumunda | Düğüm sorguya yanıt vermedi. Bu, bozulmuş bir havuza işaret etmez | Düğümü Server Nodes tablosunda kontrol edin; olay disklerle ilgili olmayabilir |
| Hata kodu -25003 | Tüm düğümler sorgulanırken küme düğüm listesi alınamadı | Düğümleri tek tek sorgulayın ve Cluster Manager'ın erişilebilirliğini kontrol edin |
| Hata kodu -24907 | Yerine geçecek disk boş değil: rolü ne "spare" ne de "unused" | Başka bir disk seçin veya bu diski boşaltın; rolü doğrudan bir sorguyla güncelleyin |
| Hata kodu -24908 | Yerine geçecek diskin durumu belirlenemedi: düğüm yanıt vermedi veya istek zaman aşımına uğradı | Değişim kasıtlı olarak reddedildi. Düğüme bağlantıyı kontrol edin ve diski yeniden sorgulayın |
| Hata kodu -24906 | Bu havuzda zaten bir değişim devam ediyor | Mevcut değişimin bitmesini bekleyin: havuz başına bir değişim |
| Hata kodu -24905 | Arızalı aygıt ile yeni aygıt aynı | Farklı aygıtlar belirtin |
| Hata kodu -24902 | Havuz boş veya düğümde mevcut değil | Havuz içe aktarılmamış olabilir. Current node değerini kontrol edin ve havuzu Actions menüsünden başlatın |
| Hata kodu -24903 | Arızalı aygıtın yolu belirtilmedi | Doğrudan sorgudaki yolu kullanın |
| Hata kodu -24904, -24502, -24402, -24803 | Aygıt yolu biçimi doğrulaması başarısız oldu | /dev/daN biçiminde bir yol kullanın |
| Hata kodu -24504 | Diskte zaten yıkıcı bir işlem devam ediyor | Düğümün yanıtını bekleyin: aynı diskte iki yıkıcı işlem çalışamaz |
| Hata kodu -24503 | Disk zaten yedek olarak işaretlenmiş | Yeniden denemeye gerek yok; diskin rolünü kontrol edin |
| Hata kodu -24307, -24316 | Kasa adı biçimi hatalı veya kasa bulunamadı | /dev/sesN biçiminde bir ad kullanın; bilgiler farklıysa kasa envanterini yeniden toplayın |
| Hata kodu -24311, -24313, -24315 | Gösterge değeri ne 0 ne de 1 veya hiçbir gösterge belirtilmedi | 0 veya 1 değerine sahip en az bir gösterge belirtin |
| Hata kodu -25002, -24901, -24501, -24401, -24301, -24201, -24801 | feature.physical_disc_management bayrağı devre dışı | Küme seçeneklerinde fiziksel disk yönetimini etkinleştirin |
| Hata kodu -403 | İşlem yalnızca Cluster master rolü için kullanılabilir | Küme düzeyinde bir rolle oturum açın |
| Hata kodu -29 | Havuz haritası veritabanından alınamadı | Doğrudan sorgulara güvenin: veritabanı şu anda kullanılamıyor |
| Hata kodu -20512, -20522, -713 | Servis adı veya düğüm doğrulaması başarısız oldu ya da komut Cluster Manager'a ulaşmadı | Name sütunundaki havuz adını kullanın ve Cluster Manager'ın erişilebilirliğini kontrol edin |
| Komut kabul edildi, ancak durum değişmiyor | Komut yalnızca düğüm aracısına iletildi | Ekranları yeniden açın ve doğrudan sorguyu tekrarlayın; sonuç düğümün yanıtıyla gelir |
| Doğrudan sorgu "sağlıklı", ZFS pools tablosu ise "bozulmuş" bildiriyor | Veritabanı bilgileri eski: envanter bunları günceller | Doğrudan sorguya güvenin; ana bilgisayar verilerini toplayarak veritabanını güncelleyin |
| Değişim başarılı oldu, ancak havuz bozulmuş durumda kalıyor | Havuzda birden fazla disk arızalanmış veya başka bir aygıt grubunda arıza var | Doğrudan sorgudan ağacın tamamını yeniden okuyun ve kalan arızalı aygıtları birer birer değiştirin |
| Havuz bozulmuş, ancak ağaçta arızalı disk yok | Havuz, bir disk yerine bir düğüm nedeniyle bazı aygıtlara erişimini kaybetmiş olabilir | Düğüm durumlarını ve havuz servisini kontrol edin; disk değişimi gerekmez |
Kısıtlamalar
vStack Center'dan bir havuz bütünlük denetimi başlatamazsınız; bu işlem kullanılamaz. Scrubbing sütunu yalnızca düğümde başlatılmış bir sürecin çalışıp çalışmadığını bildirir.
Doğrudan sorgulardan elde edilen güncel havuz sağlık durumu vStack Center veritabanına yazılmaz: doğrudan bir sorgu, çağrı anındaki durumu döndürür. Bozulma olaylarının geçmişini sağlayamaz.
Resilver ilerlemesi yüzde olarak kullanılamaz; yalnızca işlemin devam edip etmediğini gösteren bir gösterge vardır. Süreyi Properties bölümündeki havuz boyutundan tahmin edin.
Ayrıca bkz.
- Disk hâlâ çalışırken uygulanan planlı prosedür — "Bir düğümde planlı disk değişimi".
- Depolama katmanı modeli ve havuz durumunun kaynakları — "Depolama havuzları".
- Havuz haritası, havuz sayfası ve doğrudan düğüm sorguları — "Küme havuzlarını görüntüleme".
- Havuz servisleri ve düğüm atamaları — "Küme servislerini yönetme".
API yöntemleri
Bu sayfadaki API işlemleri: pd-pools-status, pd-list, pd-status-map,
pd-led, pd-info, pd-spare, pd-replace, pd-use, pd-unuse, pool-map,
pool-map-by-guid, pools-list, pools-get, get-statusmap, node-list,
node-inventory, host-inventory, cluster-service-enable,
cluster-service-start — API başvurusuna bakın.