Список последних моментальных снимков ZFS

Я регулярно делаю моментальные снимки ZFS для 30 виртуальных машин (ВМ) в течение 20 раз.

Мой список снимков только для двух виртуальных машин:

rpool/data/vm-100-disk-1@rep_100_2018-08-14_20:08:20   218M      -  80.6G  -
rpool/data/vm-100-disk-1@rep_100_2018-08-15_00:13:27  46.4M      -  80.6G  -
rpool/data/vm-100-disk-1@rep_100_2018-08-15_04:23:47  20.6M      -  80.6G  -
rpool/data/vm-100-disk-1@rep_100_2018-08-15_08:11:11  53.3M      -  80.6G  -
rpool/data/vm-100-disk-1@rep_100_2018-08-15_11:12:03   181M      -  80.6G  -
rpool/data/vm-100-disk-1@rep_100_2018-08-15_14:12:32   176M      -  80.6G  -
rpool/data/vm-100-disk-1@rep_100_2018-08-15_17:12:09   126M      -  80.5G  -
rpool/data/vm-100-disk-1@rep_100_2018-08-15_20:11:06   120M      -  80.5G  -
rpool/data/vm-100-disk-1@rep_100_2018-08-16_05:29:05   157M      -  80.6G  -
rpool/data/vm-100-disk-1@rep_100_2018-08-16_11:27:24  6.72M      -  80.6G  -
rpool/data/vm-100-disk-1@rep_100_2018-08-16_11:28:08  6.75M      -  80.6G  -
rpool/data/vm-100-disk-1@rep_100_2018-08-16_14:07:33   208M      -  80.5G  -
rpool/data/vm-100-disk-1@rep_100_2018-08-16_17:08:18   142M      -  80.4G  -
rpool/data/vm-100-disk-1@rep_100_2018-08-16_20:05:09  55.3M      -  80.4G  -
rpool/data/vm-100-disk-1@rep_100_2018-08-17_00:08:29  53.7M      -  80.4G  -
rpool/data/vm-100-disk-1@rep_100_2018-08-17_04:07:15  46.3M      -  80.4G  -
rpool/data/vm-100-disk-1@rep_100_2018-08-17_08:06:04  53.9M      -  80.4G  -
rpool/data/vm-100-disk-1@rep_100_2018-08-17_11:05:05   209M      -  80.3G  -
rpool/data/vm-100-disk-1@rep_100_2018-08-17_14:15:43   202M      -  80.3G  -
rpool/data/vm-100-disk-1@rep_100_2018-08-17_17:20:43     0B      -  80.2G  -
rpool/data/vm-102-disk-1@rep_102_2018-08-14_20:06:09   588M      -  75.5G  -
rpool/data/vm-102-disk-1@rep_102_2018-08-15_00:06:33   106M      -  75.6G  -
rpool/data/vm-102-disk-1@rep_102_2018-08-15_04:11:10  65.2M      -  75.6G  -
rpool/data/vm-102-disk-1@rep_102_2018-08-15_08:06:22  60.6M      -  75.6G  -
rpool/data/vm-102-disk-1@rep_102_2018-08-15_11:07:57  56.8M      -  75.6G  -
rpool/data/vm-102-disk-1@rep_102_2018-08-15_14:08:06  58.4M      -  75.6G  -
rpool/data/vm-102-disk-1@rep_102_2018-08-15_17:08:28  61.0M      -  75.6G  -
rpool/data/vm-102-disk-1@rep_102_2018-08-15_20:07:40  68.4M      -  75.6G  -
rpool/data/vm-102-disk-1@rep_102_2018-08-16_05:22:16  68.4M      -  75.6G  -
rpool/data/vm-102-disk-1@rep_102_2018-08-16_11:19:01  1.46M      -  75.6G  -
rpool/data/vm-102-disk-1@rep_102_2018-08-16_11:19:21  1.39M      -  75.6G  -
rpool/data/vm-102-disk-1@rep_102_2018-08-16_14:04:35  44.4M      -  75.6G  -
rpool/data/vm-102-disk-1@rep_102_2018-08-16_17:03:48  43.5M      -  75.6G  -
rpool/data/vm-102-disk-1@rep_102_2018-08-16_20:02:45  52.8M      -  75.6G  -
rpool/data/vm-102-disk-1@rep_102_2018-08-17_00:03:51  63.9M      -  75.6G  -
rpool/data/vm-102-disk-1@rep_102_2018-08-17_04:04:03  61.9M      -  75.6G  -
rpool/data/vm-102-disk-1@rep_102_2018-08-17_08:03:45  48.1M      -  75.6G  -
rpool/data/vm-102-disk-1@rep_102_2018-08-17_11:02:28  51.9M      -  75.6G  -
rpool/data/vm-102-disk-1@rep_102_2018-08-17_14:11:25  72.1M      -  75.6G  -
rpool/data/vm-102-disk-1@rep_102_2018-08-17_17:16:03     0B      -  75.6G  -

Как я могу перечислить только ПОСЛЕДНИЕ сделанные снимки для всех виртуальных машин, чтобы проверить последний сделанный снимок?


person Ozgur Erdogan    schedule 17.08.2018    source источник


Ответы (2)


Последний сделанный снимок можно получить следующим образом:

zfs list -t snapshot -o name,creation -s creation | tail -n1

При использовании заглавной буквы -S выполняется сортировка по свойствам в порядке убывания, в данном случае возвращается первый сделанный снимок:

zfs list -t snapshot -o name,creation -S creation | tail -n1
person nbari    schedule 17.08.2018
comment
Первая команда возвращает только один снимок. Но он должен возвращать 30 строк результатов (для 30 виртуальных машин), по одному для каждого последнего сделанного снимка. - person Ozgur Erdogan; 17.08.2018
comment
tail -n30 ? Удачи. - person shellter; 17.08.2018

Это зависит от вашей конкретной ситуации, поскольку моментальные снимки могут существовать на всех уровнях вложенных файловых систем.

Если вы точно знаете, что все дочерние файловые системы каждой ВМ создаются в одно и то же время (с использованием zfs snapshot -r <root_filesystem>, а не по отдельности), то вам просто нужно посмотреть на корневой уровень (вы можете использовать все корневые файловые системы или поставить имена в списке самостоятельно):

#!/bin/bash
for i in $(zfs list -H -o name -d 0); do
  zfs list -H -r -d 1 -t snap -o name -S creation "${i}" | head -n1
done

Если у вас есть снимки потомков, которые отличаются от корней, вы не можете использовать -d 1 для ограничения глубины, а должны показывать все снимки. В остальном аналогично:

#!/bin/bash
for i in $(zfs list -H -o name -d 0); do
  zfs list -H -r -t snap -o name -S creation "${i}" | head -n1
done

Вы также можете проверить, все ли снимки потомков соответствуют тому же формату, что и корневые, или все потомки имеют снимки. Хотя оба случая немного сложнее. Я предлагаю взглянуть на zfs list страницы параметров/руководства и использовать awk или grep для достижения этой цели.

person user121391    schedule 06.09.2018