Sun Cluster 資料服務開發者指南 (適用於 Solaris 作業系統)

使用多重主機資料放置的符號連結

有時,應用程式會使其資料檔的路徑名稱固定連線,而沒有覆寫固定連線路徑名稱的機制。 若要避免修改應用程式代碼,有時您可以使用符號連結。

例如,假定應用程式用固定連線路徑名稱 /etc/mydatafile 命名其資料檔。 您可以將此路徑從檔案變更為符號連結,此符號連結的值指向其中一個邏輯主機檔案系統中的某檔案。 例如,您可以將它變更為連結至 /global/phys-schost-2/mydatafile 的符號連結。

如果應用程式或其管理程序之一修改資料檔名稱及其內容,則使用符號連結將會出現問題。 例如,假定應用程式透過首先建立一個新的暫存檔案 /etc/mydatafile.new 來執行更新。 然後透過使用 rename(2) 系統呼叫 (或 mv(1) 程式) 重新命名該暫存檔以使其具有真實的檔案名稱。 透過建立暫存檔案並將其重新命名為實際檔案,資料服務試圖確保其資料檔內容始終保持正確的格式。

但很遺憾,rename(2) 動作破壞了符號連結。 名稱 /etc/mydatafile 現在是一個規則檔案,並與/etc 目錄位於相同的檔案系統,不在叢集的全域檔案系統中。 由於 /etc 檔案系統對於每個主機都是專用的,因此在故障轉移或切換保護移轉之後資料將不可用。

引起此情形的潛在問題是:現有的應用程式不知道符號連結,並且撰寫時未考慮符號連結。 若要使用符號連結將資料存取重新導向邏輯主機的檔案系統,必須以不會刪除符號連結的方式來執行應用程式。 因此,符號連結不能完全糾正在叢集全域檔案系統上放置資料的問題。