Как взять снимок каталога на Linux, как это было в конкретном моменте времени?

У меня есть каталог, содержащий много файлов журнала результата (размер каталога ~ 4 ГБ), и ряд процессов, работающих, которые продолжают писать в эти файлы.

Чтобы смочь правильно проанализировать результаты в более позднее время, я хочу скопировать целый каталог в место назначения архива, и я не могу остановить процессы.

Я хочу копию каталога, как это было в конкретном моменте времени. Поскольку каталог размера огромен (что означает, что требуется приблизительно 40 секунд для копирования), и некоторые файлы пишутся в, нормальное cp -r НЕ дает мне снимок в конкретном моменте времени, скорее снимок файлов, распространенных приблизительно за 40 секунд. Это не достаточно хорошо.

Существует ли способ получить монопольную блокировку на каталоге и всех его компонентах при копировании?

3
задан 11.06.2015, 13:39

5 ответов

LVM (менеджер по Логическому тому) поддерживает снимки. Так как весь дистрибутив Linux имеет LVM встроенный, это является самым легким для Вас. Единственный недостаток - Вы, должен воссоздать Вашу файловую систему.

Вот хороший учебный http://rhcelinuxguide.wordpress.com/2006/06/03/what-is-a-logical-volume-manager-lvm-snapshot-and-how-do-i-use-it/

2
ответ дан 08.12.2019, 01:06

Другой способ сделать его состоял бы в том, чтобы использовать Logrotate для архивации журналов каждую неделю/день/час, затем у Вас по существу есть снимки в том интервале.

0
ответ дан 08.12.2019, 01:06

Если CP занимает слишком много времени обеспечивать результаты, Вам нужно, Вы по всей вероятности не собираетесь быть удовлетворенными другими опциями. Копия Unix является почти столь основной, как это добирается для ввода-вывода наверху.

Однако, если Вы задержали процессы ввода-вывода, покупают усиление другого процесса управления между диском и файлами, когда они изменялись, издержки не могут иметь значения. То, что я имею в виду, Вы могли выполнить процесс в VM (если это возможно), попробуйте снимки rsync или даже подверсию.

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

Например:

file.log-> /mnt/disk1/logarea/file.log

file.log-> /mnt/disk/logarea2/file.log

Так, чтобы можно было обновить символьную ссылку немедленно, и вывод передает по каналу к новому местоположению.

Вы могли бы даже смочь записать пакетный файл, чтобы обновить ссылку, количество к 45 секундам, и затем переключить его назад - таким образом изоляция данных, в которых Вы нуждаетесь.

Просто мысли, удача.

1
ответ дан 08.12.2019, 01:06

Откровенно говоря, для то, что Вы просите единственную вещь, которая работала на меня, является ZFS-FUSE. Существует также собственный ZFS для Linux, но это еще не действительно применимо.

0
ответ дан 08.12.2019, 01:06

Некоторые файловые системы обеспечивают средства фиксации мгновенного состояния процесса. Создание файловой системы (на неиспользованной области диска, или в специализированном файле данных [обратная петля]) использование одной из этих файловых систем и затем монтируя, что то, где журналы записаны, позволило бы Вам создавать снимки файловую систему журналов.

Файловые системы, которые, как известно, поддерживали снимки:

  • ZFS (базирующийся предохранитель)
  • FFS FreeBSD
  • LFS (журналируемая файловая система)
  • XFS

Существуют, вероятно, больше, но это - те, я могу думать первое, что пришло на ум.

Снимки не копируют данные, скорее замораживание данные в конкретный момент вовремя и создают виртуальную файловую систему, содержащую те данные, которые могут монтироваться и использоваться как любая другая файловая система (хотя только для чтения). Исходная файловая система продолжает функционировать, как будто ничего не произошло.

0
ответ дан 08.12.2019, 01:06

Теги

Похожие вопросы