Esta seção descreve como os pontos de montagem e os sistemas de arquivos compartilhados são gerenciados no 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.
Ao alterar a propriedade ponto de montagem de legado ou nenhum para um caminho específico, o ZFS monta automaticamente o sistema de arquivos.
Se o ZFS está gerenciando um sistema de arquivos mas está atualmente desmontado e a propriedade ponto de montagem está alterada, o sistema de arquivos permanece desmontado.
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.
É 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.
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 .
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).
É 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).
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.
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.
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 |
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 |
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.