Ana içeriğe geç

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.

KaynakNerede kullanılabilirNe sağlarNe zaman kullanılmalı
Doğrudan düğüm sorgusuYalnızca API üzerindenHer öğenin durumuyla birlikte havuz ve aygıt ağacıOlayı doğrulamak ve arızalı diski bulmak
ZFS'in bildirdiği havuz özellikleriHavuz kartı, Properties bölümüKapasite, kullanılan kapasite, verimlilik ve havuzu barındıran düğümBelirli bir havuzun özelliklerini incelemek
vStack Center veritabanıStorage Resources, ZFS pools tablosuSağlık, kullanılan kapasite, resilver ve scrub göstergeleriKurtarmanı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_management bayrağı: 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.

  1. 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.

  2. 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ığı.

  3. Yanıtı bir listeye düzleştirilmiş bir ağaç olarak okuyun.

    Kayıt düzeyiNeyi tanımlarNe kontrol edilmeli
    Bir düğümdeki havuzHavuzun tamamıHavuz adı, durum, düğüm
    Aygıt grubuHavuz içindeki bir grup, örneğin bir ayna (mirror)Grup durumu
    AygıtBelirli bir diskAygı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.

  1. 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.
  2. 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.
  3. 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.

  1. Anormal durumdaki doğrudan sorgu kaydından aygıt yolunu alın.
  2. 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.
  3. Modeli ve diskin sağlık durumunu Disk props sekmesinde Model, Size (GB) ve Status sütunlarında kontrol edin.
  4. 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.
  5. 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.

  1. 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.
  2. Tablodan havuzu açın ve Actions menüsünde Start pool öğesini seçin.
  3. 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.

  1. 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.
  2. 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.
  3. 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.
  4. Disk listesini yeniden okuyun ve yerine geçecek diskin Pool name alanının boş olduğundan emin olun.
uyarı

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.

  1. 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.
  2. 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.
  3. 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ı​

  1. 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.
  2. 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.
  3. 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.
  4. Fiziksel değişikliklerden sonra envanteri güncelleyin: ses sınıfı, ardından cam iç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.
  5. 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 edilmeliNereye bakılmalıBeklenen sonuç
Havuz yedekliliğini yeniden kazanmışStorage Resources, Health sütunuHavuz sağlıklı olarak gösteriliyor
Havuz yerine geçen diski kullanıyorAPI üzerinden doğrudan sorguYerine geçen diskin yolu arızalı aygıtın yolunun yerini almış
Resilver tamamlanmışStorage Resources, Resilvering sütunuSağlıklı bir Health değeriyle birlikte 0 değeri
Yerine geçen disk havuz üyesi olarak kaydedilmişHavuz kartı, Pool Disks → ZFS propsYerine 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ükDisks bölümü → LED on panelLed_fault ve Led_locate kapalı
Yedek disk rezervi geri yüklenmişAPI üzerindenDüğümde "spare" rolüne ve boş Pool name alanına sahip bir disk var
Tüm düğümler yanıt veriyorAPI üzerinden doğrudan sorguYanıt UNAVAILABLE durumunda hiçbir kayıt içermiyor

Bir sorun çıkarsa​

Ne görüyorsunuzNedenNe yapmalı
Doğrudan sorgu yanıtında bir düğüm UNAVAILABLE durumundaDüğüm sorguya yanıt vermedi. Bu, bozulmuş bir havuza işaret etmezDüğümü Server Nodes tablosunda kontrol edin; olay disklerle ilgili olmayabilir
Hata kodu -25003Tü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 -24907Yerine 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 -24908Yerine 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 -24906Bu havuzda zaten bir değişim devam ediyorMevcut değişimin bitmesini bekleyin: havuz başına bir değişim
Hata kodu -24905Arızalı aygıt ile yeni aygıt aynıFarklı aygıtlar belirtin
Hata kodu -24902Havuz boş veya düğümde mevcut değilHavuz içe aktarılmamış olabilir. Current node değerini kontrol edin ve havuzu Actions menüsünden başlatın
Hata kodu -24903Arızalı aygıtın yolu belirtilmediDoğrudan sorgudaki yolu kullanın
Hata kodu -24904, -24502, -24402, -24803Aygıt yolu biçimi doğrulaması başarısız oldu/dev/daN biçiminde bir yol kullanın
Hata kodu -24504Diskte zaten yıkıcı bir işlem devam ediyorDüğümün yanıtını bekleyin: aynı diskte iki yıkıcı işlem çalışamaz
Hata kodu -24503Disk zaten yedek olarak işaretlenmişYeniden denemeye gerek yok; diskin rolünü kontrol edin
Hata kodu -24307, -24316Kasa 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, -24315Gösterge değeri ne 0 ne de 1 veya hiçbir gösterge belirtilmedi0 veya 1 değerine sahip en az bir gösterge belirtin
Hata kodu -25002, -24901, -24501, -24401, -24301, -24201, -24801feature.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ılabilirKüme düzeyinde bir rolle oturum açın
Hata kodu -29Havuz haritası veritabanından alınamadıDoğrudan sorgulara güvenin: veritabanı şu anda kullanılamıyor
Hata kodu -20512, -20522, -713Servis 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şmiyorKomut yalnızca düğüm aracısına iletildiEkranları 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ş" bildiriyorVeritabanı bilgileri eski: envanter bunları güncellerDoğrudan sorguya güvenin; ana bilgisayar verilerini toplayarak veritabanını güncelleyin
Değişim başarılı oldu, ancak havuz bozulmuş durumda kalıyorHavuzda birden fazla disk arızalanmış veya başka bir aygıt grubunda arıza varDoğ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 yokHavuz, bir disk yerine bir düğüm nedeniyle bazı aygıtlara erişimini kaybetmiş olabilirDüğü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.​

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.