ユーザ用ツール

サイト用ツール


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 から手動で設定します。

ブートローダでの選択

もし、新しいルートファイルシステムにトラブルがあり、カーネルすら起動できなくなった場合は ブートローダでルートファイルシステムを選択することができます。

   ______               ____   _____ _____
  |  ____|             |  _ \ / ____|  __ \
  | |___ _ __ ___  ___ | |_) | (___ | |  | |
  |  ___| '__/ _ \/ _ \|  _ < \___ \| |  | |
  | |   | | |  __/  __/| |_) |____) | |__| |
  | |   | | |    |    ||     |      |      |
  |_|   |_|  \___|\___||____/|_____/|_____/
                                                 ```                        `
 ������������Welcome to FreeBSD�������������    s` `.....---.......--.```   -/
 �                                         �    +o   .--`         /y:`      +.
 �  1. Boot Multi user [Enter]             �     yo`:.            :o      `+-
 �  2. Boot Single user                    �      y/               -/`   -o/
 �  3. Escape to loader prompt             �     .-                  ::/sy+:.
 �  4. Reboot                              �     /                     `--  /
 �                                         �    `:                          :`
 �  Options:                               �    `:                          :`
 �  5. Kernel: default/2kernel (1 of 2)    �     /                          /
 �  6. Boot Options                        �     .-                        -.
 �  7. Boot Environments                   �      --                      -.
 �                                         �       `:`                  `:`
 �                                         �         .--             `--.
 �������������������������������������������            .---.....----.

起動直後の画面で "7" を押します。

   ______               ____   _____ _____
  |  ____|             |  _ \ / ____|  __ \
  | |___ _ __ ___  ___ | |_) | (___ | |  | |
  |  ___| '__/ _ \/ _ \|  _ < \___ \| |  | |
  | |   | | |  __/  __/| |_) |____) | |__| |
  | |   | | |    |    ||     |      |      |
  |_|   |_|  \___|\___||____/|_____/|_____/
                                                 ```                        `
 ������������Welcome to FreeBSD�������������    s` `.....---.......--.```   -/
 �                                         �    +o   .--`         /y:`      +.
 �  1. Back to main menu [Backspace]       �     yo`:.            :o      `+-
 �  2. Active: zfs:zroot/ROOT/test (1 of 2)�      y/               -/`   -o/
 �  3. bootfs: zfs:zroot/ROOT/test         �     .-                  ::/sy+:.
 �                                         �     /                     `--  /
 �                                         �    `:                          :`
 �                                         �    `:                          :`
 �                                         �     /                          /
 �                                         �     .-                        -.
 �                                         �      --                      -.
 �                                         �       `:`                  `:`
 �                                         �         .--             `--.
 �������������������������������������������            .---.....----.

"2" を押すと、ブートする環境が切り替わります。

   ______               ____   _____ _____
  |  ____|             |  _ \ / ____|  __ \
  | |___ _ __ ___  ___ | |_) | (___ | |  | |
  |  ___| '__/ _ \/ _ \|  _ < \___ \| |  | |
  | |   | | |  __/  __/| |_) |____) | |__| |
  | |   | | |    |    ||     |      |      |
  |_|   |_|  \___|\___||____/|_____/|_____/
                                                 ```                        `
 ������������Welcome to FreeBSD�������������    s` `.....---.......--.```   -/
 �                                         �    +o   .--`         /y:`      +.
 �  1. Back to main menu [Backspace]       �     yo`:.            :o      `+-
 �  2. Active: zfs:zroot/ROOT/default (2 of 2)    y/               -/`   -o/
 �  3. bootfs: zfs:zroot/ROOT/test         �     .-                  ::/sy+:.
 �                                         �     /                     `--  /
 �                                         �    `:                          :`
 �                                         �    `:                          :`
 �                                         �     /                          /
 �                                         �     .-                        -.
 �                                         �      --                      -.
 �                                         �       `:`                  `:`
 �                                         �         .--             `--.
 �������������������������������������������            .---.....----.

元の環境を選びスペースキーを押すと、その環境でブートします。

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

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