Anything-sync-daemon (Русский)

anything-sync-daemon (asd) — небольшой псевдо-демон, предназначенный для переноса указанных пользователем каталогов (которые здесь и далее называются целями синхронизации) в tmpfs (ОЗУ) и их периодической синхронизации с постоянным хранилищем (HDD/SSD). Это достигается с помощью bind-монтирования и использования rsync для поддержания синхронизации между копией в tmpfs и резервными копиями в постоянном хранилище. Кроме того, в asd реализованы некоторые функции восстановления после сбоев.

Состояние перевода: На этой странице представлен перевод статьи Anything-sync-daemon. Дата последней синхронизации: 14 ноября 2022. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Цели и преимущества asd:

  1. Простота в использовании
  2. Уменьшение износа физических дисков
  3. Улучшение скорости работы

Цели синхронизации переносятся с помощью asd в tmpfs (ОЗУ), соответственно связанные с ними операции ввода-вывода перенаправляются в оперативную память. Таким образом, уменьшается износ физического диска, повышается отказоустойчивость и скорость работы: время доступа к оперативной памяти составляет порядка наносекунд, в то время как время доступа к обычному жёсткому диску примерно в 1,000,000 раз выше и составляет порядка миллисекунд.

Важно: Если требуется синхронизация профилей браузера, то лучше НЕ использовать asd для этой цели. Вместо этого используйте Profile-sync-daemon, который имеет встроенные проверки для уникальных ситуаций, характерных для запуска профиля браузера в tmpfs. Anything-sync-daemon не имеет таких проверок; при определённых обстоятельствах данные профиля браузера могут быть потеряны. Вас предупредили.

Установка

Установите пакет anything-sync-daemon.

Настройка

Настройка asd выполняется через файл /etc/asd.conf, который предоставляется пакетом.

  • Как минимум, определите цели синхронизации, которыми будет управлять asd, в массиве WHATTOSYNC. Синтаксис приведён ниже.
  • Опционально раскомментируйте и укажите расположение tmpfs в переменной VOLATILE.
  • Опционально включите использование overlayfs для улучшения скорости синхронизации и уменьшения количества необходимой памяти. Обратите внимание, что эта опция требует, чтобы ваше ядро было настроено на использование модуля ядра 'overlay'. Смотрите раздел #Режим overlayfs ниже, чтобы узнать подробности.
Примечание: Значение параметра VOLATILE, используемое по умолчанию (/tmp), должно отлично работать. При использовании bleachbit НЕ выполняйте --clean system.tmp, так как это может удалить файлы в tmpfs и создать проблемы. Также имейте в виду, что использование /dev/shm может привести к проблемам с systemd NAMESPACE spawning при использовании overlayfs.

Пример:

WHATTOSYNC=('/var/lib/monitorix' '/srv/http' '/foo/bar')

или

WHATTOSYNC=(
'/var/lib/monitorix'
'/srv/http'
'/foo/bar'
)

Использование

Запустите/включите службу . Также есть systemd-таймер, который запускает копирование данных из памяти на диск каждый час. Таймер запускается автоматически вместе со службой , так что запускать его вручную не нужно.

Проверка конфигурации

Команда покажет, что именно asd будет делать, основываясь на конфигурации в /etc/asd.conf, а также выведет прочую полезную информацию.

Советы и рекомендации

Установка частоты синхронизации

По умолчанию таймер настроен на синхронизацию с интервалом в один час. Пользователь может легко установить другой желаемый интервал, отредактировав файл юнита. В примере ниже создаётся drop-in файл, в котором таймер установлен на синхронизацию с интервалом в 10 минут (строка с пустым значением OnUnitActiveSec используется для удаления старого значения перед добавлением нового ):

Смотрите systemd.timer(5) для получения дополнительной информации о настройке таймеров.

Режим overlayfs

Overlayfs — это простая файловая система, которая доступна в ядре Linux с версии 3.18.0. Начиная с версии 5.54, asd может использовать overlayfs, чтобы уменьшить потребление памяти в tmpfs и ускорить операции синхронизации с диском. Особенность метода в том, что overlayfs записывает только изменённые данные, а не цель синхронизации целиком. Те же функции восстановления, которые использует asd в своём режиме по умолчанию, также активны при работе в режиме overlayfs. Чтобы включить режим overlayfs, раскомментируйте строку в файле /etc/asd.conf и затем перезапустите демон.

Снимки

Если случился сбой системы — скорее всего, "последняя целая" резервная копия целей синхронизации всё ещё в сохранности в файловой системе. При перезапуске asd (например, при перезагрузке системы) он выполняет проверку своего состояния. Если есть какие-то проблемы, asd создаст снимок "последней целой" резервной копии, прежде чем вернуть её на место. Обратите внимание, что, поскольку asd пытается уменьшить использование диска, он никогда не "копирует" содержимое каталога полностью, а просто использует жёсткие ссылки на предыдущие файлы. А во время шага rsync он создаёт новые файлы так, что предыдущие жёсткие ссылки остаются нетронутыми. Поэтому попытка изменить каталог в то время, когда asd пытается выполнить резервное копирование, может оставить каталог в повреждённом состоянии.

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

Чтобы восстановить данные из снимка:

  • Остановите службу .
  • Убедитесь, что нет каталогов, которые создаёт asd. Если есть, значит asd не был завершён корректно по другим причинам.
  • Переместите "плохую" копию цели синхронизации куда-нибудь (не удаляйте ничего просто так).
  • Распакуйте архив снимка в нужное место.

Пример для :

$ cd /foo
$ mv bar bar-bad
$ tar -xvf .bar-backup_asd-crashrecovery-20141221_070112.tar.zstd

Удаление всех снимков с помощью режима чистки

Команда удалит ВСЕ резервные копии. Запускайте этот режим, только если вы уверены, что собранные резервные копии больше не понадобятся.

Поддержка

Пишите в тему на форуме (англ.) для комментариев и прочих обсуждений.

gollark: Is DnD not just mostly based on having people say things to other people? What setup would you want?
gollark: No, you just click the create server button.
gollark: The logs thing? It gets a list of previously sent messages.
gollark: Well, the logs thing is a specific instance of the skynet protocol being kind of weird and possibly needing cleaning up.
gollark: It's also to indicate the fact that you get this anyway by operating the server.
This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.