Volume logis tidak aktif saat boot

10

Saya mengubah ukuran volume logis dan sistem file saya dan semuanya berjalan lancar. Saya menginstal kernel baru dan setelah reboot saya tidak bisa mem-boot baik yang sekarang maupun yang sebelumnya. Saya mendapatkan grup volume yang tidak ditemukan kesalahan setelah memilih opsi grub (2). Inspeksi dari kotak sibuk mengungkapkan volume tidak terdaftar dengan perangkat mapper dan tidak aktif. Saya tidak dapat me-mount mereka setelah mengaktifkan, saya mendapat file tidak ditemukan kesalahan (mount / dev / mapper / all-root / mnt).

Adakah ide bagaimana melanjutkan atau membuatnya aktif saat boot? Atau mengapa volume tiba-tiba tidak aktif saat boot?

Salam,

Marek

EDIT: Investigasi lebih lanjut mengungkapkan bahwa ini tidak ada hubungannya dengan pengubahan ukuran volume logis. Fakta bahwa volume logis harus diaktifkan secara manual di ash shell setelah boot gagal dan kemungkinan solusi untuk masalah ini tercakup dalam balasan saya di bawah ini.

zeratul021
sumber
Apa yang saya coba sejauh ini: 1) tambalan Anda 2) diff /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) menambah lvm vgchange -ayakhir /usr/share/initramfs-tools/scripts/local-top/lvm2 saya dengan cepat kehabisan hal untuk dicoba.
isaaclw

Jawaban:

6

Jadi saya berhasil menyelesaikan ini pada akhirnya. Ada masalah (bug) dengan mendeteksi volume logis, yang merupakan semacam kondisi ras (mungkin dalam kasus saya mengenai fakta bahwa ini terjadi di dalam KVM). Ini dibahas dalam diskusi berikut . Dalam kasus khusus saya (Debian Squeeze) solusinya adalah sebagai berikut:

  • backup skrip / usr / share / initramfs-tools / script / local-top / lvm2
  • terapkan tambalan dari laporan bug yang disebutkan
  • jalankan pembaruan-initramfs -u

Ini membantu saya, berharap itu akan membantu orang lain (anehnya, ini belum menjadi bagian dari arus utama).

Tautan ke tambalan: _http: //bugs.debian.org/cgi-bin/bugreport.cgi? Msg = 10; nama file = lvm2_wait-lvm.patch; att = 1; bug = 568838

Di bawah ini adalah salinan untuk anak cucu.

--- /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
 }
zeratul021
sumber
Perlu dicatat bahwa dalam diskusi bug debian masalah belum terselesaikan. jadi solusi yang disajikan di sini mungkin bukan yang benar
eMBee
Saya akan kagum jika ini karena bug berusia 9 tahun dengan solusi yang diuji pada distribusi berusia 8 tahun. Saya tidak mengerti bagaimana ada penampakan bug itu 3 tahun kemudian.
zeratul021
5

Buat skrip startup /etc/init.d/lvmberisi yang berikut ini:

#!/bin/sh

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

exit 0

Kemudian jalankan perintah:

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

Sebaiknya lakukan trik untuk sistem Debian.

Le dude
sumber
1
bagi mereka yang bertanya-tanya, seperti saya sebelumnya, vgscanmencari grup volume pada sistem, dan vgchange -amembuat grup volume tersedia ( -ay) atau tidak ( -an).
Dan Pritts
1

Saya punya masalah ini juga. Pada akhirnya inilah yang tampaknya memperbaikinya:

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"

Hal-hal lain yang saya coba:

  1. tambalan Anda
  2. diffing /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

Saya melewati dan membuka kancing perubahan lainnya, ini adalah satu-satunya yang penting bagi saya, meskipun itu mungkin yang paling tidak elegan.

isaaclw
sumber
0

Jika vgscan"menemukan" volume, Anda harus dapat mengaktifkannyavgchange -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

Saya tidak yakin apa yang akan menyebabkan mereka tidak aktif setelah reboot.

Alex
sumber
Hai, terima kasih sudah melakukan itu sebelumnya. Tetapi jika saya reboot kita kembali ke hal yang tidak aktif. Saya mencoba untuk me-mount segera setelah mengaktifkannya tetapi itu menutup saya dengan file tidak ditemukan kesalahan.
zeratul021
Dapat bermasalah dengan /etc/lvm/lvm.conf, mengambil cadangan file saat ini dan mencoba untuk menyalin lvm.conf dari beberapa sistem lain dan lihat apakah itu menyelesaikan masalah
Saurabh Barjatiya
0

Tanpa rincian konfigurasi atau pesan kesalahan yang perlu kami berikan jawaban yang sebenarnya, saya akan mengambil bacokan dalam gelap dengan grub-mkdevicemapsebagai solusi.

BMDan
sumber
0

Dengan asumsi sistem Anda menggunakan initramfs, mungkin ada masalah konfigurasi di sana. Anda harus memperbarui gambar initramfs Anda yang dimulai pada saat boot oleh grub (di Debian Anda melakukan ini dengan pembaruan-initramfs, tidak tahu tentang distro lain).

Anda juga bisa melakukan ini dengan tangan dengan membongkar initramfs dan mengubah /etc/lvm/lvm.conf (atau sesuatu seperti itu) di gambar initramfs Anda dan kemudian mengemasnya kembali.

Jasper
sumber
Hai, terima kasih atas sarannya, saya akan mencoba memeriksanya nanti malam. Yang aneh adalah bahwa setelah menginstal deb kernel baru, perbarui initramfs dan perbarui grub segera diikuti.
zeratul021
sesuatu juga terjadi pada saya dengan dua array serangan yang diperlukan untuk boot. Mereka tidak memulai lagi di initramfs, meskipun pembaruan-initramfs berjalan dengan baik. Saya harus secara manual mengubah cara mdadm mencari array serangan di mdadm.conf dan kemudian jalankan kembali initupdate-ramfs.
Jasper
Saya berkomentar di posting di bawah ini tentang lvm.conf. Saya menemukan bahwa ketika saya menjalankan perintah lvm dan kemudian vgscan dan vgchange -ay dan keluar dari shell initramfs saya boot seperti yang seharusnya. Jadi masalahnya adalah di suatu tempat di initramfs, bahwa itu tidak mengaktifkan LVM. Sekadar catatan, / boot ada di partisi terpisah.
zeratul021
Masalah Anda masih dengan pembaruan-initramfs tidak berfungsi dengan benar. Mungkin Anda harus melihat apakah ada pembaruan untuk initramfs-tools dan kemudian coba perbarui-initramfs. Jika ini tidak berhasil, Anda masih harus melihat ke dalam gambar initramfs di lvm.conf.
Jasper
Sayangnya saya tidak tahu cara mengkonfigurasi LVM, yang pernah saya lakukan adalah selama instalasi. Petunjuk selanjutnya adalah bahwa mesin virtual lain dengan tata letak disk yang persis sama gagal dengan cara yang sama persis, jadi saya perlu menggali mengapa LVM tidak diaktifkan saat boot.
zeratul021
0

Saya punya masalah yang sama di lingkungan saya menjalankan Red Hat 7.4 sebagai tamu KVM. Saya menjalankan qemu-kvm-1.5.3-141 dan virt-manager 1.4.1. Pada awalnya saya menjalankan Red Hat 7.2 sebagai bintang tamu tanpa masalah, tetapi setelah memutakhirkan rilis minor dari 7.2 ke 7.4 dan kernel ke versi terbaru 3.10.0-693.5.2, ada yang tidak beres dan tidak bisa mem-boot partisi / var LV saya. lebih. Sistem beralih ke mode darurat untuk meminta kata sandi root. Masuk dengan kata sandi root dan menjalankan perintah lvm vgchange -aydan systemctl defaultsaya dapat mengaktifkan /varLV dan mem-boot sistem.

Saya belum menemukan apa yang menyebabkan masalah ini, tetapi solusi saya adalah memasukkan LV ke /vardalam /etc/default/grubseperti yang Anda lihat di bawah:

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"

Kemudian saya harus menjalankan grub2-mkconfig -o /boot/grub2/grub.cfgdan memeriksa apakah rd.lvm.lv=vg_local/varsudah termasuk dalam baris vmlinuz /boot/grub2/grub.cfg. Setelah reboot sistem, saya tidak mendapatkan kesalahan untuk mengaktifkan /varLV saya lagi dan sistem menyelesaikan proses booting dengan sukses.

Ricardo Sena
sumber
0

tahu dalam kasus saya bahwa root grub adalah root = / dev / vgname / root

jadi tes di / usr / share / initramfs-tools / script / local-top / lvm2

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

selalu salah. dan volume root tidak pernah diaktifkan.

diperbarui / etc / fstab dari

/dev/vgname/root        /

untuk

/dev/mapper/vgname-root   /

dan melakukan:

update-grub
grub-install /dev/sda

memecahkan masalah saya

exeral
sumber
0

kami berlari ke dalam masalah ini dan menemukan bahwa menonaktifkan lvmetaddengan menetapkan use_lvmetad=0dalam /etc/lvm/lvm.confmemaksa volume yang akan ditemukan dan mae diakses pada saat boot.

eMBee
sumber