adding disk to zfs mirror after removal of disk
dpchrist at holgerdanske.com
Sat Aug 22 11:06:08 UTC 2020
On 2020-08-21 16:02, tech-lists wrote:
> I seem to have broken the zpool on a mirror setup. One of the disks
> errors, so detached it and ran a dd rw over the entire disk to make the
> hardware remap bad blocks. I then attached it to the pool and it
> Problem is now, the pool doesn't show its pooltype ie mirror-0, there's
> nothing where mirror-0 was, just the two disks.
> How to fix?
On 2020-08-21 22:04, tech-lists wrote:
> Hi, thanks for looking at this
> # zpool list wd
> NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH
> wd 7.25T 490G 6.77T - - 0% 6% 1.00x
> ONLINE -
> # zpool status wd
> pool: wd
> state: ONLINE
> scan: scrub repaired 0 in 0 days 01:00:27 with 0 errors on Fri Aug 21
> 11:38:48 2020
> NAME STATE READ WRITE CKSUM
> wd ONLINE 0 0 0
> diskid/DISK-WD-WCC131097443 ONLINE 0 0 0
> ada3 ONLINE 0 0 0
> errors: No known data errors
> The disks are 2 x western digital black 4TB. The disk that was removed from
> the mirror is ada3. The didkid/string is aka ada2. Ideally i'd like its
> changed back from that string to ada2 as well.
Thanks for the information. Trouble-shooting based upon facts greatly
improves the chances of success. :-)
I should have said this before -- first, back up all of your data.
You do not have the console sessions from when you created the pool and
from when you made changes to the pool and/or drive (?). Thankfully, I
think we can fix your pool without it.
I use a version control system (CVS) and create a project for every
computer. Inside each project, I maintain a plain text "administrative
log file" where I write notes to myself of what I'm doing, where, when,
and why. I copy and paste important console sessions into the log
files. I also check-in any system configuration files I create or
modify. All of this effort provides invaluable information for
historical research and future use. If you're not comfortable with a
version control system, putting stuff on a USB drive (and backing it up
frequently) is better than nothing.
Please run this command (and post the console session):
# freebsd-version ; uname -a
As for fixing your pool, research all of the following commands and make
sure you understand everything before you start. Save (and post) your
console sessions. You do have backups, right?
The first step is to remove the top-level virtual data device ada3 (see
# zpool remove wd ada3
Watch the pool status for removal progress:
# zpool status wd
Once ada3 has been removed from the pool, I would check it thoroughly
with WD Data Lifeguard Diagnostics (see ). Unfortunately, the
current version only runs on Windows. Run all available tests. Then
zero the entire drive. Then run all the tests again. If everything
passes, you're good. If anything fails, look for a "fix" option, run
that, and do the tests, zero, and tests again. Only proceed with this
drive if and when all of the tests, zero, tests run without error. If
not, get a new drive.
If you do not have a Windows computer, you need one.
There is an older bootable DOS version of WD DLD that may or may not
work for you (see ).
If you can't do WD DLD, fake it with dd(1) and smartctl(8).
The final step is to attach the wiped drive as a new device to the
existing device inside the mirror (see ). I don't know how you
obtained the "diskid/..." name, but do the same on the wiped drive.
Substitute this new name for $WIPED_DRIVE in the following command:
# zpool attach wd diskid/DISK-WD-WCC131097443 $WIPED_DRIVE
Watch the pool status for re-silvering progress:
# zpool status wd
p.s. -- Take a look at this guide for ideas on ZFS naming. The concepts
of unique pool names, unique top-level dataset names, and datasets named
per backup policies are very useful. I have implemented the first, but
have conflated the latter two (I am undecided if this was a good idea).
Use it to formulate your game plan:
More information about the freebsd-questions