2013-03-22 Fri

[別の年の同じ日: 2001 2006 2007 2008 2009 2010 2011

古い 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 の一覧から消える。