19.2. Guia de Início Rápido
Anterior | Capítulo 19. O sistema de arquivos Z (ZFS) | Próxima

## 19.2. Guia de Início Rápido

Existe um mecanismo de inicialização que permite ao FreeBSD montar pools do ZFS durante a inicialização do sistema. Para habilitá-lo, adicione esta linha ao `/etc/rc.conf`:

    zfs_enable="YES"

Então inicie o serviço:

    # service zfs start

Os exemplos nesta seção assumem três discos SCSI com os seguintes nomes de dispositivo ``da0``, ``da1`` e ``da2``. Usuários de hardware do tipo SATA devem usar nomes de dispositivo ``ada``.

### 19.2.1. Pool de Disco Único

Para criar um pool simples e não-redundante usando um único disco:

    # zpool create example /dev/da0

Para visualizar o novo pool, verifique a saída do comando `df`:

    # df
    Filesystem  1K-blocks    Used    Avail Capacity  Mounted on
    /dev/ad0s1a   2026030  235230  1628718    13%    /
    devfs               1       1        0   100%    /dev
    /dev/ad0s1d  54098308 1032846 48737598     2%    /usr
    example      17547136       0 17547136     0%    /example

Esta saída mostra que o pool `example` foi criado e montado e agora está acessível como um sistema de arquivos. Arquivos podem ser criados nele e os usuários podem navegar nele:

    # cd /example
    # ls
    # touch testfile
    # ls -al
    total 4
    drwxr-xr-x   2 root  wheel    3 Aug 29 23:15 .
    drwxr-xr-x  21 root  wheel  512 Aug 29 23:12 ..
    -rw-r--r--   1 root  wheel    0 Aug 29 23:15 testfile

No entanto, esse pool não está aproveitando nenhuma feature do ZFS. Para criar um dataset neste pool com a compressão ativada:

    # zfs create example/compressed
    # zfs set compression=gzip example/compressed

O dataset `example/compressed` é agora um sistema de arquivos ZFS compactado. Tente copiar alguns arquivos grandes para `/example/compressed`.

A compactação pode ser desativada com:

    # zfs set compression=off example/compressed

Para desmontar um sistema de arquivos, use `zfs umount` e, em seguida, verifique com `df`:

    # zfs umount example/compressed
    # df
    Filesystem  1K-blocks    Used    Avail Capacity  Mounted on
    /dev/ad0s1a   2026030  235232  1628716    13%    /
    devfs               1       1        0   100%    /dev
    /dev/ad0s1d  54098308 1032864 48737580     2%    /usr
    example      17547008       0 17547008     0%    /example

Para remontar o sistema de arquivos para torná-lo acessível novamente, use `zfs mount` e verifique com o `df`:

    # zfs mount example/compressed
    # df
    Filesystem         1K-blocks    Used    Avail Capacity  Mounted on
    /dev/ad0s1a          2026030  235234  1628714    13%    /
    devfs                      1       1        0   100%    /dev
    /dev/ad0s1d         54098308 1032864 48737580     2%    /usr
    example             17547008       0 17547008     0%    /example
    example/compressed  17547008       0 17547008     0%    /example/compressed

O pool e o sistema de arquivos também podem ser observados visualizando a saída do comando `mount`:

    # mount
    /dev/ad0s1a on / (ufs, local)
    devfs on /dev (devfs, local)
    /dev/ad0s1d on /usr (ufs, local, soft-updates)
    example on /example (zfs, local)
    example/compressed on /example/compressed (zfs, local)

Após a criação, os datasets do ZFS podem ser usados como qualquer sistema de arquivos. No entanto, muitos outros recursos estão disponíveis, e podem ser definidos por conjunto de dados. No exemplo abaixo, um novo sistema de arquivos chamado `data` é criado. Arquivos importantes serão armazenados nele, portanto, ele é configurado para manter duas cópias de cada bloco de dados:

    # zfs create example/data
    # zfs set copies=2 example/data

Agora é possível ver o sistema de arquivos `data` e o espaço utilizado através do comando `df`:

    # df
    Filesystem         1K-blocks    Used    Avail Capacity  Mounted on
    /dev/ad0s1a          2026030  235234  1628714    13%    /
    devfs                      1       1        0   100%    /dev
    /dev/ad0s1d         54098308 1032864 48737580     2%    /usr
    example             17547008       0 17547008     0%    /example
    example/compressed  17547008       0 17547008     0%    /example/compressed
    example/data        17547008       0 17547008     0%    /example/data

Observe que cada sistema de arquivos no pool tem a mesma quantidade de espaço disponível. Esta é a razão para usar o `df` nestes exemplos, para mostrar que os sistemas de arquivos usam apenas a quantidade de espaço de que precisam e todos utilizam o mesmo pool. O ZFS elimina conceitos como volumes e partições e permite que vários sistemas de arquivos ocupem o mesmo pool.

Para destruir os sistemas de arquivos e, em seguida, destruir o pool, se ele não for mais necessário:

    # zfs destroy example/compressed
    # zfs destroy example/data
    # zpool destroy example

### 19.2.2. RAID-Z

Discos falham. Um método para evitar perda de dados devido a falhas no disco é implementar RAID. O ZFS suporta esse recurso em seu design de pool. Os pools RAID-Z exigem três ou mais discos, mas fornecem mais espaço utilizável do que os pools espelhados.

Este exemplo cria um pool RAID-Z, especificando os discos a serem adicionados ao pool:

    # zpool create storage raidz da0 da1 da2

### Nota:

A Sun™ recomenda que o número de dispositivos usados ​​em uma configuração RAID-Z seja entre três e nove. Para ambientes que exigem um único conjunto de 10 discos ou mais, considere dividi-lo em grupos menores de RAID-Z. Se apenas dois discos estiverem disponíveis e a redundância for um requisito, considere usar o ZFS mirror. Consulte zpool(8 ) para obter maiores detalhes.

O exemplo anterior criou o zpool `storage`. Este exemplo cria um novo sistema de arquivos chamado `home` neste pool:

    # zfs create storage/home

A compressão e a criação de cópias extras de diretórios e arquivos podem ser ativadas:

    # zfs set copies=2 storage/home
    # zfs set compression=gzip storage/home

Para tornar este o novo diretório home para usuários, copie os dados de usuários para este diretório e crie os links simbólicos apropriados:

    # cp -rp /home/* /storage/home
    # rm -rf /home /usr/home
    # ln -s /storage/home /home
    # ln -s /storage/home /usr/home

Os dados dos usuários agora são armazenados no recém-criado diretório `/storage/home`. Teste adicionando um novo usuário e efetuando login como este usuário.

Tente criar um snapshot do sistema de arquivos que possa ser revertido posteriormente:

    # zfs snapshot storage/home@08-30-08

Os snapshots só podem ser realizados de um sistema de arquivos completo, não de um único diretório ou arquivo.

O caractere `@` é um delimitador entre o nome do sistema de arquivos ou o nome do volume. Se um diretório importante tiver sido excluído acidentalmente, o backup do sistema de arquivos poderá ser feito e, em seguida, revertido para um snapshot anterior, quando o diretório ainda existia:

    # zfs rollback storage/home@08-30-08

Para listar todos os snapshots disponíveis, execute `ls` no diretório `.zfs/snapshot` no sistema de arquivos. Por exemplo, para ver o snapshot obtido anteriormente:

    # ls /storage/home/.zfs/snapshot

É possível escrever um script para criar snapshots frequentes dos dados do usuário. No entanto, com o tempo, os snapshots podem consumir muito espaço em disco. O snapshot anterior pode ser removido usando o comando:

    # zfs destroy storage/home@08-30-08

Após o teste, `/storage/home` pode ser o verdadeiro `/home` usando este comando:

    # zfs set mountpoint=/home storage/home

Execute o `df` e o `mount` para confirmar que o sistema agora trata o sistema de arquivos como o real `/home`:

    # mount
    /dev/ad0s1a on / (ufs, local)
    devfs on /dev (devfs, local)
    /dev/ad0s1d on /usr (ufs, local, soft-updates)
    storage on /storage (zfs, local)
    storage/home on /home (zfs, local)
    # df
    Filesystem   1K-blocks    Used    Avail Capacity  Mounted on
    /dev/ad0s1a    2026030  235240  1628708    13%    /
    devfs                1       1        0   100%    /dev
    /dev/ad0s1d   54098308 1032826 48737618     2%    /usr
    storage       26320512       0 26320512     0%    /storage
    storage/home  26320512       0 26320512     0%    /home

Isso conclui a configuração do RAID-Z. Atualizações de status diárias sobre os sistemas de arquivos criados podem ser geradas como parte das execuções noturnas doperiodic(8). Adicione esta linha ao `/etc/periodic.conf` :

    daily_status_zfs_enable="YES"

### 19.2.3. Recuperando o RAID-Z

Todo software RAID tem um método de monitorar seu `status` . O status dos dispositivos RAID-Z pode ser visualizado com este comando:

    # zpool status -x

Se todos os pools estiverem Online e tudo estiver normal, a mensagem mostrará:

    all pools are healthy

Se houver um problema, talvez um disco que esteja no estado Offline, o status do pool será semelhante a:

      pool: storage
     state: DEGRADED
    status: One or more devices has been taken offline by the administrator.
    	Sufficient replicas exist for the pool to continue functioning in a
    	degraded state.
    action: Online the device using 'zpool online' or replace the device with
    	'zpool replace'.
     scrub: none requested
    config:

    	NAME        STATE     READ WRITE CKSUM
    	storage     DEGRADED     0     0     0
    	  raidz1    DEGRADED     0     0     0
    	    da0     ONLINE       0     0     0
    	    da1     OFFLINE      0     0     0
    	    da2     ONLINE       0     0     0

    errors: No known data errors

Isso indica que o dispositivo foi colocado off-line anteriormente pelo administrador com este comando:

    # zpool offline storage da1

Agora o sistema pode ser desligado para substituir o `da1`. Quando o sistema estiver novamente online, o disco com falha poderá ser substituído no pool:

    # zpool replace storage da1

Agora, o status pode ser verificado novamente, desta vez sem `-x`, para que todos os pools sejam mostrados:

    # zpool status storage
     pool: storage
     state: ONLINE
     scrub: resilver completed with 0 errors on Sat Aug 30 19:44:11 2008
    config:

    	NAME        STATE     READ WRITE CKSUM
    	storage     ONLINE       0     0     0
    	  raidz1    ONLINE       0     0     0
    	    da0     ONLINE       0     0     0
    	    da1     ONLINE       0     0     0
    	    da2     ONLINE       0     0     0

    errors: No known data errors

Neste exemplo, tudo está normal.

### 19.2.4. Verificação de dados

O ZFS utiliza checksums para verificar a integridade dos dados armazenados. Estes são ativados automaticamente na criação dos sistemas de arquivos.

### Atenção:

Os checksums podem ser desabilitados, mas isto não é recomendado! Os checksums ocupam muito pouco espaço de armazenamento e fornecem integridade dos dados. Muitos recursos do ZFS não funcionarão adequadamente com os checksums desabilitados. Não há nenhum ganho perceptível de desempenho ao desativar os checksums.

A verificação de checksum é conhecida como scrubbing. Verifique a integridade dos dados do pool `storage` com este comando:

    # zpool scrub storage

A duração de um scrub depende da quantidade de dados armazenados. Quantidades maiores de dados levarão proporcionalmente mais tempo para serem verificadas. Scrubs utilizam muito I/O, e apenas um scrub tem permissão para ser executado por vez. Após a conclusão do scrub, o status pode ser visualizado com `status`:

    # zpool status storage
     pool: storage
     state: ONLINE
     scrub: scrub completed with 0 errors on Sat Jan 26 19:57:37 2013
    config:

    	NAME        STATE     READ WRITE CKSUM
    	storage     ONLINE       0     0     0
    	  raidz1    ONLINE       0     0     0
    	    da0     ONLINE       0     0     0
    	    da1     ONLINE       0     0     0
    	    da2     ONLINE       0     0     0

    errors: No known data errors

A data de conclusão da última operação de scrub é exibida para ajudar a rastrear quando outro scrub é necessário. Uma rotina recorrente de scrubs ajuda a proteger os dados contra corrupção silenciosa e garante a integridade do pool.

Consulte zfs(8) e zpool(8) para outras opções do ZFS.

Anterior | Acima | Próxima
Capítulo 19. O sistema de arquivos Z (ZFS) | Principal | 19.3. Administração `zpool`

All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/

Questions that are not answered by the documentation may be sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.