nfs實現分布式存儲
❶ CEPH和NFS什麼區別哪個更好
ceph是分布式存儲系統
NFS是文件存儲系統,無優劣的說法,主要看實際的使用場景。
ceph提供的類型更多,如塊、對象等,性能更好,NFS提供的文件系統單一,但是操作簡單。
❷ 分布式文件存儲系統採用什麼方式
一。分布式Session的幾種實現方式 1.基於資料庫的Session共享 2.基於NFS共享文件系統 3.基於memcached 的session,如何保證 memcached 本身的高可用性? 4. 基於resin/tomcat web容器本身的session復制機制 5. 基於TT/Redis 或 jbosscache 進行 session 共享。 6. 基於cookie 進行session共享 或者是: 一、Session Replication 方式管理 (即session復制) 簡介:將一台機器上的Session數據廣播復制到集群中其餘機器上 使用場景:機器較少,網路流量較小 優點:實現簡單、配置較少、當網路中有機器Down掉時不影響用戶訪問 缺點:廣播式復制到其餘機器有一定廷時,帶來一定網路開銷 二、Session Sticky 方式管理 簡介:即粘性Session、當用戶訪問集群中某台機器後,強制指定後續所有請求均落到此機器上 使用場景:機器數適中、對穩定性要求不是非常苛刻 優點:實現簡單、配置方便、沒有額外網路開銷 缺點:網路中有機器Down掉時、用戶Session會丟失、容易造成單點故障 三、緩存集中式管理 簡介:將Session存入分布式緩存集群中的某台機器上,當用戶訪問不同節點時先從緩存中拿Session信息 使用場景:集群中機器數多、網路環境復雜 優點:可靠性好 缺點:實現復雜、穩定性依賴於緩存的穩定性、Session信息放入緩存時要有合理的策略寫入 二。Session和Cookie的區別和聯系以及Session的實現原理 1、session保存在伺服器,客戶端不知道其中的信息;cookie保存在客戶端,伺服器能夠知道其中的信息。 2、session中保存的是對象,cookie中保存的是字元串。 3、session不能區分路徑,同一個用戶在訪問一個網站期間,所有的session在任何一個地方都可以訪問到。而cookie中如果設置了路徑參數,那麼同一個網站中不同路徑下的cookie互相是訪問不到的。 4、session需要藉助cookie才能正常<nobr oncontextmenu="return false;" onmousemove="kwM(3);" id="key3" onmouseover="kwE(event,3, this);" style="COLOR: #6600ff; BORDER-BOTTOM: 0px dotted; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline" onclick="return kwC();" onmouseout="kwL(event, this);" target="_blank">工作</nobr>。如果客戶端完全禁止cookie,session將失效。 http是無狀態的協議,客戶每次讀取web頁面時,伺服器都打開新的會話,而且伺服器也不會自動維護客戶的上下文信息,那麼要怎麼才能實現網上商店中的 購物車呢,session就是一種保存上下文信息的機制,它是針對每一個用戶的,變數的值保存在伺服器端,通過SessionID來區分不同的客 戶,session是以cookie或URL重寫為基礎的,默認使用cookie來實現,系統會創造一個名為JSESSIONID的輸出cookie,我 們叫做session cookie,以區別persistent cookies,也就是我們通常所說的cookie,注意session cookie是存儲於瀏覽器內存中的,並不是寫到硬碟上的,這也就是我們剛才看到的JSESSIONID,我們通常情是看不到JSESSIONID的,但 是當我們把瀏覽器的cookie禁止後,web伺服器會採用URL重寫的方式傳遞Sessionid,我們就可以在地址欄看到 sessionid=KWJHUG6JJM65HS2K6之類的字元串。 明白了原理,我們就可以很容易的分辨出persistent cookies和session cookie的區別了,網上那些關於兩者安全性的討論也就一目瞭然了,session cookie針對某一次會話而言,會話結束session cookie也就隨著消失了,而persistent cookie只是存在於客戶端硬碟上的一段文本(通常是加密的),而且可能會遭到cookie欺騙以及針對cookie的跨站腳本攻擊,自然不如 session cookie安全了。 通常session cookie是不能跨窗口使用的,當你新開了一個瀏覽器窗口進入相同頁面時,系統會賦予你一個新的sessionid,這樣我們信息共享的目的就達不到 了,此時我們可以先把sessionid保存在persistent cookie中,然後在新窗口中讀出來,就可以得到上一個窗口SessionID了,這樣通過session cookie和persistent cookie的結合我們就實現了跨窗口的session tracking(會話跟蹤)。 在一些web開發的書中,往往只是簡單的把Session和cookie作為兩種並列的http傳送信息的方式,session cookies位於伺服器端,persistent cookie位於客戶端,可是session又是以cookie為基礎的,明白的兩者之間的聯系和區別,我們就不難選擇合適的技術來開發web service了。 總之: 一、cookie機制和session機制的區別 具體來說cookie機制採用的是在客戶端保持狀態的方案,而session機制採用的是在伺服器端保持狀態的方案。 同時我們也看到,由於在伺服器端保持狀態的方案在客戶端也需要保存一個標識,所以session機制可能需要藉助於cookie機制來達到保存標識的目的,但實際上還有其他選擇。 二、會話cookie和持久cookie的區別 如果不設置過期時間,則表示這個cookie生命周期為瀏覽器會話期間,只要關閉瀏覽器窗口,cookie就消失了。這種生命期為瀏覽會話期的cookie被稱為會話cookie。會話cookie一般不保存在硬碟上而是保存在內存里。 如果設置了過期時間,瀏覽器就會把cookie保存到硬碟上,關閉後再次打開瀏覽器,這些cookie依然有效直到超過設定的過期時間。 存儲在硬碟上的cookie可以在不同的瀏覽器進程間共享,比如兩個IE窗口。而對於保存在內存的cookie,不同的瀏覽器有不同的處理方式。 三、如何利用實現自動登錄 當用戶在某個網站注冊後,就會收到一個惟一用戶ID的cookie。客戶後來重新連接時,這個用戶ID會自動返回,伺服器對它進行檢查,確定它是否為注冊用戶且選擇了自動登錄,從而使用戶無需給出明確的用戶名和密碼,就可以訪問伺服器上的資源。 四、如何根據用戶的愛好定製站點 網站可以使用cookie記錄用戶的意願。對於簡單的設置,網站可以直接將頁面的設置存儲在cookie中完成定製。然而對於更復雜的定製,網站只需僅將一個惟一的標識符發送給用戶,由伺服器端的資料庫存儲每個標識符對應的頁面設置。 五、cookie的發送 1.創建Cookie對象 2.設置最大時效 3.將Cookie放入到HTTP響應報頭 如果你創建了一個cookie,並將他發送到瀏覽器,默認情況下它是一個會話級別的cookie:存儲在瀏覽器的內存中,用戶退出瀏覽器之後被刪除。如 果你希望瀏覽器將該cookie存儲在磁碟上,則需要使用maxAge,並給出一個以秒為單位的時間。將最大時效設為0則是命令瀏覽器刪除該 cookie。 發送cookie需要使用HttpServletResponse的addCookie方法,將cookie插入到一個 Set-Cookie HTTP請求報頭中。由於這個方法並不修改任何之前指定的Set-Cookie報頭,而是創建新的報頭,因此我們將這個方法稱為是addCookie,而 非setCookie。同樣要記住響應報頭必須在任何文檔內容發送到客戶端之前設置。 六、cookie的讀取 1.調用request.getCookie 要獲取有瀏覽器發送來的cookie,需要調用HttpServletRequest的getCookies方法,這個調用返回Cookie對象的數組,對應由HTTP請求中Cookie報頭輸入的值。 2.對數組進行循環,調用每個cookie的getName方法,直到找到感興趣的cookie為止 cookie與你的主機(域)相關,而非你的servlet或JSP頁面。因而,盡管你的servlet可能只發送了單個cookie,你也可能會得到許多不相關的cookie。 例如: String cookieName = 「userID」; Cookie cookies[] = request.getCookies(); if (cookies!=null){ for(int i=0;i Cookie cookie = cookies[i]; if (cookieName.equals(cookie.getName())){ doSomethingWith(cookie.getValue()); } } } 七、如何使用cookie檢測初訪者 A.調用HttpServletRequest.getCookies()獲取Cookie數組 B.在循環中檢索指定名字的cookie是否存在以及對應的值是否正確 C.如果是則退出循環並設置區別標識 D.根據區別標識判斷用戶是否為初訪者從而進行不同的操作 八、使用cookie檢測初訪者的常見錯誤 不能僅僅因為cookie數組中不存在在特定的數據項就認為用戶是個初訪者。如果cookie數組為null,客戶可能是一個初訪者,也可能是由於用戶將cookie刪除或禁用造成的結果。 但是,如果數組非null,也不過是顯示客戶曾經到過你的網站或域,並不能說明他們曾經訪問過你的servlet。其它servlet、JSP頁面以及 非Java Web應用都可以設置cookie,依據路徑的設置,其中的任何cookie都有可能返回給用戶的瀏覽器。 正確的做法是判斷cookie數組是否為空且是否存在指定的Cookie對象且值正確。 九、使用cookie屬性的注意問題 屬性是從伺服器發送到瀏覽器的報頭的一部分;但它們不屬於由瀏覽器返回給伺服器的報頭。 因此除了名稱和值之外,cookie屬性只適用於從伺服器輸出到客戶端的cookie;伺服器端來自於瀏覽器的cookie並沒有設置這些屬性。 因而不要期望通過request.getCookies得到的cookie中可以使用這個屬性。這意味著,你不能僅僅通過設置cookie的最大時效, 發出它,在隨後的輸入數組中查找適當的cookie,讀取它的值,修改它並將它存回Cookie,從而實現不斷改變的cookie值。 十、如何使用cookie記錄各個用戶的訪問計數 1.獲取cookie數組中專門用於統計用戶訪問次數的cookie的值 2.將值轉換成int型 3.將值加1並用原來的名稱重新創建一個Cookie對象 4.重新設置最大時效 5.將新的cookie輸出 十一、session在不同環境下的不同含義 session,中文經常翻譯為會話,其本來的含義是指有始有終的一系列動作/消息,比如打電話是從拿起電話撥號到掛斷電話這中間的一系列過程可以稱之為一個session。 然而當session一詞與網路協議相關聯時,它又往往隱含了「面向連接」和/或「保持狀態」這樣兩個含義。 session在Web開發環境下的語義又有了新的擴展,它的含義是指一類用來在客戶端與伺服器端之間保持狀態的解決方案。有時候Session也用來指這種解決方案的存儲結構。 十二、session的機制 session機制是一種伺服器端的機制,伺服器使用一種類似於散列表的結構(也可能就是使用散列表)來保存信息。 但程序需要為某個客戶端的請求創建一個session的時候,伺服器首先檢查這個客戶端的請求里是否包含了一個session標識-稱為session id,如果已經包含一個session id則說明以前已經為此客戶創建過session,伺服器就按照session id把這個session檢索出來使用(如果檢索不到,可能會新建一個,這種情況可能出現在服務端已經刪除了該用戶對應的session對象,但用戶人為 地在請求的URL後面附加上一個JSESSION的參數)。 如果客戶請求不包含session id,則為此客戶創建一個session並且生成一個與此session相關聯的session id,這個session id將在本次響應中返回給客戶端保存。 十三、保存session id的幾種方式 A.保存session id的方式可以採用cookie,這樣在交互過程中瀏覽器可以自動的按照規則把這個標識發送給伺服器。 B. 由於cookie可以被人為的禁止,必須有其它的機制以便在cookie被禁止時仍然能夠把session id傳遞回伺服器,經常採用的一種技術叫做URL重寫,就是把session id附加在URL路徑的後面,附加的方式也有兩種,一種是作為URL路徑的附加信息,另一種是作為查詢字元串附加在URL後面。網路在整個交互過程中始終 保持狀態,就必須在每個客戶端可能請求的路徑後面都包含這個session id。 C.另一種技術叫做表單隱藏欄位。就是伺服器會自動修改表單,添加一個隱藏欄位,以便在表單提交時能夠把session id傳遞回伺服器。 十四、session什麼時候被創建 一個常見的錯誤是以為session在有客戶端訪問時就被創建,然而事實是直到某server端程序(如Servlet)調用HttpServletRequest.getSession(true)這樣的語句時才會被創建。 十五、session何時被刪除 session在下列情況下被刪除: A.程序調用HttpSession.invalidate() B.距離上一次收到客戶端發送的session id時間間隔超過了session的最大有效時間 C.伺服器進程被停止 再次注意關閉瀏覽器只會使存儲在客戶端瀏覽器內存中的session cookie失效,不會使伺服器端的session對象失效。
❸ linux,NFS服務,是什麼啊
NFS(Network File System)即網路文件系統,是FreeBSD支持的文件系統中的一種,它允許網路中的計算機之間共享資源。在NFS的應用中,本地NFS的客戶端應用可以透明地讀寫位於遠端NFS伺服器上的文件,就像訪問本地文件一樣。
NFS最顯而易見的優點:
1、節省本地存儲空間,將常用的數據存放在一台NFS伺服器上且可以通過網路訪問,那麼本地終端將可以減少自身存儲空間的使用。
2、用戶不需要在網路中的每個機器上都建有Home目錄,Home目錄可以放在NFS伺服器上且可以在網路上被訪問使用。
3、一些存儲設備如軟碟機、CDROM和Zip(一種高儲存密度的磁碟驅動器與磁碟)等都可以在網路上被別的機器使用。這可以減少整個網路上可移動介質設備的數量。

(3)nfs實現分布式存儲擴展閱讀:
NFS 有很多實際應用。下面是比較常見的四點:
1、多個機器共享一台CDROM或者其他設備。這對於在多台機器中安裝軟體來說更加便宜跟方便。
2、在大型網路中,配置一台中心 NFS 伺服器用來放置所有用戶的home目錄可能會帶來便利。這些目錄能被輸出到網路以便用戶不管在哪台工作站上登錄,總能得到相同的home目錄。
3、不同客戶端可在NFS上觀看影視文件,節省本地空間。
4、在客戶端完成的工作數據,可以備份保存到NFS伺服器上用戶自己的路徑下。
NFS是運行在應用層的協議。隨著NFS多年的發展和改進,NFS既可以用於區域網也可以用於廣域網,且與操作系統和硬體無關,可以在不同的計算機或系統上運行。
參考資料來源:
網路-NFS
網路-linux
❹ NFS架構(轉載)
1.為什麼用共享存儲
2.存儲有哪些工具
3.共享存儲應用場景有哪些
4.部署nfs共享存儲
5.客戶端嘗試連接共享存儲
什麼是NFS?
NFS 是 Network File System 的縮寫及網路文件系統。 NFS 主要功能是通過區域網絡讓不同的主機系統之間可以共享文件或目錄。
NFS 系統和 Windows 網路共享、網路驅動器類似, 只不過 windows 用於區域網, NFS 用於企業集群架構中, 如果是大型網站, 會用到更復雜的分布式文件系統 FastDFS,glusterfs,HDFS
那麼我們為什麼要使用數據存儲共享服務?
1.實現多台伺服器之間數據共享
2.實現多台伺服器之間數據一致
下面我將通過圖解給大家展示集群需要共享存儲服務的理由。
1.A 用戶上傳圖片經過負載均衡,負載均衡將上傳請求調度至 WEB1 伺服器上。
2.B 用戶訪問 A 用戶上傳的圖片,此時 B 用戶被負載均衡調度至 WEB2 上,因為 WEB2 上沒有這張圖片,所以 B用戶無法看到 A 用戶傳的圖片
如果有共享存儲的情況
1.A 用戶上傳圖片無論被負載均衡調度至 WEB1 還是 WEB2, 最終數據都被寫入至共享存儲
2.B 用戶訪問 A 用戶上傳圖片時,無論調度至 WEB1 還是 WEB2,最終都會上共享存儲訪問對應的文件,這樣就可以訪問到資源了
NFS工作原理
1.用戶進程訪問 NFS 客戶端,使用不同的函數對數據進行處理
2.NFS 客戶端通過 TCP/IP 的方式傳遞給 NFS 服務端
3.NFS 服務端接收到請求後,會先調用 portmap 進程進行埠映射。
4.nfsd 進程用於判斷 NFS 客戶端是否擁有許可權連接 NFS 服務端。
5.Rpc.mount 進程判斷客戶端是否有對應的許可權進行驗證。
6.idmap 進程實現用戶映射和壓縮
7.最後 NFS 服務端會將對應請求的函數轉換為本地能識別的命令,傳遞至內核,由內核驅動硬體。
注意: rpc 是一個遠程過程調用,那麼使用 nfs 必須有 rpc 服務
1.nfs依賴於RPC服務來傳遞消息
2.NFS服務啟動的埠號是隨機的,啟動之後會向本地的RCP注冊
3.先啟動RPC服務,再啟動NFS服務
4.NFS和RPC之間的通訊是他們自己內部完成的,對於用戶來說無感知
5.NFS客戶端和服務端不會直接溝通,必須通過RPC服務傳遞消息
6.防火牆要開放RPC服務的埠
nfs 服務程序的配置文件為/etc/exports,需要嚴格按照共享目錄的路徑 允許訪問的 NFS 客戶端(共享許可權參數)格式書寫,定義要共享的目錄與相應的許可權,具體書寫方式如下圖所示
配置文件參數解釋:
執行 man exports 命令,然後切換到文件結尾,可以快速查看如下樣例格式:
nfs共享參數 參數作用
rw 讀寫許可權
ro 只讀許可權
root_squash
當 NFS 客戶端以 root 管理員訪問時,映射為 NFS 伺服器的匿名用戶(不常用)
no_root_squash
當 NFS 客戶端以 root 管理員訪問時,映射為 NFS 伺服器的 root 管理員(不常用)
all_squash
無論 NFS 客戶端使用什麼賬戶訪問,均映射為 NFS 伺服器的匿名用戶(常用)
no_all_squash
無論 NFS 客戶端使用什麼賬戶訪問,都不進行壓縮
sync
同時將數據寫入到內存與硬碟中,保證不丟失數據
async
優先將數據保存到內存,然後再寫入硬碟;這樣效率更高,但可能會丟失數據
anonuid
配置 all_squash 使用,指定 NFS 的用戶 UID,必須存在系統
anongid
配置 all_squash 使用,指定 NFS 的用戶 UID,必須存在系統
寫入配置文件:注意!IP地址和後面的小括弧沒有空格
創建數據目錄和授權:
在使用 NFS 服務進行文件共享之前,需要使用 RPC(Remote Procere Call 遠程過程調用服務將 NFS 伺服器的IP 地址和埠號信息發送給客戶端。因此,在啟動 NFS 服務之前,需要先重啟並啟用 rpcbind 服務程序,同時都加入開機自啟動
客戶端安裝nfs服務十分簡單,只需要安裝nfs軟體包即可
安裝完成後只需要啟動rpcbind,不需要啟動nfs
使用showmount命令查看nfs共享信息查詢 NFS 伺服器的遠程共享信息,其輸出格式為「共享的目錄名稱 允許使用客戶端地址」。
掛載命令: 創建掛載目錄
在 NFS 客戶端創建一個掛載目錄, 使用 mount 命令並結合-t 參數, 指定要掛載的文件系統的類型, 並在命令後面寫上伺服器的 IP 地址, 以及伺服器上的共享目錄, 最後需要寫上要掛載到本地系統(客戶端)的目錄
查看是否掛載成功:
測試寫入數據是否正常
寫入開機自動掛載
卸載命令:注意!卸載的時候如果提示」umount.nfs: /nfsdir: device is busy」先切換到其他目錄再卸載
強制卸載命令:
服務端配置:
客戶端掛載:
測試讀取:
寫入測試:
服務端配置:
服務端創建用戶及授權:
重啟NFS服務:
更改目錄授權:
客戶端操作:
我們會發現依然可以寫入,但是為了避免這種情況發生,建議客戶端也創建相同uid gid的用戶
參考博客
啟動NFS會開啟如下埠:
1)portmapper 埠:111 udp/tcp;
2)nfs/nfs_acl 埠:2049 udp/tcp;
3)mountd 埠:"32768--65535" udp/tcp
4)nlockmgr 埠:"32768--65535" udp/tcp
系統 RPC服務在 nfs服務啟動時默認會給 mountd 和 nlockmgr 動態選取一個隨機埠來進行通訊。
1.查看NFS啟動後的埠
2.將隨機的埠號設置固定
3.重啟nfs和rpc服務
4.再次查看埠信息,發現埠號已經固定了
5.設置iptables
6.保存配置
如果設置了開機自啟動,但是系統啟動的時候NFS並沒有提供服務,就會導致開機自檢的時候卡在掛在那一步
NFS 存儲優點
1.NFS 文件系統簡單易用、方便部署、數據可靠、服務穩定、滿足中小企業需求。
2.NFS 文件系統內存放的數據都在文件系統之上,所有數據都是能看得見
NFS 存儲局限
1.存在單點故障, 如果構建高可用維護麻煩 web->nfs()->backup
2.NFS 數據明文, 並不對數據做任何校驗。
3.客戶端掛載 NFS 服務沒有密碼驗證, 安全性一般(內網使用)
NFS 應用建議
1.生產場景應將靜態數據盡可能往前端推, 減少後端存儲壓力
2.必須將存儲里的靜態資源通過 CDN 緩存 jpg\png\mp4\avi\css\js
3.如果沒有緩存或架構本身歷史遺留問題太大, 在多存儲也無用
准備 3 台虛擬機伺服器,並且請按照要求搭建配置 NFS 服務。
NFS 服務端(A)
NFS 客戶端(B)
NFS 客戶端(C)
1.在 NFS 服務端(A)上共享/data/w(可寫)及/data/r(只讀)
2.在 NFS 客戶端(B/C)上進行掛載
環境准備
❺ NFS 深入配置
1.1 NFS配置參數許可權
參數名稱
參數用途
rw
read-write,表示可讀寫許可權
ro
read-only,表示只讀許可權
sync
請求或寫入數據時,數據同步寫入到硬碟才完成
async
非同步寫到遠程緩沖區
all_squash
不管客戶端什麼用戶,到服務端都會被壓縮成匿名用戶
anonuid
匿名用戶的UID
anongid
匿名用戶的GID
在配置文件內設置共享目錄時所給予的許可權:
[root@nfs01 ~]$ cat /etc/exports
/data 172.16.1.0/24(rw,sync) 10.0.0.0/24(ro)
配置好NFS服務後,/var/lib/nfs/etab文件中可以看到的配置參數以及默認自帶的參數:
[root@nfs01 ~]$ cat /var/lib/nfs/etab
/data
172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,
no_all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,
anongid=65534,sec=sys,rw,secure,root_squash,no_all_squash
1.1.1 更改NFS默認用戶
1.1.1.1 nfs01服務端NFS、以及所有客戶端:
[root@nfs01 ~] id www
uid=1111(www) gid=1111(www) 組=1111(www)
1.1.1.2 服務端NFS特殊配置
配置文件增加如下內容:
[root@nfs01 ~]$ tail -2 /etc/exports
/data 172.16.1.0/24(rw,sync,all_squash,anonuid=1111,anongid=1111)
/data1 10.0.0.0/24(ro)
共享目錄更改用戶和用戶組:
[root@nfs01 ~] ls -ld /data
drwxr-xr-x 2 www www 70 4月 18 10:05 /data
1.1.1.3 服務端NFS重啟
[root@nfs01 ~]$ systemctl reload nfs
1.1.1.4 每個客戶端掛載
[root@web01 ~] df -h
文件系統 容量 已用 可用 已用% 掛載點
172.16.1.31:/data 19G 1.8G 18G 10% /data
新創建文件驗證用戶名:
[root@web01 /data]# touch new_web01.txt
[root@web01 /data]# ls -l
總用量 0
-rw-r--r-- 1 www www 0 4月 18 11:01 new_web01.txt
-rw-r--r-- 1 www www 0 4月 17 11:59 oldboy.txt
-rw-r--r-- 1 www www 0 4月 17 12:30 oldgirl.txt
1.2 NFS服務重點知識梳理
當多個NFS客戶端訪問伺服器端讀寫文件時,需要具有以下幾個許可權:
NFS伺服器/etc/exports設置需要開放許可寫入的許可權,即伺服器端的共享許可權
NFS伺服器實際要共享的NFS目錄許可權具有可寫入w的許可權,即伺服器端本地目錄的安全許可權
每台機器都對應存在和NFS默認配置UID的相同UID的用戶
下表列出了常用的重點NFS服務文件或命令。
NFS常用路徑
說明
/etc/exports
NFS服務主配置文件,配置NFS具體共享服務的地點,默認內容為空
/var/lib/nfs/etab
NFS配置文件的完整參數設定的文件
/proc/mounts
客戶端的掛載參數
1.3 NFS客戶端掛載深入
1.3.1 mount -o 參數選項及系統默認設置
參數
參數意義
系統默認值
suid/nosuid
當掛載的文件系統上有任何SUID的程序時,只要使用nosuid就能夠取消設置SUID的功能
suid
rw/ro
可以指定文件系統是只讀(ro)或可讀寫(rw)
rw
dev/nodev
是否可以保留裝置文件的特殊功能
dev
exec/noexec
是否具有執行文件的許可權
exec
user/nouser
是否允許用戶擁有文件的掛載與卸載功能
nouser
auto/noauto
auto指的是「mount -a」時會不會被掛載的項目,如果不需要這個分區隨時被掛載,可以設置為noauto
auto
1.3.2 mount -o 參數詳細說明
參數選項
說明
async
涉及文件系統I/O的操作都是非同步處理,即不會同步寫到磁碟,能提高性能,但會降低數據安全。
sync
有I/O操作時,都會同步處理I/O,會降低性能,但數據比較安全。
atime
在每一次數據訪問時,會更新訪問文件的時間戳,是默認選項,在高並發的情況下,可以通過添加noatime來取消默認項。
ro
以只讀的方式掛載一個文件系統
rw
以可讀寫的方式掛載一個文件系統
auto
能夠被自動掛載通過-a選項
noauto
不會自動掛載文件系統
defaults
這是fstab里的默認值,包括rw、suid、dev、exec、auto、nouser、async
exec
允許文件系統執行二進制文件,取消這個參數,可以提升系統安全性。
noexec
在掛載的文件系統中不允許執行任何二進製程序,進僅對二進製程序有效。
noatime
訪問文件時不更新文件的時間戳,高並發情況下,一般使用該參數
nodiratime
不更新文件系統上的directory inode時間戳,高並發環境,推薦顯式應用該選項,可以提高系統I/O性能。
nosuid
不允許set-user-identifier or set-group-identifier位生效。
suid
允許set-user-identifier or set-group-identifier位生效。
nouser
禁止一個普通用戶掛載該文件系統,這是默認掛載時的默認選項。
remount
嘗試重新掛載一個已經掛載了的文件系統,這通常被用來改變一個文件系統的掛載標志,從而使得一個只讀文件系統變的可寫,這個動作不會改變設備或者掛載點。當系統故障時進人single或rescue模式修復系統時,會發現根文件系統經常會變成只讀文件系統,不允許修改,此時該命令就派上用場了。具體命令為:mount -o remount,rw /,表示將根文件系統重新掛載使得可寫。single或rescue模式修復系統時這個命令十分重要。
dirsync
目錄更新時同步寫人磁碟。
1.3.3 企業生產場景NFS共享存儲優化
硬體:使用ssd/sas磁碟,可以買多塊,製作成raid10。
NFS伺服器端配置:
/data 10.0.0.0/24(rw,sync,all_squash,anonuid=65534,anongid=65534)
NFS客戶端掛載優化配置命令:
mount -t nfs -o nosuid,noexec,nodev,noatime,nodiratime,rsize=131072,
wsize=131072 172.16.1.31:/data /mnt <===兼顧安全性能
對NFS服務的所有伺服器內核進行優化,執行命令如下:
cat >>/etc/sysctl.conf <<EOF
net.core.wmen_default = 8388608
net.core.rmen_default = 8388608
net.core.wmen_max = 16777216
net.core.rmen_max = 16777216
EOF
執行sysctl -p 生效
大型網站NFS網路文件系統的替代軟體為分布式文件系統,如:Moosefs(mfs)、GlusterFS、FastDFS。
1.4 NFS系統應用的優缺點
1.4.1 優點
簡單,容易上手,容易掌握。
NFS文件系統內數據是在文件系統之上的,即數據是能看得見的。
部署快速維護簡單方便,且可控,滿足需求就是最好的。
可靠,從軟體層面上看,數據可靠性高,經久耐用。
服務非常穩定。
1.4.2 缺點(局限)
存在單點故障,如果NFS服務端宕機了,所有客戶端都不能訪問共享目錄。
在大數據高並發的場合,NFS效率、性能有限。
客戶端認證是基於IP和主機名的,許可權要根據ID識別,安全性一般。
NFS數據是明文的,NFS本身不對數據完整性進行驗證。
多台客戶機掛載一個NFS伺服器時,連接管理維護麻煩。
1.4.3 解決性能問題的方法
使用CDN加速以及自己搭建文件緩存服務(squid、nginx、varnish)。
把多個目錄分配到不同的NFS伺服器上。
棄用NFS(即讀寫分離)。
使用分布式文件系統。
❻ nfs是什麼
NFS(Network File System)即網路文件系統,是FreeBSD支持的文件系統中的一種,它允許網路中的計算機之間共享資源。在NFS的應用中,本地NFS的客戶端應用可以透明地讀寫位於遠端NFS伺服器上的文件,就像訪問本地文件一樣。
NFS體系至少有兩個主要部分:
一台NFS伺服器和若乾颱客戶機。
客戶機通過TCP/IP網路遠程訪問存放在NFS伺服器上的數據。
在NFS伺服器正式啟用前,需要根據實際環境和需求,配置一些NFS參數。

(6)nfs實現分布式存儲擴展閱讀:
NFS是基於UDP/IP協議的應用,其實現主要是採用遠程過程調用RPC機制,RPC提供了一組與機器、操作系統以及低層傳送協議無關的存取遠程文件的操作。
RPC採用了XDR的支持。XDR是一種與機器無關的數據描述編碼的協議,他以獨立與任意機器體系結構的格式對網上傳送的數據進行編碼和解碼,支持在異構系統之間數據的傳送。
參考資料來源:網路-網路文件系統
參考資料來源:網路-NFS
❼ 在Windows上自建nfs,性能比較差,這個怎麼辦
本文描述了在應用環境為Windows系統下,需要使用文件存儲的場景。本文採用了私有化部署的方式向用戶提供了文件共享存儲服務。用NFS協議,搭建Windows環境NFS服務,為Windows系統下的雲主機提供共享訪問服務。
存儲格式都有哪些?
文件、塊和對象是三種以不同的方式來保存、整理和呈現數據的存儲格式。這些格式各有各的功能和限制。文件存儲會以文件和文件夾的層次結構來整理和呈現數據;塊存儲會將數據拆分到任意劃分且大小相同的卷中; 對象存儲會管理數據並將其鏈接至關聯的元數據
塊存儲
塊存儲主要是將裸磁碟空間整個映射給主機使用的,就是說例如磁碟陣列裡面有5塊硬碟(為方便說明,假設每個硬碟1G),然後可以通過劃邏輯盤、做Raid、或者LVM(邏輯卷)等種種方式邏輯劃分出N個邏輯的硬碟。(假設劃分完的邏輯盤也是5個,每個也是1G,但是這5個1G的邏輯盤已經於原來的5個物理硬碟意義完全不同了。例如第一個邏輯硬碟A裡面,可能第一個200M是來自物理硬碟1,第二個200M是來自物理硬碟2,所以邏輯硬碟A是由多個物理硬碟邏輯虛構出來的硬碟。)
典型設備:磁碟陣列,硬碟
文件存儲
為了克服塊存儲文件無法共享的問題,所以有了文件存儲。主要功能是通過網路(一般是區域網)讓不同的主機系統之間可以共享文件或目錄。本文文件存儲採用NFS協議,NFS客戶端(一般為應用伺服器,例如Web)可以通過掛載(mount)的方式將NFS伺服器端共享的數據目錄掛載帶NFS客戶端本地系統中(就是某一個掛載點下)。從客戶端本地看,NFS伺服器端共享的目錄就好像是客戶端自己的磁碟分區或目錄一樣,而實際上確實遠端的NFS伺服器的目錄。
典型設備:FTP、NAS
對象存儲
對象存儲系統(Object-Based Storage System)是綜合了NAS和SAN的優點,同時具有SAN的高速直接訪問和NAS的數據共享等優勢,提供了高可靠性、跨平台性以及安全的數據共享的存儲體系結構。對象存儲主要操作對象是對象(Object)。和文件和對象存儲相比,沒有隨機讀寫的介面。和文件存儲相比,沒有目錄樹的概念。協議更注重簡潔。
典型設備:內置大容量硬碟的分布式伺服器、京東雲OSS即對象存儲
文件存儲的適用場景
文件與較底層的塊存儲不同, 上升到了應用層, 一般指的就是NAS ,一套網路儲存設備, 通過TCP/IP進行訪問, 協議為NFSv3/v4由於通過網路。下面簡單介紹以下NFS存儲適用的兩個場景,當然,還有更多的場景適合使用文件存儲,本文不一一列出。
Web 服務
前端面向終端用戶的服務由多台web伺服器提供,多台伺服器需要共享文件存儲,文件系統、文件命名約定和許可權等符合應用系統需求。
媒資管理
媒體行業由於其工作流和媒資是一直變化的,很多用戶使用多雲或混合雲,媒體的剪輯、編輯在本地進行,存儲和分發在雲端,由於文件存儲可以和現有的系統輕松的集成,因此,很多用戶將文件存儲用於媒資管理。
Windows環境下的NFS文件服務的搭建
選擇Windows系統搭建NFS協議文件存儲系統的優勢如下:
系統交付後由用戶進行維護,用戶對Windows系統熟悉;
部分應用系統只能訪問文件存儲;
微軟的SMB協議是面向網路連接的共享協議,對網路傳輸的可靠性要求高,常使用TCP/IP;NFS是獨立於傳輸的,可使用TCP或UDP,同時考慮後期有linux系統擴容需求,故選擇NFS協議。
京東雲提供Linux環境的文件存儲服務,無需另行搭建。(詳見https://www.jdcloud.com/cn/procts/cloud-file-service)
本設計的優勢:
共享訪問-您在同一子網內的多台雲主機可以共享同一個雲文件服務中的文件存儲系統。對於多個應用實例需要共享通用數據源的場景,特別適合使用雲文件服務實現。
易於使用-支持標準的NFS協議,提供全託管的服務,無需修改應用,通過標準的文件系統掛載步驟即可實現無縫集成。極大降低遷移成本,簡化雲上項目開發。
穩定可靠-本系統存儲基於京東雲雲硬碟,採用3副本冗餘存儲,提供超強的穩定性和可靠性,滿足應用服務對文件系統的可用性和可靠性需求。
易於擴展-本系統存儲基於京東雲雲硬碟,可根據業務需求進行存儲空間的擴展。
一、創建NFS服務主機
1、創建實例
在京東雲上創建一台雲主機,作為NFS伺服器;NFS服務要和已有雲資源創建在同一區域,同一VPC中。
登錄京東雲控制台,選擇彈性計算-雲主機-實例,選擇創建實例所屬地域,點擊「創建」按鈕,進入雲主機購買頁面。
2、選擇計費模式
包年包月和按配置計費,包年包月按一個正月進行購買付費,按配置計費按照實際使用的時長(精確至秒)每小時進行扣費。
3、地域與可用區選擇
在此步驟仍可以選擇實例對應的地域(華北-北京、華南-廣州、華東-宿遷及華東-上海)及可用區,請注意「不同地域資源內網不互通,創建之後不可更改」,如果所選地域限額已滿,可以通過提交工單提升限額。
4、創建方式選擇
提供三種創建方式 自定義創建、使用實例模板創建、在高可用組內創建,後兩種需要您預先創建好實例模板和高可用組,我們使用保持默認選項「自定義創建」。
5、選擇windows系統鏡像
鏡像分為雲硬碟系統盤鏡像及本地盤系統盤鏡像,前者僅支持創建系統盤為雲硬碟的實例,後者僅支持創建系統盤為本地盤的實例。因為搭建windows系統環境的NFS存儲,故鏡像選擇官方-windows server-windows server 2012 R2標准版。
6、選擇實例規格
實例的規格支持用戶自定義選擇,從最小的1核1G(如g.s1.micro)到72C576GB(如m.n2.18xlarge),用戶可以根據不同業務場景選擇實例規格及相應配置。考慮到NFS對主機計算性能要求不高,選擇2核4G規格主機。
7、配置NFS存儲
雲主機數據盤:數據盤為NFS系統存儲盤,可以根據實際業務需要選擇容量。(此處選擇20G為例)
8、配置實例網路
選擇私有網路及子網:VPC子網選擇與需要訪問NFS存儲的雲主機所在的VPC。
選擇內網IP分配方式:如對內網IP地址沒有特殊要求,可以不指定由系統自動在子網可用網段內分配,如需指定請在提示範圍內輸入,系統會校驗IP是否可用。須注意的是,若選擇自定義內網IP地址,則無法批量創建實例。
9、選擇安全組
實例在創建時必須綁定一個安全組,若當前地域下未創建自定義安全組,可以在系統創建的三個默認安全組中選擇一個綁定(每個私有網路創建成功之後都會自動創建三個默認安全組),也可以通過快速入口前往安全組頁面創建安全組。由於官方鏡像系統內防火牆默認關閉,建議綁定僅開放22埠(Linux)或3389埠(Windows)的安全組,實例創建之後再根據訪問需求創建新的安全組並綁定。
10、配置公網帶寬
帶寬計費方式:京東雲提供按固定帶寬和按使用流量兩種帶寬計費類型的彈性公網IP,按固定帶寬計費按購買時設置的帶寬上限值付費,而與實際訪問公網所用帶寬無關,按使用流量計費則根據您實時訪問公網的實際流量計費。
線路:彈性公網IP線路分為:BGP和非BGP,若您需要更快更高效的網路接入請選用BGP。
帶寬范圍:1Mbps~200Mbps。在創建主機過程中可以暫不購買公網IP,完成主機創建後,再進行綁定。
NFS存儲如果只供VPC內雲主機使用,可以不購買公網IP和帶寬。
11、設置實例名稱、描述
您需要設置創建的主機名,名稱不可為空,只支持中文、數字、大小寫字母、英文下劃線「 _ 」及中劃線「 - 」,且不能超過32字元,如果為批量創建購買,名稱以「xxx1」、「xxx2」依次顯示。同時支持為實例添加描述,描述允許為空,若添加長度不能超過256字元。
12、設置密碼
可以選擇「立即設置」密碼,也可以選擇「暫不設置」(系統會以簡訊和郵件方式發送默認密碼),密碼除了用於SSH登錄實例時的密碼,也是控制台通過VNC登錄實例的密碼。
確認雲主機數量及購買時長 購買數量受限該地域您雲主機、雲硬碟、公網IP限額以及所選子網剩餘IP數量,若限額不夠,可通過提交工單提升限額。若購買包年包月實例,則需要設置購買時長,最短為1個月,最長為2年,支付十個月費用即可享受一年服務。若需要更長服務時長請提交工單。
點擊確認後,返回到控制台,顯示創建中,待狀態為運行,NFS服務主機創建完畢。
13、登陸雲主機
14、添加數據盤
打開,開始菜單-伺服器管理器-文件和存儲服務-磁碟,如下圖:
選擇數據硬碟,右鍵選擇新建卷,文件格式為NTSF
二、建立NFS服務
1、安裝NFS伺服器端組件
打開,開始菜單-伺服器管理器」,在主頁儀錶板中單擊「添加角色和功能」,如下圖所示。
在「開始之前」對話框中,會顯示配置成NFS伺服器必要的前提步驟,請按文字介紹的注意事項確認一下,如果沒有問題的話,可以單擊「下一步」,如下圖所示:
在「安裝類型」對話框中,選擇「基於角色或基於功能的安裝」,然後單擊「下一步」,如下圖所示:
在「伺服器選擇」對話框中,選擇「從伺服器池中選擇伺服器」,然後單擊「下一步」:
在「伺服器角色」對話框中,選擇「文件和存儲服務」中「NFS伺服器」,然後單擊「下一步」,如下圖所示:
繼續單擊「下一步」,如下圖所示:
在「確認」對話框中,可以看到我們從第一步到最後一步選擇的參數等信息,如果有要修改的地方,可以單擊「上一步」返回修改,確認沒有問題的話,可以單擊「安裝」,如下圖所示:
至此,Windows系統的NFS服務端安裝完畢,根據提示重啟伺服器。
2、創建共享服務
NFS服務端安裝完畢,回到伺服器管理器,選擇文件和存儲服務
選擇 共享-啟動新加共享向導
選擇「NFS共享-快速」
選擇數據盤,設置共享名稱
選擇「身份驗證」相關配置,如下圖所示:
設置共享許可權,許可權請根據實際需要設置
創建完畢,顯示」已成功創建共享「,如下圖所示:
3、設置共享文件夾
在要設定共享的文件夾屬性中,選擇「NFS共享」欄位,點擊「管理NFS共享」, 在「NFS高級共享」對話框中,選擇並勾選「共享此文件夾」:
返回伺服器管理器,共享對話框中,可以看到剛才新建的文件夾共享已經成功
參考資料:
1、文件存儲、塊存儲還是對象存儲?redhat官網
2、塊存儲、文件存儲、對象存儲這三者的本質差別是什麼?.知乎.2016-1-1[引用日期2017-10-04]
(https://ke..com/reference/18736489/a856jWYROoQogtX1hq-v--)
3、今非昔比:塊存儲的復雜度提高 .TechTarget存儲[引用日期2015-10-21](https://ke..com/reference/18736489/_rJK0l8aRaFmmhbzPj4Kk-4OMDrn9AGlEt1D-YeUws8wnhuYuc7rJUcaI-B0fg)
點擊"京東雲"了解更多詳情
❽ 基於mogileFS搭建分布式文件系統--海量小文件的存儲利器
1.簡介
分布式文件系統(Distributed File System)是指文件系統管理的物理存儲資源不一定直接連接在本地節點上,而是通過計算機網路與節點相連。分布式文件系統的設計基於客戶機/伺服器模式。一個典型的網路可能包括多個供多用戶訪問的伺服器。另外,對等特性允許一些系統扮演客戶機和伺服器的雙重角色。例如,用戶可以「發表」一個允許其他客戶機訪問的目錄,一旦被訪問,這個目錄對客戶機來說就像使用本地驅動器一樣。
當下我們處在一個互聯網飛速發展的信息 社會 ,在海量並發連接的驅動下每天所產生的數據量必然以幾何方式增長,隨著信息連接方式日益多樣化,數據存儲的結構也隨著發生了變化。在這樣的壓力下使得人們不得不重新審視大量數據的存儲所帶來的挑戰,例如:數據採集、數據存儲、數據搜索、數據共享、數據傳輸、數據分析、數據可視化等一系列問題。
傳統存儲在面對海量數據存儲表現出的力不從心已經是不爭的事實,例如:縱向擴展受陣列空間限制、橫向擴展受交換設備限制、節點受文件系統限制。
然而分布式存儲的出現在一定程度上有效的緩解了這一問題,之所以稱之為緩解是因為分布式存儲在面對海量數據存儲時也並非十全十美毫無壓力,依然存在的難點與挑戰例如:節點間通信、數據存儲、數據空間平衡、容錯、文件系統支持等一系列問題仍處在不斷摸索和完善中。
2.分布式文件系統的一些解決方案
Google Filesystem適合存儲海量大個文件,元數據存儲與內存中
HDFS(Hadoop Filesystem)GFS的山寨版,適合存儲大量大個文件
TFS(Taobao Filesystem)淘寶的文件系統,在名稱節點上將元數據存儲與關系資料庫中,文件數量不在受限於名稱節點的內容空間,可以存儲海量小文件LustreOracle開發的企業級分布式系統,較重量級MooseFS基於FUSE的格式,可以進行掛載使用MogileFS
擅長存儲海量的小數據,元數據存儲與關系型資料庫中
1.簡介
MogileFS是一個開源的分布式文件系統,用於組建分布式文件集群,由LiveJournal旗下DangaInteractive公司開發,Danga團隊開發了包括 Memcached、MogileFS、Perlbal等不錯的開源項目:(註:Perlbal是一個強大的Perl寫的反向代理伺服器)。MogileFS是一個開源的分布式文件系統。
目前使用 MogileFS 的公司非常多,比如國外的一些公司,日本前幾名的公司基本都在使用這個.
國內所知道的使用 MogileFS 的公司有圖片託管網站 yupoo又拍,digg, 土豆, 豆瓣,1 號店, 大眾點評,搜狗,安居客等等網站.基本很多網站容量,圖片都超過 30T 以上。
2.MogileFS特性
1) 應用層提供服務,不需要使用核心組件
2)無單點失敗,主要有三個組件組成,分為tracker(跟蹤節點)、mogstore(存儲節點)、database(資料庫節點)
3)自動復制文件,復制文件的最小單位不是文件,而是class
4)傳輸中立,無特殊協議,可以通過NFS或HTTP實現通信
5)簡單的命名空間:沒有目錄,直接存在與存儲空間上,通過域來實現
6)不用共享任何數據
3.MogileFS的組成
1)Tracker--跟蹤器,調度器
MogileFS的核心,是一個調度器,mogilefsd進程就是trackers進程程序,trackers的主要職責有:刪除數據、復制數據、監控、查詢等等.這個是基於事件的( event-based ) 父進程/消息匯流排來管理所有來之於客戶端應用的交互(requesting operations to be performed), 包括將請求負載平衡到多個"query workers"中,然後讓 mogilefs的子進程去處理.
mogadm,mogtool的所有操作都要跟trackers打交道,Client的一些操作也需要定義好trackers,因此最好同時運行多個trackers來做負載均衡.trackers也可以只運行在一台機器上,使用負載均衡時可以使用搞一些簡單的負載均衡解決方案,如haproxy,lvs,nginx等,
tarcker的配置文件為/etc/mogilefs/mogilefsd.conf,監聽在TCP的7001埠
2)Database--資料庫部分
主要用來存儲mogilefs的元數據,所有的元數據都存儲在資料庫中,因此,這個數據相當重要,如果資料庫掛掉,所有的數據都不能用於訪問,因此,建議應該對資料庫做高可用
3)mogstored--存儲節點
數據存儲的位置,通常是一個HTTP(webDAV)伺服器,用來做數據的創建、刪除、獲取,任何 WebDAV 伺服器都可以, 不過推薦使用 mogstored . mogilefsd可以配置到兩個機器上使用不同埠… mogstored 來進行所有的 DAV 操作和流量,IO監測, 並且你自己選擇的HTTP伺服器(默認為 perlbal)用來做 GET 操作給客戶端提供文件.
典型的應用是一個掛載點有一個大容量的SATA磁碟. 只要配置完配置文件後mogstored程序的啟動將會使本機成為一個存儲節點.當然還需要mogadm這個工具增加這台機器到Cluster中.
配置文件為/etc/mogilefs/mogstored.conf,監聽在TCP的7500埠
4.基本工作流程
應用程序請求打開一個文件 (通過RPC 通知到 tracker, 找到一個可用的機器). 做一個 「create_open」 請求.
tracker 做一些負載均衡(load balancing)處理,決定應該去哪兒,然後給應用程序一些可能用的位置。
應用程序寫到其中的一個位置去 (如果寫失敗,他會重新嘗試並寫到另外一個位置去).
應用程序 (client) 通過」create_close」 告訴tracker文件寫到哪裡去了.
tracker 將該名稱和域命的名空間關聯 (通過資料庫來做的)
tracker, 在後台, 開始復制文件,知道他滿足該文件類別設定的復制規則
然後,應用程序通過 「get_paths」 請求 domain+key (key == 「filename」) 文件, tracker基於每一位置的I/O繁忙情況回復(在內部經過 database/memcache/etc 等的一些抉擇處理), 該文件可用的完整 URLs地址列表.
應用程序然後按順序嘗試這些URL地址. (tracker』持續監測主機和設備的狀態,因此不會返回死連接,默認情況下他對返回列表中的第一個元素做雙重檢查,除非你不要他這么做..)
1.拓撲圖
說明:1.用戶通過URL訪問前端的nginx
2.nginx根據特定的挑選演算法,挑選出後端一台tracker來響應nginx請求
3.tracker通過查找database資料庫,獲取到要訪問的URL的值,並返回給nginx
4.nginx通過返回的值及某種挑選演算法挑選一台mogstored發起請求
5.mogstored將結果返回給nginx
6.nginx構建響應報文返回給客戶端
2.ip規劃
角色運行軟體ip地址反向代理nginx192.168.1.201存儲節點與調度節點1
mogilefs192.168.1.202存儲節點與調度節點2
mogilefs192.168.1.203資料庫節點
MariaDB192.168.1.204
3.資料庫的安裝操作並為授權
關於資料庫的編譯安裝,請參照本人相關博文http://wangfeng7399.blog.51cto.com/3518031/1393146,本處將不再累贅,本處使用的為yum源的安裝方式安裝mysql
4.安裝mogilefs. 安裝mogilefs,可以使用yum安裝,也可以使用編譯安裝,本處通過yum安裝
5.初始化資料庫
可以看到在資料庫中創建了一些表
6.修改配置文件,啟動服務
7.配置mogilefs
添加存儲主機
添加存儲設備
添加域
添加class
8.配置192.168.1.203的mogilefs 。切記不要初始化資料庫,配置應該與192.168.1.202一樣
9.嘗試上傳數據,獲取數據,客戶端讀取數據
上傳數據,在任何一個節點上傳都可以
獲取數據
客戶端查看數據
我們可以通過任何一個節點查看到數據
要想nginx能夠實現對後端trucker的反向代理,必須結合第三方模塊來實現
1.編譯安裝nginx
2.准備啟動腳本
3.nginx與mofilefs互聯
查看效果
5.配置後端truckers的集群
查看效果
大功告成了,後續思路,前段的nginx和資料庫都存在單點故障,可以實現高可用集群
❾ 分布式存儲選型
雲計算場景中, 通常使用對象存儲系統來做保存文件, 例如用戶上傳的圖片, 視頻, 文檔等, 或是虛擬鏡像, iso鏡像的內部數據. 公有雲廠商通常還會基於對象存儲提供SDN服務, 用來加速用戶數據的訪問. 而塊存儲則作為一種補充, 提供獨立於虛擬機的(虛擬機刪除數據不丟失), 方便擴展的存儲設備.
對象存儲由於是通過網路API提供服務的, 所以可以跨集群訪問.
集群內文件共享的方案非常多, windows上的共享磁碟, linux 上的samba, nfs 等項目都提供這樣的功能. 集群文件系統通常會和NAS進行對比, 以體現其在成本方面的優勢. 但是, 由於傳統的基於共享磁碟的集群文件系統在可擴展性方面比較弱, 有催生的分布式的集群文件系統, moosefs 就是典型的分布式集群文件系統.
集群文件系統也可以用來存儲虛擬機鏡像, 已達到存儲節點和計算節點的分離.
直觀上看, 對象存儲系統與業務系統是平行關系, 而集群文件系統則通常是業務系統的一個組成部分.
分布式存儲目前主要分兩大類: 塊存儲(文件系統, 裸設備), 對象存儲. 像 NFS 這樣只提供, 只提供簡單磁碟共享, 缺乏擴展能力的項目, 只能叫集群存儲, 而不能算分布式存儲.
考慮到未來分布式存儲的可能有多種應用場景, 所以我們更關注各個方案的功能是否完備. 以下是本次選型的標准.
|-|Ceph |Taobao TFS |Openstack Swift |MooseFS |
|----|----|----|----|----|----|
|MetaData冗餘[1] |YES[選舉] |YES[主從] |NO[3] |YES[主從]
|數據冗餘[2] |YES |YES |YES |YES
由於塊存儲是直接掛載到操作系統上使用的, 除了使用軟體本身的配額管理工具, 還可以使用操作系統的配個管理工具來實現基於用戶的容量配額管理.
根據前述選項標准, 這里推薦部署Ceph系統.
❿ 分布式文件系統的NFS介紹
(NFS)(Network File System)是個分布式的客戶機/伺服器文件系統。NFS的實質在於用戶間計算機的共享。用戶可以聯結到共享計算機並像訪問本地硬碟一樣訪問共享計算機上的文件。管理員可以建立遠程系統上文件的訪問,以至於用戶感覺不到他們是在訪問遠程文件。
NFS是個到處可用和廣泛實現的開放式系統。 允許用戶象訪問本地文件一樣訪問其他系統上的文件。提供對無盤工作站的支持以降低網路開銷。
簡化應用程序對遠程文件的訪問使得不需要因訪問這些文件而調用特殊的過程。
使用一次一個服務請求以使系統能從已崩潰的伺服器或工作站上恢復。
採用安全措施保護文件免遭偷竊與破壞。
使NFS協議可移植和簡單,以便它們能在許多不同計算機上實現,包括低檔的PC機。
大型計算機、小型計算機和文件伺服器運行NFS時,都為多個用戶提供了一個文件存儲區。工作站只需要運行TCP/IP協議來訪問這些系統和位於NFS存儲區內的文件。工作站上的NFS通常由TCP/IP軟體支持。對DOS用戶,一個遠程NFS文件存儲區看起來是另一個磁碟驅動器盤符。對Macintosh用戶,遠程NFS文件存儲區就是一個圖標。 伺服器目錄共享 伺服器廣播或通知正在共享的目錄,一個共享目錄通常叫做出版或出口目錄。有關共享目錄和誰可訪問它們的信息放在一個文件中,由操作系統啟動時讀取。
客戶機訪問 在共享目錄上建立一種鏈接和訪問文件的過程叫做裝聯(mounting),用戶將網路用作一條通信鏈路來訪問遠程文件系統。
NFS的一個重要組成是虛擬文件系統(VFS),它是應用程序與低層文件系統間的介面。 close文件關閉操作
create 文件生成操作
fsync將改變保存到文件中
getattr 取文件屬性
link 用另一個名字訪問一個文件
lookup 讀目錄項
mkdir建立新目錄
open 文件打開操作
rdwr 文件讀寫操作
remove 刪除一個文件
rename 文件改名
rmdir刪除一目錄
setattr 設置文件屬性 Andrew File System(AFS)Andrew文件系統(AFS)
AFS是專門為在大型分布式環境中提供可靠的文件服務而設計的。它通過基於單元的結構生成一種可管理的分布式環境。一個單元是某個獨立區域中文件伺服器和客戶機系統的集合,這個獨立區域由特定的機構管理。通常代表一個組織的計算資源。用戶可以和同一單元中其他用戶方便地共享信息,他們也可以和其他單元內的用戶共享信息,這取決於那些單元中的機構所授予的訪問許可權。
文件伺服器進程 這個進程響應客戶工作站對文件服務的請求,維護目錄結構,監控文件和目錄狀態信息,檢查用戶的訪問。
基本監察(BOS)伺服器進程 這個進程運行於有BOS設定的伺服器。它監控和管理運行其他服務的進程並可自動重啟伺服器進程,而不需人工幫助。
卷宗伺服器進程 此進程處理與卷宗有關的文件系統操作,如卷宗生成、移動、復制、備份和恢復。
卷宗定位伺服器進程 該進程提供了對文件卷宗的位置透明性。即使卷宗被移動了,用戶也能訪問它而不需要知道卷宗移動了。
鑒別伺服器進程 此進程通過授權和相互鑒別提供網路安全性。用一個「鑒別伺服器」維護一個存有口令和加密密鑰的鑒別資料庫,此系統是基於Kerberos的。
保護伺服器進程 此進程基於一個保護資料庫中的訪問信息,使用戶和組獲得對文件服務的訪問權。
更新伺服器進程 此進程將AFS的更新和任何配置文件傳播到所有AFS伺服器。
AFS還配有一套用於差錯處理,系統備份和AFS分布式文件系統管理的實用工具程序。例如,SCOUT定期探查和收集AFS文件伺服器的信息。信息在給定格式的屏幕上提供給管理員。設置多種閾值向管理者報告一些將發生的問題,如磁碟空間將用完等。另一個工具是USS,可創建基於帶有欄位常量模板的用戶帳戶。Ubik提供資料庫復制和同步服務。一個復制的資料庫是一個其信息放於多個位置的系統以便於本地用戶更方便地訪問這些數據信息。同步機制保證所有資料庫的信息是一致的。

