Yedekleme stratejisi olarak LVM anlık görüntüleri


17

Bir yedekleme stratejisi olarak ne kadar uygulanabilir xen domU'ların periyodik LVM anlık görüntüleri olabilir? Artıları, eksileri, gotchas?

Bana göre, hızlı ve beyinsiz bir geri yükleme için mükemmel bir çözüm gibi görünüyor. DomU başarılı bir şekilde kesintisiz olarak çalıştığında, herhangi bir soruşturma kırık mantıksal hacim üzerinde gerçekleştirilebilir.

DÜZENLE:

Tam sistem yedeklemeleri yaparken şu anda buradayım.

  • DomU disk lvm anlık görüntü
  • boyut anlık görüntü boyutuna eşit yeni bir mantıksal birim.
  • gg if = / dev / anlık görüntü = / dev / new_lv
  • lvremove ile anlık görüntünün atılması
  • kpartx / mount / ls ile isteğe bağlı doğrulama

Şimdi bunu otomatikleştirmem gerekiyor.

Yanıtlar:


32

LVM anlık görüntüleri, dosya sistemini donmuş bir durumda yakalamak içindir. Kendi başlarına bir yedek olmaları amaçlanmamıştır. Bununla birlikte, dondurulmuş görüntü yedekleme işlemi sırasında değişemediği ve değişmeyeceği için tutarlı olan yedek görüntüler elde etmek için kullanışlıdırlar. Bu nedenle, bunları uzun süreli yedeklemeler yapmak için doğrudan kullanmayacak olsanız da, kullanmaya karar verdiğiniz herhangi bir yedekleme işleminde çok değerli olacaktır.

Anlık görüntü uygulamak için birkaç adım vardır. Birincisi, yeni bir mantıksal birimin tahsis edilmesi gerektiğidir. Bu birimin amacı, dosya sistemindeki deltaların (değişikliklerin) kaydedildiği bir alan sağlamaktır. Bu, orijinal birimin mevcut okuma / yazma erişimini bozmadan devam etmesini sağlar. Bunun dezavantajı, anlık görüntü alanının sonlu bir boyutta olmasıdır, yani meşgul yazma olan bir sistemde oldukça hızlı bir şekilde dolar. Önemli yazma etkinliğine sahip birimler için, tüm değişikliklerin kaydedilmesi için yeterli alan sağlamak amacıyla anlık görüntünüzün boyutunu artırmak istersiniz. Anlık görüntünüz taşarsa (dolarsa) hem anlık görüntü durur hem de kullanılamaz olarak işaretlenir. Böyle bir durumda, orijinal birimi tekrar çevrimiçi duruma getirmek için anlık görüntünüzü serbest bırakmak istersiniz. Sürüm tamamlandığında,

Olan ikinci şey ise LVM'nin söz konusu hacimlerin gerçek amaçlarını "değiştirmesi". Yeni tahsis edilen anlık görüntünün dosya sisteminde herhangi bir değişiklik aramak için bir yer olacağını düşünürdünüz, sonuçta tüm yazma işlemleri burada olacak, değil mi? Hayır, tam tersi. Dosya sistemleri LVM birim adlarına bağlanır , bu nedenle adı sistemin geri kalanından değiştirmek hayır olmaz (çünkü anlık görüntü farklı bir ad kullandığından ). Bu nedenle çözüm basit: Orijinal birim adına eriştiğinizde , anlık görüntüsünü yaptığınız birimin canlı (okuma / yazma) sürümüne başvurmaya devam edecektir . Oluşturduğunuz anlık görüntü birimi, dondurulmuşyedeklemek istediğiniz birimin (salt okunur) sürümü. İlk başta biraz kafa karıştırıcı, ama mantıklı olacak.

Bütün bunlar 2 saniyeden daha kısa sürede gerçekleşir. Sistemin geri kalanı fark etmiyor bile. Elbette, taşmadan önce anlık görüntüyü bırakmazsanız ...

Bir noktada, kapladığı alanı geri kazanmak için anlık görüntünüzü serbest bırakmak isteyeceksiniz. Sürüm tamamlandıktan sonra, anlık görüntü birimi birime geri bırakılır ve orijinal kalır.

Bunu uzun vadeli bir yedekleme stratejisi olarak takip etmenizi önermiyorum. Hala aynı fiziksel sürücüde başarısız olabilecek verileri barındırıyorsunuz ve dosya sisteminizin başarısız olan bir sürücüden kurtarılması hiç yedek değil.

Kısacası:

  • Anlık görüntüler yedeklemelere yardımcı olmak için iyidir
  • Anlık görüntüler kendi başlarına bir tür yedek değildir
  • Anlık görüntüler sonsuza kadar sürmez
  • Tam bir anlık görüntü iyi bir şey değildir
  • Anlık görüntülerin bir noktada serbest bırakılması gerekiyor
  • Eğer akıllıca kullanırsanız LVM arkadaşınızdır.

4
Ayrıca LVM anlık görüntü performansı doğrusal olarak düşer - 8 anlık görüntü, IO'nun 8 katıdır.
Steven

9
Açıklamanızda yanlış olduğunu düşündüğüm birkaç nokta var. LVM'nin mevcut sürümlerinde, anlık görüntü dolarsa, kullanılamaz olarak işaretlenir ve silinmesi gerekir. Cihazdaki G / Ç durmuyor. İkinci olarak, bir anlık görüntüyü sildiğinizde, hiçbir veri orijinal birime geri kopyalanmaz. Esasen, canlı birime yazdığınızda, orijinal bloklar önce anlık görüntüye kopyalanır ve ardından canlı bloklar güncellenir. Anlık görüntüyü bıraktığınızda, yalnızca girdinin cihaz eşleştiricisinden kaldırılması gerekir. Kopyalama gerekmez.
Kamil Kisiel

2
Bütünlük adına Kamil Kisiel doğrudur. Bkz: tldp.org/HOWTO/LVM-HOWTO/snapshotintro.html
ktower

1
Yanlış bilgi sahibi olduğum için kendime çok fazla homurdandıktan sonra, cevap birçok dokümantasyon ve tartışma kaynağına dayanarak değiştirildi. Üzgünüm millet, benim hatam.
Avery Payne

10

LVM anlık görüntüleri, sunucunuzu çevrimdışı duruma getirmeden yedekleyebilmek için mükemmeldir. Belirtildiği gibi LVM anlık görüntüleri neredeyse anlık kopyalardır. Onları lvcreatekomutu kullanarak, tıpkı LV'in kendisini oluşturduğunuz gibi yaratırsınız, sadece --snapshotseçeneği ve VG yerine orijinal LV'yi verirsiniz . Örneğin:

lvcreate -L <LV size> -s -n <snapshot name> /dev/<VG name>/<LV name>

Bu, belirtilen LV'in belirtilen anlık görüntü adıyla bir anlık görüntüsünü oluşturur ve daha sonra bu anlık görüntü LV'sini aktif olarak kullanılan dosyalar hakkında endişelenmeden yedeklemenizi gerçekleştirmek için kullanabilirsiniz. Bu, özellikle etkin bir veritabanı sunucusunu yedeklemeye çalışıyorsanız faydalıdır.

Anlık görüntüden yedekleme işlemini tamamladıktan sonra, diğer G / Ç ek yükünü veya diğer performans sorunlarını azaltmak için başkalarının kullanarak belirttiği gibi kaldırmak istersiniz:

lvremove /dev/<VG name>/<snapshot name>

LVM anlık görüntüleri, veritabanları gibi sistemlerin güvenilir bir şekilde yedeklenmesinde paha biçilemezken, dosya çekişmesini önlemek için normalde yedeklemeyi kapatmak isteyeceğinizden, hızlı geri yükleme olarak uzun süreli çalışma için ideal değildir.


9

İyi bir fikir değil, IMO.

Anlık görüntüler yazma üzerine kopyalama tarzında uygulanır, böylece her yazıyı bir okuma ve iki yazma haline getirirsiniz (güncellemekte olduğunuz blok ana birimden ilk olarak okunur ve yeni veriler yerleştirilmeden önce anlık görüntü biriminde saklanır VM'lerde çok fazla yazı varsa, performans düşüşü göreceksiniz.

Ayrıca, IIRC, anlık görüntü hacmi dolarsa, belirsiz bir şekilde düşer. Bu yedekleme amaçları için iyi değildir! Bu yüzden bunu bir yedekleme yöntemi olarak denerseniz, anlık görüntünün yararlı ömrü boyunca gerçekleşecek tüm değişiklikleri işleyecek kadar büyük olduğundan emin olun. Elbette, boyut sorununun farkındaysanız ve izlerseniz ve performans sorunu sizin için bir sorun değilse, önerdiğiniz şey, var olan diğer yedekleme işlemlerine faydalı bir ekleme yapabilir.

LVM anlık görüntüleri, yedekleme işleminin bir parçası olarak çok yararlıdır (anlık görüntü alma, yedeklemenin "gerçek" birimdeki güncellemeleri devre dışı bırakmak, anlık görüntüyü daha sonra bırakmak zorunda kalmadan tutarlı olmasını sağlamak için anlık görüntüyü başka bir yere yedekleme), ancak kendi başlarına bir yedekleme tesisi olarak tasarlanmamıştır.


Belki de anlık görüntülerin nasıl çalıştığını anlamıyorum. Kılavuz, bir anlık görüntünün, mantıksal birimin neredeyse anında bir kopyası olduğunu ve onu kullanan sistemi çevrimdışına alma gereğini ortadan kaldırdığını söylüyor. Açıklamanızdan, bir anlık görüntünün dondurulmuş bir kopyadan ziyade dal, çoğaltma olduğu anlaşılıyor. Anlık görüntü yapıldıktan sonra orijinal sistemde yapılan tüm değişikliklerle güncelleniyor mu? Eğer öyleyse, verileri derhal çıkarmam ve anlık görüntüyü yok etmem gerekiyor, çünkü yedeklemeler için bir depolama mekanizması olarak tasarlanmamış mı? Teşekkürler!
Karolis T.

2
Oluşturulduğu birimin dondurulmuş bir kopyasıdır, ancak yalnızca anlık görüntü çekildiğinden beri değişen blokları içerir (bu nedenle anlık görüntü hacmi, anlık görüntüsü olduğu hacimden çok daha küçük olabilir). Bloklar canlı birimde güncellenirse, orijinal blokların içeriği anlık görüntünün deposuna eklenir, bu yüzden anlık görüntüye baktığınızda güncellenmiş olanlar yerine orijinal blokları sunabilir.
David Spillett

Ama eğer değiştirilirse (enstantane), bu "donmuş" nereden geliyor? Diyelim ki bu senaryo var, çalışan bir sistem zamanla bir şekilde bozulur. Doğru çalışırken bir anlık görüntüm var. Anlık görüntü, hala doğru şekilde çalışırken sistemin bir temsili mi olacak yoksa ilk başta orijinal sistemi bozan değişikliklere sahip olacak mı? Umarım yeterince açıkım, sadece gerçekten anladığımdan emin olmak istiyorum.
Karolis T.

Dondurulmuşların nereden geldiğini anlamak için, şimdi iki ayrı biriminiz olduğunu anlayın - etkin dosya sistemini içeren orijinal ve dosya sisteminin dondurulmuş sürümünü değiştiren anlık görüntü. Daha fazla ayrıntı için cevabıma bakın.
Avery Payne

1
Sizler sesi daha karmaşık hale getiriyorsunuz. Anlık görüntü, kaynak dosya sisteminin durumunu anlık görüntü oluşturulduğu haliyle depolar. Kaynak fs değiştiğinde, anlık görüntü değişmez ve yedekleme programınızın kaynak fs yerine anlık görüntüden okunmasını sağlar. Evet, ekranların arkasında yazma üzerine bir kopyalama gerçekleşir, ancak kullanıcı ekstra IO kullanımı dışında bunu fark etmez.
Martijn Heemels

6

Anlık görüntü oluşturulmadan önce diskteki verilerin tutarlı bir durumda olduğundan emin olmanız gerekir. mysql, veritabanını boşaltılarak veya kapatarak diske zorlanması gereken bellekte önbelleğe alınmış veriler içerebilir. Ayrıntılar için uygulama kılavuzlarınıza bakın.


5

Akıllı görünümlü şeylerin altında, LVM'ler aslında bir cihaz haritacı hilesi. Lvcreate ile anlık görüntü oluşturmak, bazı dmsetup öğelerine sarmaktan çok daha fazlası değildir. Sarıcı, eski bir birimden (orijinal lv) ve yeni bir cihazdan (yazma üzerine kopyalama birimi) yeni bir aygıt (anlık görüntü ses düzeyi) oluşturur. Bununla birlikte, orijinal LV -real olarak yeniden adlandırılır (dmsetup ls - ağaç çıkışı olan aşağıya bakın). Bu -gerçek LV, hem anlık görüntü hacmine hem de orijinal hacme eşlenir, böylece her iki yerde de kullanılabilir. Yazarken kopyala birimi, -real LV için bir kaplama görevi görür. -Snap LV, yazma üzerine kopyalama hacmi ile -real biriminin birleşimini gösterir. Bu aslında bir miktar performans yükü yaratır.

Volume00-snap (253:11)
 |-Volume00-snap-cow (253:13)
 |  `- (104:2)
 `-Volume00-LogVol01-real (253:12)
    `- (104:2)

Volume00-LogVol01 (253:5)
 `-Volume00-LogVol01-real (253:12)
    `- (104:2)

Anlık görüntü kaldırılırken yeniden bazı yeniden adlandırma ve eşleme olur. Sonrasında durum tekrar

Volume00-LogVol01 (253:5)
 `- (104:2)

Bunun ne kadar iyi bir yedekleme yöntemi olduğuna gelince: olabilir, eğer dikkate alırsanız (1) sanal makine RAM'i için yardımcı olmaz, (2) bir performans cezası oluşturur ve (3) ihtiyacınız olacak anlık görüntüyü başka bir yerde saklamak için.

VMware VCB, LVM olmasa da anlık görüntülerle de çalışır.


4

Anlık görüntülerin herhangi bir performans etkisi olmasa bile, şunu anlamalısınız: Anlık görüntüler aynı diskteki başka bir klasöre kopyalanmaktan daha fazla bir yedek değildir.

Disk frenlenirse, verileriniz ve yedeklemeniz kaybolur. Anlık görüntü alanını VG'deki başka bir PE'ye atasanız bile, yalnızca anlık görüntüden beri değiştirilen verileri içerir.

Yedekleme, minimum gereksinim olarak en azından tamamen ayrı bir sürücüye kopya anlamına gelir.


Evet bunu anladım. RAID 1, depolama cihazı arızalarından korunarak, uzak bir konuma yedekleme yaparak yazılım bozulmasından korunur. LVM anlık görüntülerini, ne olduğunu bilmediğinizde ve sisteme çevrimiçi olarak ihtiyacınız olduğunda GERÇEKTEN hızlı bir geri yükleme aracı olarak görüyorum. LVM yedeklemesinden domU'yu daha hızlı geri yükleyen başka seçenekler var mı?
Karolis T.

3

vmware sunucu makineleri ve mysql veritabanlarının anlık görüntüleri için böyle bir kurulum kullanın. şimdiye kadar iyi çalışıyor. geri yükleme - tüm sorunsuz bir çift vardı. dikkate alınması gereken bir şey - anlık görüntü lvm ile çalışırken i / o işlemleri için önemli performans hit alır. buraya bak . mysql hakkında konuştukları gerçeği görmezden gel, i / o ops i / o ops ... lvm'de ne tür veriler olursa olsun.


1
Aha. evet - anlık görüntünün alınacağını ve uzak depolama sunucusuna aktarılacağını düşünüyorum. Yerel ana bilgisayarda bırakılmadı.
pQd

2

Ben lvm anlık görüntüleri sadece DomU Lv başka bir ayrı bir Vg içinde kopyalamak için kullanın, burada her Alan üç yedek "düğümleri" için bertaraf olduğunu.

Bundan sonra, anlık görüntü yok edilir ve yedek Lv'ler bir sonraki tura kadar kalır. Yapacak bir geri yüklemem varsa, yedek Vg'den bir kaynak Lv seçip Lv alanına kopyalamam gerekiyor.

Arada bir, yedek bir Lv ayrı bir sunucudaki bir görüntü dosyasına dökülür.

Tüm bunlar, her iki günde bir yedek ve her hafta bir dökümü ile komut dosyası ile otomatikleştirilir.

Etki alanı Lv'nin geri yükleneceği ancak anlık görüntüden çalıştırılacağı ve ciddi saldırılarda siteyi çevrimiçi tutmak için uygun bir savunma organize edilinceye kadar her 2 saatte bir sıfırlanacağı bir "panik" modum bile vardı. .


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.