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

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

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

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

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

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

Примечание:
  • Некоторые браузеры (например, Chromium и Firefox) хранят файлы кеша в отдельном от профиля каталоге. Изменение этого поведения программы не входит в задачи profile-sync-daemon. Пользователям рекомендуется обратиться к разделу Chromium tweaks#Cache in tmpfs для Chromium и к статье Firefox (Русский)/Profile on RAM (Русский) для Firefox, где описаны возможные решения.
  • Иногда в файл конфигурации по умолчанию /usr/share/psd/psd.conf вносятся обновления/изменения. Пользовательская копия $XDG_CONFIG_HOME/psd/psd.conf должна быть обновлена. В Arch Linux pacman должен уведомить пользователя о необходимости сделать это.
  • psd может замедлить вход в систему, так как он копирует кэш браузера в память.

Установка

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

Настройка

При первом запуске psd создаст файл настроек $XDG_CONFIG_HOME/psd/psd.conf. Можно просто выполнить команду psd без использования службы psd.service, чтобы создать этот файл без немедленного запуска синхронизации.

Примечание: Любые изменения, произведённые в этом файле, вступят в силу только после перезапуска psd посредством пользовательской службы systemd.
  • Опционально включите использование overlayfs для улучшения скорости синхронизации и уменьшения количества необходимой памяти. Для этого используйте переменную USE_OVERLAYFS. Пользователю понадобятся sudo права доступа к /usr/bin/psd-overlay-helper для использования этой опции, а также ядро должно поддерживать overlayfs версии 22 или новее. Смотрите раздел #Режим overlayfs ниже, чтобы узнать подробности.
  • Опционально укажите названия веб-браузеров, профили которых необходимо перенести в ОЗУ, в массиве BROWSERS. Если в этой переменной ничего не указано, по умолчанию перенесутся все найденные профили поддерживаемых браузеров.
  • Опционально можете отключить создание резервных копий профиля (не рекомендуется) с помощью переменной USE_BACKUPS.
  • Опционально можно указать число хранимых резервных копий с помощью переменной BACKUP_LIMIT.

Пример: допустим, что у вас установлены браузеры Chromium, Opera и Firefox, однако вы хотите перенести профили в ОЗУ только для Chromium и Opera:

BROWSERS=(chromium opera)

Начиная с версии 5.54, есть родная поддержка overlayfs. Для её использования требуется ядро версии 3.18.0 или новее.

Поддерживаемые браузеры

В настоящее время поддерживаются следующие браузеры:

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

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

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

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

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

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

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

~/.config/systemd/user/psd-resync.timer.d/frequency.conf
[Unit]
Description=Timer for Profile-sync-daemon - 10min

[Timer]
OnUnitActiveSec=
OnUnitActiveSec=10min

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

Режим overlayfs

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

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

Начиная с версии psd 6.05, пользователи, желающие использовать этот режим, ДОЛЖНЫ иметь права sudo (без запроса на ввод пароля) для файла /usr/bin/psd-overlay-helper или же глобально. Следующая строка в файле /etc/sudoers предоставит пользователю эти права. Добавьте её с помощью visudo:

пользователь ALL=(ALL) NOPASSWD: /usr/bin/psd-overlay-helper

Смотрите пример в разделе #Проверка конфигурации выше, в котором показана система, использующая overlayfs для иллюстрации возможностей экономии памяти. Обратите внимание на строку "overlayfs size" в сравнении со строкой "profile size" для каждого профиля. Имейте в виду, что эти цифры будут меняться в зависимости от объема данных, записываемых в профиль, но при обычном использовании размер overlayfs всегда будет меньше размера профиля.

Важно: Использование psd в режиме overlayfs (в частности, psd-overlay-helper) может привести к повышению привилегий. [2]

Принцип работы overlayfs заключается в монтировании базовой копии профиля (browser-back-ovfs), доступной только для чтения, и записи новых данных поверх неё. Чтобы избежать повторной синхронизации с файловой системой, доступной только для чтения, вместо неё используется копия. Таким образом, использование overlayfs — это компромисс: более быстрое время начальной синхронизации и меньшее использование памяти по сравнению с дисковым пространством в домашнем каталоге.

Добавление памяти для размещения профилей в /run/user/xxxx

Стандартный способ контроля размера /run/user — это директива RuntimeDirectorySize в /etc/systemd/logind.conf (смотрите logind.conf(5) для подробностей). По умолчанию используется 10% физической памяти, но можно её увеличить. Помните, что tmpfs занимает только ту память, которая реально используется файлами; указываемое здесь число просто ограничивает максимальный размер.

Снимки

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

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

Найти снимок можно в том же каталоге, что и профиль браузера, и он будет содержать отметку даты и времени, которая соответствует времени, когда был сделан снимок. Например, для chromium это будет ~/.config/chromium-backup-crashrecovery-20130912_153310 — конечно, отметка времени у вас будет своя.

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

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

Пример для браузера Chromium:

$ mv ~/.config/chromium ~/.config/chromium-bad
$ cp -a ~/.config/chromium-backup-crashrecovery-20130912_153310 ~/.config/chromium

Теперь вы можете запустить Chromium, который будет использовать скопированный резервный снимок. Если все в порядке, закройте браузер и перезапустите psd. На этом этапе вы можете безопасно удалить ~/.config/chromium-backup-crashrecovery-20130912_153310.

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

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

Поддержка

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

Смотрите также