一、nfs介紹
? ? ? ? ?NFS是Network File System的縮寫,是網絡文件系統,它的主要功能是通過網絡(一般是局域網)讓不同的主機系統之間可以共享文件或目錄,主要存儲用戶上傳的圖片附件等信息。
nfs共享文件實現原理
運維架構師能力要求?1、nfs工作原理
nfs服務端
① 先啟動rpc服務 /etc/init.d/rpcbind start
② 再啟動nfs服務 /etc/init.d/nfs start
③ ?nfs向rpc注冊端口和功能,端口號為111
hdfs架構圖、nfs客戶端
① 先啟動rpc服務 /etc/init.d/rpcbind start
② mount命令進行掛載
③ 向對端rpcbind請求nfs服務端口,nfs服務端返回端口信息
2、RPC服務介紹
hdfs架構。? ? ? 相當于租房中的中介,NFS服務啟動會產生多個進程和多個端口,不便于客戶端進行連接訪問,通過RPC服務接收NFS端口信息的注冊,并通過開啟RPC服務生成111端口,提供客戶端進行訪問
二、nfs服務部署
1、nfs服務端
①安裝nfs和rpc服務軟件
rpm -qa nfs-utils rpcbind
yum install nfs-utils rpcbind -y
②修改nfs配置文件
cat >>/etc/exports<<EOF /data 172.16.1.0/24(rw,sync) EOF
運維框架?③啟動rpc、nfs服務
/etc/init.d/rpcbind start
/etc/init.d/nfs start
④創建共享目錄并授權
mkdir /data -p chown -R nfsnobody.nfsnobody /data id nfsnobody
⑤重啟nfs服務
/etc/init.d/nfs reload #平滑重啟
/etc/init.d/nfs restart #強硬重啟
⑥檢查并測試nfs掛載服務
showmount -e 172.16.1.31 #檢查共享目錄列表信息 mount -t nfs 172.16.1.31:/data /mnt
2、nfs客戶端
docker nfs?①安裝nfs和rpc服務軟件
yum install nfs-utils rpcbind -y
②測試nfs共享目錄掛載
mount -t nfs 172.16.1.31:/data /mnt
③卸載目錄
退出共享目錄,再進行卸載 umount /mnt 不退出共享目錄,強制進行卸載 umount -lf /mnt -l Lazy unmount #懶惰的卸載 -f Force unmount #強制的卸載
三、nfs配置文件詳解
1、nfs授權客戶端地址配置說明
nfs負載均衡、客戶端地址 | 具體地址 | 說明 |
授權單一客戶端訪問NFS | 172.16.1.41 | centos nfs?一般情況,生產環境中此配置不多 |
授權整個網段訪問NFS | 172.16.1.0/24 | 生產環境中最常用的配置,簡單、方便 |
授權整個網段訪問NFS | nfs部署。172.16.1.* | 指定網段的另一種寫法(不推薦使用) |
授權某個域名客戶端訪問 | nfs.oldboyedu.com | 此方法生產中一般情況不常用 |
文件系統?授權整個域名客戶端訪問 | *.oldboyedu.com | 此方法生產中一般情況不常用 |
?
2、nfs權限參數
centos7 nfs搭建?參數名稱 | 參數說明 |
rw ****** | read-write表示可讀寫權限 |
ro | 運維體系架構圖、read-only表示只讀權限 |
sync ****** | 請求或寫入數據時,數據同步寫到nfs-server的硬盤才返回 優點,數據安全不會丟;缺點,性能比不啟用該參數要差 |
async ****** | centos7搭建nfs詳細步驟?寫入數據時先寫到緩沖區,直到硬盤有空檔才會再寫入磁盤,這樣可以提升寫入效率,如果服務器宕機或不正常關機,會損失緩存區中未寫入磁盤的數據 |
no_root_squash | 保持root用戶不進行壓縮 訪問nfs server共享目錄的用戶如果是root的話,它對該目錄有root權限,這個配置原本是為無盤客戶端準備的,用戶應避免使用 |
root_squash | 什么運維?如果訪問nfs server共享目錄的用戶是root,則它的權限將被壓縮成匿名用戶,同時它的UID和GID通常會變成nfsnobody賬號身份 |
all_squash ****** | 對所有訪問的用戶身份壓縮成匿名用戶,同時變成nfsnobody身份 生產中配置NFS的重要技巧: 1、? 確保所有客戶端服務器對NFS共享目錄具備相同用戶訪問權限 a、? all_squash把所有客戶端都壓縮成固定的匿名用戶(UID相同) b、? 就是anonuid,anongid指定的UID和GID的用戶 2、所有的客戶端和服務端都需要有一個相同的UID和GID的用戶,即nfsnobody(UID必須相同) |
anonuid ****** | 指定匿名用戶的UID 這個用戶的UID設置值通常為nfsnobody的UID值,當然也可以自行設置這個UID,但是這個UID必須存在于/etc/passwd中,如多臺web共享一個nfs目錄,通過這個參數可以使得不同的nfs客戶端寫入的數據對所有NFS客戶端保持同樣的用戶權限,即為配置的匿名UID對應用戶權限,一般默認即可 |
anongid ****** | 指定匿名用戶的GID,區別就是把UID(用戶ID)換成GID(組ID) |
四、nfs客戶端掛載參數
參數 | 參數意義 | 系統默認參數 |
suid nosuid | 當掛載的文件系統上有任何SUID的程序時,只要使用nosuid就能夠取消 | suid |
rw ro | 可以指定文件系統是只讀(ro)還是可寫(rw) | rw |
dev nodev | 是否可以保留裝置文件的特殊功能?一般來說只有/dev,才會有特殊的裝置,因此可以選擇nodev | dev |
exec noexec | 是否具有執行文件的權限?如果想要掛載的僅是普通資源數據區(例如:圖片、附件)那么可以選擇noexec | exec |
user nouser | 是否允許普通用戶擁有文件的掛載與卸載功能,如果要保護文件系統,最好不要為普通用戶提供掛載與卸載功能 | nouser |
auto noauto | 這個auto指的是”mount -a”時會不會掛載的項目,如果不需要這個分區隨時掛載,可以設置為noauto | auto |
soft hard | 當nfs客戶端以soft掛載server時,若網絡或server出現問題,造成客戶端和server無法傳輸資料,客戶端就會一直嘗試,直到timeout后顯示錯誤才停止,若用hart模式掛載硬盤時,剛好與soft相反,客戶端一直嘗試連接到server 若server有回應就繼續剛才的操作,若沒有回應客戶端會一直嘗試 ? | hard |
intr | 當使用hart掛載的資源timeout后,若有指定的intr參數,可以在timeout后把它中斷掉,避免出問題時系統整個被nfs鎖死,建議使用intr | 無 |
rsize wsize | 讀出與寫入的區塊大小,這個設置可以影響客戶端與server端傳輸數據的緩沖存儲量,在局域內,客戶端與server都具有足夠的內存,這個值可以設置大一點,提升緩沖區塊提升nfs文件系統的傳輸能力,但也不能設置太大,最好以網絡能夠傳輸最大值為限 | ? |
五、企業nfs共享存儲優化
1、服務端
①硬件:多塊sas/ssd磁盤,raid0/raid5/raid10,網上吞吐量要大,至少千兆(多塊bond)
②NFS服務端配置:/data 172.16.1.0/24(rw,sync,all_squash,anonuid=65534,anongid=65534)
③內核優化,優化nfs讀寫速度
cat >>/etc/sysctl.conf<<EOF net.core.wmem_default=8388608 net.core.rmem_default=8388608 net.core.rmem_max=16777216 net.core.wmem_max=16777216 EOF sysctl -p
2、客戶端
①nfs客戶端掛載參數建議
mount –t nfs –o nosuid,noexec,nodev,noatime,nodiratime,rsize=131072,wsize=131072 172.16.1.31 :/data /mnt
②禁止更新目錄及文件時間戳掛載
mount –t nfs –o noatime,nodiratime 172.16.1.31:/data /mnt
③追求極致,可以使用下面參數掛載
mount –t nfs –o fg,hard,intr,rsize=131072,wsize=131072 172.16.1.31:/data /mnt
④經過實際測試,CentOS6.X默認的掛載參數性能還是不錯的,簡單,方便
mount –t nfs 172.16.1.31:/data /mnt
六、 autofs自動掛載
①設置開機不一定要掛載的目錄,當用的時候才實現自動掛載。
②用戶不使用自動掛載的目錄一段的時間,會自動卸載。(默認時間為5分鐘)
1、客戶端安裝autofs
yum install autofs -y
2、nfs服務端創建共享目錄、授權
mkdir /oldboy -p chown -R nfsnobody.nfsnobody /oldboy/ [root@nfs-nfs01 oldboy]# cat /etc/exports /oldboy 172.19.5.0/24(rw,sync,all_squash) /etc/init.d/nfs reload
3、客戶端修改autofs配置文件
echo "/nfs /etc/auto.nfs" >>/etc/auto.master #主配置文件,/nfs表示掛載點,auto.nfs表示所應用的配置文件 echo "* -rw 172.19.5.31:/oldboy/" >>/etc/auto.nfs #表示要掛載點,也可以指定/nfs,rw表示可讀寫權限 172.19.5.31:/oldboy/ #nfs共享目錄 /etc/init.d/autofs restart #重啟服務
4、nfs服務端查看共享目錄下內容
[root@nfs-nfs01 oldboy]# ll /oldboy/ total 4 -rw-r--r-- 1 nfsnobody nfsnobody 0 Aug 23 16:09 abc.log drwxr-xr-x 2 nfsnobody nfsnobody 4096 Aug 23 14:52 onlylady
5、客戶端autofs查看
[root@test02 nfs]# ll /nfs/ total 0 #此時查看為空 [root@test02 oldboy]# df –h #查看掛載點也沒有 Filesystem Size Used Avail Use% Mounted on /dev/xvda3 6.9G 2.9G 3.7G 44% / tmpfs 497M 12K 497M 1% /dev/shm /dev/xvda1 190M 66M 115M 37% /boot [root@test02 oldboy]# cd /nfs/ #進入掛載點/nfs [root@test02 nfs]# cd oldboy #只有cd進行入到nfs共享目錄oldboy下面,立馬激活,自動掛載 [root@test02 oldboy]# ll total 4 -rw-r--r-- 1 nfsnobody nfsnobody 0 Aug 23 14:52 b.txt drwxr-xr-x 2 nfsnobody nfsnobody 4096 Aug 23 14:52 onlylady [root@test02 oldboy]# df -h Filesystem Size Used Avail Use% Mounted on /dev/xvda3 6.9G 2.9G 3.7G 44% / tmpfs 497M 12K 497M 1% /dev/shm /dev/xvda1 190M 66M 115M 37% /boot 172.19.5.31:/oldboy/ 6.9G 1.7G 4.9G 26% /nfs/oldboy