ZFS Equivalente de lvdisplay snap_percent

ZFS Equivalente de lvdisplay snap_percent

He estado usando instantáneas de LVM para realizar copias de seguridad de bases de datos MySQL.

FLUSH TABLES WITH READ LOCKse emite y luego, lvcreate --snapshot --size 4Getc. Dado que la base de datos está activa mientras la instantánea está activa, snap_percent(la cantidad de almacenamiento de instantáneas que se utiliza para rastrear deltas con el estado original del sistema de archivos en el momento en que se tomó la instantánea) comienza a aumentar. Esto snap_percentse monitorea día tras día y se --sizeincrementa en caso de que alcance el 80%.

Mi pregunta es si existe o no una estadística o propiedad equivalente enZFS¿Para determinar cuánto espacio consume una instantánea como porcentaje del espacio restante en el grupo? Obviamente, no necesito pasarle un --sizeparámetro, zfs snapshotpero ¿cómo puedo determinar si el clon basado en esa instantánea se está acercando a los límites del grupo?

Ojalá tenga sentido, seguro que suena como una pregunta complicada ahora que la leo.

Respuesta1

El espacio de las instantáneas ZFS se refleja en el consumo del sistema de archivos. Puede obtener lo que está solicitando monitoreando los campos más apropiados a continuación.

Al final, verás el espacio "disponible" de tu sistema de archivos... ¿Ves cómo "usado"+"disponible" es menor que "tamaño"?:

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

He filtrado el resultado a zfs get all pool/filesystemcontinuación para mostrar las propiedades relevantes. A continuación, tengo un sistema de archivos de 800 GB (cuota) donde se usan 545 GB. 391GB esreferenciado, lo que significa que ese es el tamaño de los datos reales. Las instantáneas utilizan 154 GB.

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                           -

Luego, mirando las instantáneas... Es posible ver el tamaño individual de las instantáneas y el tamaño total de los datos a los que hacen referencia.

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  -

Y una dulista del directorio de instantáneas...

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

Respuesta2

Las instantáneas ZFS contienen muchos datos ocultos. Generalmente te recomendaría

zfs list -ro space

Lo que muestra un resultado similar 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         -       -              -          -

Esto le dirá que estoy usando un TOTAL de 11,7G en este conjunto de datos en particular y que las instantáneas utilizan 2,8G y el sistema de archivos real (datos activos) utiliza 8,87G. Sin embargo, el tamaño USADO al lado de cada instantánea es muy engañoso.

Si suma todos los números en la columna utilizada para la instantánea, verá que no se acercan al total de USEDSNAP. Esto se debe a que el valor USADO es cuántoúnicoespacio que ocupa cada instantánea.

Por ejemplo:

Si tengo un grupo llamado "newpool" y tiene 2 archivos 1G (archivoA y archivoB):

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

Ahora fotografío eso:

 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

Ahora elimino 1 de los archivos 1G (archivoA):

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

Ahora creo un nuevo archivo 1G (archivoC):

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

Ahora lo tomo de nuevo

 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         -      -              -          -

Ahora elimino el archivo B (que está en ambas instantáneas):

 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 cómo funcionó la columna USED de la instantáneanoreflejar el cambio? Esto se debe a que ambas instantáneas hicieron referencia al archivo B y, dado que no es único, no se muestra en el recuento USADO para ninguna instantánea en particular. La columna USEDSNAP refleja que el espacio ha sido utilizado por las instantáneas, pero no lo asocia a ninguna en particular.

Ahora, si eliminaras snap1:

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

snap2 ahora muestra que tiene 1.0G usado porque esos datos ahora son exclusivos de esa instantánea.

La columna USADO le mostrará cuánto espacio puede recuperar si elimina esa instantánea individual, pero no le muestra realmente cuánto espacio está reservando esa instantánea.

Ahora que he dicho todo eso...

Si planea conservar solo una instantánea de cualquier conjunto de datos en particular, entonces ellista zfs -ro espacioEl comando debería darte lo que estás buscando.

Si va a tener varias instantáneas al mismo tiempo, estos datos pueden ser engañosos. No haga lo que le resulte natural y asuma que la columna USADO significa algo cuando se trata de varias instantáneas. También,dues una mala elección en los directorios de instantáneas, ya que eso solo muestra a qué hace referencia la instantánea, no qué espacio está usando realmente la instantánea.

La página de manual de zfs analiza algo de esto, pero no es muy buena para mostrar esas relaciones.

Respuesta3

No existe un equivalente directo en ZFS. El equivalente más cercano es el espacio libre en el grupo, que puedes obtener desde zfs list. En ZFS, sus instantáneas pueden crecer hasta que todo el grupo se quede sin espacio.

información relacionada