18.04로 업그레이드한 후 Boot.mount가 실패함

18.04로 업그레이드한 후 Boot.mount가 실패함

이 문제는 16.04에서 18.04로 업그레이드된 많은 서버에서 발생했습니다. 일반적인 구성은 루트가 LVM이고 /boot 파티션이 있거나 /boot 및 /boot/efi 파티션이 있다는 것입니다. 예를 들어:

$ lsblk -f
NAME                         FSTYPE      LABEL UUID                                   MOUNTPOINT
sda                                                                                   
├─sda1                       vfat              C45F-2000                         /boot/efi     
├─sda2                       ext2              a906fd59-cb58-4c94-8560-5d426e4   /boot
└─sda3                       LVM2_member       1P3Rxv-VZMx-gcs9-PlxM-DCI8-kIqr
  ├─node--007--vg-root       ext4              316678d5-aaaf-43bd-bac6-cc3aeb1   /
  ├─node--007--vg-swap_1     swap              0724b0b0-9f2d-42aa-bbe2-7b8aa31   [SWAP]
  ├─node--007--vg--na      ext4              7d42481b-f7fb-4ac6-9cf5-5df3ca17   /cache/na
  ├─node--007--vg-c        ext4              e38d96f8-6afb-4d2c-94cc-28a02e90   /cache/c
  └─node--007--vg-t        ext4              44559b67-869e-4454-b792-792c1a16   /cache/d

커널 디버그 로깅을 사용하면 장치 대기 시간 초과에 대한 이러한 종류의 로깅이 항상 표시됩니다.

Mar 30 16:14:22 ns1 systemd-udevd[539]: seq 3206 '/devices/pci0000:00/0000:00:1f.2/ata2/host1/target1:0:0/1:0:0:0/block/sda' is taking a long time
Mar 30 16:14:22 ns1 systemd[1]: systemd-udevd.service: Got notification message from PID 539 (WATCHDOG=1)
Mar 30 16:14:50 ns1 systemd[1]: dev-disk-by\x2duuid-a906fd59\x2dcb58\x2d4c94\x2d8560\x2d5d426e4.device: Job dev-disk-by\x2duuid-a906fd59\x2dcb58\x2d4
Mar 30 16:14:50 ns1 systemd-journald[501]: Forwarding to syslog missed 70 messages.
Mar 30 16:14:50 ns1 systemd[1]: dev-disk-by\x2duuid-a906fd59\x2dcb58\x2d4c94\x2d8560\x2d5d426e4.device: Job dev-disk-by\x2duuid-a906fd59\x2dcb58\x2d4
Mar 30 16:14:50 ns1 systemd[1]: Timed out waiting for device dev-disk-by\x2duuid-a906fd59\x2dcb58\x2d4c94\x2d8560\x2d5d426e4.device.
Mar 30 16:14:50 ns1 systemd[1]: boot.mount: Job boot.mount/start finished, result=dependency
Mar 30 16:14:50 ns1 systemd[1]: Dependency failed for /boot.

이 시점에서 스왑 및 LVM이 마운트됩니다. 비상 모드가 시작되고 Ctrl-D를 누르면 부팅이 계속되고 모든 것이 정상입니다.

/boot 아래의 모든 파일을 tar하고, /boot 및 /boot/efi를 umount하고, tar를 풀고, fstab을 변경하고, initramfs를 업데이트하고, 해당 파티션 없이 재부팅하면 노드가 부팅됩니다.

lvms가 성공적으로 마운트되었음에도 비상 모드가 시작되기 전에는 /dev/sda가 연결되었다는 로그가 발생하지 않는 것으로 나타났습니다. Ctrl-D를 눌러 부팅을 계속하면 로그가 발생하고 sda2를 포함한 모든 것이 정상적으로 마운트됩니다.

Mar 30 16:15:33 ns1 systemd[1]: dev-sda.device: Changed dead -> plugged

도움을 주시면 감사하겠습니다.

답변1

많은 검색 끝에 /etc/udev/udev.conf에서 매우 편리한 디버그 로깅을 활성화하고 initramfs를 업데이트했습니다.

$ cat /etc/udev/udev.conf 
# see udev.conf(5) for details
#
# udevd is started in the initramfs, so when this file is modified the
# initramfs should be rebuilt.

#udev_log="info"
#event_timeout=300
udev_log="debug"

이는 문제를 식별하는 데 도움이 되었습니다. 부팅 초기에 수천 개의 '컬'이 발생했으며 이는 'sd*' 장치 추가 및 제거에 작동하는 udev 규칙에서 발생했습니다. 해당 규칙 작업을 주석 처리했고 이제 시스템이 부팅됩니다! 로그는 Journalctl -b로 볼 수 있습니다.

관련 정보