共享文件系統

序:

​    一旦存在多臺實際服務器提供同樣的web服務時,一個潛在的問題就是如何保證多臺實際服務器的程序和文件一致呢?

13.1 網絡共享

​    從使用角度看,共享文件系統幾乎不用你考慮網絡傳輸和訪問的細節,完全可以像訪問本地文件一樣訪問網絡上其它服務器文件系統上的文件。這可以在一定程度上解決開始提的問題,即爲集羣中的多臺實際服務器共享同一臺物理存儲設備。

​    剛纔提到的同一臺物理存儲設備可以是獨立的一臺服務器如圖片服務器,也可以是集羣中某臺實際服務器的磁盤。

​    共享文件系統並不是通常我們說的磁盤文件系統,它不能用於存儲和管理磁盤數據,而只是定義了文件在網絡上傳輸時的組織格式和傳輸協議。所以,一個文件從網絡的一端到另一端需要進行兩次轉換,分別發生在進入網絡和離開網絡的時候。

​    對於共享文件系統的實現通常有NFS和Samba,其中NFS主要用於Linux/Unix平臺下,而Samba用於將Linux/Unix平臺下的文件映射到Window系統網絡鄰居上,用於實現Linux/Unix到Window平臺的共享,當然,它也可以實現Linux/Unix平臺之間的文件共享。

​    NFS和Samba實現完全不同,其性能存在較大的差異。

13.2 NFS

​    NFS是sun公司於1984年開發,直到現在,它一直是主流異構平臺實現文件共享的首選方案之一。

​    共享文件系統主要包括文件格式和傳輸協議的定義,NFS並沒有設計自己的傳輸協議,它是直接使用基於RPC的傳協議,工作在應用層,負責客戶端和服務器端之間請求和響應數據的傳輸控制。

​    NFS的服務器和客戶端軟件一般在Linux中被默認安裝,配置也比較容易。NFS雖然採用RPC作爲應用層協議,但其性能更多取決於傳輸層協議TCP/UDP以及服務器端和客戶端程序的實現。

​    對於傳輸層,RPC服務默認使用UDP,當網絡質量較差的時候,一旦數據包發生丟失,這些數據包的重發工作由應用層的RPC來進行,它將重發整個RPC請求,顯然這種效率沒有TCP自動重傳機制更高效。當然,TCP也有缺點,它沒有UDP無狀態的優越性,但也不是絕對的,要取決於具體的應用。

​    NFS服務器採用多進程模型,而且進程數是固定的,默認情況下爲4,當然,可以進行修改。不論怎麼對NFS進行性能優化,NFS註定不適合IO密集型文件的共享方案。但作爲一般用途比如提供站內資源的共享,它是比較容易搭建的,可以減少不必要的數據冗餘。

​    NFS遠程寫操作有同步和異步兩種模式,對於異步模式,NFS可以在接收到寫操作請求後立即返回成功,然後在後臺執行真正的寫操作。對於同步模式,NFS在寫操作完成後才返回,當然,這裏不一定是寫到磁盤。對於異步模式,由於存在實際寫入磁盤的延遲,所以非常有可能發生實際寫入失敗而應用程序並不知曉的情況,在沒有保障的情況下,使用異步模式要格外謹慎。

13.3 侷限性

​    不同於本地磁盤IO,通過NFS對遠程文件進行寫操作時,影響性能的不僅僅是NFS服務器本身磁盤吞吐率上限,還有NFS服務器端的併發處理能力和網絡帶寬。

​    對於小文件的遠程訪問,NFS服務器程序的併發處理能力不容樂觀。對於較大文件的訪問,數據在網絡上的傳輸佔了主要時間,這時網絡帶寬的充分消耗意味着NFS服務器的磁盤吞吐率也隨之趨向極限,同時NFS服務器將成爲文件訪問的瓶頸,它只能爲很少的服務器提供文件共享服務,特別是當web服務器擁有較大網絡帶寬時,並且幾乎消耗殆盡的時候,這樣的一臺web服務器足以讓NFS服務器不堪重負,當然,可以爲NFS提供RAID磁盤陣列來提高併發處理能力,同時提高磁盤吞吐率上限。

​    共享文件系統最重要的一點是存在單點故障缺陷。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章