zfs clone と zfs send で非ミラーファイルシステムを分割 ― 2018年09月15日 16時48分38秒
今回、分割したいと思った理由はバックアップ先の zpool の容量が足りなくなったから。バックアップをとらなくても何とかなるファイルを複製するのを止めたかったのだが、ファイルシステムに混ざっていたので単純な削除では無理だからだ。
zfs clone はファイルシステムを複製する機能だ。これは snapshot を作成し、そこからの差分を元にファイルシステムを利用する機能。これを使えば、元のファイルシステムを複数に分割して使うことが出来る。しかし、元のスナップショットがバックアップを止めたいファイルを保持したままになるので今回の意図には沿わない。
そこで、今回 zfs snapshot と zfs clone で一時的にファイルシステムを複製。そこから対象外のファイルを削除した後に、zfs send と zfs receive で全く別のファイルシステムとして作ることにした。
今回の例として、BSD 関連のファイルをダウンロードしてあった download/BSD ファイルシステムを各々に分けて download/FreeBSD と download/NetBSD の zfs ファイルシステムにする。
実験用に小さめのプールを準備して、各々に一つずつファイルを置いた。
$ zfs list -t all
NAME USED AVAIL REFER MOUNTPOINT
download 421M 411M 23K /mnt/download
download/BSD 421M 411M 421M /mnt/download/B
$ ls /mnt/download/ZFS/*
BSD:
FreeBSD NetBSD
FreeBSD:
FreeBSD-11.2-RELEASE-i386.vmdk.xz
NetBSD:
netbsd-8.0-i386-boot-com.iso
BSD ファイルシステムから snapshot と clone で freebsd とし、そこから NetBSD を削除。zfs send と receive で元の BSD ファイルシステムとの関係を切断する。
$ zfs snapshot download/BSD@today
$ zfs clone download/BSD@today download/freebsd
$ rm -rf /mnt/download/freebsd/NetBSD
$ zfs snapshot download/freebsd@only
$ zfs send download/freebsd@only | zfs receive download/FreeBSD@only
zfs send と receive で一つ目のファイルシステムを処理し終えた状態。
$ zfs list -t all
NAME USED AVAIL REFER MOUNTPOINT
download 640M 192M 23K /mnt/download
download/BSD 421M 192M 421M /mnt/download/BSD
download/freebsd 13K 192M 219M /mnt/download/freebsd
download/freebsd@only 0 - 219M -
download/FreeBSD 219M 192M 219M /mnt/download/FreeBSD
download/FreeBSD@only 0 - 219M -
NetBSD の方は BSD ファイルシステムの名前の変更した後に、FreeBSD を消す。
これで download/BSD を download/FreeBSD と download/NetBSD に分割できた。
$ zfs destroy download/BSD@today
$ zfs rename download/BSD download/NetBSD
$ rm -rf /mnt/download/NetBSD/FreeBSD
$ zfs list -t all
NAME USED AVAIL REFER MOUNTPOINT
download 422M 409M 23K /mnt/download
download/FreeBSD 219M 409M 219M /mnt/download/FreeBSD
download/FreeBSD@only 13K - 219M -
download/NetBSD 202M 409M 202M /mnt/download/NetBSD
もっと手間の掛かるファイルの選別が必要なら clone と promote を用いて、もっと安全に操作することも出来る。NetBSD のファイルの選別も独立したファイルシステム上で行なって、最終確認が終った後に。古い BSD ファイルシステムを削除する手順にすれば、間違ってファイルを消してもやり直しが効く。
コメント
トラックバック
このエントリのトラックバックURL: http://uyota.asablo.jp/blog/2018/09/15/8960767/tb
※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。
コメントをどうぞ
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※なお、送られたコメントはブログの管理者が確認するまで公開されません。