I have a RAID-Z pool with four 1 TB drives. Each drive is encrypted with geli and the zpool is created on top of the .eli devices (ada{0,1,2,3}.eli). A few months ago one of the drives (ada3) crashed and I replaced the drive with a new one (encrypted it with geli and replaced the faulty disk in the pool) and resilvered the array.
Now another disk in the pool crashed (ada1) and I have replaced it with a new one. However, after unlocking the drives in the pool, zpool claims that ada3.eli is unavailable (it finds ada0.eli and ada2.eli just fine). I am left to wonder what to do now. The problem reported in the following discussion could be related:
http://forums.freenas.org/index.php?threads/zfs-pool-resilvered-upon-reboot-forgets-new-drive.14396/
I am unable to remember if I have rebooted the computer since replacing the first faulty drive. Some data which could be relevant: the ZFS pool was originally created on FreeBSD 7 using the devices ad{0,4,8,12}.eli (but the naming scheme changed during some OS upgrade). I am currently running FreeBSD 9.1. If I run
whereas
And, indeed,
Curiously,
How can I fix this discrepancy? I have not yet tried running
zpool status
reported the pool as working properly and the scrubbing completed with no errors.Now another disk in the pool crashed (ada1) and I have replaced it with a new one. However, after unlocking the drives in the pool, zpool claims that ada3.eli is unavailable (it finds ada0.eli and ada2.eli just fine). I am left to wonder what to do now. The problem reported in the following discussion could be related:
http://forums.freenas.org/index.php?threads/zfs-pool-resilvered-upon-reboot-forgets-new-drive.14396/
I am unable to remember if I have rebooted the computer since replacing the first faulty drive. Some data which could be relevant: the ZFS pool was originally created on FreeBSD 7 using the devices ad{0,4,8,12}.eli (but the naming scheme changed during some OS upgrade). I am currently running FreeBSD 9.1. If I run
zdb
it identifies the third disk (the one that crashed a few months ago) as:
Code:
children[3]:
type: 'disk'
id: 3
guid: 13212171415151566930
path: '/dev/ad12.eli'
whole_disk: 0
DTL: 21
whereas
zdb -l /dev/ada{0,2,3}.eli
(the disks that should still be working) each identify the third disk as:
Code:
children[3]:
type: 'disk'
id: 3
guid: 8683322241746783619
path: '/dev/ada3.eli'
phys_path: '/dev/ada3.eli'
whole_disk: 1
DTL: 7
And, indeed,
zpool status
reports:
Code:
13212171415151566930 UNAVAIL 0 0 0 was /dev/ad12.eli
Curiously,
zdb
also reports "version: 15" whereas zdb -l <device>
all report "version: 28" (I am quite sure that I upgraded ZFS to version 28).How can I fix this discrepancy? I have not yet tried running
zpool replace <pool> 13212171415151566930 /dev/ada3.eli
since I am afraid of data loss now that another disk has actually crashed. Should it be safe to issue this command? Or is there some other course of action that can be taken? Could I reimport the zpool from the disks somehow? Considering that they seem to contain the proper information about the pool.