Guia de administração do ZFS Oracle Solaris

Montando e compartilhando sistemas de arquivos ZFS

Esta seção descreve como os pontos de montagem e os sistemas de arquivos compartilhados são gerenciados no ZFS.

Gerenciando pontos de montagem do ZFS

Por padrão, o sistema de arquivos ZFS é automaticamente montado quando é criado. É possível determinar comportamento de ponto de montagem específico para um sistema de arquivos como descrito nesta seção.

Também é possível definir o ponto de montagem padrão para o conjunto de dados de um conjunto no momento da criação utilizando, de zpool create, a opção -m. Para obter mais informações sobre a criação de pools de armazenamento, consulte Criando um pool de armazenamento do ZFS.

Todos os sistemas de arquivos ZFS são montados pelo ZFS no momento da inicialização utilizando o serviço svc://system/filesystem/local do Service Management Facility's (SMF). Os sistemas de arquivos são montados em /path, onde path é o nome do sistema de arquivos.

É possível ignorar o ponto de montagem padrão utilizando o comando zfs set para configurar a propriedade mountpoint para um caminho específico. O ZFS cria automaticamente o ponto de montagem especificado, se necessário, e monta automaticamente o sistema de arquivos associado quando o comando zfs mount -a é chamado, sem a necessidade de que o arquivo /etc/vfstab seja editado.

A propriedade mountpoint é herdada. Por exemplo, se pool/home possui a propriedade mountpoint definida como /export/stuff, então pool/home/user herda /export/stuff/user para seu valor de propriedade mountpoint.

Para prevenir que um sistema de arquivos seja montado, configure a propriedade ponto de montagem para nenhum. Além disso, a propriedade canmount pode ser utilizada para controlar se o sistema de arquivos pode ser montado. Para obter mais informações sobre a propriedade canmount, consulte A propriedade canmount.

Sistemas de arquivos também podem ser explicitamente gerenciados por interfaces de montagem de legado utilizando zfs set para configurar a propriedade ponto de montagem como legado. Fazer isso previne o ZFS da montagem automática e de gerenciar um sistema de arquivos. As ferramentas de legado, que incluem os comandos mount e umount, e o arquivo /etc/vfstab devem ser usados. Para obter mais informações sobre montagem de legado, consulte Pontos de montagem de legado.

Pontos de montagem automáticos

Todo conjunto de dados cuja propriedade mountpoint não for legacy é gerenciado pelo ZFS. No exemplo a seguir, o conjunto de dados é criado e seu ponto de montagem é automaticamente gerenciado pelo ZFS:


# zfs create pool/filesystem
# zfs get mountpoint pool/filesystem
NAME             PROPERTY      VALUE                      SOURCE
pool/filesystem  mountpoint    /pool/filesystem           default
# zfs get mounted pool/filesystem
NAME             PROPERTY      VALUE                      SOURCE
pool/filesystem  mounted       yes                        -

Também é possível definir explicitamente a propriedade mountpoint conforme ilustrado no exemplo abaixo:


# zfs set mountpoint=/mnt pool/filesystem
# zfs get mountpoint pool/filesystem
NAME             PROPERTY      VALUE                      SOURCE
pool/filesystem  mountpoint    /mnt                       local
# zfs get mounted pool/filesystem
NAME             PROPERTY      VALUE                      SOURCE
pool/filesystem  mounted       yes                        -

Quando a propriedade mountpoint é alterada, o sistema de arquivos é desmontado automaticamente do ponto de montagem antigo e é montado novamente no novo ponto de montagem. Os diretórios de ponto de montagem são criados conforme necessário. Se o ZFS é incapaz de desmontar um sistema arquivos devido ao fato de estar ativo, um erro é relatado e uma desmontagem manual forçada é necessária.

Pontos de montagem de legado

É possível gerenciar sistemas de arquivos ZFS com ferramentas de legado definindo a propriedade mountpoint como legacy. Os sistemas de arquivos de legado devem ser gerenciados através dos comandos mount e umount e do arquivo /etc/vfstab. O ZFS não monta automaticamente os sistemas de arquivos de legado no momento da inicialização e os comandos mount e umount do ZFS não operam em conjuntos de dados desse tipo. Os exemplos abaixo ilustram como configurar e gerenciar um conjunto de dados ZFS no modo de legado:


# zfs set mountpoint=legacy tank/home/eschrock
# mount -F zfs tank/home/eschrock /mnt

Para montar automaticamente um sistema de arquivos de legado no momento da inicialização, adicione um entrada ao arquivo /etc/vfstab. O exemplo a seguir mostra qual entrada no arquivo /etc/vfstab poderia se parecer:


#device         device        mount           FS      fsck    mount   mount
#to mount       to fsck       point           type    pass    at boot options
#

tank/home/eschrock -		/mnt		   zfs		-		yes		-	

As entradas device to fsck e fsck pass são configuradas para - porque o comando fsck não é aplicável aos sistemas de arquivos ZFS. Para mais informação sobre a integridade de dados ZFS, consulte Semânticas transacionais.

Montando sistemas de arquivos ZFS

O ZFS monta automaticamente os sistemas de arquivos quando os sistemas de arquivos são criados ou quando o sistema é inicializado. Utilizar o comando zfs mount é necessário somente quando for preciso alterar as opções de montagem ou explicitamente montar ou desmontar sistemas de arquivos.

O comando zfs mount sem argumentos mostra todos os sistemas de arquivos montados atualmente que são gerenciados pelo ZFS. Os pontos de montagem de legado gerenciados não são exibidos. Por exemplo:


# zfs mount
tank                            /tank
tank/home                       /tank/home
tank/home/bonwick               /tank/home/bonwick
tank/ws                         /tank/ws

A opção -a pode ser usada para montar todos os sistemas de arquivos ZFS gerenciados. Os sistemas de arquivos gerenciados de legado não são montados. Por exemplo:


# zfs mount -a

Por padrão, o ZFS não permite montagem em cima de um diretório não vazio. Para forçar uma montagem em cima de um diretório não vazio, é necessário usar a opção -O. Por exemplo:


# zfs mount tank/home/lalt
cannot mount '/export/home/lalt': directory is not empty
use legacy mountpoint to allow this behavior, or use the -O flag
# zfs mount -O tank/home/lalt

Pontos de montagem de legado devem ser gerenciados através de ferramentas de legado. Uma tentativa de usar ferramentas do ZFS resulta em erro. Por exemplo:


# zfs mount pool/home/billm
cannot mount 'pool/home/billm': legacy mountpoint
use mount(1M) to mount this filesystem
# mount -F zfs tank/home/billm

Quando um sistema de arquivos é montado, ele usa um conjunto de opções de montagem com base nos valores de propriedade associados ao conjunto de dados. A correlação entre propriedades e opções de montagem é a seguinte:

Tabela 6–4 Propriedades relacionadas à montagem ZFS e opções de montagem

Propriedade 

Opções de montagem 

atime

atime/noatime

devices

devices/nodevices

exec

exec/noexec

nbmand

nbmand/nonbmand

readonly

ro/rw

setuid

setuid/nosetuid

xattr

xattr/noaxttr

A opção de montagem nosuid é um alias para nodevices,nosetuid .

Usando propriedades de montagem temporárias

Se qualquer opção de montagem descrita na última seção for explicitamente configurada utilizando a opção -o com o comando zfs mount, o valor da propriedade associada será temporariamente ignorado. Esses valores de propriedade são relatados como temporários pelo comando zfs get e voltam ao valor original quando o sistema de arquivos é desmontado. Se um valor de propriedade for alterado enquanto o conjunto de dados estiver sendo montado, a alteração terá efeito imediatamente, substituindo qualquer definição temporária.

No exemplo a seguir, a opção de montagem de somente leitura está temporariamente configurada no sistema de arquivos tank/home/perrin. Presume-se que o sistema de arquivos está desmontado.


# zfs mount -o ro tank/home/perrin

Para alterar temporariamente um valor de propriedade no sistema de arquivos que esteja atualmente montado, utilize a opção remontar especial. No exemplo abaixo, a propriedade atime é temporariamente alterada para off para um sistema de arquivos atualmente montado:


# zfs mount -o remount,noatime tank/home/perrin
# zfs get atime tank/home/perrin
NAME             PROPERTY      VALUE                      SOURCE
tank/home/perrin atime         off                        temporary

Para obter mais informações sobre o comando zfs mount, consulte zfs(1M).

Desmontando sistemas de arquivos

É possível desmontar os sistemas de arquivos ZFS utilizando o subcomando zfs unmount. O comando unmount pode assumir o ponto de montagem ou o nome de sistema de arquivos como um argumento.

No exemplo a seguir, um sistema de arquivos é desmontado pelo seu nome de sistema de arquivos:


# zfs unmount tank/home/tabriz

No exemplo a seguir, o sistemas de arquivos é desmontado pelo seu ponto de montagem:


# zfs unmount /export/home/tabriz

O comando unmount falha se o sistema de arquivos está ocupado. Para desmontar a força um sistema de arquivos, é possível utilizar a opção -f. Seja cauteloso ao desmontar a força um sistema de arquivos se os conteúdos estiverem ativamente sendo utilizados. Pode resultar em um comportamento imprevisível do aplicativo.


# zfs unmount tank/home/eschrock
cannot unmount '/export/home/eschrock': Device busy
# zfs unmount -f tank/home/eschrock

Para proporcionar compatibilidade com versões anteriores, o comando umount de legado pode ser utilizado para desmontar sistemas de arquivos ZFS. Por exemplo:


# umount /export/home/bob

Para obter mais informações sobre o comando zfs unmount, consulte zfs(1M).

Compartilhando e descompartilhando sistemas de arquivos ZFS

O ZFS pode compartilhar automaticamente sistemas de arquivos configurando a propriedade sharenfs. Utilizando essa propriedade, não é necessário modificar o arquivo /etc/dfs/dfstab quando um novo sistema de arquivos é compartilhado. A propriedade sharenfs é uma lista de opções separada por vírgulas para passar para o comando share. O valor on é um alias para opção de compartilhamento padrão, que fornece permissões read/write para todos. O valor off indica que o sistema de arquivos não é gerenciado pelo ZFS e pode ser compartilhado por meios tradicionais, assim como o arquivo /etc/dfs/dfstab. Todos os sistemas de arquivos cuja propriedade sharenfs não é off são compartilhados durante a inicialização.

Controlando a semântica de compartilhamento

Por padrão, todos os sistemas de arquivos são descompartilhados. Para compartilhar um novo sistema de arquivos, use a sintaxe zfs set semelhante à seguinte:


# zfs set sharenfs=on tank/home/eschrock

A propriedade sharenfs é herdada, e os sistemas de arquivos são automaticamente compartilhados na criação se suas propriedades herdadas não forem off. Por exemplo:


# zfs set sharenfs=on tank/home
# zfs create tank/home/bricker
# zfs create tank/home/tabriz
# zfs set sharenfs=ro tank/home/tabriz

tank/home/bricker e tank/home/tabriz são inicialmente compartilhados como graváveis porque herdam a propriedade sharenfs do tank/home. Depois que a propriedade é configurada para ro(somente leitura), tank/home/tabriz é compartilhado como somente leitura independente da propriedade sharenfsque é configurada para tank/home.

Descompartilhando sistemas de arquivos ZFS

Embora muitos sistemas de arquivos sejam automaticamente compartilhados ou descompartilhados durante a inicialização, criação e destruição, os sistemas de arquivos, algumas vezes, necessitam ser explicitamente descompartilhados. Para isso, use o comando zfs unshare. Por exemplo:


# zfs unshare tank/home/tabriz

Este comando descompartilha o sistema de arquivos tank/home/tabriz. Para descompartilhar todos os sistemas de arquivos ZFS no sistema, é necessário usar a opção - a.


# zfs unshare -a

Compartilhando sistemas de arquivos ZFS

Na maioria das vezes, o comportamento automático do ZFS em relação ao compartilhamento do sistema de arquivos na inicialização e criação é suficiente para operações regulares. Se, por algum motivo, você descompartilhar um sistema de arquivos, pode compartilhá-lo novamente com o uso do comando zfs share. Por exemplo:


# zfs share tank/home/tabriz

Você também pode compartilhar todos os sistemas de arquivos ZFS no sistema usando a opção - a.


# zfs share -a

Comportamento de compartilhamento de legado

Se a propriedade sharenfs é configurada para off, então o ZFS não faz a tentativa de compartilhamento ou de descompartilhamento do sistema de arquivos a qualquer hora. Esse valor permite que o administrador de sistemas de arquivos compartilhe por meios tradicionais, assim como o arquivo /etc/dfs/dfstab.

Ao contrário do comando mount de legado, os comandos share e unshare de legado ainda podem funcionar nos sistemas de arquivos ZFS. Como resultado, é possível compartilhar manualmente um sistema de arquivos com opções que diferem da opção da propriedade sharenfs. Este modelo administrativo não é recomendável . Escolha gerenciar o compartilhamento NFS completamente por ZFS ou pelo arquivo /etc/dfs/dfstab. O modelo administrativo do ZFS foi concebido para ser mais simples e menos trabalhoso do que o modelo tradicional.