Profile-sync-daemon (Русский)
profile-sync-daemon (psd) — небольшой псевдо-демон, предназначенный для переноса профилей браузеров в tmpfs (ОЗУ) и их периодической синхронизации с постоянным хранилищем (HDD/SSD). Это достигается с помощью использования rsync для поддержания синхронизации между копией в tmpfs и резервными копиями в постоянном хранилище. Кроме того, в psd реализованы некоторые функции восстановления после сбоев.
Цели и преимущества psd:
- Простота в использовании
- Уменьшение износа физических дисков
- Улучшение скорости работы
Профили, кэш, и прочие пользовательские данные браузера переносятся с помощью 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
, чтобы создать этот файл без немедленного запуска синхронизации.
- Опционально включите использование 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 или новее.
Поддерживаемые браузеры
В настоящее время поддерживаются следующие браузеры:
- Chromium
- chromium-devAUR
- conkeror-gitAUR
- Epiphany
- falkon
- Firefox (все разновидности — stable, beta и nightly)
- google-chromeAUR
- google-chrome-betaAUR
- google-chrome-devAUR
- версия Aurora от hetfig: браузер для Arch Linux
- icecatAUR
- Luakit
- Opera
- Otter Browser
- palemoonAUR
- Qutebrowser
- seamonkeyAUR
- surfAUR
- vivaldi
Использование
Запустите/включите пользовательскую службу 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 с версии 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 всегда будет меньше размера профиля.
Принцип работы 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
удалит ВСЕ резервные копии. Запускайте этот режим, только если вы уверены, что собранные резервные копии больше не понадобятся.
Поддержка
Пишите в тему на форуме (англ.) для комментариев и прочих обсуждений.