ZFS Equivalente de l.jisplay_backcent

5

Eu tenho usado instantâneos do LVM para fazer backup de bancos de dados MySQL. FLUSH TABLES WITH READ LOCK é emitido e, em seguida, lvcreate --snapshot --size 4G etc. Como o banco de dados está ativo enquanto a captura instantânea está ativa, o snap_percent (quantidade de armazenamento de captura instantânea sendo usada para rastrear deltas com o estado original do sistema de arquivos no momento da captura instantânea ) começa a aumentar. Esse snap_percent é monitorado dia a dia e o --size é aumentado no caso de atingir 80%.

Minha pergunta é se existe ou não uma estatística ou propriedade equivalente no ZFS para determinar quanto espaço está sendo consumido por um instantâneo como uma porcentagem do espaço restante no pool? Obviamente, não preciso passar um parâmetro --size para zfs snapshot , mas como posso determinar se o clone com base nesse instantâneo está se aproximando dos limites do pool.

Espero que isso faça sentido, com certeza parece uma pergunta complicada agora que eu li.

    
por Joe 14.09.2013 / 06:38

2 respostas

3

O espaço de instantâneo do ZFS é refletido no consumo do sistema de arquivos. Você pode obter o que está solicitando, monitorando os campos mais apropriados abaixo.

No final, você verá o espaço "avail" do seu sistema de arquivos ... Veja como "used" + "avail" é menor que "size"?:

root@deore:~# df -h /volumes/vol1/LA_Specialty
Filesystem             size   used  avail capacity  Mounted on
vol1/LA_Specialty      800G   391G   254G    61%    /volumes/vol1/LA_Specialty

Filtrei a saída de zfs get all pool/filesystem abaixo para mostrar as propriedades relevantes. Abaixo, eu tenho um sistema de arquivos de 800GB (cota) onde 545GB são usados. 391GB é referenciado , o que significa que é o tamanho dos dados reais. 154 GB é usado por instantâneos.

root@deore:/volumes# zfs get all vol1/LA_Specialty
NAME               PROPERTY              VALUE                       SOURCE
vol1/LA_Specialty  type                  filesystem                  -
vol1/LA_Specialty  creation              Sat Sep 24 18:44 2011       -
vol1/LA_Specialty  used                  545G                        -
vol1/LA_Specialty  available             255G                        -
vol1/LA_Specialty  referenced            391G                        -
vol1/LA_Specialty  compressratio         2.96x                       -
vol1/LA_Specialty  quota                 800G                        local
vol1/LA_Specialty  reservation           none                        default
vol1/LA_Specialty  recordsize            16K                         local
vol1/LA_Specialty  mountpoint            /volumes/vol1/LA_Specialty  inherited from vol1
vol1/LA_Specialty  usedbysnapshots       154G                        -
vol1/LA_Specialty  usedbydataset         391G                        -
vol1/LA_Specialty  usedbychildren        0                           -
vol1/LA_Specialty  usedbyrefreservation  0                           -

Depois, observando os instantâneos ... É possível ver o tamanho individual dos instantâneos e o tamanho total dos dados que eles referenciam.

root@deore:/volumes# zfs list -t snapshot      
NAME                                               USED  AVAIL  REFER  MOUNTPOINT
vol1/LA_Specialty@snap-daily-1-2013-09-07-020003  57.6G      -   389G  -
vol1/LA_Specialty@snap-daily-1-2013-09-08-020003  1.95G      -   391G  -
vol1/LA_Specialty@snap-daily-1-2013-09-09-020008  3.42G      -   392G  -
vol1/LA_Specialty@snap-daily-1-2013-09-10-020003  3.05G      -   391G  -
vol1/LA_Specialty@snap-daily-1-2013-09-11-020003  2.81G      -   391G  -
vol1/LA_Specialty@snap-daily-1-2013-09-12-020004  2.65G      -   391G  -
vol1/LA_Specialty@snap-daily-1-2013-09-13-020003  2.70G      -   391G  -
vol1/LA_Specialty@snap-daily-1-2013-09-14-020003    25K      -   391G  -
vol1/LA_Specialty@snap-daily-1-latest               25K      -   391G  -

E uma listagem du do diretório de instantâneos ...

root@deore:/volumes/vol1/LA_Specialty/.zfs/snapshot# du -skh *
 389G   snap-daily-1-2013-09-07-020003
 391G   snap-daily-1-2013-09-08-020003
 392G   snap-daily-1-2013-09-09-020008
 391G   snap-daily-1-2013-09-10-020003
 391G   snap-daily-1-2013-09-11-020003
 391G   snap-daily-1-2013-09-12-020004
 391G   snap-daily-1-2013-09-13-020003
 391G   snap-daily-1-2013-09-14-020003
 391G   snap-daily-1-latest
    
por 14.09.2013 / 10:28
1

Os instantâneos do ZFS têm muitos dados ocultos neles. Geralmente eu gostaria de te encaminhar para

zfs list -ro space

Que mostra uma saída semelhante a:

NAME                                 AVAIL   USED  USEDSNAP  USEDDS  USEDREFRESERV  USEDCHILD
rootpool/export/home                 6.37G  11.7G     2.80G   8.87G              0          0
rootpool/export/[email protected]            -   134M         -       -              -          -
rootpool/export/[email protected]            -   320M         -       -              -          -
rootpool/export/[email protected]            -   251M         -       -              -          -
rootpool/export/[email protected]             -  1.02M         -       -              -          -
rootpool/export/[email protected]             -  1.04M         -       -              -          -
rootpool/export/[email protected]             -   850K         -       -              -          -
rootpool/export/[email protected]             -   747K         -       -              -          -
rootpool/export/[email protected]             -   326K         -       -              -          -
rootpool/export/[email protected]             -   454K         -       -              -          -
rootpool/export/[email protected]             -   319K         -       -              -          -

Isso lhe dirá que estou usando um TOTAL de 11.7G neste conjunto de dados em particular e que 2.8G é usado por snaps e 8.87 é usado pelo sistema de arquivos real (dados ativos). No entanto, o tamanho USADO ao lado de cada instantâneo é muito enganador.

Se você somar todos os números na coluna usada para o instantâneo, verá que eles não chegam nem perto do total do USEDSNAP. Isso ocorre porque o valor USED é o espaço único que cada instantâneo contém.

Por exemplo:

Se eu tiver um pool chamado "newpool" e ele tiver 2 arquivos 1G (fileA e fileB):

 NAME                       AVAIL   USED    USEDSNAP  USEDDS  USEDREFRESERV  USEDCHILD
 newpool                    11.0G    2.0G     0.00G   2.0G              0          0

Agora eu digo isso:

 NAME                       AVAIL   USED    USEDSNAP  USEDDS  USEDREFRESERV  USEDCHILD
 newpool                    11.0G    2.0G     0.00G   2.0G              0          0
 newpool@snap1              11.0G    0.0G     0.00G   2.0G              0          0

Agora eu excluo 1 dos arquivos 1G (fileA):

 NAME                       AVAIL   USED    USEDSNAP  USEDDS  USEDREFRESERV  USEDCHILD
 newpool                    11.0G    2.0G     1.00G   1.0G              0          0
 newpool@snap1                  -    1.0G         -      -              -          -

Agora eu crio um novo arquivo 1G (fileC):

 NAME                       AVAIL   USED    USEDSNAP  USEDDS  USEDREFRESERV  USEDCHILD
 newpool                    10.0G    3.0G     1.00G   2.0G              0          0
 newpool@snap1                  -    1.0G         -      -              -          -

Agora eu tiro de novo

 NAME                       AVAIL   USED    USEDSNAP  USEDDS  USEDREFRESERV  USEDCHILD
 newpool                    10.0G    3.0G     1.00G   2.0G              0          0
 newpool@snap1                  -    1.0G         -      -              -          -
 newpool@snap2                  -    0.0G         -      -              -          -

Agora eu excluo o arquivo B (que está em ambos os instantâneos):

 NAME                       AVAIL   USED    USEDSNAP  USEDDS  USEDREFRESERV  USEDCHILD
 newpool                    10.0G    3.0G     2.00G   1.0G              0          0
 newpool@snap1                  -    1.0G         -      -              -          -
 newpool@snap2                  -    0.0G         -      -              -          -

Observe como a coluna USED do instantâneo não refletiu a alteração? Isso porque o arquivo B foi referenciado por ambos os instantâneos e, como não é exclusivo, ele não é mostrado na contagem USED de um instantâneo específico. A coluna USEDSNAP reflete que o espaço foi usado pelos instantâneos, mas não o associa a nenhum deles em particular.

Agora, se você remover o snap1:

 NAME                       AVAIL   USED    USEDSNAP  USEDDS  USEDREFRESERV  USEDCHILD
 newpool                    11.0G    2.0G     1.00G   1.0G              0          0
 newpool@snap2                  -    1.0G         -      -              -          -

O snap2 agora mostra que o 1.0G foi usado porque esses dados agora são exclusivos para esse instantâneo.

A coluna USED mostrará quanto espaço você poderá recuperar se excluir esse instantâneo individual, mas não mostrar a você quanto espaço esse instantâneo está reservando.

Então agora que eu disse tudo isso -

Se você planeja manter apenas um instantâneo de qualquer conjunto de dados específico, o comando zfs list -ro espaço deve fornecer o que você está procurando.

Se você tiver vários instantâneos ao mesmo tempo, esses dados podem ser enganosos. Não faça o que é natural e suponha que a coluna USED significa algo ao lidar com vários instantâneos. Além disso, du é uma opção ruim nos diretórios de captura instantânea, já que isso mostra apenas o que é referido pela captura instantânea, não o espaço que a captura instantânea está realmente usando.

A página do zfs manpela algumas dessas coisas, mas não é boa em mostrar essas relações.

    
por 16.09.2013 / 19:18