Guia de administração do ZFS Oracle Solaris

Recuperando o pool raiz ZFS ou instantâneos do pool raiz

As seções seguintes descrevem como realizar as tarefas abaixo:

ProcedureComo substituir um disco no pool raiz ZFS

Pode ser necessário substituir um disco no pool raiz pelas seguintes razões:

Em uma configuração de conjunto raiz espelhado, é possível tentar substituir um disco sem inicializar de uma mídia alternativa. É possível substituir um disco falho ao utilizar o comando zpool replace. Ou, se possuir um disco adicional, é possível utilizar o comando zpool attach. Consulte o procedimento nesta seção para um exemplo de anexação de um disco adicional e desanexação de um disco de conjunto raiz.

Alguns softwares necessitam que traga um disco off-line e desconfigure-o antes de tentar a operação zpool replace para substituir um disco falho. Por exemplo:


# zpool offline rpool c1t0d0s0
# cfgadm -c unconfigure c1::dsk/c1t0d0
<Physically remove failed disk c1t0d0>
<Physically insert replacement disk c1t0d0>
# cfgadm -c configure c1::dsk/c1t0d0
# zpool replace rpool c1t0d0s0
# zpool online rpool c1t0d0s0
# zpool status rpool
<Let disk resilver before installing the boot blocks>
SPARC# installboot -F zfs /usr/platform/`uname -i`/lib/fs/zfs/bootblk /dev/rdsk/c1t0d0s0
x86# installgrub /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c1t9d0s0

Em alguns hardwares, não é necessário trazer o disco on-line ou reconfigurá-lo depois de ser inserido.

É necessário identificar os nomes de caminho do dispositivo de inicialização do disco atual e do disco novo para que seja possível testar uma inicialização de teste a partir do disco substituto e também uma inicialização manual a partir do disco existente, caso o disco substituto falhe. Neste exemplo no procedimento a seguir, o nome do caminho para o atual disco de conjunto raiz (c1t10d0s0) é:


/pci@8,700000/pci@3/scsi@5/sd@a,0

O nome do caminho para o disco de inicialização substituto (c1t9d0s0) é:


/pci@8,700000/pci@3/scsi@5/sd@9,0
  1. Conecte fisicamente o disco de substituição (ou novo).

  2. Confirme que o novo disco possui uma legenda SMI e um segmento 0.

    Para obter informações sobre como relegendar um disco reservado para o pool raiz, use o seguinte site:

    http://www.solarisinternals.com/wiki/index.php/ZFS_Troubleshooting_Guide

  3. Anexe o novo disco ao pool raiz.

    Por exemplo:


    # zpool attach rpool c1t10d0s0 c1t9d0s0
    
  4. Confirme os status do pool raiz.

    Por exemplo:


    # zpool status rpool
      pool: rpool
     state: ONLINE
    status: One or more devices is currently being resilvered.  The pool will
            continue to function, possibly in a degraded state.
    action: Wait for the resilver to complete.
     scrub: resilver in progress, 25.47% done, 0h4m to go
    config:
    
            NAME           STATE     READ WRITE CKSUM
            rpool          ONLINE       0     0     0
              mirror-0     ONLINE       0     0     0
                c1t10d0s0  ONLINE       0     0     0
                c1t9d0s0   ONLINE       0     0     0
    
    errors: No known data errors
  5. Depois da conclusão do resilvering, aplique os blocos de inicialização ao novo disco.

    Utilizando uma sintaxe semelhante à seguinte:

    • SPARC:


      # installboot -F zfs /usr/platform/`uname -i`/lib/fs/zfs/bootblk /dev/rdsk/c1t9d0s0
      
    • x86:


      # installgrub /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c1t9d0s0
      
  6. Verifique se é possível inicializar a partir do novo disco.

    Por exemplo, em um sistema com base em SPARC, seria utilizada uma sintaxe semelhante à seguinte:


    ok boot /pci@8,700000/pci@3/scsi@5/sd@9,0
    
  7. Se o sistema se inicializa a partir do novo disco, desanexe o disco antigo.

    Por exemplo:


    # zpool detach rpool c1t10d0s0
    
  8. Configure o sistema para que se inicialize automaticamente a partir do disco novo, ou usando o comando eeprom , o comando setenv da PROM de inicialização do SPARC, ou reconfigurando a BIOS do PC.

ProcedureComo criar instantâneos do pool raiz

É possível criar instantâneos do conjunto raiz com propósito de recuperação. A melhor forma de criar instantâneos de conjunto raiz é efetuar um instantâneo recursivo do conjunto raiz.

O procedimento abaixo cria um instantâneo de conjunto raiz recursivo e armazena o instantâneo como um arquivo em um conjunto em um sistema remoto. No caso de uma falha no conjunto raiz, o conjunto de dados remoto não pode ser montado utilizando o NFS e o arquivo de instantâneo pode ser recebido no conjunto recriado. É possível também armazenar instantâneos de conjunto de raiz como os instantâneos reais em um conjunto em um sistema remoto. Enviar e receber os instantâneos de um sistema remoto é um pouco mais complicado, porque é preciso configurar ssh ou usar rsh enquanto o sistema a ser reparado é inicializado a partir da mini-raiz do SO Solaris.

Para informações sobre o armazenamento remoto e a recuperação de instantâneos de conjunto raiz e para as informações mais recentes sobre a recuperação do conjunto raiz, visite este site:

http://www.solarisinternals.com/wiki/index.php/ZFS_Troubleshooting_Guide

Validando remotamente instantâneos armazenados como arquivos ou instantâneos como um importante passo em uma recuperação de conjunto raiz. Com ambos os métodos, os instantâneos seriam recriados em uma base de rotina, como quando a configuração do conjunto é alterada ou quando o Solaris OS é atualizado.

No procedimento a seguir, o sistema é inicializado a partir do ambiente de inicialização BE.

  1. Crie um grupo e sistema de arquivos em um sistema remoto para armazenar os instantâneos.

    Por exemplo:


    remote# zfs create rpool/snaps
    
  2. Compartilhe o sistema de arquivos com o sistema local.

    Por exemplo:


    remote# zfs set sharenfs='rw=local-system,root=local-system' rpool/snaps
    # share
    -@rpool/snaps   /rpool/snaps   sec=sys,rw=local-system,root=local-system   "" 
  3. Crie um instantâneo recursivo do pool raiz.


    local# zfs snapshot -r rpool@0804
    local# zfs list
    NAME                        USED  AVAIL  REFER  MOUNTPOINT
    rpool                      6.17G  60.8G    98K  /rpool
    rpool@0804                     0      -    98K  -
    rpool/ROOT                 4.67G  60.8G    21K  /rpool/ROOT
    rpool/ROOT@0804                0      -    21K  -
    rpool/ROOT/zfsBE           4.67G  60.8G  4.67G  /
    rpool/ROOT/zfsBE@0804       386K      -  4.67G  -
    rpool/dump                 1.00G  60.8G  1.00G  -
    rpool/dump@0804                0      -  1.00G  -
    rpool/swap                  517M  61.3G    16K  -
    rpool/swap@0804                0      -    16K  -
  4. Envie os instantâneos do pool raiz ao sistema remoto.

    Por exemplo:


    local# zfs send -Rv rpool@0804 > /net/remote-system/rpool/snaps/rpool.0804
    sending from @ to rpool@0804
    sending from @ to rpool/swap@0804
    sending from @ to rpool/ROOT@0804
    sending from @ to rpool/ROOT/zfsBE@0804
    sending from @ to rpool/dump@0804

ProcedureComo recriar um pool raiz ZFS e recuperar instantâneos do pool raiz

Neste procedimento, suponha as condições a seguir:

Todas as etapas são efetuadas no sistema local.

  1. Inicialize a partir de um CD/DVD ou da rede.

    • SPARC: selecione um dos seguintes métodos de inicialização:


      ok boot net -s
      ok boot cdrom -s
      

      Se não usar a opção -s, você terá que sair do programa de instalação.

    • x86: selecione a opção para inicializar a partir do DVD ou da rede. Em seguida, saia do programa de instalação.

  2. Monte o conjunto de dados remoto do instantâneo.

    Por exemplo:


    # mount -F nfs remote-system:/rpool/snaps /mnt
    

    Se seus serviços de rede não estão configurados, poderá ser necessário especificar o endereço IP do sistema remoto .

  3. Se o disco do conjunto raiz for substituído e não contiver uma legenda de disco que possa ser utilizada pelo ZFS, será necessário rotular o disco novamente.

    Para obter mais informações sobre como rotular um disco novamente, vá ao seguinte site:

    http://www.solarisinternals.com/wiki/index.php/ZFS_Troubleshooting_Guide

  4. Recrie o pool raiz.

    Por exemplo:


    # zpool create -f -o failmode=continue -R /a -m legacy -o cachefile=
    /etc/zfs/zpool.cache rpool c1t1d0s0
    
  5. Restaure os instantâneos do pool raiz

    Esta etapa pode levar algum tempo. Por exemplo:


    # cat /mnt/rpool.0804 | zfs receive -Fdu rpool
    

    O uso da opção -u significa que o arquivo restaurado não é montado quando a operação do zfs receive terminar.

  6. Verifique se os conjuntos de dados do pool raiz foram restaurados.

    Por exemplo:


    # zfs list
    NAME                        USED  AVAIL  REFER  MOUNTPOINT
    rpool                      6.17G  60.8G    98K  /a/rpool
    rpool@0804                     0      -    98K  -
    rpool/ROOT                 4.67G  60.8G    21K  /legacy
    rpool/ROOT@0804                0      -    21K  -
    rpool/ROOT/zfsBE           4.67G  60.8G  4.67G  /a
    rpool/ROOT/zfsBE@0804       398K      -  4.67G  -
    rpool/dump                 1.00G  60.8G  1.00G  -
    rpool/dump@0804                0      -  1.00G  -
    rpool/swap                  517M  61.3G    16K  -
    rpool/swap@0804                0      -    16K  -
  7. Defina a propriedade bootfs no BE do pool raiz.

    Por exemplo:


    # zpool set bootfs=rpool/ROOT/zfsBE rpool
    
  8. Instale os blocos de inicialização no novo disco.

    SPARC:


    # installboot -F zfs /usr/platform/`uname -i`/lib/fs/zfs/bootblk /dev/rdsk/c1t1d0s0
    

    x86:


    # installgrub /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c1t1d0s0
    
  9. Reinicialize o sistema.


    # init 6
    

ProcedureComo reverter os instantâneos do pool raiz a partir da inicialização à prova de falhas

Este procedimento pressupõe que os instantâneos existentes do pool raiz estejam disponíveis. Neste exemplo, eles estão disponíveis no sistema local.


# zfs snapshot -r rpool@0804
# zfs list
NAME                        USED  AVAIL  REFER  MOUNTPOINT
rpool                      6.17G  60.8G    98K  /rpool
rpool@0804                     0      -    98K  -
rpool/ROOT                 4.67G  60.8G    21K  /rpool/ROOT
rpool/ROOT@0804                0      -    21K  -
rpool/ROOT/zfsBE           4.67G  60.8G  4.67G  /
rpool/ROOT/zfsBE@0804       398K      -  4.67G  -
rpool/dump                 1.00G  60.8G  1.00G  -
rpool/dump@0804                0      -  1.00G  -
rpool/swap                  517M  61.3G    16K  -
rpool/swap@0804                0      -    16K  -
  1. Desligue o sistema e inicialize no modo à prova de falhas.


    ok boot -F failsafe
    ROOT/zfsBE was found on rpool.
    Do you wish to have it mounted read-write on /a? [y,n,?] y
    mounting rpool on /a
    
    Starting shell.
  2. Reverta cada instantâneo do conjunto raiz.


    # zfs rollback rpool@0804
    # zfs rollback rpool/ROOT@0804
    # zfs rollback rpool/ROOT/zfsBE@0804
    
  3. Reinicialize no modo multiusuário.


    # init 6