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

Ссылки по теме

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

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

Цели и преимущества 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'
    )

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

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

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

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

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

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

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

    /etc/systemd/system/asd-resync.timer.d/frequency.conf

    [Unit]
    Description=Timer for Anything-sync-daemon - 10min

    [Timer]
    OnUnitActiveSec=
    OnUnitActiveSec=10min

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

### Режим overlayfs

Примечание: Существует несколько версий overlayfs, доступных в ядре Linux в различных дистрибутивах. В версиях 22 и ниже есть модуль под названием 'overlayfs', а в более новых версиях (23 и выше) есть модуль под названием 'overlay' — обратите внимание на отсутствие 'fs' в новой версии. Asd автоматически обнаружит overlayfs, доступный в вашем ядре, если тот настроен на его использование.

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

### Снимки

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

Примечание: Пользователи могут полностью отключить функцию моментального снимка/резервного копирования, раскомментировав и установив переменную `USE_BACKUPS` в значение `"no"` в `/etc/asd.conf`, если нужно.

Найти снимок можно в том же каталоге, что и цель синхронизации, и он будет содержать отметку даты и времени, которая соответствует времени, когда был сделан снимок. Например, для цели синхронизации `/foo/bar` это будет `/foo/.bar-backup_asd-crashrecovery-20141221_070112.tar.zstd` — конечно, отметка времени у вас будет своя.

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

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

Пример для `/foo/bar`:

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

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

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

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

## Поддержка

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

Category:

- System administration (Русский)