Nfs

用於漫遊設備的集中式 $HOME - 同步而不是 NFS?

  • January 9, 2022

十多年來,我一直在我的小辦公室(目前有 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 進行同步,並且是可配置的,因此您可以將其調整到您感興趣的任何信任級別。

引用自:https://unix.stackexchange.com/questions/682711