I have a strange situation here, in which I am unable to import an ZFS pool that I brought from another OS UNLESS I fdisk the disk of the pool. I am puzzled as to why this is happening and hoping to get an answer or an advice.
The flow: An ZFS pool containing a single 3TB disk is created on a "NAS4Free 9.3.0.2" system (FreeBSD). I export the pool and attach it to a "NexentaStor 4.0.4" system (OpenSolaris). zpool import then shows
root@nexenta:/volumes# zpool import
pool: tank1
id: 17717822833491017053
state: UNAVAIL
status: One or more devices are missing from the system.
action: The pool cannot be imported. Attach the missing
devices and try again.
see: http://illumos.org/msg/ZFS-8000-3C
config:
tank1 UNAVAIL insufficient replicas
c2t50014EE2B5B23B15d0p0 UNAVAIL cannot open
zdb -l on the disk shows label0 and label1 as expected but
--------------------------------------------
LABEL 2
--------------------------------------------
failed to read label 2
--------------------------------------------
LABEL 3
--------------------------------------------
failed to read label 3
I then run fdisk c2t50014EE2B5B23B15d0p0. It says the disk is not initialized and offers to initialize and create 1 Linux partition.
I let it do it. Then optionally delete the new partition and save.
At this point an MBR is created on the first sector of the disk. The disk as a whole is still a device of the zpool.
With the MBR on the disk, I am able to import the pool and as expected.
Important details: Same process with a 256GB disk works as expected without fdisk involvement. I suspect this issue is related to disks over 2TB.
What I have tried: See if disk size is detected correctly and the same on the different systems. It seems that disk geometry is different for fdisk on NexentaStor than for other systems. I am not certain how to verify.
Why does the creation of the MBR on such a disk allows for proper read of the ZFS labels on the end of the disk?