ZFSで/usr/localを引っ越す
FreeBSD 9.1をフルZFSで利用しています。
- FreeBSDでFull ZFSシステム作成の実験[追記あり]: プラスα空間 (2013年4月29日)
- FreeBSDにサーバ用ソフトをインストールしまくり: プラスα空間 (2013年8月13日)
ソフトをインストールしまくっていたら、システム用のプール(rpool)をあふれさせてしまいました。
さらには、インストールされているPHPのバージョンを変更しようとして、逆に他にインストールされていたソフトを消してしまいました…。
こんなこともあろうかと、数日前に取ってあったスナップショットから、データを復旧できました。ZFS、すごすぎます…。
でも、/usr/local領域不足は否めません。そこで、/usr/localを容量の少ないrpoolからupoolに引っ越すことを検討しました。また、upoolはミラー構成になっているので、耐障害性が高いです。
次の方法です。
- シングルユーザモードで起動
- rpool/root/usr/localのスナップショット作成
- upool/usr/local作成
- データコピー
- マウントポイント再設定
1. シングルユーザモードで起動
システム起動時のオプションで、シングルユーザモードを選んでください。
2. rpool/root/usr/localのスナップショット作成
システムが立ち上がったら、次の方法でスナップショットを作成します。
# zfs snapshot rpool/root/usr/local@snap20131227
3. upool/usr/local作成
新しくデータセットを作ります。"-o mountpoint=none"で自動マウントされない様にします。
# zfs create -o mountpoint=none upool/usr # zfs create -o mountpoint=none upool/usr/local
4. データコピー
作ったスナップショットを、新しく作ったデータセットにコピーします。ZFSのストリームを使えば、楽チンです。
“-F"オプションを指定しないと、うまく行きませんでした。
# zsend rpool/usr/local@snap20131227 | zrecv -F upool/usr/local
5. マウントポイント再設定
データコピーが終わったら、マウントポイントを再設定します。
今までの、rpoolにあった/usr/localのマウントをしないようにし、新しく作ったupool/usr/localを、/usr/localにマウントするように設定します。
# zfs set mountpoint=none rpool/usr/local # zfs set mountpoint=/usr/local upool/usr/local
zfs listコマンドで、確認しておいた方が良いと思います。
以上の設定が終わったら、通常通り、リブートします。
これで、upool/usr/localが、/usr/localとしてマウントされていれば、引っ越し完了です。
ディスカッション
コメント一覧
まだ、コメントがありません