I tried to add a SSD to zpool by ZIL but I did a mistake.
I expected.. zpool add zones log c0t1d0
But I did... zpool add zones c0t1d0
I tried to execute zone remove, detach, offline commands, but it failed.
How can I remove a SSD without data loss in zpool?
$ zpool status
pool: zones
state: ONLINE
scan : non requested
config:
NAME STATE READ WRITE CKSUM
zones ONLINE 0 0 0
c0t0d0 ONLINE 0 0 0
c0t1d0 ONLINE 0 0 0
$ zpool iostat -v
capacity operations bandwidth
pool alloc free read write read write
---------- ----- ----- ----- ----- ----- -----
zones 280G 109G 40 139 1.28M 13.7M
c0t0d0 263G 15.3G 39 35 1.25M 2.61M
c0t1d0 17.6G 93.4G 0 104 20.9K 11.1M
---------- ----- ----- ----- ----- ----- -----
Currently, the zpool remove command only supports removing hot spares, log devices, and cache devices. Devices that are part of the main mirrored pool configuration can be removed by using the zpool detach command. Nonredundant and RAID-Z devices cannot be removed from a pool.
The scrub examines all data in the specified pools to verify that it checksums correctly. For replicated (mirror, raidz, or draid) devices, ZFS automatically repairs any damage discovered during the scrub.
Pools are destroyed by using the zpool destroy command. This command destroys the pool even if it contains mounted datasets. Be very careful when you destroy a pool.
UPDATE: the ZoL 0.8.0 release will contain this feature.
@user121391 is correct that today this is not possible except through a send
/recv
storage migration.
However, there is a new feature developed by Matt Ahrens (head of the OpenZFS community) that is close to landing on the master branch and will eventually make its way to other platforms (FreeBSD / Linux / macOS / etc.). Here is a link to the pull request on Github.
Once it integrates, you will be able to run zpool remove
on any top-level vdev, which will migrate its storage to a different device in the pool and add indirect mappings from the old location to the new one. It's not great if the vdev you're removing is already very full of data (because then accesses to any of that data have to go through the indirect mappings), but it is designed to work great for the use case you're talking about (misconfiguration that you noticed very quickly).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With