Tam resilver gerektirmeden bir ZFS diskini söküp yeniden takmak mümkün mü?


10

Dört toplam sürücü ile ZFS yansıtılmış bir havuz var. Sürücülerin ikisi, saha dışı yedeklemelerin döndürülmesi için kullanılmak üzere tasarlanmıştır. Beklentim, ilk yeniden kaydetmeden detachsonra attachbir diski ve daha sonra bir diski sadece artımlı bir resilver yapmasıydı - ancak testte, takılan diskin zaten neredeyse tüm havuzu içerip içermediğine bakılmaksızın tam bir resilver gerçekleştirdiği görülüyor. içeriği.

offline/ onlineYaklaşım kullanmak bana diski tamamen yeniden oluşturmak yerine yalnızca güncellemenin istenen sonucunu verir mi? Ya da beklendiği gibi bu işe sahip olmak için tamamen farklı bir şey yapmam gerekecek - her bir yedekleme diskini 1 diskli havuz olarak kullanmak ve sendgüncel hale getirilmesi gerektiğinde en yeni anlık görüntüleri almak gibi?


5
-1 Sürücüleri yedekleme için ayırmayın / takmayın, gönderme / alma komutlarını ZFS tasarımcılarının amaçladığı gibi kullanın.
Chris S

2
-1 yerine @ChrisS, bazı alıntılarla cevap yazmaya ne dersiniz? Yedeklemeler için tek seçenek başka bir yerde çevrimiçi bir havuz olduğunu söyleme gibi geliyor - bu doğru olup olmadığını bilmek harika olurdu, ama durum böyle olmadığından şüpheleniyorum.
STW

1
Maalesef, kibirli bir sarsıntı olmak istemiyorum, ancak Sunucu Hatası'nın yalnızca Profesyonel Sistem Yöneticileri (ve diğerleri) için olması gerekiyordu. Yedeklerin kırılma aynaları yöntemi, tamamen yönetilemez, hataya açık ve profesyonel olmayan bir yöntemdir ve uygulanabilir bir yedekleme yöntemi olarak düşünülmemelidir. Ne önermek, iki yedekleme sürücülerini istediğiniz dosya sistemiyle biçimlendirmeniz ve yedekleme disklerine zfs sendkaydedilen tam veya artımlı yedekleme akışlarını almak için komutu kullanmanız veya zfs recvyinelenen bir disk oluşturmak için kullanmanızdır . Bu işlemi yönetmek için bir çeşit yazılım kullanmanızı şiddetle tavsiye ederim.
Chris S

Puanlarınızın geçerli olduğunu düşünüyorum, cevap olarak değerlendiririm. Sorumluluğumu (kritik olmayan, ancak önemli, şirket içi bir sunucu için parayla çalışan bir bütçeden kaynaklanan) daha az odaklanmak ve daha fazla öze odaklanmak için sorumu yeniden yazmayı düşünüyorum " resilvering?"
STW

Yanıtlar:


14

Diskleri saha dışında "döndürmek" için ZFS dizisini bölme yolunda gitmeyin. Gördüğünüz gibi, yeniden oluşturma süresi yüksektir ve yeniden yenileme işlemi , veri kümesinin kullanılan boyutunu okur / doğrular .

Yeteneğiniz varsa, anlık görüntüler ve uzak bir sisteme veri gönderme temiz, müdahaleci olmayan bir yaklaşımdır. Sanırım özel bir tek disk havuzuna sahip olma, ona kopyalama ve zpool dışa aktarma / içe aktarma işlemlerinden geçebilirsiniz ... ama çok zarif değil.


Maalesef ikinci bir ZFS sunucusunu tesis dışında çalıştırmak için donanım veya bant genişliğim olmadığından anlık görüntü-> gönderme yaklaşımı kullanamıyorum. Bununla birlikte, çevrimdışı / çevrimiçi kullanımın, durumun raporlandığı bozukluğun azalmasıyla birlikte çalışacağı görülüyor. Önümüzdeki hafta nasıl geçeceğini göreceğim.
STW

1
Anladım. Ancak, çalışan diskleri bir yedekleme biçimi olarak sistemden çıkarmak sağlam bir çözüm değildir. Bunu yaptığınızda riskiniz büyük ölçüde artar.
ewwhite

İyi bir nokta, planım onları çevrimdışına almak, askıya almak, çalışırken değiştirilebilir tepsilerini çıkarmak ve daha sonra tamamen çekmeden önce tam durmasını sağlamak için bir dakika vermek
STW

1
Yerinde ikinci bir sunucu (hatta aynı sunucuda 2. bir ZFS dizisi) çalıştırabilir misiniz? Hotwwap bölmelerinizi içine koyun, ana ile ana arasında senkronize edin ve ardından tüm yedek ZFS dizisini bir birim olarak sunucunun içine / dışına döndürün.
Dan Is Fiddling Tarafından Firelight

11

Daha fazla denemeden sonra adil bir çözüm buldum, ancak önemli bir değiş tokuş ile geliyor. offlineÇıkarılan ancak ayrılmayan diskler daha sonra yalnızca artımlı bir yeniden işleme işlemi ile tekrar çevrimiçi duruma getirilebilir (" Bir aygıt çevrimiçi duruma getirildiğinde, havuza yazılan tüm veriler yeni kullanılabilir aygıtla yeniden senkronize edilir. "). Testlerimde, bu, 3 diskli bir ayna için 28 saatten 30 dakikaya, 40GB veri deltasına kadar yeniden yenileme süresi getiriyor.

Bunun karşılığı, çevrimdışı diske sahip herhangi bir havuzun bozulmuş olarak işaretlenmesidir. Hala en az iki çevrimiçi disk (yansıtılmış bir havuzda) olması şartıyla, bu etkili bir uyarıdır - bütünlük ve artıklık bozulmadan kalır.

Diğerlerinin de belirttiği gibi, bu genel yaklaşım ideal olmaktan uzak - uzak bir havuza anlık görüntü göndermek çok daha uygun olurdu, ancak benim durumumda mümkün değil.

Özetlemek gerekirse, bir diski havuzdan kaldırmanız ve daha sonra tam bir yeniden yenileme gerektirmeden geri eklemeniz gerekiyorsa, tavsiye ettiğim yaklaşım:

  • havuzdaki diski çevrimdışı: zpool offline pool disk
  • sürücüyü aşağı doğru döndürün (fiziksel olarak çekilecekse): hdparm -Y /dev/thedisk
  • sürücüyü devre dışı bırakarak havuzu bozulmuş durumda bırakın
  • diski havuza geri eklemek için: zpool online pool disk

Ve bu henüz test edilmediğinden, delta yeniden yaşlandırma işleminin doğru olmadığı riski vardır. "Canlı" havuz ve / veya çevrimdışı diskler sorun yaşayabilir. Bu bana olursa güncelleyeceğim, ama şimdilik bu yaklaşımı deneyeceğim.


1
Resilver veri hataları getirecekse, bunlar zamanla veya bir zpool fırçalamada otomatik olarak iyileşir.
wabbit

Bir fırçalamanın değerini fark ettim; Çevrimdışı başarılı bir fırçalama ve yedekleme diskini kaldırmak için kadar beklerim
STW

2
Sadece hızlı bir güncelleme: Geçen yıl boyunca bu yaklaşım yeterince iyi çalıştı. Tesis dışı yedeklemenin aylık geri yükleme testleri başarılı ve tutarlı olmuştur. Bir dizi döndürmek (tek bir disk yerine), site dışı kopyada fazlalık sağlamak için daha iyi olurdu ve mümkünse bunu yapmanızı tavsiye ederim. Genel olarak bu hala hackish bir yaklaşımdır ve bazı riskler doğurur, ancak verilerimizin makul bir şekilde güvenli ve ucuz bir saha dışı yedeklemesi sağlamıştır.
STW

Taşıma yavaş yavaş hepsine zarar verebileceğinden dizideki tüm sürücüleri döndürmeye karşı çıkacağım. Sürücüler yerinde kalsa bile dönüşü yapmayacağım.
Costin Gușă

2

Güncelleme 2015 Ekim 15: Bugün zpool split, yeni bir havuzu (yeni bir adla) mevcut bir havuzdan ayıran komutu keşfettim . her iki havuz da aynı sistemde mevcut olduğundan (ve ayrı ayrı temizlendiğinden) ve splitçok daha temizdir . Yeni havuz , sistemden çıkarılmadan önce temiz (ve düzgün) olabilir .offlinedetachexport[ed]

(Orijinal yazım aşağıdadır.)

Uyarı! Bu sayfadaki çeşitli yorumlar, zpool detachbir sürücünün mümkün olduğunu (veya mümkün olabileceğini) ve ardından bir şekilde sürücüyü yeniden takın ve içerdiği verilere erişin.

Ancak, bu iş parçacığına göre (ve kendi deneyime göre) zpool detach"havuz bilgileri" ayrılmış sürücüden kaldırır. Başka bir deyişle, a sürücünün hızlıdetach bir şekilde yeniden biçimlendirilmesi gibidir . Bir sonra detachbirçok bilgiye hala sürücüde olabilir, ama öyle olacak pratikte imkansız sürücüyü yeniden bağlayın ve kullanılabilir bir dosya sistemi gibi verileri görüntülemek için.

Sonuç olarak, yıkılan havuzları kurtarabileceğine inandığımdan detachdaha yıkıcı görünüyor !destroyzpool import

Bir detacholduğu değil bir umount, ne de bir zpool export, ne de bir zpool offline.

Deneylerimde, önce zpool offlinebir cihazı sonra zpool detachda aynı cihazı kullanırsam, havuzun geri kalanı cihazın varlığını unutur. Ancak, cihazın kendisinden offline[d]önce olduğu için detach[ed], cihazın kendisinden asla haberdar edilmez detach. Bu nedenle, cihazın kendisi hala havuz bilgisine sahiptir ve başka bir sisteme ve sonra import[ed](bozulmuş durumda) taşınabilir .

Buna karşı ek koruma detachiçin, offlinekomuttan sonra , ancak komutu vermeden önce cihazın fişini fiziksel olarak çıkarabilirsiniz detach.

Bunu kullanmayı umuyorum offline, o detachzaman importhavuzumu yedeklemek için işlem yapalım. Orijinal poster gibi, ikisi sabit bir aynada ve iki tanesi aylık, dönen, site dışı (ve çevrimdışı) yedeklemeler için dört sürücü kullanmayı planlıyorum. Her bir yedeklemeyi, saha dışına taşımadan önce ayrı bir sisteme içe aktararak ve temizleyerek doğrulayacağım. Orijinal posterin aksine, her ay tüm yedekleme sürücüsünü yeniden yazmayı umursamıyorum. Aslında, taze bitler elde etmek için tam yeniden yazma tercih ederim.


0

Aynı makinede, aynadaki 2 sürücüyle yeni bir havuz oluşturmayı denediniz mi? Ardından, çalışma havuzunuzda bir anlık görüntü oluşturun, ardından bu anlık görüntüyü yeni havuza gönderin, tekrarlayın, ardından bir sonraki anlık görüntü gönderme aşamalı olacaktır. Bu, aynı sistem / sunucu / makine içindeki bir havuz olduğu için "uzak bir sisteme veri gönderme" ile aynı şey değildir. Bu kurulumla, hala zpool split / offline / detach / attach uygulayabilirsiniz, ancak bunu kaynak havuzuna değil, yalnızca ikinci (kopya) havuzda yapabilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.