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ümleri | yeniden 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 öncelikleri | geri 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çenek | Ne zaman gerekir |
|---|---|
--dry-run | toplama planını göstermek ve hiçbir şey yazmamak |
--tag TEXT | rapordaki bir etiket: hedef sürüm, talep numarası |
-o, --out DIR | farklı bir dizin, örneğin yinelenen bir "sonrası" toplaması için |
--copy-to DIR | toplamayı hemen bağlı bir ortama çoğaltmak ve kopyayı sağlama toplamlarına göre doğrulamak. Seçenek birkaç kez belirtilebilir |
--tar | toplamayı ayrıca dizinin yanında vstackos-config-backup-<node>-<date>.tar.gz olarak paketlemek |
--verify DIR | hazır bir kopyayı manifestine göre doğrulamak ve çıkmak |
--no-secrets | master.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.
| # | Nerede | Nasıl | Kim yapar |
|---|---|---|---|
| 1 | düğümde | çıktı dizini | betik |
| 2 | ikinci 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ğrular | betik |
| 3 | düğüm dışında: yöneticinin iş istasyonu | bir tar akışı, aşağıya bakın | yö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>