馮雪 李靖
摘要:說明了一種基于微軟的分布式文件系統(DFS)及部分Asp.Net定制開發功能的解決方案。系統通過定制開發的Web頁面、WindOWS桌面版工具和郵件客戶端Outlook插件,為用戶提供上傳和下栽文件(加密傳輸、斷點續傳)、個人文件管理、查看訪問日志和文件鏈接分享等便利功能;為管理員提供共享文件空間額度管理、文件定期清理和用戶訪問日志審計等功能。
關鍵詞:DFS;DFS-N;DFS-R;Outlook插件
0引言
在大中型組織中,用戶之間傳輸或者共享大文件(幾GB至幾百GB的文件,以下簡稱“大文件”)的需求非常普遍。這種大文件遠遠超過了郵件系統所允許的傳輸上限。而企業的廣域網帶寬非常有限且十分昂貴,一旦用戶跨廣域網傳輸大文件,特別是多人間共享時,極易造成廣域網堵塞。用戶不得已,經常通過QQ等共享聊天工具進行點對點傳輸,免費的互聯網網盤,或者在企業內部部署的文件共享服務器,通過共享文件夾共享或者傳輸大文件。但使用互聯網工具傳輸大文件,不但速度慢,還容易中斷,信息安全難以保證。本文所描述的“企業大文件傳輸和共享系統”,是基于微軟的分布式文件系統(DFS)的一種創新。通過在企業內部部署多臺DFS并組成文件同步和復制網絡,利用活動目錄(Active Directory)的用戶和PC管理功能,解決了大文件的分布式存儲、統一訪問、高效安全傳輸與復制和用戶就近訪問等問題。再利用自定義開發的多種用戶端工具:Outlook插件、客戶端和Web網站,解決了客戶端的文件上傳下載、斷點續傳、文件訪問地址的分享和傳播、權限管理及文件清理等問題,并大大降低了開發難度和工作量,形成了一套完善的企業大文件傳輸和共享解決方案。
1基于DFS的大文件傳輸系統架構
本系統采用了DFS作為系統的后端文件服務器,通過在廣域網的片區中心節點部署DFS服務器和自主開發的文件傳輸服務,借助DFS-N的能力,解決了大文件的統一訪問和存儲空間擴展靈活性問題;借助于DFS-R的能力,解決了文件系統的分布式部署和智能就近訪問問題。然后通過在每臺DFS上部署自定義開發的文件傳輸Web服務,多臺DFS的Web服務之間通過SQL Server數據庫共享配置信息和用戶傳輸狀態等信息,解決了全網用戶的服務器至客戶端的文件上傳和下載、傳輸加密、斷點續傳、配置同步和文件清理等問題,系統的架構圖如圖1所示。
2就近上傳與下載及文件復制
本系統的服務部部署在廣域網的各個網絡區域中心站點。當客戶端通過DNS解析到某一臺服務器上,該服務器上的大文件傳輸服務會根據客戶端IP子網查找其所屬的AD站點(一般為同一局域網)內的服務器。如果客戶端所在站點中沒有本系統的服務器,則選擇—個“距離”最近的服務器,從而實現文件的就近上傳和下載??紤]到用戶之間文件分享行為的“局部性”,系統為每個用戶創建了2個子文件夾:集團公司和分公司,分別位于2個DFS復制組中,并且配置不同的復制策略來進一步優化性能,示意圖如圖2所示。
大文件傳輸服務將文件在DFS中的UNC路徑保存在sQL Server數據庫中,巧妙地利用了DFS的諸多功能,免編程實現了文件在廣域網中的存儲、高效復制(遠程差分壓縮(RDC)的壓縮復制,僅復制變化的文件塊)和就近訪問等高級功能。
3客戶端至服務器的大文件傳輸
為了解決客戶端到DFS服務器傳輸“最后一公里”的問題,開發了文件傳輸Web服務和大文件傳輸客戶端,實現了客戶端至服務器的傳輸加密、傳輸壓縮、完整性校驗、斷點續傳等功能。國內共開發了3種客戶端:Outlook插件、Web網站和Windows客戶端,實現相同的功能。無論哪種客戶端,都是基于HTFPS協議實現的傳輸,包括斷點續傳??紤]到用戶普遍習慣于通過郵件發送文件附件,還特意開發了Office Outlook郵件客戶端的大文件插件,用戶在Outlook中點擊大文件插件圖標,可以打開自己的文件空間,選擇文件后將文件的下載鏈接插入郵件正文發送給接收者,接收者點擊鏈接下載文件。
4下載鏈接加密
為了保護數據安全,用戶在分享文件時,可以選擇是否允許外部用戶下載。系統生成文件分享鏈接時,并不是直接通過DFS服務器上的路徑將文件發送給接收者,而是利用MD5算法生成—個該文件的加密串并附加在URL后面,并將映射關系保存在數據庫中。當下載者點擊鏈接時,系統會對MD5碼進行校驗,如果是一個僅對組織內用戶分享的文件,則會要求下載者先登錄。
5斷點續傳
HTTP/HTTPs協議是一種基于TCP的簡單協議,也是一種無狀態協議,對事務處理沒有記憶能力。WEB服務器,例如本系統所使用的WindowsⅡs是通過Session對象來保持會話的。而會話保持時間不能太長,否則將導致WEB服務器的并行處理能力大大降低。在目前常見的廣域網帶寬和網速下,要通過HTTP傳輸大文件,通常需要幾個小時甚至幾十個小時,這已經超出了Ⅱs服務器可以承受的最長會話保持時間,因此,必須解決斷點續傳問題。
斷點續傳就是在上一次下載時斷開的位置開始繼續下載。本系統采用在HTTP請求/回復報文頭中的Range屬性來表示客戶端希望從何處繼續上傳或者下載,從而實現斷點續傳。例如,如果要告訴服務器從第3096 Byte開始下載,請求報文如下:
5結束語
如今,WAF在中國如火如荼地發展,很多企業投入到對WAF的研究之中。WAF為網上銀行系統安全保駕護航,不HttpWebRequest類所提供的操作HTTPRequest屬性的方法,實現了斷點續傳。HttpWebRequest類提供了操作公共HTTP標頭屬性名值對的方法,還提供了AddRange方法來修改Range屬性,從而可以向Web服務器發送大文件傳輸的開始或結束位置信息。
6結束語
本文介紹了基于微軟DFS部署的大文件傳輸系統的技術原理以及工程實現中的創新性。目前該系統已經在組織總部及各片區中心部署了9臺DFS服務器和大文件傳輸Web站點,實際使用過程中發現DFS后臺文件復制同步高效、健壯、安全,客戶端程序和Outlook插件用戶使用反饋良好,能夠方便地下載和分享文件,很好地滿足了大型組織分享幾十GB級別大型工程設計文件、視頻文件的需求。