Gerenciando ambientes de inicialização com o Oracle Solaris 11 Express

Capítulo 2 Uso do utilitário beadm (tarefas)

Você pode utilizar o utilitário beadm para criar e gerenciar instantâneos e clones dos ambientes de inicialização.

Observe as seguintes distinções relevantes à administração do ambiente de inicialização:


Observação –

É necessário assumir a função raiz do sistema para utilizar o utilitário beadm.


Para obter instruções detalhadas sobre o utilitário beadm, consulte a página do comando man beadm(1M). Consulte também o Capítulo 4Apêndice: Referência beadm.

Listagem de instantâneos e ambientes de inicialização existentes

Todos os instantâneos, ambientes de inicialização e conjuntos de dados que foram criados pelo comando beadm podem ser exibidos com o subcomando beadm list.

Os instantâneos e os ambientes de inicialização podem ser criados pelo comando beadm. Eles também podem ser criados por outros utilitários. Por exemplo, o comando pkg pode criar automaticamente um clone de um ambiente de inicialização quando você utilizá-lo para instalar ou atualizar pacotes. A saída do comando beadm list também exibe ambientes de inicialização criados pelo comando pkg .

ProcedureComo exibir informações sobre os ambientes de inicialização, os instantâneos e os conjuntos de dados

  1. Escolha a informação que deseja visualizar, conforme descrito na etapa seguinte.

    • Escolha uma opção para o comando beadm list da lista a seguir:

      • -a: Lista todas as informações disponíveis sobre o ambiente de inicialização. Esta opção inclui instantâneos e conjuntos de dados subordinados.

      • -d: Lista as informações sobre os conjuntos de dados do ambiente de inicialização.

      • -s: Lista as informações sobre os instantâneos do ambiente de inicialização.

      • -H: Omite as informações do cabeçalho a partir da exibição. Esta opção permite que seja mais fácil analisar a exibição em busca de scripts ou outros programas.

    • Também é possível optar se um nome de ambiente de inicialização será especificado no comando beadm list.

      Por padrão, se um nome de ambiente de inicialização não for incluído no comando, os resultados incluirão todos os ambientes de inicialização.

      Mas, se um nome de ambiente de inicialização for incluído no comando beadm list, os resultados incluirão somente as informações sobre esse ambiente de inicialização.

  2. Digite o comando beadm list com as opções de sua preferência.

    Por exemplo, inclua a opção -a e especifique o ambiente BE1 da seguinte forma:


    $ beadm list -a BE1
    
  3. Examine as informações exibidas sobre os ambientes de inicialização disponíveis.


Exemplo 2–1 Visualização das especificações do ambiente de inicialização

Este exemplo inclui a opção -a e especifica o ambiente do BE2 da seguinte forma:


$ beadm list -a BE2

São exibidos os resultados de amostra. O ambiente BE2 será ativado na reinicialização, conforme indicado pelo R na coluna Ativo.


BE/Dataset             Active Mountpoint Space  Policy Created         
----------             ------ ---------- -----  ------ -------         
BE2 rpool/ROOT/BE2     R      /mnt       89.67M static 2008-09-17 20:17
    rpool/ROOT/BE2/var -      /mnt/var   0      static 2008-09-17 20:17

Dois conjuntos de dados estão incluídos em BE2: o conjunto de dados rpool/ROOT/BE2 e o conjunto de dados rpool/ROOT/BE2/var. Os valores da coluna Ativo são os seguintes:



Exemplo 2–2 Exibindo especificações do instantâneo

Este exemplo inclui a opção -s, que exibe informações de qualquer instantâneo que exista na imagem atual. O status desses instantâneos é a mesma lista exibida pelo comando zfs(1M).


$ beadm list -s test-2

São exibidos os resultados de amostra.


BE/Snapshot 	Space Policy Created
----------- ----- ------ ------- 
test-2
test-2@2010-04-12-22:29:27 264.02M static 2010-04-12 16:29
test-2@2010-06-02-20:28:51 32.50M static 2010-06-02 14:28
test-2@2010-06-03-16:51:01 16.66M static 2010-06-03 10:51
test-2@2010-07-13-22:01:56 25.93M static 2010-07-13 16:01
test-2@2010-07-21-17:15:15 26.00M static 2010-07-21 11:15
test-2@2010-07-25-19:07:03 13.75M static 2010-07-25 13:07
test-2@2010-07-25-20:33:41 12.32M static 2010-07-25 14:33
test-2@2010-07-25-20:41:23 30.60M static 2010-07-25 14:41
test-2@2010-08-06-15:53:15 8.92M static 2010-08-06 09:53
test-2@2010-08-06-16:00:37 8.92M static 2010-08-06 10:00
test-2@2010-08-09-16:06:11 193.72M static 2010-08-09 10:06
test-2@2010-08-09-20:28:59 102.69M static 2010-08-09 14:28
test-2@install 205.10M static 2010-03-16 19:04

No resultado da amostra, cada título de instantâneo inclui um carimbo de data/hora, indicando quando o instantâneo foi feito.


Criação de um ambiente de inicialização

Se quiser criar um backup de um ambiente de inicialização existente, por exemplo, antes de modificar o ambiente de inicialização original, você poderá usar o comando beadm para criar e montar um novo ambiente de inicialização que seja um clone do ambiente de inicialização ativo. Esse clone ficará inativo e será exibido na inicialização como uma alternativa no menu GRUB em sistemas x86 ou no menu de inicialização em sistemas SPARC. O menu de inicialização em SPARC está em /rpool/boot/menu.lst.


Observação –

Ao criar um novo ambiente de inicialização, o processo primeiro faz, automaticamente, um instantâneo do ambiente de inicialização original e, em seguida, cria um novo clone derivado desse instantâneo. Tanto o novo instantâneo quanto o novo clone são conservados pelo sistema.


ProcedureComo criar um ambiente de inicialização

  1. Na linha de comando, digite o seguinte:


    $ beadm create beName
    

    beName é uma variável do nome do novo ambiente de inicialização. Esse novo ambiente de inicialização está inativo.


    Observação –

    beadm create não cria um ambiente de inicialização parcial. O comando cria com sucesso um ambiente de inicialização completo ou falha.


  2. (Opcional) Você pode usar o comando beadm mount para montar o novo ambiente de inicialização da seguinte forma:


    $ beadm mount beName mountpoint
    

    Observação –

    Se o diretório do ponto de montagem não existir, o utilitário beadm criará o diretório e, em seguida, montará o ambiente de inicialização nesse diretório.

    Se o ambiente de inicialização já estiver montado, o comando beadm mount falhará e não remontará o ambiente de inicialização no local recém-especificado.


    O ambiente de inicialização é montado, mas permanece inativo. Você pode atualizar um ambiente de inicialização inativo, montado.


    Observação –

    Desmonte o ambiente de inicialização antes de reinicializar.


  3. (Opcional) Se quiser inicializar esse novo ambiente de inicialização, use o seguinte comando para ativar o ambiente de inicialização:


    $ beadm activate beName
    

    beName é uma variável do nome do ambiente de inicialização que será ativado.

    Na reinicialização, o ambiente de inicialização recém-ativado é exibido como a seleção padrão no menu GRUB em x86 ou no menu de inicialização em SPARC.


    Observação –

    O menu GRUB ou menu de inicialização sempre exibe o ambiente de inicialização ativado mais recentemente como o padrão.



Exemplo 2–3 Criando um novo ambiente de inicialização clonado com conjuntos de dados (BE2)

O exemplo a seguir ilustra os conjuntos de dados em um ambiente de inicialização recém-criado.

Digite o seguinte comando.


$ beadm create BE2

O ambiente de inicialização original neste exemplo é BE1. O novo ambiente de inicialização, BE2, contém conjuntos de dados separados clonados de BE1. Se BE1 contiver conjuntos de dados separados para sistemas de arquivos tradicionais, como /var ou /opt, esses conjuntos de dados também serão clonados.


rpool/ROOT/BE1
rpool/ROOT/BE1/usr
rpool/ROOT/BE1/var
rpool/ROOT/BE1/opt

rpool/ROOT/BE2
rpool/ROOT/BE2/usr
rpool/ROOT/BE2/var
rpool/ROOT/BE2/opt

O rpool neste exemplo é o nome do pool de armazenamento. O pool já existe no sistema, configurado anteriormente pela instalação inicial ou pela atualização. ROOT é um conjunto de dados especial também criado anteriormente pela instalação inicial ou pela atualização. ROOT está reservado exclusivamente para o uso pelas raízes do ambiente de inicialização.



Exemplo 2–4 Criando um novo ambiente de inicialização com conjuntos de dados compartilhados

O exemplo a seguir ilustra um ambiente de inicialização recém-criado que possui conjuntos de dados compartilhados.

Conjuntos de dados compartilhados são diretórios definidos pelo usuário, como /export, que contêm o mesmo ponto de montagem nos ambientes de inicialização ativo e inativo. Os conjuntos de dados compartilhados estão localizados fora da área de conjunto de dados raiz de cada ambiente de inicialização.

Digite o seguinte comando.


$ beadm create BE2

Os conjuntos de dados compartilhados, rpool/export e rpool/export/home, não são clonados quando o ambiente de inicialização é clonado. Eles estão localizados fora dos conjuntos de dados rpool/ROOT/<BE> e são referenciados em seus locais originais pelo ambiente de inicialização clonado.

O ambiente de inicialização original, BE1, e os conjuntos de dados são os seguintes:


rpool/ROOT/BE1
rpool/ROOT/BE1/usr
rpool/ROOT/BE1/var
rpool/ROOT/BE1/opt
rpool/export
rpool/export/home

O ambiente de inicialização clonado, BE2, tem novos conjuntos de dados raiz, mas os conjuntos de dados compartilhados originais, rpool/export e rpool/export/home, não são alterados.


rpool/ROOT/BE2
rpool/ROOT/BE2/usr
rpool/ROOT/BE2/var
rpool/ROOT/BE2/opt
rpool/export
rpool/export/home

ProcedureComo criar um ambiente de inicialização a partir de um ambiente de inicialização inativo

Por padrão, um novo ambiente de inicialização é criado a partir de um sistema de inicialização ativo. No entanto, você pode usar o comando beadm create para criar um novo ambiente de inicialização baseado em um ambiente de inicialização inativo existente.

  1. Torne-se superusuário ou assuma uma função equivalente.

  2. Para criar um novo ambiente de inicialização inativo a partir de um ambiente de inicialização inativo existente, digite o seguinte comando:


    $ beadm create -e non-activeBeName beName
    

    non-activeBeName é uma variável do BE inativo existente clonado por este comando.

    beName é a variável do nome do novo BE.

    Por padrão, o novo ambiente de inicialização está inativo.

Criando um instantâneo de um ambiente de inicialização

Você pode criar manualmente um instantâneo de um ambiente de inicialização existente para referência. Esse instantâneo é uma imagem de somente leitura de um conjunto de dados ou de um ambiente de inicialização em um determinado momento. É possível criar para o instantâneo um nome personalizado que indique quando ele foi criado ou o seu conteúdo.

ProcedureComo criar um instantâneo de um ambiente de inicialização

  1. Utilize o comando a seguir para criar um instantâneo.


    $ beadm create BEname@snapshotdescription
    

    Substitua a variável BEname@snapshotdescription por um nome personalizado para o instantâneo. O nome personalizado deve utilizar o formato BEname@snapshotdescription, no qual BEname é o nome de um ambiente de inicialização existente a partir do qual você deseja fazer um instantâneo. Digite um snapshotdescription personalizado para identificar a data ou a finalidade do instantâneo.

    São exemplos de nomes de instantâneo:

    • BE1@0312200.12:15pm

    • BE2@backup

    • BE1@march132008


    Observação –

    A menos que se utilize o comando beadm create para atribuir um título personalizado a um instantâneo, títulos para instantâneos que incluem automaticamente carimbo de data/hora indicam quando o instantâneo foi feito.


Utilizando um instantâneo existente

Um instantâneo de um ambiente de inicialização não é inicializável. No entanto, pode-se criar um novo ambiente de inicialização a partir de um instantâneo existente. Em seguida, pode-se ativar e inicializar esse novo ambiente de inicialização.

ProcedureComo criar um ambiente de inicialização a partir de um instantâneo existente

  1. Use o comando a seguir para criar um novo ambiente de inicialização a partir de um instantâneo.


    $ beadm create -e BEname@snapshotdescription beName
    

    Substitua a variável BEname@snapshotdescription pelo nome de um instantâneo existente. Conforme descrito na tarefa anterior, os nomes de instantâneos usam o formato BEname@snapshotdescription, onde BEname é o nome de um ambiente de inicialização existente e snapshotdescription é uma descrição de um instantâneo específico feito de um ambiente de inicialização existente.

    Substitua a variável BEname por um nome personalizado para o novo ambiente de inicialização.

    Consulte o exemplo abaixo.


    $ beadm create -e BE1@now BE2
    

    Esse comando cria um novo ambiente de inicialização, denominado BE2, a partir de um instantâneo existente denominado BE1@now. Você pode usar o próximo procedimento para ativar esse ambiente de inicialização.

Alterando o ambiente de inicialização padrão

Você pode alterar um ambiente de inicialização inativo para um ambiente de inicialização ativo. Somente um ambiente de inicialização pode estar ativo de cada vez. O ambiente de inicialização recém-ativado se tornará o ambiente padrão depois da reinicialização.

ProcedureComo ativar um ambiente de inicialização existente

  1. Utilize o comando a seguir para ativar um ambiente de inicialização inativo existente:


    $ beadm activate beName
    

    beName é uma variável do nome do ambiente de inicialização que será ativado.

    Observe as especificações a seguir.

    • beadm activate beName ativa um ambiente de inicialização ao definir a propriedade do pool inicializável, bootfs, como o valor do conjunto de dados ROOT do ambiente de inicialização que está sendo ativado.

    • beadm activate define o ambiente de inicialização recém-ativado como padrão no arquivo menu.lst.


      Observação –

      Quando um ambiente de inicialização é criado, estando ele ativo ou inativo, uma entrada é criada para o ambiente de inicialização no menu GRUB em x86 ou no menu de inicialização em SPARC. O ambiente de inicialização padrão é o ambiente de inicialização que foi ativado por último.


  2. Reinicialize.

    O ambiente de inicialização recém-ativado é agora o padrão no menu GRUB em x86 ou no menu de inicialização em SPARC.


    Observação –

    Se o ambiente de inicialização falhar ao inicializar, reinicialize e selecione o ambiente de inicialização anterior no menu GRUB ou no menu de inicialização.


Montando e atualizando um ambiente de inicialização inativo

Se você desejar atualizar pacotes em um ambiente de inicialização inativo existente, é possível montar esse ambiente e, opcionalmente, atualizar os pacotes nele.

ProcedureComo montar um ambiente de inicialização

  1. Você pode usar o comando beadm mount para montar um ambiente de inicialização da seguinte forma:


    $ beadm mount beName mountpoint
    

    Observação –

    Se o diretório do ponto de montagem não existir, o utilitário beadm criará o diretório e, em seguida, montará o ambiente de inicialização nesse diretório.

    Se o ambiente de inicialização já estiver montado, o comando beadm mount falhará e não remontará o ambiente de inicialização no local recém-especificado.


    O ambiente de inicialização é montado, mas permanece inativo.

  2. (Opcional) É possível atualizar os pacotes no ambiente de inicialização utilizando o comando pkg.

    Por exemplo, é possível utilizar o comando pkg install com a opção -R para atualizar pacotes específicos no ambiente de inicialização.


    $ pkg -R /mnt install packagename
    

    Onde /mnt é o ponto de montagem para o ambiente de inicialização.


    Observação –

    Desmonte o ambiente de inicialização antes de reinicializar.


    Para obter mais informações, consulte a página do manual pkg(1).

Desmontando ambientes de inicialização

Você pode usar o comando beadm para desmontar um ambiente de inicialização da seguinte forma:


Observação –

Não é possível desmontar o ambiente de inicialização atualmente inicializado.


ProcedureComo desmontar um ambiente de inicialização existente

  1. Para desmontar o ambiente de inicialização, digite o seguinte:


    $ beadm unmount beName
    

Destruindo um ambiente de inicialização

Se você quiser disponibilizar mais espaço no sistema, use o comando beadm para destruir um ambiente de inicialização existente.

Observe as seguintes especificações.

ProcedureComo destruir um ambiente de inicialização existente

  1. Para destruir um ambiente de inicialização, digite o seguinte:


    $ beadm destroy beName
    

    Observação –

    O comando beadm destroy pede confirmação antes de destruir o ambiente de inicialização. Adicione a opção -F ao comando beadm destroy para forçar a destruição do ambiente de inicialização sem uma solicitação de confirmação. Adicione a opção -f para forçar a destruição do ambiente de inicialização, mesmo que ele esteja montado.


Criando nomes personalizados para ambientes de inicialização

O comando beadm rename permite renomear um ambiente de inicialização existente. Esse comando permite criar um nome personalizado para um ambiente de inicialização, um nome que tenha mais significado para sua situação específica. Por exemplo, você pode renomear um ambiente de inicialização para especificar como personalizou esse ambiente. O nome do conjunto de dados do ambiente de inicialização também é alterado para se adaptar ao novo nome do ambiente de inicialização.


Observação –

Não é possível renomear um ambiente de inicialização ativo. Somente um ambiente de inicialização inativo pode ser renomeado. Também não é possível renomear o ambiente de inicialização atualmente inicializado. Se você desejar renomear o ambiente de inicialização ativo, torne outro ambiente de inicialização ativo e inicialize esse ambiente. Assim, é possível renomear o ambiente de inicialização inativo.


ProcedureComo renomear um ambiente de inicialização

  1. Use o comando a seguir para renomear o ambiente de inicialização.


    $ beadm rename beName newBeName
    

    Observação –

    Se o novo nome já estiver em uso, o comando beadm rename falhará.