Fixing vdev name
Alexander Leidinger
Alexander at leidinger.net
Thu Sep 20 19:45:24 UTC 2018
Quoting David Chisnall <theraven at freebsd.org> (from Thu, 20 Sep 2018
14:05:46 +0100):
> [ Please keep me in the cc line - I'm not subscribed to this list ]
>
>>> Hello the list,
>>>
>>> I have a VM that uses ZFS with a pair of striped devices. The
>>> first is a partition on the root disk, created by the installer.
>>> When this was too small, I added another device (da1) and told
>>> the pool to expand to use it (no redundancy, because the
>>> underlying storage for the VM images provides that). After a
>>> reboot, I can no longer boot the system. Booting from the install
>>> CD and attempting to import the pool, it correctly identifies
>>> da0p4 as one of the devices, but gives me a long number instead
>>> of da1.
>>
>> This means ZFS doesn't see the other device (or more correctly no
>> device with the ZFS meta-data on the device which matches what the
>> pool wants to see as the second vdev).
>
> So there's been some corruption to the disk?
Maybe.
>> Do you see the second disk from non-ZFS tools?
>
> geom lists da1 as a device of the correct type, but zdb doesn't find
> any labels for it.
>
>> Does the partition info look OK there (if you partitioned it
>> before giving it to ZFS)?
>
> I dind't partition it, I just assigned the whole thing to ZFS.
For a raw disk (real hardware) not recommended, but for a LUN from a
SAN I see no issue with that.
>> Does the geometry/size look correct?
>
> Yup, in geom list it all looks sensible.
>
>>
>>> How do I fix this so that the pool again points to da1?
>>
>> As a side note, it doesn't matter if it is da1 or something else
>> (e.g. /dev/gpt/<volid> or whatever), as long as it is a geom
>> provider instead of the uuid of the device like it seems to be the
>> case right now.
>
> So does this mean that something on the (virtual) disk was corrupted
> (sufficiently to remove both copies of the label and the uberblock)?
Sounds like. Or the unterlying provider was in some kind of "revert to
initial state after power-cycle" mode. Or the backing store was
exchanged in between. Or ...
If you have the space, make an exact copy of the backing store of both
disks, then run "zpool import -F <pool_name>". This will _try_ to
revert back to a pool state which can be imported (before addition of
the 2nd vdev). This will then off course be without any data (or
chance to recover it) since the addition of the second vdev, but maybe
this is good enough for you. You then have off course the possibility
to copy both pools back from the "safecopy" you did before and you
will be in the same situation as now.
I have no other idea right now and don't know if there is some kind of
way to let zfs/zdb search harder for ZFS structures on disk (to give
you an idea of what may have happened or how big a possible corruption
is).
Bye,
Alexander.
--
http://www.Leidinger.net Alexander at Leidinger.net: PGP 0x8F31830F9F2772BF
http://www.FreeBSD.org netchild at FreeBSD.org : PGP 0x8F31830F9F2772BF
More information about the freebsd-fs
mailing list