Guia de administração do ZFS Oracle Solaris

Manipulando erros de criação do pool de armazenamento do ZFS

Os erros de criação de pool podem ocorrer por vários motivos. Alguns desses motivos são óbvios, como quando um dispositivo especificado não existe, enquanto outros são mais sutis.

Detectando dispositivos em uso

Antes de formatar um dispositivo, o ZFS determina se o disco está sendo usado pelo ZFS ou por alguma outra parte do sistema operacional. Se o disco estiver em uso, poderão ser exibidos erros como os seguintes:


# zpool create tank c1t0d0 c1t1d0
invalid vdev specification
use '-f' to override the following errors:
/dev/dsk/c1t0d0s0 is currently mounted on /. Please see umount(1M).
/dev/dsk/c1t0d0s1 is currently mounted on swap. Please see swap(1M).
/dev/dsk/c1t1d0s0 is part of active ZFS pool zeepool. Please see zpool(1M).

Alguns destes erros podem ser ignorados utilizando a opção -f, mas grande parte deles não. As condições a seguir não podem ser ignoradas utilizando a opção - f, sendo necessário corrigí-los manualmente:

Sistema de arquivos montado

O disco ou uma de suas faixas contém um sistema de arquivos que está montado atualmente. Para corrigir este erro, use o comando umount.

Sistema de arquivos em /etc/vfstab

O disco contém um sistema de arquivos que está listado no arquivo /etc/vfstab , mas o sistema de arquivos não está montado atualmente. Para corrigir este erro, remova ou anote a linha no arquivo /etc/vfstab.

Dispositivo de dump dedicado

O disco está em uso como o dispositivo de dump dedicado para o sistema. Para corrigir este erro, use o comando dumpadm.

Parte de um pool do ZFS

O disco ou o arquivo faz parte de um pool de armazenamento ativo do ZFS. Para corrigir este erro, use o comando zpool destroy para destruir o pool, se este não for mais necessário. Ou, use o comando zpool detach para desanexar o disco do outro pool. Somente é possível desanexar um disco do pool de armazenamento espelhado.

As verificações de dispositivo em uso abaixo servem como avisos úteis e podem ser ignoradas com o uso da opção -f para criar o pool:

Contém um sistema de arquivos

O disco contém um sistema de arquivos conhecido, embora não esteja montado e não pareça estar em uso.

Parte de volume

Este disco é parte de um volume do Solaris Volume Manager.

Live upgrade

O disco está em utilização como um ambiente de inicialização alternativo para o Oracle Solaris Live Upgrade.

Parte de pool exportado do ZFS

O disco faz parte de um pool de armazenamento que foi exportado ou removido manualmente de um sistema. Neste último caso, o pool é relatado como potentially active, uma vez que o disco pode ser ou não uma unidade anexada a uma rede em uso por outro sistema. Tome cuidado ao substituir um pool potencialmente ativo.

O exemplo abaixo mostra como a opção -f é usada:


# zpool create tank c1t0d0
invalid vdev specification
use '-f' to override the following errors:
/dev/dsk/c1t0d0s0 contains a ufs filesystem.
# zpool create -f tank c1t0d0

O ideal é corrigir os erros, em vez de utilizar a opção -f para ignorá-los.

Níveis de replicação inconsistentes

Não é recomendável criar pools com dispositivos virtuais de diferentes níveis de replicação. O comando zpool tenta impedir que você crie por acidente um pool com níveis de redundância inconsistentes. Se tentar criar um pool com uma configuração assim, serão exibidos erros como os seguintes:


# zpool create tank c1t0d0 mirror c2t0d0 c3t0d0
invalid vdev specification
use '-f' to override the following errors:
mismatched replication level: both disk and mirror vdevs are present
# zpool create tank mirror c1t0d0 c2t0d0 mirror c3t0d0 c4t0d0 c5t0d0
invalid vdev specification
use '-f' to override the following errors:
mismatched replication level: 2-way mirror and 3-way mirror vdevs are present

É possível ignorar estes erros com a opção -f, mas deve-se evitar esta prática. O comando também avisa sobre a criação de um pool espelhado ou RAID-Z que use dispositivos de diferentes tamanhos. Apesar desta configuração ser permitida, níveis de redundância incompatíveis resultam em espaço de disco inutilizado no dispositivo maior. A opção -f é necessária para ignorar os avisos.

Simulando uma criação de pool de armazenamento

A tentativa de criar um conjunto pode falhar de forma inesperada de diferentes maneiras, e formatar discos é uma ação potencialmente prejudicial. Para estas razões, o comando zpool create possui a opção adicional, -n, que simula a criação do conjunto sem realmente escrever no dispositivo. Esta opção simulação efetua a verificação do dispositivo em uso e a validação do nível de replicação, e relata quaisquer erros durante o processo. Se nenhum erro for encontrado, será exibida uma saída semelhante à seguinte:


# zpool create -n tank mirror c1t0d0 c1t1d0
would create 'tank' with the following layout:

        tank
          mirror
            c1t0d0
            c1t1d0

Alguns erros não podem ser detectados sem a criação real do pool. O exemplo mais comum é a especificação do mesmo dispositivo duas vezes na mesma configuração. Não é possível detectar este erro com certeza sem realmente gravar os dados, de forma que o comando zpool create -n pode relatar êxito e ainda assim falhar em criar o conjunto quando realmente executado sem esta opção.

Ponto de montagem padrão para pools de armazenamento

Quando um conjunto é criado, o ponto de montagem padrão para o conjunto de dados raiz de nível superior é /pool-name. Este diretório não deve existir ou deve estar vazio. Se o diretório não existir, será criado automaticamente. Se o diretório estiver vazio, o conjunto de dados raiz será montado em cima do diretório existente. Para criar um pool com um ponto de montagem padrão diferente, use a opção - m do comando zpool create. Por exemplo:


# zpool create home c1t0d0
default mountpoint '/home' exists and is not empty
use '-m' option to provide a different default
# zpool create -m /export/zfs home c1t0d0

Este comando cria um novo conjunto home e o conjunto de dados home com um ponto de montagem /export/zfs.

Para obter mais informações sobre pontos de montagem, consulte Gerenciando pontos de montagem do ZFS.