Mantıksal birimler önyükleme sırasında etkin değil


10

Mantıksal birimimi ve dosya sistemimi yeniden boyutlandırdım ve her şey yolunda gitti. Yeni çekirdek yükledim ve yeniden başlattıktan sonra ne geçerli ne de eski olanı önyükleyemiyorum. Grub (2) seçeneğini seçtikten sonra hacim grubu bulunamadı hatası alıyorum. Meşgul kutusundan yapılan denetimler, birimlerin aygıt eşleştiricisine kaydedilmediğini ve etkin olmadıklarını gösterir. Etkinleştirdikten sonra bunları bağlayamadım, dosya bulunamadı hatası aldım (mount / dev / mapper / all-root / mnt).

Önyükleme sırasında nasıl devam edileceği veya etkinleştirileceği hakkında bir fikriniz var mı? Veya neden önyükleme sırasında birimlerin tümü ani etkin değil?

Saygılarımızla,

Marek

EDIT: Daha fazla araştırma, bunun mantıksal hacimlerin yeniden boyutlandırılmasıyla ilgisi olmadığını ortaya koydu. Mantıksal hacimlerin başarısız önyüklemeden sonra kül kabuğunda manuel olarak etkinleştirilmesi ve bu sorunun olası çözümü aşağıdaki cevabımda ele alınmıştır.



Şimdiye kadar denediklerim: 1) yamanız 2) farklı /etc/lvm/lvm.conf 3) GRUB_PRELOAD_MODULES="lvm"4) GRUB_CMDLINE_LINUX="scsi_mod.scan=sync"5) sudo grub-install /dev/sda && sudo grub-install /dev/sdb && sudo update-grub && sudo update-initramfs -u -k all6) sudo apt-get install --reinstall lvm2 grub-pc grub-common7) lvm vgchange -aysonuna kadar ekleyerek /usr/share/initramfs-tools/scripts/local-top/lvm2 çabucak denemek için şeyler tükeniyorum.
isaaclw

Yanıtlar:


6

Sonuçta bunu çözmeyi başardım. Bir çeşit yarış durumu olan mantıksal hacimleri saptamakla ilgili bir sorun (hata) var (belki benim durumumda bunun KVM içinde gerçekleştiği gerçeğiyle ilgili). Bu, aşağıdaki tartışmada ele alınmıştır . Benim özel durumumda (Debian Squeeze) çözüm aşağıdaki gibidir:

  • komut dosyasını yedekle / usr / share / initramfs-tools / scriptler / local-top / lvm2
  • sözü edilen hata raporundan düzeltme ekini uygula
  • update-initramfs -u komutunu çalıştır

Bu bana yardımcı oldu, umarım başkalarına yardımcı olacaktır (garip bir şekilde, bu henüz ana akımın bir parçası değildir).

Düzeltme eki bağlantısı: _http: //bugs.debian.org/cgi-bin/bugreport.cgi? Msg = 10; dosyaadı = lvm2_wait-lvm.patch; att = 1; hata = 568838

Aşağıda, gelecek nesiller için bir kopya bulunmaktadır.

--- /usr/share/initramfs-tools/scripts/local-top/lvm2 2009-08-17 19:28:09.000000000 +0200
+++ /usr/share/initramfs-tools/scripts/local-top/lvm2 2010-02-19 23:22:14.000000000 +0100
@@ -45,12 +45,30 @@

  eval $(dmsetup splitname --nameprefixes --noheadings --rows "$dev")

- if [ "$DM_VG_NAME" ] && [ "$DM_LV_NAME" ]; then
-   lvm lvchange -aly --ignorelockingfailure "$DM_VG_NAME/$DM_LV_NAME"
-   rc=$?
-   if [ $rc = 5 ]; then
-     echo "Unable to find LVM volume $DM_VG_NAME/$DM_LV_NAME"
-   fi
+ # Make sure that we have non-empty volume group and logical volume
+ if [ -z "$DM_VG_NAME" ] || [ -z "$DM_LV_NAME" ]; then
+   return 1
+ fi
+
+ # If the logical volume hasn't shown up yet, give it a little while
+ # to deal with LVM on removable devices (inspired from scripts/local)
+ fulldev="/dev/$DM_VG_NAME/$DM_LV_NAME"
+ if [ -z "`lvm lvscan -a --ignorelockingfailure |grep $fulldev`" ]; then
+   # Use default root delay
+   slumber=$(( ${ROOTDELAY:-180} * 10 ))
+
+   while [ -z "`lvm lvscan -a --ignorelockingfailure |grep $fulldev`" ]; do
+     /bin/sleep 0.1
+     slumber=$(( ${slumber} - 1 ))
+     [ ${slumber} -gt 0 ] || break
+   done
+ fi
+
+ # Activate logical volume
+ lvm lvchange -aly --ignorelockingfailure "$DM_VG_NAME/$DM_LV_NAME"
+ rc=$?
+ if [ $rc = 5 ]; then
+   echo "Unable to find LVM volume $DM_VG_NAME/$DM_LV_NAME"
  fi
 }

debian hata tartışmasında sorunun çözülmediğine dikkat edilmelidir. bu yüzden burada sunulan çözüm doğru olmayabilir
eMBee

Bu 8 yaşındaki bir dağıtım üzerinde test edilmiş bir çözüm ile 9 yaşındaki bir hata olurdu eğer ben şaşıracaktım. 3 yıl sonra nasıl bu böcek manzaraları var anlamıyorum.
1919

5

/etc/init.d/lvmAşağıdakileri içeren bir başlangıç ​​komut dosyası oluşturun :

#!/bin/sh

case "$1" in
 start)
    /sbin/vgscan
    /sbin/vgchange -ay
    ;;
  stop)
    /sbin/vgchange -an
    ;;
  restart|force-reload)
    ;;
esac

exit 0

Ardından komutları yürütün:

chmod 0755 /etc/init.d/lvm
update-rc.d lvm start 26 S . stop 82 1 .

Debian sistemleri için hile yapmalı.


1
merak ediyorum, benim gibi vgscan, sistemdeki birim gruplarını arar ve vgchange -abirim gruplarını kullanılabilir ( -ay) veya değil ( -an) yapar.
Dan Pritts

1

Ben de bu problemi yaşadım. Sonunda bunu düzeltmek için görünen şey buydu:

diff -u /usr/share/initramfs-tools/scripts/local-top/lvm2-backup /usr/share/initramfs-tools/scripts/local-top/lvm2
--- /usr/share/initramfs-tools/scripts/local-top/lvm2-backup    2014-06-06 19:55:19.249857946 -0400
+++ /usr/share/initramfs-tools/scripts/local-top/lvm2   2014-06-21 01:26:01.015289945 -0400
@@ -60,6 +60,7 @@

 modprobe -q dm-mod

+lvm vgchange -ay
 activate_vg "$ROOT"
 activate_vg "$resume"

Denediğim diğer şeyler:

  1. yaman
  2. farklılaştırma /etc/lvm/lvm.conf
  3. GRUB_PRELOAD_MODULES="lvm"
  4. GRUB_CMDLINE_LINUX="scsi_mod.scan=sync"
  5. sudo grub-install /dev/sda && sudo grub-install /dev/sdb && sudo update-grub && sudo update-initramfs -u -k all
  6. sudo apt-get install --reinstall lvm2 grub-pc grub-common

Diğer değişiklikleri yaşadım ve çözdüm, bu benim için önemli olan tek şey, ancak muhtemelen en az zarif.


0

Birimleri vgscan"bulursa",vgchange -ay /dev/volumegroupname

$ sudo vgscan
[sudo] password for username: 
  Reading all physical volumes.  This may take a while...
  Found volume group "vg02" using metadata type lvm2
  Found volume group "vg00" using metadata type lvm2

$ sudo vgchange -ay /dev/vg02
  7 logical volume(s) in volume group "vg00" now active

Yine de bir yeniden başlatmadan sonra nelerin pasif kalmasına neden olacaklarından emin değilim.


Merhaba, teşekkürler bunu daha önce de yapmıştım. Ama yeniden başlatırsam, inaktif olana geri döneriz. Onları etkinleştirdikten hemen sonra monte etmeye çalıştım ama dosya bulunamadı hatasıyla beni kapatıyor.
10:10

/Etc/lvm/lvm.conf ile ilgili bir sorun olabilir, mevcut dosyanın yedeğini alın ve başka bir sistemden lvm.conf'u kopyalamaya çalışın ve sorunu çözüp
çözmediğine

0

Herhangi bir yapılandırma detayı veya hata mesajı olmadan gerçek bir cevap vermeliyiz, grub-mkdevicemapbir çözüm olarak karanlıkta bir bıçak alacağım .


0

Sisteminizin initramfs kullandığını varsayarsak, muhtemelen bir yapılandırma sorunu vardır. Önyükleme zamanında başlayan initramfs resminizi grub tarafından güncellemelisiniz (Debian'da bunu update-initramfs ile yaparsınız, diğer dağıtımları bilmiyorsunuz).

Bunu, initramfs paketini açıp initramfs resminizdeki /etc/lvm/lvm.conf (veya bunun gibi bir şeyi) değiştirerek ve ardından yeniden yeniden paketleyerek de elle yapabilirsiniz.


Merhaba, öneri için teşekkürler bu akşam onları incelemeye çalışacağım. Garip bir şey, yeni çekirdek deb'i yükledikten sonra, initramfleri güncelleyin ve güncelleme grubunu hemen takip edin.
zeratul021

aynı şekilde önyükleme için gereken iki baskın dizisinde de bir şey oldu. Artık initramfs'de başlamadılar, ancak initramfs iyi çalıştı. Mdadm'ın mdadm.conf'daki baskın dizilerini arama şeklini el ile değiştirmek ve ardından initupdate-ramfs'i yeniden çalıştırmak zorunda kaldım.
Jasper

Ben lvm.conf ile ilgili aşağıdaki yazı yorumladı. Ben komut lvm ve sonra vgscan ve vgchange -ay çalıştırmak ve ben olması gerektiği gibi önyükleme initramfs kabuk dışarı bırakıldığında öğrendim. Yani sorun initramfs'de bir yerde, LVM'yi aktive etmiyor. Sadece kayıt için, / boot ayrı bir bölümdedir.
zeratul021

Sorununuz hala update-initramfs düzgün çalışmıyor. Belki initramfs-tools için bir güncelleme olup olmadığını görmeli ve sonra update-initramfs'yi denemelisiniz. Bu işe yaramazsa, hala lvm.conf adresindeki initramfs görüntüsüne bakmanız gerekir.
Jasper

Ne yazık ki LVM'yi nasıl yapılandıracağımı bilmiyorum, yaptığım tek şey kurulum sırasında oldu. Bir sonraki ipucu, tam olarak aynı disk düzenine sahip diğer sanal makinenin aynı şekilde başarısız olduğunu, bu yüzden LVM'lerin önyükleme zamanında neden etkinleştirilmediğini kazmam gerekiyor.
10:10

0

KVM misafiri olarak Red Hat 7.4'ü çalıştıran ortamımda da aynı problem var. Qemu-kvm-1.5.3-141 ve virt-manager 1.4.1 kullanıyorum. İlk başta Red Hat 7.2'yi herhangi bir sorun olmadan misafir olarak çalıştırıyordum, ancak küçük sürümü 7.2'den 7.4'e ve çekirdeği en son sürüm 3.10.0-693.5.2'ye yükselttikten sonra bir şeyler ters gitti ve herhangi bir / var LV bölümümü önyükleyemedi Daha. Sistem acil durum moduna geçti ve root şifresi istedi. Kök şifre ile girilmesi ve komutları çalıştırarak lvm vgchange -ayve systemctl defaultbenim etkinleştirmek başardı /varLV ve sistemi başlatın.

Ben bu sorunu neyin sebep çözemedim ama benim geçici çözüm LV dahil etmekti /variçinde /etc/default/grubaşağıda gördüğünüz gibidir:

GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=vg_local/root rd.lvm.lv=vg_local/var rd.lvm.lv=vg_local/swap rhgb quiet biosdevname=0 net.ifnames=0 ipv6.disable=1"

Sonra çalıştırmak grub2-mkconfig -o /boot/grub2/grub.cfgve rd.lvm.lv=vg_local/varvmlinuz hattına dahil olup olmadığını kontrol etmek zorunda kaldı /boot/grub2/grub.cfg. Sistemi yeniden başlattıktan sonra /varartık LV'mi etkinleştirmeme hatası almadım ve sistem önyükleme işlemini başarıyla tamamladı.


0

Benim durumumda grub kök kök = / dev / vgname / root olduğunu anladım

böylece / usr / share / initramfs-tools / scriptler / local-top / lvm2'deki test

  # Make sure that we have a d-m path
  dev="${dev#/dev/mapper/}"          
  if [ "$dev" = "$1" ]; then         
    return 1                         
  fi      

her zaman yanlıştı. ve kök hacmi hiç etkinleştirilmedi.

/ etc / fstab adresinden güncellendi

/dev/vgname/root        /

için

/dev/mapper/vgname-root   /

Ve yaptım:

update-grub
grub-install /dev/sda

sorunumu çözdü


0

Bu sorunla karşılaştık ve devre dışı bırakma bulundu lvmetadayarlayarak use_lvmetad=0içinde /etc/lvm/lvm.confzorla hacimleri bulundu ve açılışta mae erişilebilir olması.

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.