在 samba 中禁用 IP 記憶體或處理動態 IP
我們想掛載已經提供給我們的外部儲存。我們在 Ubuntu 18.04 上的 /etc/fstab 文件中使用如下內容。
//external/storage /mounting/point cifs noperm,cred=/home/user/.smbcredentials,domain=WORK,iocharset=utf8,vers=3.0,sec=ntlmv2i,uid=user,gid=WORKGROUP,dir_mode=0770,file_mode=0770 0 0
和 .smbcredentials
user=user password=pass
不幸的是,我們遇到了越來越多的問題,即有時無法訪問共享。奇怪的是,我們可以使用 smbclient 訪問它,甚至可以掛載到其他作業系統(MacOS、Windows)上。在詢問儲存系統管理員的回饋後,我們被告知這是由數據中心設置的性質引起的:IP 可以動態更改。我們還被告知這對於 Windows 或 MacOS 來說不是問題,但在 Linux 上這會導致影響深遠的問題,因為遠端儲存的 IP 被記憶體。因此,如果其主機的 IP 發生更改,則由於記憶體的 IP 不正確,客戶端上將無法再找到該共享。
那麼我的問題是:我們如何處理我們的設置?建議我們僅在需要時使用 smbclient 訪問共享,但從不實際安裝它們。我絕對不想朝這個方向發展,因為我們使用遠端儲存作為執行程序任務的數據儲存。所以它應該隨時可用。理想情況下,我正在尋找一種方法來禁用 IP 記憶體,但也歡迎其他建議。目前我的注意力集中在autofs上,雖然我沒有使用它的經驗,而且我不確定它是否也記憶體了它應該連接到的共享的 IP。
PS:這對我來說也很奇怪 - 如果 sysadmin 的分析是正確的 - 在 IP 更改 (
Host is down
) 後共享變得不可用但解除安裝和重新安裝不起作用。sudo mount -av
只是掛起。(最初在 Ask Ubuntu 上問過,但這裡似乎更合適。)
如果我正確理解設置,您可以按名稱引用您的儲存主機,並且該主機名的 IP 經常更改。
名稱到 IP 的映射是 DNS 的一項功能。DNS 是您需要解決記憶體的地方。我建議經常刷新記憶體來解決這個問題。雖然這會影響主機上的其他服務,而且看起來有點瘋狂。
首先,檢查記憶體的統計資訊:
sudo systemd-resolve --statistics
您可以使用以下命令刷新記憶體:
sudo systemd-resolve --flush-caches
然後再次檢查統計資訊以確保記憶體已刷新。
如果可行,我將添加命令以將記憶體刷新到您的腳本中以安裝驅動器。這樣,腳本將首先刷新記憶體,然後在嘗試掛載驅動器時向 DNS 查詢目前 IP。