USBメモリを 2GB 2本、4GB 2本それぞれ用意しました。
先ず2GB 2本でmirrorのzpoolを作ります。
ここで、c14t0d0(2GB)をc16t0d0(4GB)にreplaceし、また元に戻します。
問題なくできました。
では、次にc14t0d0(2GB)をc16t0d0(4GB)に、c15t0d0(2GB)をc17t0d0(4GB)にreplaceします。
4GB 2本のメモリを使ったmirrorですが、この時点では2GB分しかありません。
しかし、zpool export/import しなおしますと…
これでもう2GBのメモリにreplaceすることはできません。
zpoolを構成するデバイス全てを大きな容量のデバイスに入れ替えると、自動的に容量が大きくなるのは
便利なこともありますが、逆に不都合が生じる場合もあるので注意が必要です。
ZFSではサイズの縮小はまだサポートされていないので、下手をすれば取り返しのつかないことになります。
# rmformat 2> /dev/null | egrep '(Logical Node|Connected Device|Size)' 1. Logical Node: /dev/rdsk/c14t0d0p0 Connected Device: Kingmax USB2.0 FlashDisk 0.00 Size: 1.9 GB 2. Logical Node: /dev/rdsk/c15t0d0p0 Connected Device: TDKMedia Trans-It Drive PMAP Size: 1.9 GB 3. Logical Node: /dev/rdsk/c16t0d0p0 Connected Device: Generic USB SD Reader 1.00 Size: 3.8 GB 4. Logical Node: /dev/rdsk/c17t0d0p0 Connected Device: Generic USB SD Reader 0.00 Size: 3.8 GB
先ず2GB 2本でmirrorのzpoolを作ります。
# zpool create -f usbpool1 mirror c14t0d0 c15t0d0 # zpool status usbpool1 pool: usbpool1 state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM usbpool1 ONLINE 0 0 0 mirror ONLINE 0 0 0 c14t0d0 ONLINE 0 0 0 c15t0d0 ONLINE 0 0 0 errors: No known data errors # df /usbpool1 Filesystem kbytes used avail capacity Mounted on usbpool1 1884160 19 1884090 1% /usbpool1
ここで、c14t0d0(2GB)をc16t0d0(4GB)にreplaceし、また元に戻します。
# zpool replace usbpool1 c14t0d0 c16t0d0 # zpool status usbpool1 pool: usbpool1 state: ONLINE scrub: resilver completed after 0h0m with 0 errors on Thu Sep 17 23:30:47 2009 config: NAME STATE READ WRITE CKSUM usbpool1 ONLINE 0 0 0 mirror ONLINE 0 0 0 c16t0d0 ONLINE 0 0 0 71.5K resilvered c15t0d0 ONLINE 0 0 0 errors: No known data errors # df /usbpool1 Filesystem kbytes used avail capacity Mounted on usbpool1 1884160 19 1884079 1% /usbpool1 # zpool replace usbpool1 c16t0d0 c14t0d0 # zpool status usbpool1 pool: usbpool1 state: ONLINE scrub: resilver completed after 0h0m with 0 errors on Thu Sep 17 23:31:45 2009 config: NAME STATE READ WRITE CKSUM usbpool1 ONLINE 0 0 0 mirror ONLINE 0 0 0 c14t0d0 ONLINE 0 0 0 82K resilvered c15t0d0 ONLINE 0 0 0 errors: No known data errors
問題なくできました。
では、次にc14t0d0(2GB)をc16t0d0(4GB)に、c15t0d0(2GB)をc17t0d0(4GB)にreplaceします。
# zpool replace usbpool1 c14t0d0 c16t0d0 # zpool replace usbpool1 c15t0d0 c17t0d0 # zpool status usbpool1 pool: usbpool1 state: ONLINE scrub: resilver completed after 0h0m with 0 errors on Thu Sep 17 23:35:10 2009 config: NAME STATE READ WRITE CKSUM usbpool1 ONLINE 0 0 0 mirror ONLINE 0 0 0 c16t0d0 ONLINE 0 0 0 c17t0d0 ONLINE 0 0 0 86.5K resilvered errors: No known data errors # df /usbpool1 Filesystem kbytes used avail capacity Mounted on usbpool1 1884160 19 1884070 1% /usbpool1
4GB 2本のメモリを使ったmirrorですが、この時点では2GB分しかありません。
しかし、zpool export/import しなおしますと…
# zpool export usbpool1 # zpool import usbpool1 # zpool list NAME SIZE USED AVAIL CAP HEALTH ALTROOT rpool 149G 29.1G 120G 19% ONLINE - usbpool1 3.67G 97K 3.67G 0% ONLINE - # zpool list usbpool1 NAME SIZE USED AVAIL CAP HEALTH ALTROOT usbpool1 3.67G 97K 3.67G 0% ONLINE -4GB 2本のmirrorになりました。
これでもう2GBのメモリにreplaceすることはできません。
# zpool replace usbpool1 c16t0d0 c14t0d0 cannot replace c16t0d0 with c14t0d0: device is too small
zpoolを構成するデバイス全てを大きな容量のデバイスに入れ替えると、自動的に容量が大きくなるのは
便利なこともありますが、逆に不都合が生じる場合もあるので注意が必要です。
ZFSではサイズの縮小はまだサポートされていないので、下手をすれば取り返しのつかないことになります。
タグ