ユーザ用ツール

サイト用ツール


os:boot_environment

文書の過去の版を表示しています。


Boot Environment

Boot Environment とは ZFS をルートファイルシステムに選んだ場合に使える機能です。 ルートファイルシステムのクローンを任意に作成し、 どのクローンから起動するのかを自由に切り替えることができます。

例えば、新しいリリースまたはパッチを試すために、テスト用のクローンを作成し、 クローン上でアップデートを行い、動作を確認します。

うまく行ったならばクローンをメインに運用すればよく、 うまく行かなかった場合には元のルートファイルシステムから起動すれば元に戻ります。 うまく行った場合、元のルートファイルシステムは破棄しても構いません。

また、異なるバージョンの FreeBSD をインストールしておき、切り替えて使うこともできます。

セットアップ

FreeBSD のインストーラでルートファイルシステムに zfs を選んでインストールします。 すると次のような zfs のファイルシステム構成になります。

$ zfs list
NAME                 USED  AVAIL  REFER  MOUNTPOINT
zroot                683M  12.4G   176K  /zroot
zroot/ROOT           680M  12.4G   176K  none
zroot/ROOT/default   679M  12.4G   679M  /
zroot/tmp            176K  12.4G   176K  /tmp
zroot/usr            704K  12.4G   176K  /usr
zroot/usr/home       176K  12.4G   176K  /usr/home
zroot/usr/ports      176K  12.4G   176K  /usr/ports
zroot/usr/src        176K  12.4G   176K  /usr/src
zroot/var           1.09M  12.4G   176K  /var
zroot/var/audit      176K  12.4G   176K  /var/audit
zroot/var/crash      176K  12.4G   176K  /var/crash
zroot/var/log        232K  12.4G   232K  /var/log
zroot/var/mail       176K  12.4G   176K  /var/mail
zroot/var/tmp        176K  12.4G   176K  /var/tmp

この zroot/ROOT/default がデフォルトのルートファイルシステムです。 ルートファイルシステムに含まれるディレクトリは /dev を除いた / 以下の全てのディレクトリです。 /usr や /var も含みます。

逆を言うと個別にマウントされたものがルートファイルシステムには含まれないことになります。 上記のリストでは以下が該当します。

  • /tmp
  • /usr/home
  • /usr/ports
  • /usr/src
  • /var/audit
  • /var/crash
  • /var/log
  • /var/mail
  • /var/tmp

zroot/usr と zroot/var はルートファイルシステムに含まれない領域を作り出すためのダミーです。 マウントポイントが割り当てられていますが、mounted が no のため実際にはマウントされていません。

$ zfs get mounted,canmount zroot/usr zroot/var
NAME       PROPERTY  VALUE     SOURCE
zroot/usr  mounted   no        -
zroot/usr  canmount  off       local
zroot/var  mounted   no        -
zroot/var  canmount  off       local

mount コマンドでも確認することができます。

$ mount
zroot/ROOT/default on / (zfs, local, noatime, nfsv4acls)
devfs on /dev (devfs, local, multilabel)
zroot/tmp on /tmp (zfs, local, noatime, nosuid, nfsv4acls)
zroot/usr/home on /usr/home (zfs, local, noatime, nfsv4acls)
zroot/usr/ports on /usr/ports (zfs, local, noatime, nosuid, nfsv4acls)
zroot/usr/src on /usr/src (zfs, local, noatime, nfsv4acls)
zroot/var/audit on /var/audit (zfs, local, noatime, noexec, nosuid, nfsv4acls)
zroot/var/crash on /var/crash (zfs, local, noatime, noexec, nosuid, nfsv4acls)
zroot/var/log on /var/log (zfs, local, noatime, noexec, nosuid, nfsv4acls)
zroot/var/mail on /var/mail (zfs, local, nfsv4acls)
zroot/var/tmp on /var/tmp (zfs, local, noatime, nosuid, nfsv4acls)
zroot on /zroot (zfs, local, noatime, nfsv4acls)

管理ツール

Boot Environment を扱うためのツールとして以下の2つがあります。

1. bectl

 FreeBSD 12.0 から標準搭載されたコマンドラインツールです。

2. beadm

 ports/pkg でインストールできるコマンドラインツールです。
 bectl がない環境でも使うことができます。

どちらも機能的にはほとんど変わりません。 このページでは bectl を例に説明します。

使い方

1. ルートファイルシステムをクローンする

bectl create <環境名>

現在のルートファイルシステムのスナップショットを取り、そこから新しいルートファイルシステムを作成します。

zroot/ROOT/<環境名> というファイルシステムが作成されます。

既にルートファイルシステムにスナップショットがあるならば、そこからクローンすることもできます。

bectl create -e <環境名>@<スナップショット> <環境名>

例えば default@2019-04-01 から test というルートファイルシステムを作成するのは次のようになります。

bectl create -e default@2019-04-01 test

2. 次回起動時のルートファイルシステムを変更する

bectl activate <環境名>

次回起動時のルートファイルシステムを <環境名> に変更します。

3. ルートファイルシステムの一覧表示

bectl list

作成したルートファイルシステム一覧を表示します。結果は次のように表示されます。

BE          Active Mountpoint Space Created
default     NR     /          248K  2019-06-12 18:45
test               -          679M  2019-06-12 18:53

この例では default と test の2つのルートファイルシステムがあります。

N,R の意味は次の通りです。

  • N: 現在アクティブなファイルシステムです。 (Now Active)
  • R: 次回起動時に選ばれるファイルシステムです。 (Reboot next time)

4. ルートファイルシステムの削除

bectl destroy <環境名>

作成したルートファイルシステムを削除します。

5. ルートファイルシステムのマウント

bectl mount <環境名> <マウントポイント>

指定したルートファイルシステムをマウントします。 マウントポイントを省略した場合は /tmp にテンポラリのマウントポイントを作成し、 そこにマウントします。

アンマウントするには以下を実行します。

bectl umount <環境名>

6. 環境名の変更

bectl rename <古い環境名> <新しい環境名>

環境の名前を変更します。 これは現在起動している環境に対して行うことも可能です。

7. jail 起動

bectl のみの機能です。

bectl jail <環境名>

ルートファイルシステムから jail を作成し、その中で動く sh を起動します。 ネットワーク環境はセットアップされません。sh から手動で設定します。

このウェブサイトはクッキーを使用しています。 Webサイトを使用することで、あなたはあなたのコンピュータにクッキーを保存することに同意します。 また、あなたはあなたが私たちのプライバシーポリシーを読んで理解したことを認めます。 同意しない場合はウェブサイトを離れてください。クッキーに関する詳細情報
os/boot_environment.1560501351.txt.gz · 最終更新: 2019/06/14 17:35 by yuichiro

特に明示されていない限り、本Wikiの内容は次のライセンスに従います: 2-Clause BSD License
Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki