Equivalente ZFS de lvdisplay snap_percent

Equivalente ZFS de lvdisplay snap_percent

Tenho usado instantâneos LVM para fazer backup de bancos de dados MySQL.

FLUSH TABLES WITH READ LOCKé emitido e, em seguida, lvcreate --snapshot --size 4Getc. Como o banco de dados está ativo enquanto o instantâneo está ativo, a snap_percent(quantidade de armazenamento de instantâneo sendo usada para rastrear deltas com o estado original do sistema de arquivos no momento em que o instantâneo foi obtido) começa a aumentar. Isso snap_percenté monitorado dia a dia e --sizeaumenta caso chegue a 80%.

Minha pergunta é se existe ou não uma estatística ou propriedade equivalente emZFSpara determinar quanto espaço está sendo consumido por um instantâneo como porcentagem do espaço restante no pool? Obviamente não preciso passar um --sizeparâmetro, zfs snapshotmas como posso determinar se o clone baseado nesse instantâneo está próximo dos limites do pool.

Espero que isso faça sentido, com certeza parece uma questão complicada agora que li.

Responder1

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

No final, você observará o espaço "disponível" do seu sistema de arquivos... Veja como "usado"+"disponível" é menor que "tamanho"?:

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 zfs get all pool/filesystemabaixo para mostrar as propriedades relevantes. Abaixo, tenho um sistema de arquivos de 800GB (cota) onde são usados ​​545GB. 391 GB éreferenciado, o que significa que esse é o tamanho dos dados reais. 154 GB são usados ​​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                           -

Então, olhando para os instantâneos... É possível ver o tamanho individual dos instantâneos e o tamanho total dos dados aos quais eles fazem referência.

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 dulistagem do diretório de snapshots...

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

Responder2

Os instantâneos do ZFS contêm muitos dados ocultos. Geralmente eu indicaria você 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 específico e que 2,8G é usado por snaps e 8,87 é usado pelo sistema de arquivos real (dados ativos). No entanto, o tamanho USADO próximo a 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 USEDSNAP. Isso ocorre porque o valor USADO é quantoexclusivoespaço que cada snapshot contém.

Por exemplo:

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

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

Agora eu tiro 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 excluo 1 dos arquivos 1G (arquivoA):

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

Agora 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 arquivoB (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 foi o desempenho da coluna USED do instantâneonãoreflete a mudança? Isso ocorre porque fileB foi referenciado por ambos os snapshots e, como não é exclusivo, não é mostrado na contagem USED de nenhum snapshot específico. A coluna USEDSNAP reflete que o espaço foi utilizado pelos snapshots, mas não o associa a nenhum em particular.

Agora, se você removesse o snap1:

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

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

A coluna USADO mostrará quanto espaço você pode recuperar se excluir aquele instantâneo individual, mas não mostra 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, então olista zfs -ro espaçocomando 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 presuma que a coluna USED significa alguma coisa ao lidar com vários instantâneos. Também,vocêé uma escolha ruim nos diretórios de snapshots, pois apenas mostra o que é referenciado pelo snapshot, e não qual espaço o snapshot está realmente usando.

A página de manual do zfs aborda algumas dessas coisas, mas não é ótima para mostrar esses relacionamentos.

Responder3

Não há equivalente direto no ZFS. O equivalente mais próximo é o espaço livre no pool, que você pode obter em zfs list. No ZFS, seus snapshots podem crescer até que todo o pool fique sem espaço.

informação relacionada