Linux LVM anlık görüntüsünü kaydetme veya geri alma?


16

CentOS 5 sunucumda deneysel bir yükseltme yapmak üzereyim. Yükseltme başarısız olursa, dosya sistemindeki değişiklikleri geri almak istiyorum. Bu senaryo LVM2 okuma-yazma anlık görüntüleri için LVM NASIL belgesinin Bölüm 3.8'deki örneğe benzer görünmektedir - ancak örnek gerçekte nasıl yapılır diye eksiktir.

  1. Değişiklikleri orijinal bölüme nasıl birleştirerek nasıl taahhüt ederim?

  2. Dosya sistemini orijinal durumuna geri yükleyerek değişiklikleri nasıl geri alabilirim? Tamamen yeniden başlatılmıyorsa, birkaç hizmeti yeniden başlatmam gerektiğini varsaymalı mıyım?

  3. Bir bölümdeki yalnızca belirli dizinleri anlık olarak çekmek mümkün mü, yoksa bölüm çapında bir işlem mi?

Yanıtlar:


11

Linux 2.6.33+ kullanıyorsanız ve LVM 2.0.58+ kullanıyorsanız LVM2 / cihaz eşleyici anlık görüntü birleştirme işlevi kullanılabilir:

lvconvert --merge

Bu gönderiye bakın: http://www.jonnor.com/2010/02/lvm-snapshot-merging-avaliable/

Bu başvuruda http://kernelnewbies.org/Linux_2_6_33 2.0.58 de ve LVM değişiklik günlüğü (bölüm 5, MD / DM bakmak): ftp://sources.redhat.com/pub/lvm2/WHATS_NEW

Ama size nasıl düzgün kullanılacağını henüz söyleyemem ;-)


dmsetup targetsgöstermelidir anlık-birleştirme o anlık-lv uygulanan birleştirme-komuta, bu görüntünün alındığı durumuna geri döner durumda eğer.
Nils

OP, bir tür birleştirme adımı ile değişiklik yapma konusunda karışık görünüyor. Anlık görüntü boyutu büyüdükçe değişiklikler yapılıyor. Anlık görüntü (değişikliklerin) lvconvert --merge aracılığıyla bunları yedeklemek için gerekli bilgilerdir. OP değişikliklerinden memnunsa, anlık görüntüyü lvremove aracılığıyla silebilir.
Vince

21

Ubuntu ile anlık görüntü tabanlı bir yükseltme denedim. Ve evet, birkaç kez yeniden başlatmam gerekiyordu. İlk önce orijinal root-lv'yi başka bir şeye yeniden adlandırın, böylece anlık görüntüye orijinal adı verebilirsiniz (bir yükseltme çok fazla değişiklik oluşturduğundan ve değişiklikler orijinalde olduğundan daha hızlıdır):

 # lvrename lvm root root-old
 # lvcreate -n root -s lvm/root-old -L 10G

Boyut uygun şekilde seçilmelidir. Sonra yeniden başlatın, böylece 'yeni' lvm / ubuntu kök olarak monte edilir ve yükseltme gerçekleştirebilirsiniz. Artık yeni sürümü test edebilir ve hatta eski sistemi değiştirebilirsiniz.

 # lvrename lvm root root-new
 # lvrename lvm root-old root
 # reboot

Yükseltmeyi bırakmak istiyorsanız, çalıştırın (eski sistemden)

# lvremove lvm/root-new

Değişiklikleri yapmak istiyorsanız, çalıştırın (eski sistemden)

# lvconvert --merge lvm/root-new

veya yeni sistemden

# lvrename lvm root root-new
# lvconvert --merge lvm/root-new
# lvrename lvm root-old root

ardından yeniden başlatma. Birimler açık olduğundan sistem birleştirme işlemini hemen yapmayı reddedecektir. Böylece, birleştirme önyükleme sırasında başlatılır ve sistemle çalışabildiğinizde devam eder.

Oh, ve bu arada: Sistemler arasında geçiş yaparken, uygun çekirdeği kullanmayı unutmayın. / Boot lvm'nin bir parçası olmadığından, eski ve yeni çekirdekler yan yana yerleştirilir.


Cevabınız için teşekkürler. Prosedürünüzü bir CentOS 7 sanal makinesinde tekrar oynattım ve bir cazibe gibi çalıştı. Birleştirme işleminin ortasında sanal makinemi sıfırladıktan sonra, sistem yükseltilen dosyalara erişirken LVM alt sistemi yeniden çalışmaya başladı.
Anderson Medeiros Gomes

Bu cevabın bir kısmı lvconvert --merge aracılığıyla değişiklik yapılmasını önermektedir. Anlık görüntü büyüdükçe değişiklikler de yapılıyor. Lvconvert --merge, anlık görüntü bilgilerini kullanarak değişiklikleri geri alır (geri alır).
Vince

10

Tamam, sanırım nasıl NASIL 3.8 tekrar okumaktan anladım.

  • Salt okunur anlık görüntüler (LVM1 gibi), anlık görüntü oluşturulduktan sonra blok düzeyinde farklılıklar içerir - orijinal hala değişir, ancak anlık görüntü orijinalin bir gösterimini korur. Okuma gelen anlık o anda ortaya çıktı veri olarak sunar.
  • Okuma-yazma anlık görüntüleri (varsayılan olarak LVM2'de) yazılabilir: orijinal bölümün çatallarıdır . Yazma için anlık orijinali değiştirmez.

Anlık görüntünün çalışma şekli, orijinalden blok düzeyinde bir değişiklik kümesidir. Böylece, orijinal belgeye yazıldığında, aşağıdaki şeyler olur:

  1. Bir şey orijinaline yazmaya çalışır.
  2. Orijinal okunur ve orijinalden bloklar anlık görüntüye kopyalanır.
  3. Orijinal değişti.
  4. Anlık görüntü "ters farklılıklar" ı içerir - orijinali anlık görüntü oluşturulduğunda olduğu gibi gösteren değişiklikler.

Bu nedenle, anlık görüntüyü atmak orijinali etkilemez - çünkü orijinal değiştirildi ve anlık görüntü bu değişikliklerin bir listesini içeriyordu.

Kendi sorumu cevaplıyorum:

LVM ile yeni bir anlık görüntü oluşturun. Güncelleştirme anlık görüntü bağlama noktasına yazacak şekilde yapılandırılabilirse, bir R / W anlık görüntüsü kullanın. Aksi takdirde, RO veya R / W yapacaktır.

Sonra:

  • Yazılı Eğer R / W anlık bağlama noktası, taahhüt orijinal ve enstantane yazarak , geri almadan anlık uzağa atarak.
  • Yazılı Eğer orijinal bağlama noktası, taahhüt anlık ve uzak atarak geri alma orijinaline anlık yazarak.

Hala bu birleştirmeyi gerçekleştirmek için özel bir araç bulamadım - ve senaryomun tam olarak anlık görüntü kullanım amacı olmadığı göz önüne alındığında, bir tane olmayabilir. Rdiff için bir iş gibi geliyor.


Henüz bir LVM birleştirme aracı yok. İşlerde oldu, ama tam olduğuna inanmıyorum.
Ignacio Vazquez-Abrams

birleştirme aracı artık var (en azından Ubuntu Trusty üzerinde) - lvconvert --merge <snapshot-name>orijinal diskinizi bu anlık görüntüye "geri yükleyecek" ve bu anlık görüntüyü silecektir. Elbette hemen geri yükleyebilirsiniz.
dpb

3

LVM blok düzeyinde çalışır. Bir dosya sisteminin ne olduğunu bile 'bilmiyor'. Bu nedenle, farklı bir LVM biriminden bir dosya sistemi eklenmediği sürece, yalnızca belirli dizinleri anlık olarak görüntüleyemezsiniz.

Bir LVM anlık görüntüsü oluşturduğunuzda, aslında bir birimin 'yazarken kopyala' kopyasını istersiniz. Anlık görüntü biriminde değiştirilecek tüm bloklar önce anlık görüntüye değiştirilmeden kaydedilir. Yani 'değişiklikleri taahhüt etmek' için hiçbir şey yapmanız gerekmez. Anlık görüntü hacmini kaldırın.

Böyle bir senaryoda LVM'yi hiç kullanmadığım için 'değişiklikleri geri almanın' önerilen yolunun ne olduğunu tam olarak bilmiyorum, ancak sanırım bir yerlerde LVM belgelerinde iyi tanımlandı. Ne olursa olsun, değiştirilen herhangi bir şeyi yeniden başlatmanız gerekecektir, yeniden başlatma iyi bir fikir olabilir.


2
  1. Bazılarını birleştirmek için bir sebep yok . Anlık görüntüyü kaldırın, kaynak LV kalışı değişti
  2. Değişiklikleri geri almak için birleştirme gerekiyor lvconvert --merge <snapshot name>
  3. LVM blok cihazlarla çalışır. FS ile ilgili tüm değişiklikler, FS türüne göre özel yardımcı programlar (xfs_growfs, e2fsck, ...) tarafından yapılmalıdır.

Anlık görüntü orijinal LV durumunu 'dondurur'. Anlık görüntüyü kaldır, bu durumu unutmak anlamına gelir. Anlık görüntüyü birleştir, bu duruma geri dönme anlamına gelir

Ancak LVM içinde yeniden yazılan verileri anlık görüntüye kaydeder: anlık görüntü boyutunun LV ve anlık görüntüde beklenen miktarda değişikliği karşıladığından emin olun


Aslında, anlık görüntü hiçbir şeyi dondurmaz. Değişiklikleri ekstra bir yere kaydeder, böylece istenirse ikinci haline döndürülebilir.
Vince

0

Belgeler kafa karıştırıcı. Bana öyle geliyor ki lvcreate --merge tüm değişiklikleri geri almak ve lvremove değişiklikleri uygulamak anlamına geliyor. Ayrım, onu nasıl kullandığınızdır.

Çoğu durumda, anlık görüntüyü canlı sesin zaman içinde salt okunur bir donmuş noktası olarak kullanıyorsunuz ve canlı ses düzeyi değişmeye devam ediyor. Bu durumda, birleştirirseniz, mantıksal olarak bu, canlı birimin dondurulmuş kopyayla üzerine yazacağınız anlamına gelir veya başka bir deyişle birleştirme, geri alma değişiklikleri anlamına gelir ve kaldırma, taahhüt değişiklikleri anlamına gelir.

Görünen varsayılan davranış olmayan anlık görüntüye (LVM2 ile yeni bir seçenek) yazarsanız ve muhtemelen uygulamaların orijinal birim yerine anlık görüntüye yazmasını sağlamak için başka bir yerde yapılandırmanın değiştirilmesini gerektirirse, bunun tersi doğrudur.

Anlık görüntülerle uğraşırken lütfen dikkatli olun, çünkü bazı insanlar bunları tek yönlü kullanacağınızı varsayar ve ters varsayım altında çalışırsanız sisteminizi yok edebilecek talimatlar verir!


Anlık görüntüyü bağlayarak anlık görüntüye yazabilirsiniz; ne monte edilirse LVM varsayılanları ile çok az ilgisi vardır - her mantıksal hacim ile tam olarak ne yaptığınızı umursamaz, bir anlık görüntü olsun ya da olmasın, sadece açık olup olmadığını izler.
Josip Rodin
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.