為何會有DFS出現?
在一個企業環境中,公司內部的檔案有多個公司員工想要存取,因此管理者將檔案存放在網路上供使用者存取,是普遍的解決方案。但隨著資料量不斷的往上增加,零散分布在網路上不同的主機或檔案伺服器上的檔案,反而會讓管理與存取使用造成許多的不便。
因此微軟在Windows Server中內建了分散式檔案系統(Distributed File System, DFS),可為共用檔案提供單一存取點,以及檔案自動同步複寫功能。
分散式檔案系統概觀: 透過分散式檔案系統(DFS)將相同的檔案同時儲存到網路上多台伺服器後,可以擁有下列功能:
- 提高檔案的存取效率:用戶端透過DFS存取檔案,DFS會引導用戶單從最接近自己的伺服器來存取檔案,讓用戶端快取存取到所需的檔案。
- 提高檔案的可用性:提供容錯功能,存取的伺服器毀損,能夠到其他伺服器存取一樣的檔案。
- 伺服器負載平衡功能:每一個用戶端獲得清單中的伺服器排列順序可能都不相同,因此有存取的伺服器也可能不同,用戶端從不同的伺服器來存取所需檔案,因此可分散伺服器的負擔。
DFS架構: Windows Server 2012 R2是透過檔案和存取服務角色內的
DFS命名空間(NFS-N)與
DFS複寫(DFS-R)這兩個服務來建置DFS。以下面這張架構圖來說明DFS中的各個元件:
- DFS命名空間:透過DFS命名空間來將位於不同伺服器內的共用資料夾集合在一起,並以一個虛擬資料夾的樹狀結構來呈現給用戶端。DFS命名空間分為下列兩種:
- 網域型命名空間:將命名空間的設定資料儲存到AD DS資料庫與命名空間伺服器。若建立多台命名空間伺服器的話,則還具備命名空間容錯功能。
- 獨立命名空間:將命名空間的設定資料儲存到命名空間伺服器的登錄資料庫(registry)。由於獨立命名空間只能夠有一台命名空間伺服器,因此不具備容錯功能。
- 命名空間伺服器:用來主控命名空間(host namespace)的伺服器。若是網域型命名空間的話,則這台伺服器可以是成員伺服器或網域控制站,並且可以設定多台命名空間伺服器;若是獨立命名空間的話, 則這台伺服器可以是成員伺服器、網域控制站或獨立伺服器,不過只能夠擁有一台命名空間伺服器。
- 命名空間根目錄:是命名空間的起始點。以DFS架構圖來說,此根目錄的名稱為Share1、命名空間的名稱為\\sandy.com\share1,它是一個網域型命名空間,其名稱是以網域名稱開頭(sandy.com)。如果是一個獨立命名空間,則名稱是以電腦名撐開頭,例如\\Server1\Share1。
- 資料夾與資料夾目標:這些虛擬資料夾的目標分別對應到其他伺服器內的共用資料夾,當用戶端瀏覽資料夾時,DFS會將用戶端導向資料夾目標所對應的共用資料夾。上述DFS架構圖中有3個資料夾,分別為:
- Test1:此資料夾有兩個目標,分別對應到伺服器Server2的C:\Test1與Server3的C:\Test1共用資料夾,具備資料夾容錯功能,舉例來說,當使用者在讀取Test1內的檔案時,即使Server2故障,仍可從Server3的C:\Test1讀到檔案。但是前提是Server2的C:\Test1與Server3的C:\Test1內所儲存的檔案必須同步。
- Test2:此資料夾有2個目標,分別對應到伺服器Server3的C:\Test2與Server4的D:\Test共用資料夾,也具備容錯功能。
- Test3:此資料夾只有1個目標,對應到伺服器Server4的D:\Test3共用資料夾,因為目標只有1個,因此不具備容錯功能。
- DFS複寫:DFS複寫服務使用一個稱為遠端差異壓縮(Remote Differential Compression, RDC)的壓縮演算技術,能夠偵測檔案異動處,因此複寫檔案時僅會複寫有異動的區塊,而不是整個檔案,降低網路負擔。
複寫拓樸: 用來描述DFS內各伺服器之間的邏輯連線關係,並讓DFS複寫服務利用這些關係在伺服器之間複寫檔案。有以下幾種類型:
- 中樞和支點(hub and spoke):一台伺服器為中樞,並建立與其他所有伺服器(支點)之間的連線。檔案從中樞複寫到所有支點,也會從支點複寫到中樞。但支點之間並不會直接相互複寫檔案。
- 完整網狀(full mesh):會建立所有伺服器之間的相互連線,檔案會從每一台伺服器直接複寫到其他所有的伺服器。
- 自訂拓樸:可以自行建立各伺服器之間的邏輯連線關係,換句話說,就是自行指定伺服器,只有被指定的伺服器之間才會複寫檔案。
DFS的安裝與設定(以Windows Server 2012為例)
1.在DFS-Server1和DFS-Server2上新增角色
2.選擇安裝「DFS Namespaces」& 「DFS Replication」
3.安裝完畢後,選擇其中一台開起「DFS Management」來做管理
4.新增DFS Namespace
5.指定Namespace Server
6.可以看到Namespace已經建立完成了
7.也可以看到該DFS-Server1會自動建立Share1這個資料夾
8.測試使用網域命名空間的方式進行存取
9.現在把DFS-Server2也加入當作另一台的Namespace伺服器
10.輸入DFS-Server2的電腦名稱,並點選編輯設定
11.設定完成後,可以從DFS-Server1確認C:\DFSRoot\Share1和\\sandy.com\Share1的內容
12.另外也在DFS-Server2上確認C:\DFSRoot\Share1和\\sandy.com\Share1的內容
此時會發現,為什麼DFS-Server1和DFS-Server2 Share1內的檔案怎麼不一樣?如果使用PC來測試連結到\\sandy.com\share1這個路徑,是會被隨機redirect到DFS-Server 1和DFS-Server 2上面,
如果兩台主機的內容不相同,就有可能會遇到這種情形,所以就需要搭配DFS的檔案複寫機制來解決此問題。
1.New Replication Group
2.選擇「Replication group for data collection」
3.設定複寫群組的名稱
4.選擇分支來源為DFS-Server1
5.複寫資料夾的新增
6.設定將DFS-Server1上的C:\DFSRoot設定為要同步複寫的資料夾
7.接下來設定中樞伺服器為Server2
8.設定目標資料夾為C:\,此時會看到目標位置變成C:\DFSRoot(會自動建立)
9.設定要一直持續資料同步,還是在特定時間才能進行同步,這裡選擇持續保持資料同步
10.設定完成
11.這時可以看到資料就會自動複寫同步了(註: 需將兩台主機的C:\DFSRoot,Permission為Domain Users可修改)