Prev / Next

2013-03-22 / 古い BE (Boot Environment) を削除する

古い be (Boot Environment) を削除するいくつかのパターン。

環境は Oracle Solaris 11.1。

1. beadm destroy

基本的な方法で、man beadm にあるように、

beadm destroy beName


すればよい。

2. BE が zfs clone の元になっている場合

削除したい BE が zfs clone の元になっている場合、
依存している BE (ZFS?) が存在するため、
beadm destroy で削除できない
(なんて言われるかメモしていなかったので、あとで確認する)。

この場合、zfs promote で現在起動している BE にでも clone 元を移行すればよい。

zfs promote clone-filesystem


なので、現在起動している BE が solaris-2 という名前だったら、

zfs promte rpool/ROOT/solaris-2


とすればよい。
rpool/ROOT/solaris-2 以下があれば、それに対しても zfs promote を実行する。

これで、zfs clone 元が現在起動している BE に移るので、
それ以外の BE は削除できるはず
(BE の zfs clone の関係がこれ以外のパターンがあるか未確認)。

3. Active が !R となっている Zone の BE を削除する

Oracle Solaris に SRU をあて、古い BE を削除していくと、
Zone の BE が以下のような状態になる。

$ beadm list
BE                      Active Mountpoint Space   Policy Created
--                      ------ ---------- -----   ------ -------
solaris-1               !R     -          190.92M static 2012-11-22 12:10
solaris-2               NR     /          15.27G  static 2012-12-22 13:13


この solaris-1 を削除しようとすると以下のようになり、削除できない。

% sudo beadm destroy solaris-1
Are you sure you want to destroy solaris-1?  This action cannot be undone(y/[n]): y
be_destroy: Operation not supported on active unbootable BE
Unable to destroy solaris-1.
Operation not supported for zone BE


この場合、正しい方法かはわからないが、

zfs destroy -r rpool/ROOT/solaris-1


すると、beadm list の一覧から消える。

comments powered by Disqus