Até agora não trabalhamos com dispositivos em bloco(block device).
trabalhando com dispositivos em blocos temos a opção de formatar e instalar no dispositivo em bloco qualquer sistema de arquivos que desejarmos, como ext4, ntfs, xfs etc.
Com ZVOL se refere à z volume. Logicamente que o “z” é uma referência ao zfs.
ZVOL é um dispositivo em bloco do ZFS e reside dentro do pool. Então podemos ter sistema de arquivos ext4 ou xfs… dentro do nosso pool? Sim. E qualquer um desses sistemas de arquivos se beneficiará do que ZFS oferece: copy-on-write, scrubbing, raidz, compressão, deduplicação de dados. Ainda veremos muitas dessas opções.
Quando criamos o zvol ele fica dentro de /dev/zvol/nome_do_pool/
Nosso Ambiente Atual
tenho o pool meuPool que criei com o seguinte comando
sudo zpool create meuPool mirror sdb sdc mirror sdd sde spare sdf
elder@server01:~$ sudo zpool status pool: meuPool state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM meuPool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 sdb ONLINE 0 0 0 sdc ONLINE 0 0 0 mirror-1 ONLINE 0 0 0 sdd ONLINE 0 0 0 sde ONLINE 0 0 0 spares sdf AVAIL errors: No known data errors
vendo o tamanho do pool. Conforme abaixo temos 160 MB para trabalhar.
elder@server01:~$ sudo zpool list NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT meuPool 160M 110K 160M - - 1% 0% 1.00x ONLINE -
Criando um ZVOL
Para criar um zvol é muito fácil, basta acrescentar “-V n”, onde o n é o tamanho do volume. Por exemplo “-V 1G” para um volume em bloco de 1 Giga Byte.
Vamos criar um dataset do tipo zvol(dispositivo em bloco) com 50 MB
elder@server01:~$ sudo zfs create -V 50M meuPool/musicas
veja o resultado
elder@server01:~$ sudo zfs list NAME USED AVAIL REFER MOUNTPOINT meuPool 53,8M 26,1M 24K /meuPool meuPool/musicas 53,8M 79,9M 12K -
Se executarmos “df -h” veremos que o zvol não é montado automaticamete como os datasets que criamos anteriormente. Abaixo temos apenas o pool “meupool”, não temos /meuPool/musicas.
elder@server01:~$ df Sist. Arq. Blocos de 1K Usado Disponível Uso% Montado em ..... meuPool 26880 128 26752 1% /meuPool
Visualize a pasta /dev/zvol/meuPool/ e veja que o zvol “musicas” foi criado e é um link para /dev/zd0.
Então tanto faz trabalharmos com “/dev/zvol/meuPool/musicas” ou com “/dev/zd0”
elder@server01:~$ ls -l /dev/zvol/meuPool/ total 0 lrwxrwxrwx 1 root root 9 fev 5 18:13 musicas -> ../../zd0
Vamos formatar como ext4
elder@server01:~$ sudo mkfs.ext4 /dev/zd0
vamos criar uma pasta e montar o zvol nela.
Dei o nome de zvolExt4 à pasta:
elder@server01:~$ sudo mkdir /zvolExt4
Monte o zvol
elder@server01:~$ sudo mount /dev/zd0 /zvolExt4/
visualize com “df -hT”. Veja que o tipo do sistema de arquivos não é zfs e sim ext4.
elder@server01:~$ df -hT Sist. Arq. Tipo Tam. Usado Disp. Uso% Montado em ...... meuPool zfs 27M 128K 27M 1% /meuPool /dev/zd0 ext4 45M 1,1M 40M 3% /zvolExt4
Vamos criar alguns arquivos dentro de /zvolExt4
elder@server01:~$ sudo touch /zvolExt4/textos{1..5}.txt
elder@server01:~$ ls /zvolExt4/ textos1.txt textos2.txt textos3.txt textos4.txt textos5.txt
Conclusão
É bom saber que zfs pode lidar com outros sistemas de arquivos e estes desfrutará dos benefícios do zfs. Em meus laboratórios de testes, porém, todos os snapshots criados de zvol em ext4 não deram certos, sempre ficavam vazios.