Public bug reported:

When creating an Ubuntu 16.04 root install on a zfs using disks & zfs
pool created using "/dev/disk/by-id" and I get to the point of running:

          apt install grub-pc

I select the 4 disks I am putting into the ZFS pool to have grub
installed into but grub-pc fails (see attached screen shot):

Note:  first problem is that "menu" presented by grub-pc lists them as

/dev/sda
/dev/sdb
/dev/sdc
/dev/sdd

I think they should be listed as their "by-id" or "by-path" ... if you
created the zfs disks and pool with that!

In my case the disks were created/partitioned using:

sgdisk -Z -n9:-8M:0 -t9:bf07 -c9:Reserved -n2:-8M:0 -t2:ef02 -c2:GRUB -n1:0:0 
-t1:bf01 -c1:ZFS \
        /dev/disk/by-id/ata-ST2000DM001-1CH164_W1E8JLV9

sgdisk -Z -n9:-8M:0 -t9:bf07 -c9:Reserved -n2:-8M:0 -t2:ef02 -c2:GRUB -n1:0:0 
-t1:bf01 -c1:ZFS \
        /dev/disk/by-id/ata-ST2000DM001-9YN164_Z1E0713E

sgdisk -Z -n9:-8M:0 -t9:bf07 -c9:Reserved -n2:-8M:0 -t2:ef02 -c2:GRUB -n1:0:0 
-t1:bf01 -c1:ZFS \
        /dev/disk/by-id/ata-ST2000DM001-9YN164_Z1E084AP

sgdisk -Z -n9:-8M:0 -t9:bf07 -c9:Reserved -n2:-8M:0 -t2:ef02 -c2:GRUB -n1:0:0 
-t1:bf01 -c1:ZFS \
        /dev/disk/by-id/ata-ST2000DM001-9YN164_Z1E06YPY


later I use this command to created the ZFS Pool of 2 mirrors each with 2 HDs 
using "by-id".

zpool create -o ashift=12 -O atime=off -O canmount=off -O compression=lz4 \
     -O normalization=formD -O mountpoint=/ -R /mnt rpool mirror \
     /dev/disk/by-id/ata-ST2000DM001-1CH164_W1E8JLV9-part1 \
     /dev/disk/by-id/ata-ST2000DM001-9YN164_Z1E0713E-part1 \
     mirror /dev/disk/by-id/ata-ST2000DM001-9YN164_Z1E084AP-part1 \
     /dev/disk/by-id/ata-ST2000DM001-9YN164_Z1E06YPY-part1 -f

And confirm the ZFS pool is created correctly by:

      zpool status

which DOES and the above shows the disks "by-id" and NOT as sda, sdb,
sdc, sdd

But later in the process when running "apt install grub-pc" the disks
are listed as /dev/sda, /dev/sdb etc.

The grub-pc "form" where you select where to install should probably
look something like if the disks were created "by-id":

     [ ]   /dev/disk/by-id/ata-ST2000DM001-1CH164_W1E8JLV9
     [ ]   /dev/disk/by-id/ata-ST2000DM001-9YN164_Z1E0713E
     [ ]   /dev/disk/by-id/ata-ST2000DM001-9YN164_Z1E084AP
     [ ]   /dev/disk/by-id/ata-ST2000DM001-9YN164_Z1E06YPY


I did find a thread online where there is/was alot of discussion about this 
problem!

     https://github.com/zfsonlinux/grub/issues/5

Some work-arounds were suggested but also some where discussing the root
cause.

I think in 16.04 this Grub problem still exists.


My reasoning is that despite how I created the disks & the pool when I ran "apt 
install grub-pc" it lists the choices as /dev/sda, /dev/sdb etc.   

And if I just go ahead and select those disks (I figured why not try and
see what happens right?) then I get the errors shown in the attached
screen shot.

This "may" be a zfsonlinux BUG but since Ubuntu is now supporting ZFS I
figured I'd report it here so others encountering it know what is going
on.

Lastly...

I would suggest that the current Ubuntu Documentation on this is
incorrect:

https://wiki.ubuntu.com/Kernel/Reference/ZFS

The Ubuntu ZFS documentation says:

ZFS Pools

A zpool is a pool of storage made from a collection of VDEVS. One or
more ZFS file systems can be created from a ZFS pool.

In the following example, a pool named "pool-test" is created from 3
physical drives:

$ sudo zpool create pool-test /dev/sdb /dev/sdc /dev/sdd

Striping is performed dynamically, so this creates a zero redundancy
RAID-0 pool.

Notice: If you are managing many devices, it can be easy to confuse
them, so you should probably prefer /dev/disk/by-id/ names, which often
use serial numbers of drives. The examples here should not suggest that
'sd_' names are preferred. They merely make examples herein easier to
read.


THE ABOVE Notice I think is inaccurate in suggesting "you should probably 
prefer"... from all the documentation and examples I have found including the 
official example for installing

Ubuntu 16.04 Root on ZFS:
https://github.com/zfsonlinux/zfs/wiki/Ubuntu%2016.04%20Root%20on%20ZFS

Where in "2.2 Partition your disk" it says:

"Always use the long /dev/disk/by-id/* aliases with ZFS. Using the /dev/sd* 
device nodes 
directly can cause sporadic import failures, especially on systems that have 
more than one storage pool."

** Affects: grub (Ubuntu)
     Importance: Undecided
         Status: New


** Tags: zfs

** Attachment added: "screenshot of "apt install grub-pc" fail if zfs disks 
were created "by-id""
   
https://bugs.launchpad.net/bugs/1590740/+attachment/4680366/+files/apt%20install%20grub-pc%20%20failed.png

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1590740

Title:
  grub-pc, grub2 doesn't check /dev/disk/by-id or "by-path" for zfs
  zpool

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/grub/+bug/1590740/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to