用於漫遊設備的集中式 $HOME - 同步而不是 NFS?
十多年來,我一直在我的小辦公室(目前有 1 台伺服器、7 位使用者、3 台台式機、4 台筆記型電腦)的完整 Debian 環境中工作。身份驗證基於 Kerberos,使用者配置文件在 LDAP 中管理,$HOME 在 pam_mount 或 autofs 的幫助下通過 NFSv4 提供給所有客戶端。對於在本地區域網路上工作的桌面使用者來說,這個設置非常好。
兩年前,我開始為筆記型電腦使用者使用相同的設置。WiFi 連接造成了一些額外的遲緩,並且可以肯定,一旦使用者嘗試在辦公室外使用筆記型電腦,事情就會變得非常緩慢。優化 $XDG_{CACHE,DATA,CONFIG}_HOME 並研究 Firefox 在 NFS 上的特定優化讓事情變得更好一些。
我現在正在考慮搬家 $ HOMES to the laptops+desktops. It is nice that a user can switch devices if one goes down, but that only happens once in a while. Sacrificing this flexibility for a faster day-to-day user experience seems like a good decision. If I could bi-directionally sync the local $ 在啟動和關閉時回到中央伺服器,可能根本不會有權衡……
- ‘unison’ 似乎是保持本地 $HOME 與中央副本同步的好選擇,但它似乎需要伺服器和客戶端之間完全相同的版本,而且我無法承諾。
- ’lsyncd’ 似乎是一個非常好的候選者,但我似乎沒有找到任何使用該工具用於他們的 $HOME 目錄的使用者故事……
- 我什至簡要了解了“GlusterFS”,但這似乎是一個不平凡的替代品。任何人都有任何經驗和最佳實踐可以分享?我不介意進行一些實驗,但恐怕我錯過了上述一些明顯的缺點……謝謝!
正如@marcus-müller 指出的那樣,此功能被廣泛稱為“漫遊使用者配置文件”,它主要圍繞兩個支柱建構:
- 使用者憑據
- 使用者 $HOME 目錄
第一個通常通過集中式系統(例如 LDAP+Kerberos)和客戶端上的 SSSD 來解決。第二個可以使用 NFSv4 和 krb5/krb5i/krb5p 解決,但如果您的客戶端在 WiFi 上或在遠端位置,它可能會導致反應遲緩。
如果您想為您的使用者擺脫集中式 $HOME,但又不想完全放棄集中式設置的靈活性,解決方法可能是:
- 登錄後,執行 rsync 腳本以(創建本地 $ HOME if it does not exist and) bi-directionally sync the local $ HOME 與中央 $HOME
- 註銷後,執行 rsync 腳本將所有本地更改上傳到中央 $HOME
- (可選)執行間歇性同步
GDM 可以設置為在登錄 (
/etc/gdm/PostLogin/Default
) 和註銷 (/etc/gdm/PostSession/Default
) 時執行腳本。可以為間歇性同步設置 cronjob 或 systemd 計時器。我想到的一些注意事項:
- 嘗試限制 $HOME 目錄的大小,例如使用配額和一個單獨的目錄,使用者可以在其中儲存共享文件(仍然可以通過 NFS 共享而不會造成整體遲緩)
- 優化 rsync 腳本以省略記憶體和 tmp 目錄(或者可能只是重新定位 $ XDG_CACHE_HOME and $ $HOME 之外的 XDG_DATA_HOME)
/ EDIT:我已經發布了一個shell腳本來幫助同步本地 $ HOME with the remote $ 首頁:https ://github.com/zenlord/vagabond.sh - 隨時發表評論 :)
我將Syncthing用於與此類似的設置,包括完整的主目錄和主目錄的子集。它雙向或單向同步文件;如果使用者從不在兩個不同的地方對相同的文件進行更改,那麼它是透明的,即使存在衝突的更改,它也能很好地應對——它不會失去數據。
在限制範圍內,它適用於偏斜版本。我讓它在各種手機和電腦上執行;手機自動跟踪最新版本,電腦使用已安裝發行版中的任何內容。完整的主目錄同步僅在具有相同分佈的電腦上真正起作用(因為配置文件的更改),但部分同步適用於不同的設置。
Syncthing 在 LAN 上執行得非常好,但它也支持通過 Internet 進行同步,並且是可配置的,因此您可以將其調整到您感興趣的任何信任級別。