NFS網絡文件系統(網絡共享文件服務)
01. 什麼是NFS
NFS是Network File System的縮寫,中文意思是網絡文件系統,
它的主要功能是通過網絡(一般是局域網)讓不同的主機系統之間可以共享文件或目錄
互聯網中小型網站集羣機構後端常用NFS進行數據共享,
如果大型網站,那麼有可能還會用到更復雜的分佈式文件系統,例如:Moosefs(mfs)、GlusterFS、FastDFS
後面會發不關於分佈式存儲的文章(從0基礎學習分佈式存儲)
說明:NFS服務只能應用在linux系統上,FTP samba服務均都支持linux和windows
02. NFS服務應用
NFS是一個共享存儲服務,爲什麼要有共享存儲?
-
實現數據信息的共享(數據庫內容)
- 實現數據信息的一致 (網站代碼、展示內容)
03. 共享存儲方式
硬件實現共享存儲
IBM oracle EMC == 去除IOE
軟件實現共享存儲
NFS FTP samba
04. NFS共享系統原理
- 在NFS服務端創建共享目錄
- 通過mount網絡掛載,將NFS客戶端本地目錄掛載到NFS服務端共享目錄上
- NFS客戶端掛載目錄上創建、刪除、查看數據操作,等價於在服務端進行的創建 刪除 查看操作
05. 什麼是RPC(Remote Procedure Call)
RPC服務相當於中介,NFS相當於房源,NFS客戶端相當於租客
06. NFS的工作流程原理
客戶端 3步操作
服務端 3步操作
07. NFS服務部署過程
服務端部署
第一個歷程碑:檢查NFS RPC服務軟件有沒有安裝
rpm -qa|grep nfs
rpm -qa|grep rpc
說明:默認centos系統沒有安裝nfs與rpc服務軟件
第二個歷程碑:進行yum安裝nfs與rpc服務軟件
yum install -y nfs-utils rpcbind
rpm -ql nfs-utils -ql 參數表示查看安裝好的軟件,都安裝了哪些信息
/etc/rc.d/init.d/nfs -- 啓動腳本命令
/usr/sbin/exportfs -- NFS共享服務的管理命令
/usr/sbin/showmount -- 查看NFS共享列表信息
rpm -ql rpcbind
/etc/rc.d/init.d/rpcbind -- 啓動腳本命令
/usr/sbin/rpcinfo -- 查看NFS註冊信息的
rpm -qf `which ssh` -- 查看某個命令或文件屬於那個大禮包
第三個里程碑:進行NFS配置文件編寫
#NFS服務配置文件
cat >>/etc/exports<<EOF
/data 172.16.1.0/24(rw,sync)
EOF
第四個歷程碑:創建共享目錄
mkdir -p /data
chown -R nfsnobody.nfsnobody /data
說明:nfsnobody用戶是在進行nfs軟件yum安裝時,自動創建的
第五個歷程碑:啓動服務
啓動服務
[root@nfs01 data]# /etc/init.d/rpcbind start
Starting rpcbind: [ OK ]
查看rpc註冊信息
[root@nfs01 data]# rpcinfo -p localhost
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
[root@nfs01 data]#
在啓動nfs服務
[root@nfs01 data]# /etc/init.d/nfs start
Starting NFS services: [ OK ]
Starting NFS quotas: [ OK ]
Starting NFS mountd: [ OK ]
Starting NFS daemon: [ OK ]
Starting RPC idmapd: [ OK ]
[root@nfs01 data]# rpcinfo -p localhost
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
100011 1 udp 875 rquotad
100011 2 udp 875 rquotad
100011 1 tcp 875 rquotad
100011 2 tcp 875 rquotad
100005 1 udp 42079 mountd
100005 1 tcp 32847 mountd
100005 2 udp 41905 mountd
100005 2 tcp 54575 mountd
100005 3 udp 34390 mountd
100005 3 tcp 51479 mountd
100003 2 tcp 2049 nfs
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100227 2 tcp 2049 nfs_acl
100227 3 tcp 2049 nfs_acl
100003 2 udp 2049 nfs
100003 3 udp 2049 nfs
100003 4 udp 2049 nfs
100227 2 udp 2049 nfs_acl
100227 3 udp 2049 nfs_acl
100021 1 udp 63443 nlockmgr
100021 3 udp 63443 nlockmgr
100021 4 udp 63443 nlockmgr
100021 1 tcp 29131 nlockmgr
100021 3 tcp 29131 nlockmgr
100021 4 tcp 29131 nlockmgr
[root@nfs01 data]#
將服務設置爲開機自啓動
# chkconfig rpcbind on
# chkconfig nfs on
rpc和nfs的配置文件
[root@nfs01 data]# chkconfig rpcbind on
[root@nfs01 data]# chkconfig nfs on
[root@nfs01 data]# vim /etc/init.d/rpcbind
[root@nfs01 data]# vim /etc/init.d/nfs
第六個歷程碑:檢查NFS服務配置,以及本地測試掛載
[root@nfs01 data]# showmount -e localhost
Export list for localhost:
/data 172.16.1.0/24
[root@nfs01 data]#
#本地掛載
[root@nfs01 ~]# mount -t nfs 172.16.1.31:/data/ /mnt/
[root@nfs01 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 19G 1.5G 16G 9% /
tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 190M 35M 146M 19% /boot
172.16.1.31:/data/ 19G 1.5G 16G 9% /mnt
[root@nfs01 ~]#
#NFS客戶端配置
第一個里程碑:安裝相應nfs客戶端軟件
yum install -y rpcbind nfs-utils
如果不安裝rpcbind軟件:rpcinfo命令無法使用
如果不安裝nfs-utils軟件:showmount命令無法使用;客戶端掛載的時候無法識別nfs文件系統類型
第二個里程碑:rpcbind服務可以啓動(也可以不啓動)
/etc/init.d/rpcbind start
第三個里程碑:進行掛載前測試
[root@backup ~]# rpcinfo -p 172.16.1.31
[root@backup ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data 172.16.1.0/24
[root@backup ~]#
第四個里程碑:進行共享目錄掛載
[root@backup ~]# mount -t nfs 172.16.1.31:/data /root/date/
[root@backup ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 19G 1.5G 16G 9% /
tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 190M 35M 146M 19% /boot
172.16.1.31:/data 19G 1.5G 16G 9% /root/date
[root@backup ~]#
08、exports配置文件格式
NFS共享目錄 NFS客戶端地址1(參數1,參數2,...) 客戶端地址2(參數1,參數2,...)
或
NFS共享目錄 NFS客戶端地址(參數1,參數2,...)
exports配置文件重要參數說明
no_root_squash --- root用戶不進行映射壓縮
root_squash --- root用戶進行映射壓縮
all_squash --- 所有用戶都進行壓縮
no_all_squash --- 所有用戶都不進行壓縮