1. NFS服務介紹
1.1什麼是NFS服務
NFS(Network File System)即網絡檔案系統,它允許網絡中的計算機之間通過TCP/IP網絡共享資源。在NFS的應用中,本地NFS的用戶端應用可以透明地讀寫位于遠端NFS伺服器上的檔案,就像通路本地檔案一樣,也就是說用戶端PC可以挂載NFS伺服器所提供的目錄并且挂載之後這個目錄看起來如同本地的磁盤分區一樣,可以使用cp、cd、mv、rm及df等與磁盤相關的指令。
1.2 NFS服務的優缺點
1.2.1優點
a.節省本地存儲空間将常用的資料存放在一台伺服器可以通過網絡通路
b.簡單容易上手
c.友善部署非常快速,維護十分簡單
1.2.2缺點
a.局限性容易發生單點故障,及server機當機了所有用戶端都不能通路
b.在高并發下NFS效率/性能有限
c.用戶端沒用使用者認證機制,且資料是通過明文傳送,安全性一般(一般建議在區域網路内使用)
d.NFS的資料是明文的,對資料完整性不做驗證
e.多台機器挂載NFS伺服器時,連接配接管理維護麻煩
2. NFS服務工作原理
下面給大家看一幅圖
2.1 NFS原理簡單介紹
NFS Server伺服器上設定/data目錄被分享,而用戶端可以通過internet将/data目錄挂載到本地的挂載點(常用mnt)後,用戶端就可以進入挂載點目錄進行檔案的讀寫。NFS用戶端所開放的端口是随機的我們不知道,那該怎麼辦呢?那是不是就不能進行資料傳輸了呢?答案當然是NO了那就需要另外一種服務幫他配置設定port了,服務是什麼呢?那就是RPC服務了!想知道什麼是RPC服務那就往下看啦~~~
2.2 RPC簡單介紹
2.2.1什麼是rpc服務
RPC(Remote Procedure Call)即遠端過程調用。RPC 最主要的功能就是在指定每個 NFS 功能所對應的 port number ,并且回報給用戶端,讓用戶端可以連結到正确的port上去。
2.2.2 RPC服務原理
a.執行順序:1(注冊端口)--à2(達成協定)-à3(直接建立聯系)--à4(達成協定)--à5(建立連接配接)
b.那為啥rpc能夠找到對應的port呢?這是因為當伺服器在啟動NFS時會随機取用數個port,并且主動的向RPC注冊,是以RPC可以知道每個NFS的port對應的NFS功能,然後RPC又是固定使用port111來監聽用戶端的需求并彙報用戶端的正确的port。
2.2.3 portmap
功能:主要是把RPC程式号轉化為Internet的端口号。
特點:隻在第一次建立連接配接時候幫助網絡應用程式找到正确的port,當當雙方正确連接配接時,端 口就和應用綁定,portmap就無用。相當于媒婆。
2.3NFS Server配置安裝
2.3.1 yum安裝nfs服務rpc服務[[email protected]~]# yum -y install nfs* #nfs*有nfs-utils、nfs-utils-lib、nfs-utils-lib-devel和nfs4-acl-tools
2.3.2檢查rpc服務和nfs服務是否安裝并且安裝成功[[email protected]~]# rpm -qa rpc* nfs*
nfs-utils-lib-1.1.5-11.el6.x86_64
nfs-utils-lib-devel-1.1.5-11.el6.x86_64
rpcbind-0.2.0-11.el6.x86_64
nfs-utils-1.2.3-64.el6.x86_64
nfs4-acl-tools-0.3.3-7.el6.x86_64
2.3.3啟動rpc服務和NFS服務(先啟rpc服務,後啟NFS服務)[[email protected]/]# /etc/init.d/rpcbind start
Startingrpcbind: [ OK ]
[[email protected]/]# /etc/init.d/nfs start
Starting NFSservices: [ OK ]
Starting NFSmountd: [ OK ]
Starting NFSdaemon: [ OK ]
Starting RPCidmapd: [ OK ]
2.3.4設定開機自啟[[email protected]/]# chkconfig nfs on
[[email protected]/]# chkconfig rpcbind on
[[email protected]/]# chkconfig --list |grep -E "nfs|rpcbind"
nfs 0:off 1:off 2:on 3:on 4:on 5:on 6:off
nfslock 0:off 1:off 2:off 3:on 4:on 5:on 6:off
rpcbind 0:off 1:off 2:on 3:on 4:on 5:on 6:off
2.3.5配置共享目錄/data(nfs配置檔案時/etc/exports 預設是空的)[[email protected]~]# vim /etc/exports
#share /datafor nfsclient
/data192.168.137.2/10(rw,sync, no_all_squash)
2.3.6建立共享目錄[[email protected] ~]# mkdir /data
2.3.7平滑加載NFS服務并檢查服務(shoumount -e localhost)[[email protected]~]# /etc/init.d/nfs reload
[[email protected]~]# showmount -e localhost
Export list forlocalhost:
/data192.168.137.2/10
2.4 NFS Client 配置
2.4.1安裝rpc服務[[email protected] ~]# yum -y installrpcbind
2.4.2啟動rpc服務并檢查[[email protected]~]# /etc/init.d/rpcbind start
Startingrpcbind: [ OK ]
[[email protected]~]# ps -ef| grep "rpc"
rpc 1208 1 0 13:38 ? 00:00:00 rpcbind
root 1212 1135 0 13:39 pts/0 00:00:00 grep rpc
2.4.3設定開啟自啟并檢查[[email protected]~]# chkconfig rpcbind on
[[email protected]~]# chkconfig --list rpcbind
rpcbind 0:off 1:off 2:on 3:on 4:on 5:on 6:off
2.4.4挂載并測試
挂載/data到/mnt目錄下[[email protected]/]# mount -t nfs 192.168.137.7:/data /mnt
大家注意了,如果是新的機子的話在這裡可能會出現這樣的一個errormount: wrong fstype, bad option, bad superblock on 192.168.137.7:/data,missing
codepage or helper program, orother error(for several filesystems (e.g. nfs, cifs)you might need a /sbin/mount. helperprogram) In some cases useful info is found insyslog - try dmesg | tail or so
解決方法是安裝一個nfs-utils之後再挂載一次就ok[[email protected] /]# yum -y installnfs-utils
[email protected] /]# mount -t nfs 192.168.137.7:/data/mnt
最後,将挂載指令寫進rc.local
2.5拓展:CDN
2.5.1 CDN簡介
CDN的全稱是ContentDelivery Network,即内容分發網絡
2.5.2 CDN的基本介紹
基本思路:盡可能避開網際網路上有可能影響資料傳輸速度和穩定性的瓶頸和環節,使内容傳輸的更快、更穩定。
簡介:通過在網絡各處放置節點伺服器,這些節點之間會動态的互相傳輸内容,CDN系統能夠根據網絡流量和各節點的連接配接、負載狀況以及到使用者的距離和響應時間等綜合資訊将使用者的請求重新導向離使用者最近的服務節點上。目的是就近取得所需内容,解決Internet網絡擁擠的狀況,提高使用者通路網站的響應速度。也就是:這些節點之間會動态的互相傳輸内容,對使用者的下載下傳行為最優化,并借此減少内容供應者所需要的帶寬成本,改善使用者的下載下傳速度,提高系統的穩定性。
基本原理:依靠部署在各地的邊緣伺服器。通過中心平台的負載均衡、内容分發、排程等功能子產品,就近擷取内容,降低網絡擁塞,提高通路響應速度和命中率。關鍵技術:内容存儲和分發技術。
關鍵點:廣泛采用各種緩存伺服器、全局負載技術
4要件:分布式存儲,負載均衡,網絡請求重定向,内容管理
2.5.3 CDN的優缺點
優點:1.本地cache加速,提高企業站點2.鏡像服務,實作跨營運商網絡加速 3.遠端加速 4.帶寬優化 減少遠端通路的帶寬、分擔網絡流量、減輕 原站點web伺服器負載 5.叢集抗***
缺點:1.實施難度複雜,2投資大
2.5.4CDN的結構圖
3. NFS配置知識介紹
3.1 NFS配置檔案格式
3.1.1 NFS配置檔案:/etc/exports(預設為空)
3.1.2/etc/exports格式
3.1.3權限參數權限參數類型功能
rw可讀寫的權限
ro隻讀的權限
sync(同步)資料同步寫入到記憶體與硬碟中(慢,不容易丢資料)
async(異步)資料會暫存于記憶體當中,而不是寫入硬碟(快,容易丢資料)
no_root_squash用戶端用root使用者通路該共享檔案夾時,root使用者不會映射成匿名使用者(極不安全,不建議使用)
root_squash用戶端用root使用者通路該共享檔案夾是,将root使用者映射為匿名使用者
all_squash不論登入NFS的使用者身份是誰,他的身份都會被壓縮成匿名使用者(nfsnobody)
anonuid=xxx指定NFS伺服器的匿名使用者UID
anongid=xxx指定NFS伺服器的匿名使用者GID
insecureNFS通過1024以上的端口發送
secureNFS通過1024以下的安全TCP/IP端口發送
hide在NFS共享目錄中共享其子目錄
no_hide在NFS共享目錄中共享其子目錄
wdelay如果多個使用者寫入NFS目錄,則歸組寫入(預設)
no_wdelay如果多個使用者寫入NFS目錄,則立即寫入,當使用async時,無需此設定
subtree_check在共享/usr/bin之類的子目錄時,強制NFS檢查父目錄的權限(預設)
no_subtree_check和上面相對,不檢查父目錄權限
3.2 NFS常用指令
指令參數含義
exportfs-a遞增式更新,對/etc/export增加或修改的部分進行挂載和解除安裝
-i指定配置檔案
-r更新配置重新讀取/etc/exports
-u解除安裝指定的目錄
-o使用指定的參數
-v顯示共享詳細情況
showmount-a或--all以host:dir這樣的格式來顯示客戶主機名和挂載點目錄
-d或--directories僅顯示用戶端挂載的目錄名
-e或--exports顯示NFS伺服器輸出清單
-h或--help顯示幫助資訊
-v或--version顯示版本資訊
--no-headers禁止輸出描述頭部資訊
rpcinfo文法:rpcinfo –p [host];rpcinfo
[-n port] –u |-t host program[version]
rpcinfo-p(probe,探測)列出所有在host用portmap注冊的RPC程式,如果沒有指定的host,就查找本地上的RPC程式
-n(port number,端口号)根據-t或者-u,使用編号為port的端口,而不是由portmap指定的端口号
-u(UDP)UDP RPC調用host上程式program的version版本,并報告是否接収到響應
-t(TCP)TCP RPC調用host上程式program的version版本(如果指定的話),并報告是否接收到響應
-b(broadcast,廣播)向程式program的version版本進行RPC廣播,并列出響應的主機
-d(delete,删除)将程式program的version版本從本機的RPC系統資料庫中删除。隻有root特權使用者才可以使用這個選項
mount(nfs)-t指定裝置的檔案系統類型
-r以隻讀方式加載裝置
umount-t僅卸除選項中所指定的檔案系統
-r若無法成功卸除,則嘗試以隻讀的方式重新挂入檔案系統
3.3 NFS出問題解決方法及生産應用場景:
大中小型網站(2000wpv以下)線上應用,當web伺服器少的時候,棄用nfS,同步資料到web伺服器上(上傳資料太快的話,同步延遲較大)
看配置是否有問題à看服務是否開啟à挂載沒反應à挂載沒反應(看ping通?然後看telnet通不通)
這次總結就到此為止,這次總結由于事情較多耽擱了,時間比較長,忘見諒!這次總結感悟:無論做什麼事情隻有動手去做才會發現問題,才能更快的成長起來!要有求甚解的态度才能提高自己!