Kullanıcı e-postalarının tutulduğu bir sanal sunucunun içeriğini daha yeni bir fiziksel sunucuya taşıyabilmek için ilk olarak kendi hazırladığım imajdan yeni bir sanal sunucu oluşturuyorum. Postfix, dovecot gibi programların konfigürasyonları, kurulumu kendi imajımdan yaptığım için hazır geliyor. Yine de her defasında test yaparak sorunsuz olduğundan emin olmak istiyorum.
Sistemi kapatıp, e-posta klasörlerini taşıyıp sonra tekrar açmak kolay bir çözüm gibi görünse de saatlerce sistemi kapatmak iyi bir çözüm değil. Bu yüzden ZFS’nin özelliklerini kullanarak kapatma zamanını minimuma indirmeye çalışıyorum. Asıl sisteme yük getirmemek için, e-posta klasörlerini içeren ZFS dosya sistemini yedekten yeni sunucuya kopyalıyorum. Yedekleme sırasında oluşmuş olan ZFS snapshot üzerinden kopyalama yaptırıyorum. Bu ilk kopyalama bittikten sonra asıl sistemde yeni snapshot oluşturarak farkları kopyalayan bir script yazıyorum. Bu script ile ara ara asıl sistemden yeni sisteme kopyalama yaptırıyorum. Sadece iki snapshot arasındaki farklar kopyalandığı için oldukça hızlı oluyor.
Taşıma işlemini insanların en az etkilendiği bir zamanda ve minimum kesinti süresi ile yapmak istiyorum. Bunun için Zabbix ile toplanmış olan kullanım verilerini inceliyorum. Cumartesi sabah 5 civarı az kullanımdan dolayı sistemi kapatmak için uygun bir zaman.
Taşıma yaparken hata yapmamak için önceden planlama yapıyor ve çalıştıracağım komutları bile tek tek hazırlıyorum. Bu kadar planlama yapmama rağmen bir keresinde komut sırasından bir komutu atlamışım. Çabuk farkettim ama telafisi bana yarım saat kaybettirmişti.
Önceden duyuru yapıyor ve zamanı geldiğinde servisleri durdurarak işleme başlıyorum. Hazırladığım scripti çalıştırarak ZFS snapshot üzerinden son farkları kopyalattırıyorum. Eski sistemi kapatıyorum. Onun IP adresini ve hostname olarak geçen sistem ismini yeni sisteme tanımlıyorum. Hostname bilgisi kritik. LDAP üzerinde her bir kullanıcı için hostname bilgisi tutuluyor. Bu sayede kullanıcının e-postalarının hangi sistem üzerinde olduğu bulunuyor. Eğer aynı hostname’i yeni sistemde kullanmazsam LDAP üzerindeki kullanıcı kayıtlarını değiştirmem gerekir. Daha zahmetli bir işlem.
Değişiklikleri yaparken en hassas olduğum nokta e-posta kaybı olmaması. Bu yüzden her aşamada dikkatli olmaya çalışıyorum. Önceden komutları hazırlamak riski azaltıyor ve kesinti süresini de kısaltıyor. Genellikle servis kesintisi yarım saati geçmiyor.
Yeni sunucu devreye girdikten sonra yedekleme için ayarları yapıyorum. Yedekleri de ZFS snapshot kullanarak alıyorum. Baştan kopyalama yapmak zorunda kalmadan yedek sistemine snapshot farklarını kopyalarak yedek aldırıyorum.
İnsanların e-posta okuma programlarında herhangi bir ayar değişikliği yapmalarına gerek bırakmayacak şekilde işlemleri yapmaya çalışıyorum.