Назад | Перейти на главную страницу

ZFS эквивалент lvdisplay snap_percent

Я использовал моментальные снимки LVM для резервного копирования баз данных MySQL. FLUSH TABLES WITH READ LOCK выдается, а затем lvcreate --snapshot --size 4G и т. д. Поскольку база данных активна, пока активен снимок, snap_percent (объем хранилища моментальных снимков, используемый для отслеживания отклонений от исходного состояния файловой системы на момент создания моментального снимка) начинает увеличиваться. это snap_percent контролируется изо дня в день, и --size увеличивается, если достигает 80%.

Мой вопрос в том, есть ли в ZFS эквивалентная статистика или свойство для определения того, сколько места занимает моментальный снимок в процентах от места, оставшегося в пуле? Очевидно, мне не нужно проходить --size параметр для zfs snapshot но как я могу определить, приближается ли клон на основе этого снимка к пределам пула.

Надеюсь, это имеет смысл, теперь, когда я читаю, это звучит как запутанный вопрос.

Пространство для моментальных снимков ZFS отражается в использовании файловой системы. Вы можете получить то, о чем просите, отслеживая наиболее подходящие поля ниже.

В конце концов, вы будете наблюдать за пространством "avail" вашей файловой системы ... Посмотрите, как "used" + "avail" меньше, чем "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

Я отфильтровал вывод zfs get all pool/filesystem ниже, чтобы показать соответствующие свойства. Ниже у меня файловая система 800 ГБ (квота), где используется 545 ГБ. 391 ГБ - это упомянутый, что означает размер реальных данных. 154 ГБ используется для снэпшотов.

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                           -

Затем посмотрите на снимки ... Можно увидеть индивидуальный размер снимков и общий размер данных, на которые они ссылаются.

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  -

И du список каталога снимков ...

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

Снимки ZFS содержат много скрытых данных. Обычно я бы отослал вас к

zfs list -ro space

Что показывает результат, похожий на:

NAME                                 AVAIL   USED  USEDSNAP  USEDDS  USEDREFRESERV  USEDCHILD
rootpool/export/home                 6.37G  11.7G     2.80G   8.87G              0          0
rootpool/export/home@weekly.2            -   134M         -       -              -          -
rootpool/export/home@weekly.1            -   320M         -       -              -          -
rootpool/export/home@weekly.0            -   251M         -       -              -          -
rootpool/export/home@daily.6             -  1.02M         -       -              -          -
rootpool/export/home@daily.5             -  1.04M         -       -              -          -
rootpool/export/home@daily.4             -   850K         -       -              -          -
rootpool/export/home@daily.3             -   747K         -       -              -          -
rootpool/export/home@daily.2             -   326K         -       -              -          -
rootpool/export/home@daily.1             -   454K         -       -              -          -
rootpool/export/home@daily.0             -   319K         -       -              -          -

Это скажет вам, что я использую ВСЕГО 11,7 ГБ для этого конкретного набора данных, и что 2,8 ГБ используется снимками, а 8,87 используется фактической файловой системой (активные данные). Однако размер ИСПОЛЬЗУЕМЫХ рядом с каждым снимком очень вводит в заблуждение.

Если вы сложите все числа в столбце used для снимка, вы увидите, что они даже близко не подходят к общему количеству USEDSNAP. Это потому, что значение USED - это то, насколько уникальный пространство, которое содержит каждый снимок.

Например:

Если у меня есть пул с именем «newpool» и в нем есть 2 файла размером 1 ГБ (fileA и fileB):

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

Теперь я щелкаю:

 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

Теперь удаляю 1 из файлов размером 1Г (fileA):

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

Теперь создаю новый файл размером 1G (fileC):

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

Теперь я снова щелкаю

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

Теперь удаляю fileB (который есть в обоих снимках):

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

Обратите внимание, как работает столбец ИСПОЛЬЗУЕМЫЙ снимок не отразить изменение? Это связано с тем, что на файлB ссылались оба снимка, и поскольку он не уникален, он не отображается в подсчете ИСПОЛЬЗОВАННЫХ для любого конкретного снимка. Столбец USEDSNAP отражает, что пространство было использовано снимками, но не связывает его ни с каким конкретным.

Теперь, если вы удалите snap1:

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

snap2 теперь показывает, что используется 1.0G, потому что эти данные теперь уникальны для этого снимка.

Столбец ИСПОЛЬЗУЕМЫЕ покажет вам, сколько места вы можете освободить, если удалите этот отдельный снимок, но не покажет вам, сколько места зарезервировано этим снимком.

Итак, теперь, когда я все это сказал -

Если вы планируете хранить только один снимок любого конкретного набора данных, тогда zfs list -ro пробел команда должна дать вам то, что вы ищете.

Если вы собираетесь иметь несколько снимков одновременно, эти данные могут ввести в заблуждение. Не делайте того, что кажется естественным, и не предполагайте, что столбец USED что-нибудь значит при работе с несколькими снимками. Также, ду - плохой выбор для каталогов моментальных снимков, поскольку он просто показывает, на что ссылается моментальный снимок, а не на то, какое пространство моментальный снимок фактически использует.

Справочная страница zfs кое-что из этого описывает, но не очень хорошо показывает эти отношения.