LVM'de tek bir fiziksel birimde bulunan iki mantıksal birimi nasıl birleştirebilirim?


14

İki mantıksal birimim var, biri / olarak, diğeri / home olarak monte edilmiş.

Bunları birleştirmek istiyorum, çünkü /hacim sürekli olarak yer tükeniyor. (Evet, tüm bu alanı ne kullandığını biliyorum; hayır, kaldıramıyorum.)

Makineyi yapmak için bir iki günlüğüne indirmeye hazırım.

İşletim Sistemi: Linux xxxxx 2.6.32-279.22.1.el6.x86_64 #1 SMP Wed Feb 6 03:10:46 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux(CentOS)


1
Neden sadece /hacmi büyütmek değil, LVM kullanmanın anlamı bu değil mi?
jasonwryan

2
@jasonwryan Neden disk alanının ayrıldığını manuel olarak ayarlamalıyım? Bir dosya sisteminin bütün mesele bu değil mi?
Nick ODell

@NickODell Hayır. Bir birim verileri tutamayacak kadar küçükse, o zaman çok küçüktür. Toplam kapasite, dosya sistemi boyutunu değil, birim boyutunu etkiler. Mantıksal birimler, bağlı birimlerin yeniden boyutlandırılmasını ve farklı depolama kaynaklarının tek bir birimde birleştirilmesini kolaylaştırır. LVM ile, jasonwryan'ın yeniden başlatmadan önerdiklerini yapabilmelisiniz: düzenli kullanıcıların oturumu kapattığından (ücretsiz / ev için) umount / home lvreduce (unutma -r) yeniden monte et ve sonra bir lvextend yap ve kök dosya sisteminde. Birleştirmek istiyorsanız bir rsync yapmanız gerekir.
Bratchley

@JoelDavis Tüm kullanıcıların oturumlarını kapatmasını istersem, yeniden başlatmam gerekip gerekmediği önemli mi?
Nick ODell

@ NickODell Um ... evet? Çoğu linux sistemi sunuculardır, aksi belirtilmedikçe bunun insanların varsayımı olacağını fark etmelisiniz.
Bratchley

Yanıtlar:


10

İşim bitti ve yeniden bölüm çalıştı. Ancak, her iki kılavuzda da eksik alanlar bulunduğundan, yaptığım şeyi özetleyeceğim. Lütfen kullanıcı adımı zzzzve bilgisayarımın adını ile değiştirdiğimi unutmayın xxxxxxx. Ayrıca, aksi belirtilmedikçe tüm komutlar root olarak çalıştırılmalıdır.

İlk olarak yedekledim:

tar -zcvf /media/e14be279-8c11-450a-b52c-1493cff3c632/xxxxxxx-home.tar.gz --exclude=/home/zzzz/Downloads /home

Bu, / home dizininin sıkıştırılmış bir yedeğini oluşturur ve harici sürücüme koyar. (Harici sürücünüzün farklı bir yolu olacağını unutmayın.)

Şimdi, tek kullanıcı moduna geçmeniz gerekiyor.

reboot

Bilgisayarınız tekrar açıldığında, aşağıdaki gibi bir ekran aramanız gerekir:

Booting Centos 2.6.32-279.22.1.el6.x86_64 in 3 seconds...

Bunu kesmek için herhangi bir tuşa basın. Bunun gibi bir ekran görmelisiniz:

grub boot centos Tuşuna ave ardından Boşluk tuşuna basın , ardından yazın single. Enter tuşuna basın.

Bunun gibi bir istem görmelisiniz:

 [root@xxxxxxx /] # 

Aşağıdaki komutları girin:

df -h

Seni göstermelidir Size, Usedve Avail. İlgileniyoruz Used.
Ev hacminiz tarafından ne kadar alan kullanıldığını yazın. Buna daha sonra ihtiyacımız olacak.

umount /home
e2fsck -f /dev/mapper/vg_xxxxxxx-lv_home

Ev hacminizin ne kadar alan kullandığını hatırlıyor musunuz? Bunu ikiye katlayın ve bu komuta verin. Örneğin, ana dizinim tarafından 15 gigabayt kullandım, bu yüzden 30 gigabayt boyutlandırdım.

resize2fs /dev/mapper/vg_xxxxxxx-lv_home 30G

Uyarı : Bu sonraki adım, veri kaybedebilecek olan adımdır. Make emin önceki komuta daha büyük bir boyutta koydu. Emin olmak için 5 Gigabyte ekleyin.

lvresize -L 35G vg_xxxxxxx/lv_home

Kök bölüme az önce boşalttığımız tüm alanı kullanmasını söyle.

lvresize -l +100%FREE vg_xxxxxxx/lv_root
resize2fs /dev/mapper/vg_xxxxxxx-lv_root

Verilerinizi kök bölüme kopyalayın

mount -t ext4 /dev/mapper/vg_xxxxxxx-lv_home /mnt/home
ls /mnt/home
cp -a /mnt/home/. /home/

(Bu arada, bu -aönemlidir, çünkü aksi takdirde her şey köklere aittir ve bunu istemezsiniz.)
Verilerin doğru kopyalandığını hızlı bir şekilde kontrol edin:

ls -lR /home

Şimdi ev bölümünü kaldırıyoruz ve root'a yeni alanı tekrar almasını söylüyoruz.

umount /mnt/home
lvremove /dev/mapper/vg_xxxxxxx-lv_home
lvresize -l +100%FREE vg_xxxxxxx/lv_root
resize2fs /dev/mapper/vg_xxxxxxx-lv_root

Bu noktada, öğrenebileceğiniz büyük bir hata yaptım. Yeniden başlattım ve sistem geri geldiğinde, kök bölümümü okuma-yazma olarak bağlamayı reddetti çünkü / ev bölümümü bağlayamadı. Yani, yeniden başlatmadan önce

nano /etc/fstab

Bu satırlardan biri sisteme / home bölümünü monte etmesini söyleyecektir. Bir tane #daha koy . Ctrl-O, Enter, Ctrl-X tuşlarına basın. Şimdi yeniden başlatabilirsiniz.

(Varsayımsal olarak, fstab'ı benim yaptığım gibi düzenlemeyi unutursanız, kök bölümünüzü bağlama komutu şöyledir mount -n -o remount -t ext2 /dev/vg_xxxxxxxx/lv_root /)


detay seviyorum!
nmr

Benzer bir sorunla karşılaştım, ancak makineye fiziksel erişimim yok. Bunu tek kullanıcılı modda önyükleme gerektirmeyen bir yol var mı?
FrustratedWithFormsDesigner

@FrustratedWithFormsDesigner Teorik olarak, evet. Ssh erişiminiz varsa, yedekleme yapabilirsiniz /home. Ardından, bağlantısını kesebileceğiniz sürece /homekaldırabilirsiniz. Ancak, süreç boyunca sizinle konuşmak için gerçekten nitelikli değilim. Bu yeni bir soru sormanız gereken bir şey.
Nick ODell

1
@NickODell: Ben yaptım : Yeni bir soru sormak askubuntu.com/questions/1115913/...
FrustratedWithFormsDesigner

@FrustratedWithFormsDesigner Bu size verebileceğimden çok daha iyi bir tavsiye.
Nick ODell

3

UYARI: Herhangi bir şey yapmadan önce tüm kritik verileri yedekleyin!

Tüm verileri / home bölümünden başka bir bölüme, yerel bölüme veya harici sürücüye veya başka bir yerde yeterli alana sahip olduğunuz yere taşımanız gerekir.

/ Home lv dosyasını çıkarın ve / (root) lv'yi genişletin

Verileri / home dizinine geri kopyala

Düzenle 1

Yukarıdaki cevap, kök bölümde, verileri giriş bölümüne yerleştirmek için yeterli alanınız olmadığını varsayar.

Aksi takdirde, giriş bölümünü başka bir yere monte edin ve verileri kopyalayın, örneğin:

umount /home
mount /dev/mapper/lv-home /mnt/home
cp -a /mnt/home/. /home/

Ardından, ana bölümü kaldırın ve kök bölümünü genişletin


3

Bunu herhangi bir harici depolama birimi olmadan çalıştırabilirsiniz /, ancak bağlantısını kesmeniz gerekir /home.

Dikkatli iseniz bu özellikle riskli bir prosedür değildir, ancak yine de standart tavsiye geçerlidir: önce yedeklemeler yapın ve test edin.

Ben kullanacağız foohacim grubu adı için ve rootve homemantıksal hacim adları gibi. Bu, mantıksal birim yollarını foo/rootve foo/homeaygıt yollarını /dev/mapper/foo-rootve yapar /dev/mapper/foo-home. Aynı hacim grubunda olduklarını varsayıyorum, aksi takdirde bu daha karmaşık hale gelir ve iki hacim grubunun fiziksel hacim düzenine bağlıdır.

İlk olarak, bağlantısını kesin /homeve çalıştırın e2fsck -f /dev/mapper/foo-home. Sonra önce dosya sistemini ve mantıksal birimi küçültün. Run resize2fs /dev/mapper/foo-home NNNNNNNN sen (bunun yerine sonek ile kB veya MB veya GB kullanabilirsiniz hacmi içindeki saklamak istediğiniz blokların sayısıdır K, Mya G). Dosya sistemi küçülen sonra, birlikte mantıksal hacim küçültme lvresize -L MMMM foo/homeAAAA bir megabayt sayısıdır (varsayılan birim farklı olduğunu not resize2fs, ancak aynı ekleri kullanabilirsiniz K, M, G). Mantıksal birimi dosya sisteminden daha fazla daraltmamaya çok dikkat edin - bu, bu prosedürdeki tehlikeli adımdır.

Artık hacim grubunda kullanılmayan alan var. lvresize -l +100%FREE foo/rootKök biriminin, birim grubundaki tüm boş alanı kapmasını sağlamak için çalıştırın . Daha sonra resize2fs /dev/mapper/foo-rootdosya sistemini tüm mantıksal birimi kapsayacak şekilde genişletmek için (boyut parametresi olmadan) çalıştırın ; hacim monte edilirken büyütme yapılabilir.

Artık bazı dosyaları kopyalamak için yeriniz var. Her şey için yeterli alanınız yoksa, olabildiğince hareket edin, ardından prosedürü tekrarlayın.

Tüm dosyaları kopyaladıktan sonra /homeyok etmeye hazırsınız. /homeBoş olduğunu (dosyaları taşıdıysanız) veya içindeki tüm dosyaların /homekopyalandığını /root(dosyaları kopyaladıysanız) doğrulayın . Şimdi gereksiz mantıksal hacmi yok etmek için çalıştırın lvremove foo/home. Son olarak, kök birimini lvresize -l 0%FREE foo/rootve dosya sistemini ile genişletin resize2fs /dev/mapper/foo-home.


Not: / home, tek kullanıcı moduna geçene kadar bağlantısını kesmeyi reddetti.
Nick ODell

Not: Buna vg_ (makine adı) ve lv_home denir
Nick

Tamam, çalıştırdım. Yine de bu kılavuzda birkaç ayrıntı eksikti, bu yüzden yakında tüm komut geçmişimi göndereceğim.
Nick ODell

2

Tamam, kendimi tamamen aynı pozisyonda buldum. CentOS varsayılan olarak küçük bir kök hacmi oluşturuyor ve alanınızın geri kalanını dolduruyor gibi görünüyor /home. Kurulumumu ilk önce bir sanal makinede bile test ettim, ancak daha küçük diskte CentOS ev birimini oluşturmadı. Alan kısıtlı hale gelmeden önce bu sorunu aldım ve aynı zamanda tek kullanıcı moduna girmemek zorunda kaldım. Aşağıdaki gibi:

Makineye erişin, ssh gayet iyi (root olmayan bir kullanıcı olduğu varsayılarak).

  1. cd / yani ana dizinde değilsin
  2. sudo -s tüm bunlar için kök olacağız
  3. lsof /home hiç kimsenin ev hacmini kullanmadığından emin olun,
  4. mv,, tarveya ev içeriğini başka bir yere benzer
  5. lvremove centos/home
  6. İçin /etc/fstabsatırı düzenleyin ve yorum yapın veya satırı kaldırın/home
  7. Daha önce yedeklediğiniz ev içeriğini geri taşıyın /home- şimdi güvenli bir konumdasınız, burada yeniden başlatma tamam olmalı
  8. lvresize -l +100%FREE centos/root
  9. xfs_growfs /dev/centos/root CentOS 7'de, diğerleri resize2fs
  10. df -h başardın mı

Umarım bu birisini kolaylaştırır. Bugünlerde dosya sistemlerinde neler yapabileceğiniz gerçekten şaşırtıcı.


Herhangi bir veri taşımanız gerekmiyorsa kesinlikle daha kolaydır. :)
Nick ODell
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.