跳至內容
出自 Arch Linux 中文维基

profile-sync-daemon (psd) 是一個小型偽守護進程,旨在於 tmpfs 中管理瀏覽器配置文件,並定期將其同步回磁碟中。保持 tmpfs 副本和與媒體相關的瀏覽器配置文件備份之間的同步的過程通過創新地使用 rsync 實現。此外,psd 還具有若干崩潰恢復功能。

psd 的設計目標和優點如下:

  1. 自動化用戶體驗
  2. 減少硬碟磨損
  3. 提高速度

由於瀏覽器配置文件、緩存等被遷移到 tmpfs(內存)中,因此與使用瀏覽器相關的 I/O 操作也會從磁碟重定向到內存,從而減少磁碟磨損,並大幅提升瀏覽器的速度和可響應性。

注意:
  • 一些瀏覽器,如 Chrome(及 Chromium)和 Firefox(自 v21 起),將緩存目錄與配置文件目錄分開存放。profile-sync-daemon 不能用於修改此行為,可以參考 Chromium#臨時文件系統中的緩存部分了解 Chromium 的相關內容,並參考 Firefox/在 RAM 中存儲配置文章獲取解決方法。
  • 默認配置文件 /usr/share/psd/psd.conf 可能會隨軟體包的更新更改。需要使用 diff 比較用戶配置 $XDG_CONFIG_HOME/psd/psd.conf 與其的差異。在 Arch Linux 上,pacman 會通知執行此操作。
  • psd 可能會導致登錄變慢,因為需要在登錄時將瀏覽器緩存複製到 RAM 中。

安裝

安裝 profile-sync-daemon

配置

第一次運行 psd 時,會創建包含所有設置的 $XDG_CONFIG_HOME/psd/psd.conf 配置文件。在使用 psd.service 啟動同步前,可以使用 psd 命令來創建此文件。

注意:在 psd 活動時對配置文件做的修改只有在重啟 psd.service 服務後才能生效。

以下是可選的環境變量配置:

  • 設置 USE_OVERLAYFS 變量:啟用 overlayfs,可提高同步速度並減少內存占用。對 /usr/bin/psd-overlay-helper 擁有 sudo 權限才能使用此選項,且內核必須支持最低版本 22 的 overlayfs。有關詳細信息,參閱 #Overlayfs 模式
  • 設置 BROWSERS 數組:需要管理的瀏覽器。默認管理所有檢測到的瀏覽器。
    • 示例(假設已安裝 Chromium、Opera 和 Firefox,但用戶只希望將 Chromium 和 Opera 同步到 tmpfs):
BROWSERS=(chromium opera)
  • 設置 USE_BACKUPS 變量:啟用/禁用崩潰恢復快照。默認啟用。
  • 設置 BACKUP_LIMIT 變量:保留的崩潰恢復快照的數量。

從 psd 的 5.54 版本開始,原生支持 overlayfs,要求 Linux 內核版本至少為 3.18.0。

支持的瀏覽器

目前,psd 自動檢測並管理以下瀏覽器:

用法

啟動/啟用 psd.service 用戶單元。提供的 resync-timer 每小時將配置文件從 tmpfs 同步回磁碟。resync-timer 會隨著 psd.service 自動啟動,無需手動啟動。

預覽(解析)模式

運行 psd parse 以查看 psd 根據 $XDG_CONFIG_HOME/psd/psd.conf 將執行的操作和正在執行的操作。它還會提供一些有用的信息,例如配置文件大小、路徑以及是否創建了任何恢復快照。

提示與技巧

縮短同步間隔

psd 提供的同步定時器每小時觸發一次。更改同步間隔需要修改 systemd 單元。下面的示例將定時器更改為每十分鐘同步一次(請注意,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 模式

注意:在 Linux 內核中有多個版本的 overlayfs 可用於生產環境,不同發行版中的 overlayfs 版本可能不同。版本 22 及以下的模塊名為「overlayfs」,而更新的版本(23 及以上)的模塊名為「overlay」(刪去了「fs」)。如果配置使用某一版本,psd 會自動檢測內核支持的 overlayfs 版本。

Overlayfs 是一個簡單的聯合文件系統,自 Linux 內核 3.18.0 版本開始被主線集成。psd 從版本 5.54 開始,可用 overlayfs 減少其 tmpfs 空間占用的內存,並加速同步和取消同步操作。其原理在於 overlay 掛載只寫出發生更改的數據,而不是整個配置文件。運行於 overlayfs 模式時,psd 默認模式下的恢復功能仍然有效。通過取消注釋 USE_OVERLAYFS="yes" 行並重新啟動守護進程,即可啟用 overlayfs 模式(配置文件位於 $XDG_CONFIG_HOME/psd/psd.conf)。

自 psd 版本 6.05 起,使用此模式必須具有對 /usr/bin/psd-overlay-helper 無密碼提示的 sudo 權限或全局 sudo 權限。以下是添加這些權限所需的 /etc/sudoers 行,請使用 visudo 添加:

<用户名> ALL=(ALL) NOPASSWD: /usr/bin/psd-overlay-helper

請參見前文 #預覽(解析)模式中的示例,可顯示使用 overlayfs 的系統節省的內存。注意「overlayfs 大小」報告與每個配置文件的總「配置文件大小」報告之間的對比。請注意,這些數字會根據寫入配置文件的數據量而變化,但在常見的使用情況下,overlayfs 的大小通常小於配置文件大小。

警告:在 overlayfs 模式下使用 psd(尤其是 psd-overlay-helper)可能導致權限提升。[2][3]

Overlayfs 的工作方式是掛載配置文件的只讀基礎副本(browser-back-ovfs),並在其上管理新數據。為了避免重新同步到只讀文件系統,會使用一個副本。因此,使用 overlayfs 是一種權衡:初始同步時間更快,內存使用更少,但需要占用主目錄中的磁碟空間。

為 /run/user/xxxx 分配更多內存以容納配置文件

控制 /run/user 大小的標準方法是編輯 /etc/systemd/logind.conf 中的 RuntimeDirectorySize 配置(參見 logind.conf(5))。默認情況下,使用物理內存的 10%,但可以安全地增加此值。請記住,tmpfs 只會使用實際占用的空間,這裡指定的數字僅為允許的最大值。

快照

通常情況下,瀏覽器配置文件的「最後有效」備份可能仍然安全地保存在文件系統中。在重啟 psd(例如系統重啟)時,會檢查指向 tmpfs 配置文件副本的符號連結是否有效。如果無效,psd 會在重新定位之前對「最後有效」備份進行快照。這主要是為了完整性檢查,以確保 psd 未造成任何損害,任何數據丟失都源於其他因素。

注意:可以通過在 $XDG_CONFIG_HOME/psd/psd.conf 中將 USE_BACKUPS 變量取消注釋並設置為 "no",禁用快照/備份功能。

可在與瀏覽器存放配置文件的目錄中找到快照,它將包含與恢復發生時間對應的日期時間戳。例如,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 將刪除所有積累的恢復快照。在確定要刪除這些快照後再運行此命令。

支持

如有評論或疑慮,請在討論帖中發布。

另見