Я использовал моментальные снимки 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 кое-что из этого описывает, но не очень хорошо показывает эти отношения.