서버를 다시 시작한 후 다음과 같은 오류 메시지가 나타납니다.
Begin: Running /scripts/init-premount … done.
Begin: Mounting root file system …
Begin: Running /scripts/local-top …
Volume group “ubuntu-vg” not found
Cannot process volume group ubuntu-vg
Begin: Running /scripts/local-premount …
...
Begin: Waiting for root file system …
Begin: Running /scripts/local-block …
mdadm: No arrays found in config file or automatically
Volume group “ubuntu-vg” not found
Cannot process volume group ubuntu vg
mdadm: No arrays found in config file or automatically # <-- approximately 30 times
mdadm: error opening /dev/md?*: No such file or directory
done.
Gave up waiting for root file system device.
Common problems:
- Boot args (cat /proc/cmdline)
- Check rootdelay= (did the system wait long enough?)
- Missing modules (cat /proc/modules: ls /dev)
ALERT! /dev/mapper/ubuntu--vg-ubuntu--lv does not exist. Dropping to a shell!
시스템은 lvm vgscan
볼륨 그룹이 발견되지 않고 ls /dev/mapper
하나의 항목만 표시되는 initramfs 쉘(busybox)로 이동합니다 control
.
라이브 SystemRescueCD를 부팅하면 볼륨 그룹을 찾을 수 있고 LV를 평소대로 사용할 수 있으며 /dev/mapper/ubuntu--vg-ubuntu--lv
이를 마운트할 수 있고 VG가 활성으로 설정됩니다. 그래서 VG와 LV는 괜찮아 보이는데, 시작하는 동안 뭔가 망가진 것 같습니다.
Ubuntu 20.04 서버, SSD 4개가 있는 하드웨어 raid1+0에 LVM 설정. 하드웨어 RAID 컨트롤러는 펌웨어 버전 3.00이 포함된 HPE Smart Array P408i-p SR Gen10 컨트롤러입니다. RAID 1+0 구성의 HPE SSD 모델 MK001920GWXFK 4개. 서버 모델은 HPE Proliant DL380 Gen10입니다.
소프트웨어 공격도 없고 암호화도 없습니다.
오류를 찾고 문제를 해결하는 방법에 대한 팁이 있습니까?
저를 편집하세요:
어디
- /dev/sdc1은 /boot/efi입니다.
- /dev/sdc2는 /boot입니다.
- /dev/sdc3은 PV입니다.
이전 커널 버전에서 부팅하면 실행될 때까지 잘 작동했습니다 apt update && apt upgrade
. 이전 커널은 업그레이드 후에도 동일한 문제가 발생했습니다.
편집 2:
모듈 내에서 /proc/modules
다음 항목을 찾을 수 있습니다.
smartpqi 81920 0 - Live 0xffffffffc0626000
lvm pvs
initramfs 쉘에는 출력이 없습니다.
출력은 다음과 같습니다lvm pvchange -ay -v
No volume groups found.
출력은 다음과 같습니다lvm pvchange -ay --partial vg-ubuntu -v
PARTIAL MODE. Incomplete logical volumes will be processed.
VG name on command line not found in list of VGs: vg-ubuntu
Volume group "vg-ubuntu" not found
Cannot process volume group vg-ubuntu
동일한 모델 P408i-p SR Gen10에 HDD가 연결된 두 번째 RAID 컨트롤러가 있습니다. "cinder-volumes"라는 볼륨 그룹이 이 RAID 위에 구성됩니다. 하지만 이 VG는 initramfs에서 찾을 수 없습니다.
3개를 편집하세요.
여기 하나 있어요협회루트 FS에서 요청된 파일까지:
- /mnt/var/log/apt/term.log
- /mnt/etc/initramfs-tools/initramfs.conf
- /mnt/etc/initramfs-tools/update-initramfs.conf
편집 4:
SystemRescueCD에서 LV /
(루트) 를 설치 /boot
하고 /boot/efi
LV/로 루트를 지정했습니다. 마운트된 모든 볼륨에는 충분한 디스크 공간이 남아 있습니다(사용된 디스크 공간 < 32%).
출력은 update-initramfs -u -k 5.4.0.88-generic
다음과 같습니다
update-initramfs: Generating /boot/initrd.img-5.4.0.88-generic
W: mkconf: MD subsystem is not loaded, thus I cannot scan for arrays.
W: mdadm: failed to auto-generate temporary mdadm.conf file
이 이미지에는 /boot/initrd.img-5.4.0-88-generic
마지막 수정 날짜가 업데이트되었습니다.
다시 시작한 후에도 문제가 계속 발생합니다. initrd
Grub 메뉴 구성의 부팅 매개변수는 XX가 각 메뉴 항목마다 다른 위치(예: 88, 86 및 77)를 /boot/grub/grub.cfg
가리킵니다 ./initrd.img-5.4.0-XX-generic
/boot
디렉토리 에서 다양한 이미지(?)를 찾을 수 있습니다.
vmlinuz-5.4.0-88-generic
vmlinuz-5.4.0-86-generic
vmlinuz-5.4.0-77-generic
이 링크는 /boot/initrd.img
최신 버전을 가리킵니다 /boot/initrd.img-5.4.0-88-generic
.
5개 편집:
어떤 조치도 원하는 효과를 얻지 못했고 시스템을 복구하려는 노력이 너무 컸기 때문에 서버를 완전히 재구축해야 했습니다.
답변1
나는 매우 비슷한 문제가 있습니다. 새 커널 설치에 실패한 후(주로 /boot
파티션 공간 부족으로 인해) initramfs를 수동으로 업데이트했고 재부팅 시 initramfs는 암호화된 파티션의 암호 해독 프로세스를 묻는 메시지를 표시하지 않았습니다. Volume group “vg0” not found
터미널과 유사하지만 기능이 제한된 initramfs에 대해서도 비슷한 오류와 프롬프트가 표시됩니다 .
내 문제가 해결되었습니다.
- 부팅 파티션의 공간을 확보하십시오.
- 설치하다
cryptsetup-initramfs
.
1단계에서는 이 게시물의 레시피를 사용하여 이전 커널을 제거했습니다.https://askubuntu.com/a/1391904/1541500. 1단계에 대한 참고 사항: 이전 커널로 부팅할 수 없는 경우(저의 경우처럼) 밤에 명령을 실행한 후 2단계(Live CD 세션)의 일부로 이 단계를 수행해야 합니다 chroot
.
2단계에서는 Live CD로 부팅하고 터미널을 열었습니다. 그런 다음 시스템을 설치하고 누락된 패키지를 설치했으며 마지막 커널을 다시 설치하라는 메시지가 표시되었습니다(initramfs 및 grub cfg가 자동으로 업데이트됨).
아래에는 시스템을 복구하기 위해 2단계에서 Live CD 세션 터미널에 사용된 명령이 나열되어 있습니다.
제 경우에는 다음과 같은 파티션이 있습니다.
/dev/sda1
/boot/efi
~와 함께fat32
/dev/sda2
/boot
~와 함께ext4
/dev/sda3
- > 이것은 내 암호화된 파티션이고 내 쿠분투 설치입니다vg0
.lvm2
내 암호화된 파티션 CryptDisk
이 /etc/crypttab
. 해독된 파티션을 사용하려면 이 이름이 필요합니다 cryptsetup luksOpen
. 복호화 후에는 , 및 vg0
3개의 파티션이 있습니다 .root
home
swap
이제 LIVE CD 터미널에서 실행되는 명령으로 돌아갑니다.
sudo cryptsetup luksOpen /dev/sda3 CryptDisk # open encrypted partition
sudo vgchange -ay
sudo mount /dev/mapper/vg0-root /mnt # mount root partition
sudo mount /dev/sda2 /mnt/boot # mount boot partition
sudo mount -t proc proc /mnt/proc
sudo mount -t sysfs sys /sys
sudo mount -o bind /run /mnt/run # to get resolv.conf for internet access
sudo mount -o bind /dev /mnt/dev
sudo chroot /mnt
apt-get update
apt-get dist-upgrade
apt-get install lvm2 cryptsetup-initramfs cryptsetup
apt-get install --reinstall linux-image-5.4.0-99-generic linux-headers-5.4.0-9 9-generic linux-modules-5.4.0-99-generic linux-tools-5.4.0-99-generic
재부팅에 성공한 후 update-initramfs -c -k all
.
답변2
이전 커널 버전으로 부팅한 후 문제가 사라졌지만 업그레이드 후에 다시 나타났기 때문에 실수로 커널 버전을 전환한 것일 수도 있습니다.https://wiki.ubuntu.com/Kernel/LTSEnablementStack자세한 내용은.
기본적으로 Ubuntu 20.04는 Linux 커널의 세 가지 버전 중 하나를 사용할 수 있습니다.
- Ubuntu 20.04 버전의 공식 릴리스(GA): 메타패키지
linux-generic
- OEM 특별 버전: 메타패키지
linux-oem-20.04
- 장기 지원 활성화/하드웨어 활성화(HWE) 커널 버전: 메타패키지
linux-generic-hwe-20.04
귀하의 하드웨어가 너무 새것이어서 OEM 또는 HWE 코어가 필요할 수 있습니다. 그러나 시스템에 처음에 "잘못된" 커널이 설치되어 있었고 해당 메타패키지를 설치하지 않고 올바른 커널을 수동으로 설치한 경우 업데이트 메커니즘은 이제 기본적으로 smartpqi
하드웨어에 특정한 드라이버 가 있는 GA 시리즈의 최신 커널을 설치하게 될 수 있습니다. 너무 늙었을 수도 있습니다.
paladin이 의견에서 제안한 것처럼 SystemRescueCD에서 부팅하고 /var/log/apt/term.log
시스템을 조사하여 업데이트에서 대체된 정확한 커널 패키지 버전을 찾아야 할 수도 있습니다.
올바른 커널 버전을 알고 나면 부팅 메뉴를 다시 시도하거나(아직 작동하는 이전 커널 버전이 포함되어 있는 경우) SystemRescueCD에서 부팅하고 루트 LV 및 chroot를 여기에 마운트한 후 기타 필요한 파일 시스템을 마운트할 수 있습니다. 을 클릭한 다음 최신 커널 패키지를 설치합니다.딱 맞는 맛을 누른 다음 다시 시작하세요.
시스템이 만족스럽게 실행되면 "잘못된" 커널 스타일과 관련된 메타패키지를 제거해야 합니다(설치된 경우). apt
이러한 메타패키지는 새 커널 업데이트가 가능할 때마다 커널 스타일을 직접 선택합니다.
커널 스타일이 올바른 것으로 판명되면 디스크 공간이 부족하여 update-initramfs
새 커널에 대한 새 initramfs 파일을 생성하는 등 상황이 더 간단해질 수 있습니다.
쉬운 수정 방법이 있습니다. 먼저 일부 디스크 공간을 확보한 다음( apt
캐시를 지우는 것이 apt clean
도움이 될 수 있음) 실행하여 update-initramfs -u -k version-of-newest-kernel-package
initramfs 파일을 다시 생성합니다. initramfs가 현재 실패하는 모든 커널 버전에 대해 이 명령을 반복하여 나중에 더 많은 문제가 발생할 경우를 대비해 더 많은 실행 가능한 부팅 옵션을 제공할 수 있습니다.
답변3
얼마 전에 비슷한 문제가 발생했습니다. 설정에 다른 LVM 볼륨을 추가하고 실수로 ubuntu-vg의 이름을 새 볼륨으로 변경했습니다(명령 실행 중 혼란).
해결책은 USB 부팅 가능 디스크에서 부팅하고 결함이 있는 vg의 이름을 다시 바꾸는 것입니다. 내가 따라온 단계는 다음과 같습니다.
Live Linux USB Open 터미널을 사용하여 실행하고 다음을 입력합니다. 2.1 sudo vgdisplay --> 설정에서 모든 vgs 목록 표시
2.2 메인 FS를 방해하거나 포함하는 vg 식별
2.3 sudo vgrename <오류 이름> ubuntu-vg
위의 작업을 완료한 후 정상적으로 종료한 후 다시 시작하세요. grub은 볼륨을 확인하고 정상적으로 마운트합니다.