天天看點

檔案共享之nfs

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

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所有的用戶端和服務端都需要有一個相同的uid和gid ,即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服務

4)rpc傳回端口給租客

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服務即可

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

[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  //在本機上檢查是否共享出來

然後挂載

df -h 檢查有哪些磁盤挂載了

mount -t nfs 172.16.10.10:/data /mnt   //挂載  ,當然于Windows的磁盤映射

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

服務端上操作:

[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

--end--

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

繼續閱讀