October 28Oct 28 Hi,My zfs cache pool with 2 slots has degraded. Not sure what's the root cause. But need the array back, so I guess will have to rebuild the pool.Since one of the two SSD disks is old and far beyond the write limits, I decided to not rebuild the pool mirror onto it and got a replacement.My cache-b shows 1 vdev with 3 devices. I never had 3 devices on this pool. (diag attached). So the pool config got corrupted?My idea now is to:1) Remove the pool2) Re-create a 2 slot zfs pool with same name (cache-b) and props3) Assign the good disk to slot 1, none to slot 2 and Start Array4) Optional: copy the data of the pool into array (backup).5) Stop the array and assign new disk (pre-cleared) to the 2nd slot6) Start array so that the zfs pool is rebuildIs this plan correct? (double checking here, don't want to lose data). nedio-server-diagnostics-20261028-0823.zip
October 28Oct 28 Community Expert Solution Before you change anything, there are two problems to fix. 1. Your flash drive is read-only. At boot it reported filesystem errors, and Linux set it read-only. Unraid can't save any configuration changes until this is fixed, so pool changes would not persist. Shut down, make a backup of the flash drive on another computer, then run a disk check/repair on it (on Windows: Properties > Tools > Check). Then boot again. If errors come back, replace the flash drive. 2. About the pool. The 840 EVO is not detected at all, which is why the pool is degraded. The "3 devices" comes from a pool setting that doesn't match the 2 slots, so Unraid reports the pool config as invalid. This doesn't mean the data on the 870 EVO is damaged. Please don't follow your plan as written. On 7.3.x there is a known issue when a ZFS mirror is started with a missing member: Unraid can remove the missing member and, in some cases, damage the remaining disk. Avoid any degraded start of this pool from the GUI. Do this instead: 1. With the array stopped, disable the VM service (Settings > VM Manager), because the domains share is on cache-b.2. Remove the cache-b pool and start the array without it. The 870 EVO will show as an unassigned device, and Unraid won't touch it.3. Mount the 870 EVO read-only from the console and copy the data to the array:cryptsetup luksOpen --readonly /dev/disk/by-id/ata-Samsung_SSD_870_EVO_250GB_*-part1 cachebzpool import -d /dev/mapper/cacheb -o readonly=on -R /mnt/temp cache-bzfs list Enter your array encryption passphrase when asked. If the import asks for -f, add it. The data will be under /mnt/temp/mnt/cache-b. Copy it to an array disk with enough free space, for example:rsync -avh /mnt/temp/mnt/cache-b/ /mnt/disk1/cache-b-backup/Then:zpool export cache-bcryptsetup luksClose cacheb 4. Check that the backup is complete. Then erase the 870 EVO (click it, then Erase, with the array stopped). Create a new pool named cache-b with 2 slots, assign the 870 EVO and the new SSD, set the file system to ZFS encrypted, mirror. Start the array and format the pool. Keeping the same name means your share settings still work.5. Copy the data back from the array to /mnt/cache-b and enable the VM service again. The new SSD doesn't need a preclear. Preclearing an SSD only uses up its write life. If the zpool import in step 3 gives an error, stop there and post the output.
October 28Oct 28 Author Thank you @JorgeB ! I will follow the steps you advised tonight.The 840 EVO is not detected as I have disconnected it and connected the replacement disk already.
4 hours ago4 hr Author I followed your suggested steps all the way to #4.But now I can't start the array.What do I do now? nedio-server-diagnostics-20261104-1008.zip
3 hours ago3 hr Community Expert cfg file for cache-a is not correct, this is separate from cacbe-b. Assuming the pool is made of those two devices, you can reimport it:on main click on the first device for that pool and then "remove pool"back on main, create a new pool with the same name and number of slotsassign the pool devices, leave the filesystem set to autostart the array to import the poolIf the pool fails to import post new diagnostics after the array starts
3 hours ago3 hr Author did that. array started. looks good on the Main. phew.before starting to format the cache-b, how should I verify that cache-a is in-tact now?
2 hours ago2 hr Community Expert cache-a looks good. Both devices are online in the mirror, there are no errors, and it's mounted with all your datasets.To confirm the data is good, run a scrub. Click cache-a on the Main page, then click Scrub. It should finish with 0 errors. Do the same for cache-b after you finish copying data to it.I see that cache-b is already formatted as a mirror with both SSDs and has about 98GB used. When you have confirmed that all the data is back, enable the VM service again (Settings > VM Manager) and check that your VMs start. After that you can delete the backup from the array.Your flash drive also looks fine now, there are no more errors.
26 minutes ago26 min Author All the scrubs run ok, no errors. VMs started. I'd say the topic closed. Thank you @JorgeB!
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.