error: couldn't find a valid DVA

scrutinyusher

New Member
Feb 5, 2017
1
0
1
44
Hi All,

I'm hoping someone will be able to help me. I have Proxmox 4 installed on a ZFS array of 4 x 3TB SATA drives that was configured during the initial Proxmox installation. This has worked fine for quite some time. However, today I rebooted the server and during boot, GRUB (version 2.02-pve4) presents me with this message:

Loading Linux 4.4.6-1-pve ...
Loading initial ramdisk ...
error: couldn't find a valid DVA.

press any key to continue...
This then ends with a kernel panic:

not syncing: VFS: Unable to mount root fs on unknown-block(0,0)

The GRUB command being run is the default that was configured by Proxmox:

load_video
insmod gzio
insmod part_gpt
echo 'Loading Linux 4.4.6-1-pve ...'
linux /ROOT/pve-1@/boot/vmlinuz-4.4.6-1-pve root=ZFS=/ROOT/pve-1 ro boot=zfs $bootfs root=ZFS=rpool/ROOT/pve-1 boot=zfs quiet
echo 'Loading initial ramdisk ...'
initrd /ROOT/pve-1@/boot/initrd.img-4.4.6-1-pve

I've been trying to troubleshoot in the GRUB command line by running each line one by one. Naturally the couldn't find a valid DVA error occurs when I run the initrd command (but obviously without the kernel panic).

I am able to browse the ZFS volume in the GRUB command line though. For instance, this GRUB command:

ls /ROOT/pve-1@/srv/
will show everything I expect to find in that directory.

So if the ZFS array is OK, I'm guessing the issue might be caused by GRUB or with the ramdisk that is being loaded. Is anyone able to shine some light on a cause or possible solution?

Thanks!
 
Hi Scrutinyusher,

I had this problem a week or so ago. You need to boot with a SystemrescueCD including ZFS. Then go through the process of importing the zpool and mounting it. Here is a good desription of the mount and unmount prozess: https://forum.proxmox.com/threads/unable-to-boot-from-zfs-rpool-after-upgrading-to-pve-4-2.27222/. As an aside, I had also had problems with grub. The link was very helpful in alleviating that problem. But then the "invalid DVA" happened.
Once all is imported and mounted chroot into it. In /boot you'll see both the initrd.img-4.4.6-1-pve and vmlinuz-4.4.6-1-pve files. Within /boot make a temp folder, move both files into it and then move them both back into /boot. Then you can remove the temp folder. Follow the umount prozess, resetting the zfs mountpoint and finally reboot.

The reasoning behind it is simple, once you see it. DVA (DataVirtualAddress) is made up of a 32bit integer representing the VDEV followed by a 63bit integer representing the offset. By moving the file and moving back to its original place (preserving grub paths) you essentially reset the offset in the DVA. I could then reboot without further problems.
 

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!