ZFS replace/expand problem

Johan Ström johan at stromnet.se
Thu Dec 27 11:43:06 PST 2007


Hello list

First of all, I want to thank everybody involved in writing and  
porting ZFS to FreeBSD, its working (except for this problem) great  
for me!

Now to my problem. To sumarize it, I want to replace two mirrored  
disk with bigger ones. Replace works well but the vdev doesnt expand  
until i do export/import. Details follows:

I currently have the following setup:

back-1 /$ zpool status
   pool: tank
  state: ONLINE
  scrub: none requested
config:
         NAME         STATE     READ WRITE CKSUM
         tank         ONLINE       0     0     0
           mirror     ONLINE       0     0     0
             ad14s1d  ONLINE       0     0     0
             ad16s1d  ONLINE       0     0     0
           mirror     ONLINE       0     0     0
             ad8      ONLINE       0     0     0
             ad10s2   ONLINE       0     0     0
           mirror     ONLINE       0     0     0
             ad12     ONLINE       0     0     0
             ad10s1   ONLINE       0     0     0

The ad8/ad10/ad12 setup is kindof stupid, I know.. ad8 is a 80Gb and  
ad10 is a 120Gb, and a10 200Gb.. But now I want to replace those two  
mirrors with 4x 300GB (or rather 2x300 and 2x320). So my plan was to  
do something like:

zpool replace tank ad8 ad18
zpool replace tank ad10s2 ad20

where ad18 and ad20 are the two 300Gbs.. Then the same thing for ad12  
and ad10s1.. But before I did that i wanted to make sure that it  
would actually expand as I'ev read, so i tried this first..
On ad18/ad20 I had ad*s1a, a 500MB partition, and ad*s1g a ~280Gb  
partition. So i created a testtank with first ad*s1a:

back-1 /$ zpool create testtank mirror /dev/ad18s1a /dev/ad20s1a
back-1 /$ zpool list
NAME                    SIZE    USED   AVAIL    CAP  HEALTH     ALTROOT
tank                    878G    812G   65.1G    92%  ONLINE     -
testtank                492M    111K    492M     0%  ONLINE     -

back-1 /$ zpool status
..
   pool: testtank
  state: ONLINE
  scrub: none requested
config:

         NAME         STATE     READ WRITE CKSUM
         testtank     ONLINE       0     0     0
           mirror     ONLINE       0     0     0
             ad18s1a  ONLINE       0     0     0
             ad20s1a  ONLINE       0     0     0

errors: No known data errors
back-1 /storage$ zpool replace testtank ad18s1a ad18s1g
status now shows
           mirror       ONLINE       0     0     0
             replacing  ONLINE       0     0     0
               ad18s1a  ONLINE       0     0     0
               ad18s1g  ONLINE       0     0     0
             ad20s1a    ONLINE       0     0     0

when that was done (and only ad18s1g was showing) i did

back-1 /storage$ zpool replace testtank ad20s1a ad20s1g

and then same replacing output as above (but for ad20)
Okey, so now when this is done.. it should have expanded one would  
think, right?

back-1 /storage$ zpool list
NAME                    SIZE    USED   AVAIL    CAP  HEALTH     ALTROOT
..
testtank                492M    218K    492M     0%  ONLINE     -


Nope.. Waited a while, nothing happened.. Some googling gave me that  
export/import could be done:

back-1 /storage$ zpool export testtank
back-1 /storage$ zpool import testtank
back-1 /storage$ zpool list
NAME                    SIZE    USED   AVAIL    CAP  HEALTH     ALTROOT
..
testtank                289G    132K    289G     0%  ONLINE     -

Yey! Okey so it expands, but only after export/import.. Havent realy  
found much docs about this but according to ppl in #opensolaris this  
should not be necessary.
Not a big deal in this test case, but doing it for my real tank will  
require me to take the system down on an external boot medium (CD or  
something) I guess, and then do zfs export/import there, and then  
boot back up..
Any guidelines how to do this? Will doing import/export from a CD  
(rescue shell I guess) work as I expect? Or what would be the  
smartest way (the actual downtime isnt such a big deal as long as it  
is quick and works).


Thanks!
--
Johan Ström
Stromnet
johan at stromnet.se
http://www.stromnet.se/




More information about the freebsd-fs mailing list