Quotas do ZFS: Digamos que você tenha um pool de tamanho ZFS 10 GB. Você criou um sistema de arquivos ZFS naquele pool. Se você definir uma cota de 2 GB Para esse sistema de arquivos ZFS, o sistema de arquivos ZFS pode usar apenas 2 GB de espaço em disco do pool. Não pode usar mais do que isso, mesmo que haja espaço livre disponível na piscina.
Reserva ZFS: Se você definir uma cota de 2 GB Para um sistema de arquivos ZFS, o ZFS não alocará 2 GB de espaço em disco para esse sistema de arquivos imediatamente. O espaço do disco será alocado conforme necessário até que o limite da cota seja atingido. Imagine que você tem muitos sistemas de arquivos no seu pool ZFS, e muitos usuários estão escrevendo para eles. Pode chegar um momento em que o limite de cota de um sistema de arquivos não é atingido, mas outros sistemas de arquivos preencheram o espaço em disco do pool. Portanto, mesmo que o sistema de arquivos tenha usado menos de 2 GB de espaço em disco do pool, ele ainda não será gravado no pool, pois o pool não possui espaço livre em disco.
Para resolver esse problema, você pode usar a reserva do ZFS. Você pode definir 2 GB De reserva para o seu sistema de arquivos ZFS muito especial e, no momento em que você definir a reserva, 2 GB de espaço em disco serão alocados para o sistema de arquivos do pool ZFS. Dessa forma, não importa quantos dados outros sistemas de arquivos sejam armazenados nesse pool, você ainda terá espaços de disco dedicados disponíveis para o seu sistema de arquivos e ainda poderá criar arquivos nesse sistema de arquivos, mesmo que o pool esteja cheio (não possui nenhum Espaço livre em disco).
Neste artigo, mostrarei como configurar cotas e reservas para o ZFS FileSystems. Então vamos começar.
Índice
Criação de pools ZFS e sistemas de arquivos
Para experimentar a cota e reserva do ZFS, criarei um pool de ZFS Pool1 e 4 sistemas de arquivos ZFS fs1, FS2, fs3, e fs4 na piscina do ZFS Pool1. Se você quiser acompanhar, você pode fazer o mesmo.
Este artigo usará o vdb e VDC Dispositivos de armazenamento para criar o pool ZFS Pool1.
$ sudo lsblk -e7 -dPara criar o pool ZFS Pool1 usando o vdb e VDC Dispositivos de armazenamento, execute o seguinte comando:
$ sudo zpool create -f pool1 vdb vdcUma piscina ZFS Pool1 deve ser criado.
Lista de $ sudo zfsCrie os sistemas de arquivos fs1, FS2, fs3, e fs4 na piscina do ZFS Pool1 Com os seguintes comandos:
$ sudo zfs crie pool1/fs1Os sistemas de arquivos ZFS fs1, FS2, fs3, e fs4 deve ser criado na piscina do ZFS Pool1.
Lista de $ sudo zfsConfigurando a cota do sistema de arquivos ZFS
Para configurar uma cota para um sistema de arquivos ZFS, você terá que configurar o contingente e Refquota Propriedades desse sistema de arquivos ZFS.
contingente: A cota será definida para os dados, instantâneos do sistema de arquivos e clones do sistema de arquivos. Portanto, o tamanho total dos dados do seu sistema de arquivos, instantâneos do sistema de arquivos e clones do sistema de arquivos não podem exceder o limite da cota.
Resumidamente,
sistema de arquivo dados Tamanho + FileSystem Instantâneos Tamanho + FileSystem clones tamanho < contingente limite
refquota: O limite de cota é definido apenas para os dados do sistema de arquivos, não para os instantâneos do sistema de arquivos e clones do sistema de arquivos.
Resumidamente,
sistema de arquivo dados tamanho < Refquota limite
Por padrão, o contingente e Refquota As propriedades não são definidas em nenhum sistema de arquivos ZFS. Portanto, os dados do sistema de arquivos, os instantâneos do sistema de arquivos e os clones do sistema de arquivos de qualquer sistema de arquivos ZFS podem abranger todo o tamanho do pool ZFS.
Como você pode ver, contingente e Refquota propriedades estão definidas para nenhum No sistema de arquivos ZFS fs1 por padrão. É o mesmo para o FS2, fs3, e fs4 FileSystems também.
$ sudo zfs get refquota, cota pool1/fs1Para definir uma cota de 2 GB Para o sistema de arquivos ZFS fs1, Execute o seguinte comando:
$ sudo zfs set cota = 2g pool1/fs1Como você pode ver, uma cota de 2 GB está definido para o sistema de arquivos ZFS fs1.
$ sudo zfs get cota pool1/fs1Depois 2 GB de contingente está definido para o sistema de arquivos ZFS fs1, o espaço de disco disponível (APROVEITAR) do fs1 O sistema de arquivos deve ser 2 GB Em vez do espaço de disco disponível da piscina Pool1 (8.72 GB neste caso), como você pode ver na captura de tela abaixo.
Lista de $ sudo zfsVocê definiu uma cota de 2 GB Para o sistema de arquivos ZFS fs1. Então, você não pode manter mais de 2 GB de dados no sistema de arquivos fs1. Imagine criar alguns instantâneos e clones do sistema de arquivos que usaram cerca de 1 GB de espaço em disco. Nesse caso, você terá apenas 1 GB de espaço em disco disponível para dados no fs1 sistema de arquivo. Se os instantâneos do sistema de arquivos e clones usarem cerca de 1.5 GB de espaço em disco, você terá apenas 500 MB de espaço em disco disponível para dados no fs1 sistema de arquivo. Isso é um problema.
Às vezes, você pode dedicar algum espaço em disco para armazenar apenas dados no sistema de arquivos ZFS, para que os instantâneos e clones do sistema de arquivos não usem todo o espaço de disco disponível do sistema de arquivos ZFS. Você pode definir o Refquota propriedade para isso.
Digamos que você queira definir uma cota de 2 GB Para o sistema de arquivos ZFS FS2 e dedicar 1 GB de espaço em disco para apenas dados. Dessa forma, você só pode usar 1 GB de espaço em disco para armazenar Instantâneos do sistema de arquivos e clones.
Configurar 2 GB de cota para o sistema de arquivos ZFS FS2 do seguinte modo:
$ sudo zfs set cota = 2g pool1/fs1Como você pode ver, 2 GB de cota é definida para o sistema de arquivos ZFS FS2.
Lista de $ sudo zfsDedicar 1 GB do espaço em disco para armazenar apenas dados para o sistema de arquivos ZFS FS2, colocou o Refquota propriedade do sistema de arquivos FS2 do seguinte modo:
$ sudo zfs set refquota = 1g pool1/fs2Como você pode ver, o Refquota A propriedade está definida como 1 GB, e a contingente A propriedade está definida como 2 GB No sistema de arquivos ZFS FS2.
$ sudo zfs get refquota, cota pool1/fs2O espaço de disco disponível do sistema de arquivos ZFS FS2 deveria estar 1 GB (1024 MB) - O tamanho que você viu usando o Refquota propriedade, como você pode ver na captura de tela abaixo.
Lista de $ sudo zfsDepois que a cota é definida, vamos ver como os espaços de disco são alocados quando você cria arquivos nos sistemas de arquivos ZFS FS1 e FS2.
Criar uma 200 MB arquivo teste.img No sistema de arquivos ZFS fs1 do seguinte modo:
$ sudo dd if =/dev/aleatório de =/pool1/fs1/teste.img bs = contagem de 1m = 200 status = progressoCriar uma 100 mb arquivo teste.img No sistema de arquivos ZFS FS2 do seguinte modo:
$ sudo dd if =/dev/aleatório de =/pool1/fs2/teste.img bs = contagem de 1m = 100 status = progressoComo você pode ver, fs1 usos 200 MB de espaço em disco e FS2 usos 100 mb de espaço em disco do pool Pool1. No total, 300 MB de espaço em disco é usado no pool Pool1. Mesmo que você tenha definido cotas para o fs1 e FS2 Sistemas de arquivos, apenas o espaço de disco necessário é alocado para os sistemas de arquivos fs1 e FS2 da piscina Pool1.
Lista de $ sudo zfsSe você deseja definir uma cota apenas para os dados de um sistema de arquivos ZFS, não para os instantâneos e clones do sistema de arquivos, apenas defina o Refquota Propriedade em seu sistema de arquivos ZFS desejado. Você não tem que definir o contingente propriedade. Dessa forma, os instantâneos e clones do sistema de arquivos podem ocupar tanto espaço em disco quanto exigido no pool do ZFS. Mas o limite de cota será colocado apenas nos dados que você armazena no seu sistema de arquivos ZFS.
Se você não estiver tirando nenhum instantâneo do sistema de arquivos ou fabrica clones do sistema de arquivos, então contingente e Refquota funcionar da mesma maneira. Não importa qual você usa.
Configurando a reserva do sistema de arquivos ZFS
Anteriormente, você viu que, quando você define uma cota em um sistema de arquivos ZFS, nenhum espaço de disco é automaticamente alocado para esse sistema de arquivos do pool ZFS. O espaço em disco é alocado à medida que os arquivos são criados nesse sistema de arquivos. Não há problema com isso. Mas há momentos em que você não quer isso.
Em alguns casos, você pode dedicar algum espaço em disco para um sistema de arquivos ZFS específico do pool. Dessa forma, mesmo que outros sistemas de arquivos preencham o pool, você ainda terá espaços gratuitos no seu sistema de arquivos ZFS. É para isso que a reserva do ZFS é usada para.
Para configurar uma reserva para um sistema de arquivos ZFS, você terá que configurar o reserva e Reperservação Propriedades desse sistema de arquivos ZFS.
Reserva: O espaço em disco será reservado para os dados, instantâneos do sistema de arquivos e clones do sistema de arquivos de um sistema de arquivos ZFS do pool ZFS.
Reperservação: O espaço em disco será reservado apenas para os dados de um sistema de arquivos ZFS do pool ZFS. Nenhum espaço em disco será reservado para instantâneos do sistema de arquivos e clones do sistema de arquivos.
Por padrão, o reserva e Reperservação As propriedades não são definidas em nenhum sistema de arquivos ZFS. Portanto, o ZFS não aloca nenhum espaço em disco para os dados, instantâneos do sistema de arquivos e clones do sistema de arquivos de qualquer sistema de arquivos ZFS do pool ZFS.
Como você pode ver, reserva e Reperservação propriedades estão definidas para nenhum No sistema de arquivos ZFS fs3 por padrão. É o mesmo para o fs1, FS2, e fs4 FileSystems também.
$ sudo zfs obtém uma reserva, pool de refrevações1/fs3Por padrão, os sistemas de arquivos ZFS fs3 e fs4 tem o mesmo espaço livre em disco (8.43 GB) como a piscina Pool1.
Lista de $ sudo zfsReservar 2 GB de espaço em disco para o sistema de arquivos ZFS fs3 (Para dados do sistema de arquivos, instantâneos e clones) do pool, defina o reserva Propriedade do sistema de arquivos ZFS fs3 do seguinte modo:
$ sudo zfs define reserva = 2g pool1/fs3Como você pode ver, o reserva A propriedade está definida como 2 GB Para o sistema de arquivos ZFS fs3.
$ sudo zfs get reserva pool1/fs3Observe que, imediatamente após definir o reserva propriedade para 2 GB Para o sistema de arquivos ZFS fs3, 2 GB é usado na piscina do ZFS Pool11. Além disso, o espaço de disco disponível para o sistema de arquivos ZFS fs3 é 2 GB mais do que a piscina do ZFS Pool12.
Lista de $ sudo zfsReservar 1 GB do espaço em disco apenas para os dados (não para instantâneos e clones) do sistema de arquivos ZFS fs4 Da piscina, defina o Reperservação Propriedade do sistema de arquivos ZFS fs4 do seguinte modo:
$ sudo zfs Conjunto de refreanha = 1g pool1/fs4O Reperservação A propriedade deve ser definida como 1 GB Para o sistema de arquivos ZFS fs4, Como você pode ver na captura de tela abaixo.
$ sudo zfs Get Reperservation pool1/fs4Observe que, imediatamente após definir o Reperservação propriedade para 1 GB Para o sistema de arquivos ZFS fs4, 1 GB é usado no sistema de arquivos ZFS fs41. 1 GB também é usado na piscina do ZFS Pool12, e o espaço de disco disponível do sistema de arquivos ZFS fs4 é 1 GB mais3 do que a piscina do ZFS Pool14.
Lista de $ sudo zfsConfigurando a reserva do sistema de arquivos ZFS juntamente com a cota
Você pode usar a reserva juntamente com a cota nos sistemas de arquivos ZFS também. Vamos ver alguns exemplos.
Digamos que você queira definir uma cota de 2 GB Para o sistema de arquivos ZFS fs3 e reserva 2 GB de espaço em disco para o sistema de arquivos ZFS fs3 (Para armazenar dados do sistema de arquivos, instantâneos e clones) do pool do ZFS.
Para fazer isso, defina o contingente e reserva Propriedades do sistema de arquivos ZFS fs3 do seguinte modo:
$ sudo zfs set cota = 2g reserva = 2g pool1/fs3O contingente e reserva Propriedades do sistema de arquivos ZFS fs3 deve ser definido como 2 GB, Como você pode ver na captura de tela abaixo.
$ sudo zfs get cota, reserva pool1/fs3O espaço de disco disponível do sistema de arquivos ZFS fs3 deve ser definido como 2 GB. 2 GB do espaço em disco também deve ser reservado para o sistema de arquivos ZFS fs3 da piscina do ZFS Pool1.
Lista de $ sudo zfsDigamos que você queira definir uma cota de 2 GB Para o sistema de arquivos ZFS fs4. Mas, você quer permitir apenas 1 GB do espaço em disco para armazenar dados do sistema de arquivos e o outro 1 GB Para armazenar instantâneos e clones do sistema de arquivos. Além disso, você quer reservar 1 GB de espaço em disco para armazenar o sistema de arquivos ZFS fs4 da piscina do ZFS.
Para fazer isso, defina o contingente, Refquota, e Reperservação Propriedades do sistema de arquivos ZFS fs4 do seguinte modo:
$ sudo zfs set cota = 2g refQOTA = 1G Refresterservation = 1g Pool1/FS4O contingente Propriedade do sistema de arquivos ZFS fs4 deve ser definido como 2 GB, e a Refquota e Reperservação propriedades devem ser definidas como 1 GB, Como você pode ver na captura de tela abaixo.
$ sudo zfs conjunto de cota, refqueta, refreaverting pool1/fs4O espaço de disco disponível do sistema de arquivos ZFS fs4 deve ser definido como 1 GB. 1 GB do espaço em disco também deve ser reservado para o sistema de arquivos ZFS fs4 da piscina do ZFS Pool1.
Lista de $ sudo zfsDigamos que você queira definir uma cota de 2 GB Para o sistema de arquivos ZFS fs4. Mas, você quer permitir apenas 1 GB do espaço em disco para armazenar dados do sistema de arquivos e o outro 1 GB Para armazenar instantâneos e clones do sistema de arquivos. Além disso, você quer reservar 2 GB do espaço em disco para armazenar os dados do sistema de arquivos, instantâneos e clones e 1 GB do espaço em disco dessa reserva para armazenar apenas o sistema de arquivos ZFS fs4.
Para fazer isso, defina o contingente, Refquota, reserva, e Reperservação Propriedades do sistema de arquivos ZFS fs4 do seguinte modo:
$ sudo zfs set cota = 2g refQota = 1g Reserva = refreversa 2G = 1g Pool1/fs4Como você pode ver, o contingente e reserva Propriedades do sistema de arquivos ZFS fs4 estão definidos como 2 GB, e a Refquota e Reperservação propriedades estão definidas para 1 GB.
$ sudo zfs get cota, refquota, reserva, refrevertion pool1/fs4Anteriormente, o sistema de arquivos ZFS reservado 1 GB de espaço em disco do pool Pool1. Agora, reservou 1 GB mais. No total, 2 GB do espaço em disco é reservado para o sistema de arquivos ZFS fs4 da piscina do ZFS Pool1. Além disso, o limite de cota é definido para o sistema de arquivos ZFS fs4.
Lista de $ sudo zfsDesativando a reserva do sistema de arquivos ZFS
Você pode definir o reserva e Reperservação propriedade de um sistema de arquivos ZFS para nenhum ou 0 Para desativar a reserva para esse sistema de arquivos ZFS.
Para desativar a reserva para o sistema de arquivos ZFS fs4, colocou o reserva e Reperservação Propriedades do sistema de arquivos ZFS fs4 para nenhum do seguinte modo:
$ sudo zfs SET Reserva = Nenhum REFRAVILIZAÇÃO = Nenhum Pool1/FS4A reserva deve ser desativada para o sistema de arquivos ZFS fs4.
$ sudo zfs obtém uma reserva, pool de refrevações1/fs4Como você pode ver, 2 GB de espaço em disco (4.49 GB a 2.29 GB agora) está desalocado da piscina do ZFS Pool1 Como uma reserva é desativada para o sistema de arquivos ZFS fs4.
Lista de $ sudo zfsDesativando a cota do sistema de arquivos ZFS
Você pode definir o contingente e Refquota propriedade de um sistema de arquivos ZFS para nenhum ou 0 Para desativar a cota para esse sistema de arquivos ZFS.
Para desativar a cota para o sistema de arquivos ZFS fs4, colocou o contingente e Refquota Propriedades do sistema de arquivos ZFS fs4 para nenhum do seguinte modo:
$ sudo zfs set cota = nenhum refqueta = nenhum pool1/fs4A cota deve ser desativada para o sistema de arquivos ZFS fs4.
$ sudo zfs get cota, refquota pool1/fs4Como você pode ver, nenhum limite de cota é definido para o sistema de arquivos ZFS fs4 não mais.
Lista de $ sudo zfsConclusão
Neste artigo, discuti os recursos de cota e reserva do sistema de arquivos ZFS. Eu mostrei como configurar cotas e reservas para os sistemas de arquivos ZFS. Eu também mostrei como desativar cotas e reservas dos sistemas de arquivos ZFS.
Referências
[1] Configurando cotas e reservas do ZFS (Guia de Administração Solaris ZFS)