既存の ZFS ストレージプールにディスクを追加する

できませんでした(完)

以前書いたように HP MicroServer に余ってた 2TiB のディスクを 3 本さして、 TimeMachine やバックアップ用に使っていたのですが、 TimeMachine 用に割り当ててた 2TiB を喰い尽くしたようなのです。で、 Drobo の好き勝手にディスクを追加したり交換できる仕様に慣れていた俺は余ってる 2TiB を刺して 4 本構成にするか、と軽い気持ちでいたのですが

goro@kyoka:~$ sudo zpool add tank ada5
invalid vdev specification
use '-f' to override the following errors:
mismatched replication level: pool uses raidz and new vdev is disk

だそーで。

Oracle Solaris ZFS 管理ガイドストレージプールにデバイスを追加するによればどうも既存ストレージプールには、「ストレージプール上に既に存在している仮想デバイスと同じ形式の仮想デバイスであれば」という条件付で追加できるみたい。

ということで

goro@kyoka:~$ zpool status tank
  pool: tank
 state: ONLINE
  scan: scrub repaired 0 in 1h36m with 0 errors on Thu Jan  9 13:55:29 2014
config:

        NAME        STATE     READ WRITE CKSUM
        tank        ONLINE       0     0     0
          raidz1-0  ONLINE       0     0     0
            ada2    ONLINE       0     0     0
            ada3    ONLINE       0     0     0
            ada4    ONLINE       0     0     0

errors: No known data errors

という構成の場合、ディスクを 3 本刺して raidz1 を作ってから、であれば tank に追加できるようです。つまり 1 本増やす、みたいな構成の変更には対応できないってことですね。

MicroServer には 2TiB のディスクが 3 本刺さっていて、それとは別に 1TiB と 2TiB と 3TiB のディスクが一本づつ余っています。これらをどう使って不足気味な容量を増やすべきでしょうかって小学校の算数の問題のようですね(そんな小学校は嫌だ)

使用状況を確認してみたら

goro@kyoka:~$ df -h |grep ^tank
tank/Backups          1.4T    692G    725G    49%    /Backups
tank/TimeMachine      2.0T    2.0T     15G    99%    /TimeMachine
tank/Users            914G    189G    725G    21%    /Users
tank                  732G    7.4G    725G     1%    /tank

トータルで 3TiB ぐらい使ってるっぽいので、 3TiB と 1TiB のディスクを繋げて tank の内容を丸ごとコピーして、 tank 作り直し、というのが一番簡単そうです。 MicroServer の SATA の空きは、本来であれば光学ドライブ用のが一個だけなんですが、 mSATA の SSD を刺すのに使ってるボードに SATA3 が一本あるのでディスクの指定を間違えなければ一気に作業ができそうですね。ということでシングルユーザーモードに落として

goro@kyoka:~$ sudo zpool create escape ada1 ada6
goro@kyoka:~$ sudo zfs snapshot -r tank@escape
goro@kyoka:~$ sudo -s
root@kyoka:~$ zfs send -R tank@escape|zfs receive escape/tank
root@kyoka:~$ zpool destory -f tank
root@kyoka:~$ zfs send -R escape@escape|zfs receive -d -F tank
root@kyoka:~$ zfs rename tank/tank/Backups tank/Backups
root@kyoka:~$ zfs rename tank/tank/TimeMachine tank/TimeMachine
root@kyoka:~$ zfs rename tank/tank/Users tank/Users
root@kyoka:~$ zfs export escape

という感じで再構成して

goro@kyoka:~$ zpool status tank
  pool: tank
 state: ONLINE
  scan: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        tank        ONLINE       0     0     0
          raidz1-0  ONLINE       0     0     0
            ada2    ONLINE       0     0     0
            ada3    ONLINE       0     0     0
            ada4    ONLINE       0     0     0
            ada5    ONLINE       0     0     0

errors: No known data errors

という期待通りの構成になりましたとさ。ちなみにこの 4 本の 2TiB を一本ずつ容量のデカいディスクに交換していくと、 2TiB のディスクがなくなったタイミングで容量の拡張が行われるようです。が、やっぱり多少遅くても Drobo のほうが楽チンというか、ホームユースにはいい感じだなー

3 thoughts on “既存の ZFS ストレージプールにディスクを追加する

  1. ピンバック: RAID-Z2 ZFSアレイにHDDを追加するのはハードルが高かった。 | satoweb_log

コメントを残す