Boot timeout starting instance as t3.small type, works fine as t2.small

0

Hi,
my Centos7 AMI start fine as t2.small but does't boot using instance type t3.small or any Nitro Based instance type, with system log:

...
many dracut-initqueue timeout
...
[  184.749683] dracut-initqueue[231]: Warning: dracut-initqueue timeout - starting timeout scripts
[  185.258984] dracut-initqueue[231]: Warning: dracut-initqueue timeout - starting timeout scripts
[  185.262729] dracut-initqueue[231]: Warning: Could not boot.
[  185.265338] dracut-initqueue[231]: Warning: /dev/centos/root does not exist
[  185.268902] dracut-initqueue[231]: Warning: /dev/centos/swap does not exist
[  185.272733] dracut-initqueue[231]: Warning: /dev/mapper/centos-root does not exist
         Starting Setup Virtual Console...
[  OK  ] Started Setup Virtual Console.
         Starting Dracut Emergency Shell...
Warning: /dev/centos/root does not exist
Warning: /dev/centos/swap does not exist
Warning: /dev/mapper/centos-root does not exist
Generating "/run/initramfs/rdsosreport.txt"
Entering emergency mode. Exit the shell to continue.
Type "journalctl" to view system logs.
You might want to save "/run/initramfs/rdsosreport.txt" to a USB stick or /boot
after mounting them and attach it to a bug report.

I double checked all test (nitro support: ENA, NVMe, ecc.) and run nitro scripts as explained:

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/enhanced-networking-ena.html#test-enhanced-networking-ena
https://github.com/awslabs/aws-support-tools/tree/master/EC2/NitroInstanceChecks
https://aws.amazon.com/premiumsupport/knowledge-center/boot-error-linux-nitro-instance/
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/nvme-ebs-volumes.html

I tried many Fix, also editing fstab and /boot/grub2/grub,cfg using UUID instead of fixed device name, but nothings worked... I cannot find what stop on the boot process !

Edited by: Roxyrob on Jul 10, 2020 9:22 AM

Edited by: Roxyrob on Jul 10, 2020 9:26 AM

Edited by: Roxyrob on Jul 10, 2020 9:34 AM

Roxyrob
preguntada hace 4 años1758 visualizaciones
1 Respuesta
0

Found solution. I think aws documentation can be improved (check script and documentation for new nitro systems). Script erroneously return "OK" for NVMe check. In fact nvme driver (e.g. nvme.ko.xz) was present in the OS (modeprobe nvme), but not in initramfs, allowing boot unable to discover and use new nitro based nvme devices.

To add nvme driver in initramfs (available at device discover and mount phase):

echo 'add_drivers+=" nvme "' > /etc/dracut.conf.d/nvme.conf
dracut -f -v
lsinitrd /boot/initramfs-$(uname -r).img | grep nvme.ko

other configuration make instance more robust:

For (ENA):

(optional - network availability in initramfs phase)

echo 'add_drivers+=" ena "' > /etc/dracut.conf.d/ena.conf
dracut -f -v
lsinitrd /boot/initramfs-$(uname -r).img | grep ena.ko

(optional - avoid network device name change between reboot)

add net.ifnames=0 to kernel options (e.g in GRUB_CMDLINE_LINUX inside /etc/default/grub and executing grub2-mkconfig -o /boot/grub2/grub.cfg. OS distribution and version dependent)

(optional - avoid inconsistent disk name)

use UUID instead of device names in /etc/fstab and boot loader (e.g. for GRUB in /boot/grub2/grup.cfg root=UUID=...).

Edited by: Roxyrob on Jul 10, 2020 12:17 PM

Edited by: Roxyrob on Jul 10, 2020 12:31 PM

Roxyrob
respondido hace 4 años

No has iniciado sesión. Iniciar sesión para publicar una respuesta.

Una buena respuesta responde claramente a la pregunta, proporciona comentarios constructivos y fomenta el crecimiento profesional en la persona que hace la pregunta.

Pautas para responder preguntas