Ana içeriğe geç

Düğüm yapılandırmasının yedeklenmesi

Bir düğümü yükseltmeden veya yeniden kurmadan önce yapılandırmasının ve durumunun bir kopyasını alın. vstackos.config-backup.sh betiği bunu tek bir çalıştırmada, birkaç saniye içinde yapar ve düğümde hiçbir şeyi değiştirmez.

Betik, talep üzerine vStack teknik desteği tarafından sağlanır. Sürüm dağıtımına dahil değildir.

Bu bir veri yedeklemesi değildir. Havuz verileri, VM diskleri ve ZFS anlık görüntüleri (snapshot) toplamaya dahil edilmez. Betik düğüm yapılandırmasını, yani düğümün yeniden oluşturulmasına veya önceki durumuna döndürülmesine yarayan bilgileri toplar.

Yükseltme zaten kendi kopyasını alıyorsa neden ayrı bir toplama​

vStack.update.sh yükseltmeden önce /etc, /usr/local/etc, vstack-env.conf ve önyükleme profilini kaydeder: /boot/loader.conf, /boot/loader.conf.local ve /boot/device.hints. Yükseltmeden sonra hesapları, ssh'yi, birkaç sistem dosyasını ve bu üç önyükleme dosyasını geri yükler. Bu, "Düğümün 3.2'ye yükseltilmesi" sayfasının 3. adımında ayrıntılı olarak açıklanmıştır.

Bu kopyanın iki zayıf noktası vardır. Düğümün sistem diskindeki /var/backups dizininde saklanır ve yeniden kurulumda diskle birlikte kaybolur. Ayrıca düğüm durumunun bir kısmını kapsamaz:

Yükseltme kopyasının kapsamadıklarıBunun riski
küme katmanı yapılandırması ve veritabanıdüğümün küme üyeliğini ve servis yerleşimini geri yükleyecek kaynak kalmaz
disk bölümlendirmesi, sistem diski aynası, EFI bölümleriyeniden kurulumda önyükleme diskini yeniden üretecek kaynak kalmaz
disk dışa aktarma bileşimi (LUN'lar, hedefler, başlatıcılar)bazı sürümlerde servisler durduğunda bileşim dosyası sıfırlanır ve bileşim de onunla birlikte kaybolur
düğümün VM'lerinin tanımlarımakine yapılandırmasını geri yükleyecek kaynak kalmaz
paket listesi ve depo önceliklerigeri almada aynı derlemeyi yeniden üretecek kaynak kalmaz

Ne zaman çalıştırılır​

Küme katmanını durdurmadan ve havuzları dışa aktarmadan önce. Bunlar durduktan sonra havuzlar bağlı olmaz ve dışa aktarma bileşiminin alınabileceği bir yer kalmaz. Betik bunu fark eder ve sizi uyarır, ancak bileşimi yakalayamaz.

Düğümde root yetkilerine ve çıktı dizininde 256 MB boş alana ihtiyacınız vardır. Bir toplama genellikle 5–8 MB yer kaplar. Bakım penceresi gerekmez: betik yalnızca okur ve kendi dizinine yazar.

Her düğümün kendi toplaması vardır. Farklı düğümlerin toplamalarını karıştırmayın. Düğüm tanımlayıcısı, vstack-env.conf ve küme katmanı veritabanı her düğüme özgüdür ve bunları karıştırırsanız küme bozulur.

Adım 1. Düğümde çalıştırma​

sh vstackos.config-backup.sh --tag "3.1.0 -> 3.2.0"

Betiği düğüme kopyalamadan aynısı:

ssh root@q100u001 sh -s -- --tag "3.1.0 -> 3.2.0" < vstackos.config-backup.sh

Toplama /root/vstackos-config-backup/<cluster>/<date-UTC>/<node>/ dizinine gider; dizin 700 izinleriyle oluşturulur. İçinde konulara göre bölümlere ayrılır: düğüm kimliği, paketler, yapılandırma, depolama, diskler, küme, dışa aktarma, VM'ler, ağ, çalışma zamanı.

Betik küme adını kendisi belirler ve başlangıçta yazdırır. Önce <cluster>u<NNN> biçimindeki düğüm adı önekini alır (q100u001 için bu q100'dür), ardından vstack-env.conf içindeki cluster_id'yi, son çare olarak da tam düğüm adını. Ad yanlış çıkarsa dizini --out seçeneğiyle belirleyin.

SeçenekNe zaman gerekir
--dry-runtoplama planını göstermek ve hiçbir şey yazmamak
--tag TEXTrapordaki bir etiket: hedef sürüm, talep numarası
-o, --out DIRfarklı bir dizin, örneğin yinelenen bir "sonrası" toplaması için
--copy-to DIRtoplamayı hemen bağlı bir ortama çoğaltmak ve kopyayı sağlama toplamlarına göre doğrulamak. Seçenek birkaç kez belirtilebilir
--tartoplamayı ayrıca dizinin yanında vstackos-config-backup-<node>-<date>.tar.gz olarak paketlemek
--verify DIRhazır bir kopyayı manifestine göre doğrulamak ve çıkmak
--no-secretsmaster.passwd, spwd.db ve düğümün özel ssh anahtarlarını kopyaya koymamak
--with-logs/var/log'un son kısımlarını eklemek

Çıkış kodları: 0 — toplama temiz, 2 — toplandı ancak uyarılar var, 1 — betik başlamadı.

Adım 2. Toplama raporunu okuma​

cat <out>/00-summary/SUMMARY.txt # node profile, collection size, check results
cat <out>/00-summary/checks.txt # PASS/FAIL for critical artifacts
cat <out>/00-summary/warnings.txt # what was not collected

Küme katmanı veritabanında, vstack-env.conf'ta, disk bölümlendirmesinde veya VM tanımlarında FAIL durun anlamına gelir. Yapıtın neden yakalanmadığını öğrenmeden yükseltmeye başlamayın.

Çalışma zamanında alt sistemler canlıyken kaydedilmiş dışa aktarma bileşiminin boş olduğuna dair uyarıya ayrıca dikkat edin. Bu, bileşim dosyasının zaten sıfırlandığı ve dışa aktarmanın tek kopyasının toplama içindeki çalışma zamanı dökümü olduğu anlamına gelir.

Adım 3. Toplamayı üç yere koyma​

Varsayılan olarak toplama sistem diskinde, yani yükseltmenin üzerine yazdığı ve yeniden kurulumda kaybolan diskin ta kendisinde saklanır. Bu tek kopya yeterli değildir.

#NeredeNasılKim yapar
1düğümdeçıktı dizinibetik
2ikinci ortam: düğümün önyükleme USB belleği, başka bir havuz, bağlı bir ağ paylaşımı--copy-to <mount point>; betik kopyalar ve sağlama toplamlarına göre doğrularbetik
3düğüm dışında: yöneticinin iş istasyonubir tar akışı, aşağıya bakınyönetici

Çalıştırmanın sonunda betik üç satırın tamamını [done] veya [NOT done] olarak işaretleyerek yazdırır. Üçüncüsü her zaman NOT done'dır, çünkü toplamayı düğümden yalnızca yönetici dışarı taşıyabilir.

USB bellek​

Kurulum imajını dd ile yazmak, ortamdaki her şeyi siler. Bu nedenle toplamayı oraya imajı yazdıktan sonra koyun.

gpart show da0 # find the media partition
mount -t msdosfs /dev/da0s1 /mnt # or -t ufs /dev/da0p2 for the memstick image
sh vstackos.config-backup.sh --copy-to /mnt
umount /mnt

Ortam, dosya adlarında büyük/küçük harfe duyarlı olmalıdır. Düğümde adları yalnızca büyük/küçük harf açısından farklı olan dosyalar vardır. FAT biçimli bir USB bellek, bir Windows diski ve varsayılan macOS birimi bu tür adları tek bir dosya olarak kabul eder ve oraya yapılan bir kopya her çiftten bir dosyayı sessizce kaybeder. Betik kopyalamadan önce ortamı denetler ve büyük/küçük harfe duyarsız bir ortama yazmayı reddeder. macOS ve Windows'ta toplamayı arşiv olarak saklayın (--tar veya aşağıdaki tar akışı) ve büyük/küçük harfin ayırt edildiği bir yerde açın.

Düğümden dışarı taşıma: scp -r değil, bir tar akışı​

Toplama yaklaşık bin küçük dosya içerir. scp -r bunları tek tek aktarır ve gecikmeli bir bağlantıda bu saatlerce sürebilir. Bir tar akışı işi saniyeler içinde halleder.

D=/root/vstackos-config-backup/<cluster>/<date>

# the receiver is case-sensitive: straight into a directory
ssh root@q100u001 "tar czf - -C $D q100u001" | tar xzf -

# macOS or Windows: store as an archive, without unpacking
ssh root@q100u001 "tar czf - -C $D q100u001" > vstackos-config-backup-q100u001-<date>.tar.gz

Düğüm dışı depolama yerleşimi​

En uygunu düğümdeki yerleşimi tekrarlamaktır; bu durumda toplama basit bir kopyalamayla taşınır:

<storage>/<cluster>/<date>/vstackos-config-backup-<node>-<date>.tar.gz
CHECKSUMS.sha256

Kopyanın doğrulanması​

Her kopya kendi manifestine göre doğrulanır. Bu, betiğin root gerektirmeyen tek modudur: kopyanın saklandığı yerde çalıştırın. Betik, karma oluşturma yardımcı programını (sha256, sha256sum veya shasum) makinede hangisinin mevcut olduğuna göre seçer.

sh vstackos.config-backup.sh --verify <copy-dir>
# verified NNN files ... mismatched 0 -> the copy is intact (code 0)
# MISMATCH ./30-config/etc/rc.conf -> the copy is corrupted (code 2)

Manifest toplanan malzemeyi kapsar. Çalıştırmanın kendi rapor dosyaları bilerek manifeste dahil edilmez.

Adım 4. Her düğümde tekrarlama​

Küme düğüm düğüm yükseltilir ve toplama da düğüm düğüm alınır. Düğüm adı dizinin son düzeyidir, bu nedenle farklı düğümlerin toplamaları ne USB bellekte ne de paylaşılan depolamada çakışır.

Yükseltmeden sonra: "sonrası" toplaması ve karşılaştırma​

ssh root@q100u001 sh -s -- \
--out /root/vstackos-config-backup/<cluster>/<date>-after/q100u001 \
--tag after-3.2.0 < vstackos.config-backup.sh
diff -r <before>/30-config <after>/30-config | head -50
diff <before>/20-packages/pkg-versions.txt <after>/20-packages/pkg-versions.txt

Her şeyden önce yapılandırmadaki *.pkgnew ve *.pkgsave dosyalarına, eksik paketlere, farklılaşmış ince ayar parametrelerine ve dışa aktarma bileşimine bakın.

İnce ayarı dosyaya göre değil, etkin değerlere göre karşılaştırın:

sysctl -n <variable>

İlgili​