檔案共享之nfs

技術小牛人發表於2017-11-23

在伺服器共享中常用的服務有:

ftp伺服器端:linux  windows   客戶端:linux  windows  範圍:內網  外網

nfs伺服器端:linux客戶端:linux範圍:內網  外網

samba伺服器端:linux  windows   客戶端:linux  windows範圍:內網


檔案系統:

檔案系統是對一個儲存裝置上的資料和元素進行組織的一種機制

 

nfs作用:共享儲存,保證資料一致性

優點:簡單,容易上手,資料是在檔案系統之上的

2方便,部署快速,維護簡單

3可靠,從軟體層面上,資料可靠性高,經久耐用

 

侷限;

1存在單點故障,要用負載均衡高可用方案彌補

2在高併發的場合,nfs效率性有效,一般幾千萬pv的網站都不是瓶頸

3客戶端認證事基於ip和主機名的,安全性一般

4nfs資料是明文的,對資料完整性不作驗證

5多臺機器掛載nfs伺服器時候,連結管理維護麻煩,尤其nfs服務端出問題後,所有客戶端都掛載狀態

 

 

 

etc/exports檔案配置格式

nfs共享目錄  nfs客戶端地址1(引數1,引數2….)客戶端地址2(引數1..引數2

nfs一定要用絕對路徑,注意許可權,nfs地址可以是單獨ip,網段,域名,也可以用*匹配

同步:傳送端等待接收端收到訊息後才會鍛掉

非同步:傳送端不會等接收端來接收,生產中必須用到的,入口網站中必須用到

 

dfs生產重要技巧

1確保所有伺服器對nfs共享目錄具備相同的許可權

a all——squash把所有客戶端都壓縮成匿名使用者

b所有的客戶端和服務端都需要有一個相同的uidgid ,即nfsnobody

 

實現多臺客戶端同時候掛一臺server端,server使用者和組都是同一個名稱lushneg,操作步驟

1建立一個nfs共享使用者,所有機器都存在並且uid gid相同

2cat >>/etc/exports <<eof

/tmp/data 172.16.10.0/24(rw,sync,all_squash,anonuid=555,anongid=555)

3showmount -e 172.16.10.10

df -h

mount -t nfs 172.16.10.10:/tmp/data /mnt/data

 

掛載開機自啟動:

echo “/bin/mount -t nfs 172.16.10.10:/tmp/data mnt/data” >>/etc/rc.local

缺點:偶爾開機掛載不上,工作中除了開機自啟動配置,對掛載點監控

 nfs網路檔案系統不要放到fstab

1fstab優先於網路啟動,此時還連不上nfs伺服器

2即使是本地檔案系統,也要注意,那麼客戶端開機後可能會導致無法啟動的風險,fstab最後

兩列,要設定0 0,否則會有導致無法啟動伺服器的問題

 

nfs rpc服務的啟動命令和掛載命令都放入/etc/rc.local.然後用監控軟體監控開機後的狀態

經驗:為什麼要把所有開機當做伺服器的檔案,所有伺服器啟動配置都放在檔案裡,做好註釋,

或者寫好啟動指令碼都用chkconfig管理

現實生活中太多這多沒交接好,根本就不知道這臺電腦是做什麼用的,連重啟都不敢,更別說更改了

 

fstab修改錯誤導致系統無法啟動故障修復案例

維護模式

mount -o rw,remount

然後修改/etc/fstab

 

實際掛載優化

mount -t nfs -o noatime,nodiratime,nosuid,noexec 172.16.10.10:/tmp/data /mnt/data

非效能引數越多,速度會越慢

 

需要退出掛載目錄在進行解除安裝,或者是nfs server當機了,需要強制解除安裝 mount -lf/mnt/dev


故障解決步驟

1)服務端一定要開啟兩個服務 rpc nfs

2)客戶端一定要開啟rpc服務

 

 

nfs 至少啟動兩個程式,一個rpc服務,一個nfs服務

1)先開啟rpc服務(中介)

2)再啟動nfs服務,啟動後會向rpc服務註冊啟動的埠(房源)

3)客戶向rpc請求nfs服務

4rpc返回埠給租客

5)拿著地址埠請求傳輸資料

 

Nfs實操演示

 

服務端環境準備

nfsserver  172.16.10.10

nfsclient  172.16.10.20

 

服務端和客戶端都要安裝

nfs服務需要安裝下面的軟體包

nfs-utils portmap rpcbind

寫文件一定要有這幾步基本資訊

[root@localhost ~]# cat /etc/redhat-release

CentOS release 6.5 (Final) 作業系統版本資訊

[root@localhost ~]# uname -r

[root@localhost ~]# uname -r  核心版本資訊

2.6.32-431.el6.x86_64

[root@localhost ~]# uname -m

x86_64

 

 

[root@localhost ~]# rpm -qa nfs-utils  rpcbind

rpcbind-0.2.0-11.el6.x86_64

nfs-utils-1.2.3-39.el6.x86_64

 

如果沒有,yum -y install nfs-utils  rpcbind

 

 

服務端操作:

[root@localhost ~]# /etc/init.d/rpcbind start

[root@localhost ~]# ps -ef |grep rpc

rpc         977      1  0 Mar26 ?        00:00:00 rpcbind

rpcuser     995      1  0 Mar26 ?        00:00:00 rpc.statd

root       2167   2115  0 02:52 pts/0    00:00:00 grep rpc

[root@localhost ~]# rpcinfo -p localhost  //檢視rpc有無房源

 

[root@localhost ~]# /etc/init.d/nfs start   //相當於向中介提供房源

啟動 NFS 服務:                                            [確定]

關掉 NFS 配額:                                            [確定]

啟動 NFS mountd:                                          [確定]

啟動 NFS 守護程式:                                        [確定]

正在啟動 RPC idmapd:   

 

#nfs  rpc為開機自啟動,設定好之後記得檢查開機自啟動狀態

[root@localhost ~]# chkconfig nfs on

[root@localhost ~]# chkconfig rpcbind on

[root@localhost ~]# chkconfig –list nfs

nfs             0:關閉  1:關閉  2:啟用  3:啟用  4:啟用  5:啟用  6:關閉

[root@localhost ~]# chkconfig –list rpcbind

rpcbind         0:關閉  1:關閉  2:啟用  3:啟用  4:啟用  5

 

 

客戶端操作,只需要啟動rpc服務即可

[root@localhost ~]# /etc/init.d/rpcbind start

[root@localhost ~]# chkconfig rpcbind on

[root@localhost ~]# chkconfig –list nfs

nfs             0:關閉  1:關閉  2:啟用  3:啟用  4:啟用  5:啟用  6:關閉

 

sync表示把資料從快取寫到磁碟裡面 async資料寫入到快取

服務端操作配置服務

[root@server ~]# ll /etc/exports

-rw-r–r–. 1 root root 0 1月  12 2010 /etc/exports

[root@server ~]# cat /etc/exports

[root@server ~]# mkdir /data   //建立共享目錄

                           

[root@server ~]# vim /etc/exports   //編輯配置檔案,往裡面寫配置

 

#shared data for bbs luliechu at 20170327   //這一行註釋

/data 172.16.10.0/24(rw,sync)

data表示要共享的目錄  172.16.10.0表示可以訪問的網段  rw讀寫  sync表示把資料從快取寫到磁碟裡面

 

 

[root@server ~]# cat /etc/exports      //檢查

#shared data for bbs luliechu at 20170327

/data 172.16.10.0/24(rw,sync)

 

 

[root@server ~]# /etc/init.d/nfs reload  //配置完配置檔案後平滑重啟(提高使用者體驗)nfs服務

[root@server ~]# showmount -e localhost  //在本機上檢查是否共享出來

Export list for localhost:

/data 172.16.10.0/24                       //表示共享成功

 

 

在客戶端上檢查

[root@server ~]# showmount -e 172.16.10.10  //在本機上檢查是否共享出來

Export list for localhost:

/data 172.16.10.0/24                       //表示共享成功

 

 

然後掛載

df -h 檢查有哪些磁碟掛載了

mount -t nfs 172.16.10.10:/data /mnt   //掛載  ,當然於Windows的磁碟對映

df -h 檢查有哪些磁碟掛載了

 

注意本地目錄許可權也要可寫可讀才能真正可讀可寫

服務端上操作:

[root@localhost ~]# cat /var/lib/nfs/etab  //檢視這個檔案可以看到nfs使用者id

/data   172.16.10.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,anonuid=65534,anongid=65534)

[root@localhost ~]# grep 65534 /etc/passwd   //檢視對應id號的使用者名稱

nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin

[root@localhost ~]# ls -ld /data   //檢視共享目錄許可權

drwxr-xr-x. 2 root root 4096 3月  28 06:13 /data

[root@localhost ~]# chown  nfsnobody   -R /data      //屬於屬於nfsnobpdy,讓遠端使用者可寫

[root@localhost ~]# ls -ld /data

drwxr-xr-x. 2 nfsnobody root 4096 3月  28 06:13 /data

 

測試效果:

[root@server ~]# ls /data

test1  test3                  北大青鳥第2章學習資料

test2  北大青鳥第1章學習資料  北大青鳥第3章學習資料

[root@server ~]#

 

 

[root@client ~]# ls /mnt

test1  test3                  北大青鳥第2章學習資料

test2  北大青鳥第1章學習資料  北大青鳥第3章學習資料

 

 

–end–

本文轉自    探花無情   51CTO部落格,原文連結:http://blog.51cto.com/983865387/1917718


相關文章