概要
CentOS 6でZFS(zfs-fuse)でsend/recvを使ったときのメモ。
メモ
iSCSIのボリューム*/dev/mapper/mpathaに既にZFSのプールが作成してあるが、このボリュームサイズを変更したい。暫定的に別のiSCSIボリューム/dev/mapper/mpathb*にデータを移行してボリューム拡張後に再度データを戻す。その一部についてのメモ。
ZFSプールtankが既にあるときに別のZFSプールtank2を作成。
# zpool create tank2 /dev/mapper/mpathb
各ZFSプールの利用状況は以下のような感じ。プールサイズはtank > tank2だがデータ量はtank2に充分収まる。このような場合には問題なくスナップショットの転送が可能。
# zpool list
NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT
tank 3.41T 1.28T 2.13T 37% 1.86x ONLINE -
tank2 1.94T 95.5K 1.94T 0% 1.00x ONLINE -
今回はtank/data/以下のデータをtank2に移行させる。tank/pool以下にはゴミしかないので無視。
# zfs list
NAME USED AVAIL REFER MOUNTPOINT
tank 1.80T 2.07T 23K /tank
tank/pool 1.13T 2.07T 705G /zfs
tank/data 686G 2.07T 498G /tank/data
tank2 73.5K 1.91T 21K /tank2
ZFS sendするにはスナップショットが作成してある必要がある。スナップショットはスケジュールで毎日作成されているのでとりあえず最新版を利用することにする。
# zfs list -t snapshot -r
NAME USED AVAIL REFER MOUNTPOINT
(snip)
tank/data@20180325 21.9M - 498G -
# zfs list -o space
NAME AVAIL USED USEDSNAP USEDDS USEDREFRESERV USEDCHILD
tank 2.07T 1.80T 0 23K 0 1.80T
tank/pool 2.07T 1.13T 451G 705G 0 0
tank/data 2.07T 686G 188G 498G 0 0
tank2 1.91T 73.5K 0 21K 0 52.5K
zfs send/recvを利用してスナップショットを転送する。データ量が多いので相当時間がかかる。
# zfs send tank/data@20180325 | zfs recv tank2/data
スナップショット転送後は転送先にもスナップショットが存在している。
# zfs list -t snapshot -r
NAME USED AVAIL REFER MOUNTPOINT
(snip)
tank/data@20180325 21.9M - 498G -
tank2/data@20180325 0 - 498G -
ZFSプールにアクセスしているアプリケーションを停止し、手動でスナップショットを作成して差分を転送する。差分があまりないので短時間で転送が完了する。
# zfs snapshot tank/data@20180325-2
# zfs send -i tank/data@20180325 tank/data@20180325-2 | zfs recv -F tank2/data
スナップショットの差分転送後は転送した差分も反映されている。
# zfs list -t snapshot -r
NAME USED AVAIL REFER MOUNTPOINT
(snip)
tank/data@20180325 21.9M - 498G -
tank/data@20180325-2 0 - 499G -
tank2/data@20180325 22.1M - 498G -
tank2/data@20180325-2 0 - 498G -