I'm running NAS4Free 11.0.0.4.4490 on a HP MicroServer ProLiant Gen8. I've started out with a ZFS mirror RAID consisting of 2 WD Red disks. This mirror RAID was initially created using the WebGUI of NAS4Free 11.0.0.4.3460.
- I upgraded this by putting another, same sized WD Red in a third slot
- I imported the disk in the disk management
- I formatted the disk as ZFS storage pool and chose to create ZFS on a GPT partition like I did for the first 2 drives as well
- In the ZFS pool tools I used "Attach a data device" to attach the new disk to one of the first and it started resilvering
Code: Select all
pool: ZFSpool
state: ONLINE
scan: resilvered 3.92T in 9h24m with 0 errors on Thu Aug 3 03:56:57 2017
config:
NAME STATE READ WRITE CKSUM
ZFSpool ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
gpt/WX11D76N**** ONLINE 0 0 0
gpt/WX11D76D**** ONLINE 0 0 0
gpt/WXQ1H26Y**** ONLINE 0 0 0
errors: No known data errorsNow the problem: the NAS4Free configuration doesn't know about the third drive yet. Usually one would synchronize this within Disks > ZFS > Configuration > Synchronize. Doing so however will reproducibly break the ZFS vdev. The reason is that my stored configuration (which works) is using "ada" identifiers for the vdev (e.g. "/dev/ada0p1") instead of the "/dev/gpt/*" identifiers which is the "Detected" configuration. The synchronization will replace the ada identifiers with the gpt ones, leading to my vdev losing all disks - becoming essentially empty within "Disks > ZFS > Pools > Virtual Device".
The way I fixed it is, I took the backed up configuration from before the Synchronize operation and added in the additional third "ada" drive manually:
Code: Select all
<vdevices>
<vdevice>
<uuid>********-****-****-****-************</uuid>
<name>ZFSvdev</name>
<type>mirror</type>
<device>/dev/ada0p1</device>
<device>/dev/ada1p1</device>
<device>/dev/ada2p1</device>
<aft4k/>
<desc/>
</vdevice>
</vdevices>This works. If I load this configuration and reboot, everything works fine. All 3 disks are recognized within the ZFS vdev and the ZFS mirror pool works fine.
The configuraion file that is created by NAS4Free after the Synchronize operation looks as follows:
Code: Select all
<vdevices>
<vdevice>
<uuid>********-****-****-****-************</uuid>
<name>ZFSpool_mirror_0</name>
<type>mirror</type>
<device>/dev/gpt/WX11D76N****</device>
<device>/dev/gpt/WX11D76D****</device>
<device>/dev/gpt/WXQ1H26Y****</device>
<desc/>
</vdevice>
</vdevices>This does not work! The vdev within "Disks > ZFS > Pools > Virtual Device" is displayed as empty, not containing any disks. Also the vdev name and uuid changes, however the new name is correctly reflected in the "pool" substructure of the configuration XML.
I can rinse and repeat this infinite amount of times. The result is always the same. The Synchronize operation breaks the vdev. Only manually reverting the configuration file to the "ada" devices within the vdev fixes it. Despite "Disks > ZFS > Configuration > Detected" showing the same "/dev/gpt/<serial>" entries as the "zdb" command does.
NAS4Free did initially create my 2 disk ZFS mirror RAID with the "ada" device identifiers as it seems. Now it wants to use the "/dev/gpt/<serial>" identifiers when using Synchronize, which doesn't work despite the gpt identifiers being correct (same as zdb command). I have to manually edit the configuration to use the "ada" identifiers again. I configured and formatted my new third disk the same way I did the first two.
Does anyone have a clue what's wrong here?


