Bir düğümde planlı disk değişimi
Planlı değişim, disk hâlâ çalışırken gerçekleştirilir: disk hizmet ömrünün sonuna gelmiştir, modeli artık desteklenmemektedir veya yaklaşan bir arızanın belirtilerini göstermektedir. Acil değişimden önemli bir noktada ayrılır: sırayı bir arıza değil, siz belirlersiniz. Bu, yerine geçecek bir disk hazırlayabileceğiniz, doğru kasadaki göstergeyi yakabileceğiniz ve havuzu bir dakika bile yedekliliksiz bırakmadan diski değiştirebileceğiniz anlamına gelir.
vStack Center modelinde bir diskin birbirinden bağımsız üç özelliği vardır. Bunları karıştırmak bu prosedürdeki hataların başlıca kaynağıdır. Hiçbiri diğerinden çıkarılamaz.
| Özellik | Nerede görünür | Ne anlama gelir | Neyle değişir |
|---|---|---|---|
| Sağlık | Disk props sekmesindeki Status sütunu | Diskin fiili durumu | Fiili koşullara göre düğüm |
| Rol | Yalnızca API üzerinden | Disk rolü: boş, bölümlenmiş, havuz üyesi, yedek | Diskin sorgulanması, yedek olarak işaretlenmesi, yedek etiketinin kaldırılması, değişim |
| Kümede çevrimiçi | Yalnızca API üzerinden | Disk küme fabric'inde kullanıma sunulmuştur ve tüm düğümlere görünürdür | Diskin kümede çevrimiçi yapılması ve kümeden kaldırılması |
Değişimin kendisi tek bir işlemdir. Diski kasadan "çıkarmaz": havuzu yerine geçecek aygıta geçirir ve resilver işlemini başlatır. Eski disk, havuz artık onu kullanmadığında daha sonra fiziksel olarak çıkarılır.
Göstergelerin yakılması dışındaki fiziksel disk işlemleri web arayüzünde kullanılamaz. Bir yönetici, bir diski değiştirmek, yedek olarak işaretlemek ve kümeden kaldırmak için API'yi kullanır — API başvurusuna bakın. Bu prosedürde arayüzün farklı bir amacı vardır: diski, kasadaki konumunu, havuzun sağlık durumunu ve resilver durumunu göstermek.
Değişim, disk alt sistemindeki en tehlikeli işlemdir; bu nedenle veri kaybına karşı kendi koruması vardır. vStack Center komutu göndermeden önce düğüme yerine geçecek diskin fiili rolünü sorar ve komutu yalnızca yerine geçecek disk boşsa, yani yedek veya kullanılmıyorsa gönderir. Yerine geçecek disk kullanımdaysa, durumu belirlenemiyorsa veya arızalı aygıt ile yeni aygıt aynıysa, değişim komut düğüme gönderilmeden önce reddedilir. Aynı havuzda eşzamanlı değişimlere izin verilmez.
Tüm disk alt sistemi komutları eşzamansızdır: kabul edilen bir komut "düğüm aracısına iletildi" anlamına gelir. Fiili sonuç düğümün yanıtıyla gelir ve disk listesini veya havuz durumunu bir sonraki okuyuşunuzda görünür.
Ön koşullar
- Tüm fiziksel disk işlemleri için gerekli olan Cluster master rolü (role_id=1);
feature.physical_disc_managementbayrağı: bu bayrak olmadan disk alt sisteminin tamamı kullanılamaz. Bayrak küme seçeneklerindedir;- Aynı düğümde yerine geçecek bir disk: boş veya zaten yedek olarak işaretlenmiş. Başka bir düğümdeki bir disk kullanılamaz; değişim tek bir düğüm içinde çalışır;
- Havuz adı ve değiştirilecek aygıtın yolu biliniyor olmalıdır;
- 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ü: fiziksel disk işlemleri bu sürümde sunuldu.
Adım 1. Diski ve kasadaki konumunu bulun
Diski üç şekilde tanımlayın: disk listesindeki kaydıyla, aygıt yoluyla (değişim komutu için gereklidir) ve doğru diski çıkarmanız için kasadaki konumuyla.
-
Provider Data Center → Server Nodes bölümünü açın ve düğümü seçin, ardından Disks bölümünü genişletin. Havuza göre filtrelenmiş aynı liste, havuz kartının Pool Disks bölümünde de bulunur. Havuzu Storage Resources bölümündeki ZFS pools tablosundan açın.
-
Sekmeler arasında geçiş yapın: sekmeler aynı listenin farklı görünümlerini gösterir. ID sütunu satırları tüm sekmelerde birbirine bağlar ve tablonun üzerinde arama kullanılabilir (Search in table).
Sekme Sütunlar Bu adımdaki amacı Disk props ID, Model, Size (GB), Status Modeli, boyutu ve sağlık durumunu belirlemek ZFS props Pool name, Vdev_pool_name, Vdev_guid, Vdev_pool_guid Diskin doğru havuza ait olduğundan emin olmak Placement Enclosure_device, Enclosure_id, Dev_index, Device Kasayı ve yuvayı bulmak LED on panel Led_fault, Led_locate Göstergenin yandığını kontrol etmek Timestamps Created, Last_seen Disk kaydının ne kadar güncel olduğunu belirlemek -
Değişim komutu için düğümü ve Device değerini, göstergeyi yakmak için de Enclosure_device ve Dev_index değerlerini kaydedin. Dolu Pool name ve Vdev_pool_name alanları, diskin boş değil bir havuz üyesi olduğunu doğrular.
Bu tablolar diskin rolünü veya "kümede çevrimiçi" bayrağını göstermez; bunları API sağlar. Değişimden önce bunları kontrol edin: hangi diskin yerine geçecek disk olarak kullanılabileceğini rol belirler.
Adım 2. Diskin kasa göstergesini yakın
Yanlış yuvayı seçmek ikinci bir diske mal olur; bu nedenle sunucu odasına gitmeden önce göstergeyi yakın. İki gösterge vardır: konum ("bu disk") ve arıza.
- 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.
- Değiştirilecek disk için konum göstergesini açın.
- Göstergenin gerçekten yandığını LED on panel sekmesinde Led_fault ve Led_locate sütunlarında kontrol edin.
Aynı işlemi API üzerinden de gerçekleştirebilirsiniz. Bu durumda kasa adını Enclosure_device
sütununda gösterildiği gibi değil, /dev/sesN biçiminde belirtin. Başka bir biçim -24307
koduyla, bilinmeyen bir kasa ise -24316 koduyla reddedilir.
Adım 3. İşlemden önce havuzun sağlık durumunu kaydedin
Değişiklik yapmadan önce başlangıç durumunu kaydedin; aksi takdirde değişimden sonra karşılaştıracak bir şeyiniz olmaz.
- 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.
- Diskin değiştirildiği havuz için Health, Resilvering ve Current node değerlerini kaydedin. Planlı değişimi yalnızca sağlıklı bir havuzda başlatın. Bozulmuş bir havuz, "Bozulmuş bir havuzu kurtarma" sayfasında açıklanan farklı bir prosedür gerektirir.
- Havuzu açın ve Properties bölümünü kontrol edin: Capacity, Provisioned, Used ve Free, resilver için yeterli alan olup olmadığını gösterir.
Havuz tablosu ve sayfası vStack Center veritabanından okur ve en son kaydedilen durumu gösterir. API, her aygıtın durumuyla birlikte havuzun güncel ağacını sağlar. Arayüzdeki bilgiler fiili durumdan farklıysa buna ihtiyacınız olacaktır.
Adım 4. Yerine geçecek diski hazırlayın
Yerine geçecek disk boş olmalıdır; aksi takdirde koruma komutu engeller. "Boş", "spare" veya "unused" rolü anlamına gelir. Veritabanındaki rol eski olabilir; bu nedenle önce düğümü doğrudan sorgulayarak rolü güncelleyin.
- 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. Henüz envanteri çıkarılmamış bir disk için sorgu hiçbir şeyi değiştirmez; önce o diskin envanterini düğüm sayfasından çıkarın.
- Yerine geçecek disk yalnızca boşsa olduğu gibi bırakabilirsiniz: değişim hem yedek hem de kullanılmayan diskleri kabul eder. Düğümde belirlenmiş bir yedek tutuyorsanız, diski API üzerinden yedek olarak işaretleyin. Bu yıkıcı bir işlemdir: düğüm diske bir servis etiketi yazar; bu nedenle etiketleme zorlanmadıkça canlı veri içeren bir diskte işlemi reddeder.
- Disk listesini yeniden okuyun ve yerine geçecek diskin Pool name alanının hâlâ boş olduğundan emin olun.
Adım 5. Diski değiştirin
Şimdi tek bir komut verin. Bir yönetici bu komutu API üzerinden gerçekleştirir. Tüm denetimler komut düğüme gönderilmeden önce yapılır; bu nedenle geçersiz bir çağrı diske ulaşmaz.
Şunları hazırlayın:
- Her iki diski de içeren düğüm;
- Değişimin yapıldığı havuzun adı;
- Device sütunundan değiştirilecek aygıtın yolu;
- Değiştirilecek aygıtın yolundan farklı olması gereken yerine geçecek diskin yolu.
Kabul edilen bir komut yalnızca "düğüme gönderildi" anlamına gelir. Fiili sonuç düğümün yanıtıyla gelir. Başarılı olursa yeni aygıt 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: rolü değişmeden kalır.
Adım 6. Resilver işlemini bekleyin
Havuz yedekliliği kendisi geri yükler; vStack Center yalnızca süreci gösterir.
- Storage Resources bölümünü açın ve diskin değiştirildiği havuz için Resilvering ve Health sütunlarını izleyin. Resilvering sütunundaki 1 değeri, havuzun değişimden sonra yedekliliği geri yüklediği anlamına gelir.
- Resilvering sıfıra döndüğünde ve Health sağlıklı kaldığında değişim tamamlanmıştır.
- Havuz üyeliğini doğrulayın: havuz kartında, Pool Disks bölümünün Placement sekmesinde yerine geçen disk eski diskin yerinde görünmelidir.
vStack Center ilerlemeyi yüzde olarak göstermez; 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.
Adım 7. Eski diskin bağlantısını kesin ve diski çıkarın
Bir disk kümede çevrimiçi olduğu sürece küme onu kümenin bir parçası olarak kabul eder. Fiziksel olarak çıkarmadan önce bu bayrağı temizleyin. İşlem API'yi kullanır ve LUN'u fabric'ten kaldırır. Diski seri numarasıyla (tercih edilir) veya aygıt yoluyla belirtin.
Bir diski etkin bir havuzun üyesiyken kümeden kaldırmayın: havuz bozulmuş duruma düşer. Havuzun eski diski değil yerine geçen diski kullandığından emin olmak için Pool Disks bölümünü kontrol edin. Düğüm canlı veri yerleşimlerini korur ve işlemi reddeder, ancak kontrol etmek yerine bu reddedilmeye güvenmemelisiniz.
Çağrıdan sonra disk listesini yeniden okuyun: diskin "kümede çevrimiçi" bayrağı temizlenmiştir. Artık diski fiziksel olarak çıkarabilirsiniz.
İşin tamamlanması
- Her iki göstergeyi de söndürün: düğüm kartı → Disks bölümü → Front view veya Inner view sekmesi. Sonucu LED on panel sekmesinde kontrol edin.
- 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 API üzerinden 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. - Son durumu ZFS props sekmesinde doğrulayın: yeni havuz üyesinin Pool name ve Vdev_pool_name alanları doludur, yedeğin Pool name alanı ise boştur.
Sonucun doğrulanması
| Ne kontrol edilmeli | Nereye bakılmalı | Beklenen sonuç |
|---|---|---|
| Havuz yeni diski kullanıyor | Havuz kartı, Pool Disks → Placement | Yerine geçen disk eski diskin yerini almış |
| Resilver tamamlanmış | Storage Resources | Resilvering = 0, Health sağlıklı |
| Yeni disk havuz üyesi olarak kaydedilmiş | Pool Disks → ZFS props | Yerine geçen diskin Pool name ve Vdev_pool_name alanları dolu |
| Eski 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 |
Bir sorun çıkarsa
| Ne görüyorsunuz | Neden | Ne yapmalı |
|---|---|---|
| Hata kodu -24907 | Yerine geçecek disk boş değil: rolü ne "spare" ne de "unused" | Diski boşaltın veya başka bir disk seçin; düğümü doğrudan sorgulayarak rolü 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 -24905 | Değiştirilecek aygıt ile yeni aygıt aynı | Farklı aygıtlar belirtin |
| 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 -24902 | Havuz boş veya düğümde mevcut değil | Havuz adını ZFS pools tablosundaki Name sütunuyla karşılaştırın; havuz bu düğümde içe aktarılmamış olabilir |
| Hata kodu -24903 | Değiştirilecek aygıtın yolu belirtilmedi | Device sütunundaki 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 -24603 | Disk yedek olarak işaretlenmemiş, dolayısıyla kaldırılacak etiket yok | Etiketi kaldırmadan önce diskin rolünü kontrol edin |
| Hata kodu -24307 | Hatalı kasa adı biçimi | Enclosure_device sütununda gösterildiği gibi değil, /dev/sesN biçiminde bir ad kullanın |
| Hata kodu -24316 | Kasa bulunamadı | Placement sekmesinde Enclosure_id ve Enclosure_device değerlerini kontrol edin; farklıysa envanteri 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 -24802 | Ne seri numarası ne de disk yolu belirtildi | En az bir disk tanımlayıcısı belirtin |
| Hata kodu -24901, -24501, -24601, -24801, -24401, -24301, -24201 | 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 |
| Komut kabul edildi, ancak disk listesinde hiçbir şey değişmedi | Komut yalnızca düğüm aracısına iletildi; sonuç daha sonra gelir | Ekranları yeniden açın; verilerin ne kadar güncel olduğunu görmek için Last_seen değerini kontrol edin |
| Diski yedek olarak işaretleme başarılı oldu, ancak rolü değişmedi | Diskin henüz envanteri çıkarılmamış, dolayısıyla rolün saklanacağı bir kayıt yok | cam sınıfı için bir düğüm envanteri çalıştırın, ardından yeniden deneyin |
| Disk çıkarıldıktan sonra havuz DEGRADED durumuna geçti | Disk, havuz yerine geçen diske geçmeden önce çıkarıldı | Diski kasaya geri takın ve kurtarma prosedürünü izleyin |
| Değişim başarılı oldu, ancak hâlâ yedeklilik yok | Havuz yerine geçen diski kullanıyor ve düğümde yedek kalmadı | Yeni bir diski kümede çevrimiçi yapın ve yedek olarak işaretleyin |
Kısıtlamalar
vStack Center'dan bir havuz bütünlük denetimi (scrub) 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.
vStack Center ayrıca bir havuza yeni bir aygıt olarak disk ekleyemez. Bir diski kümede çevrimiçi yapmak onu düğümlere görünür kılar, ancak havuz üyeliği düğümde değiştirilir. Mevcut bir havuz üyesini değiştirmek, vStack Center'dan kullanılabilen tek havuz üyeliği işlemidir.
API, havuzun autoreplace özelliğini sağlar. Bu özellik devre dışıysa, yedek disk otomatik
olarak devreye alınmaz ve değişimin her zaman bir yönetici tarafından başlatılması gerekir.
Ayrıca bkz.
- Depolama katmanı modeli ve havuz kapasitesinin ve sağlık durumunun nereden geldiği — "Depolama havuzları".
- Havuz haritası ve düğümlerin doğrudan sorgulanması — "Küme havuzlarını görüntüleme".
- Havuz yedekliliği zaten kaybettiğinde acil durum prosedürü — "Bozulmuş bir havuzu kurtarma".
- Yeni bir düğümün disklerini kümede çevrimiçi yapma — "Yeni bir düğümü hizmete alma".
API yöntemleri
Bu sayfadaki API işlemleri: pd-list, pd-status-map, pd-led, pd-info,
pd-spare, pd-unspare, pd-replace, pd-use, pd-unuse,
pd-pools-status, pool-map-by-guid, pools-get, node-inventory —
API başvurusuna bakın.