Linux NFS存儲服務部署
什麽是NFS
中文意思是網絡文件系統,主要功能是通過網絡(一般是局域網)讓不同主機之間可以共享文件或目錄
NFS屬於本地文件存儲服務
缺點1:
1 2 3 4 5 6 7 |
windows上無法使用
如果想實現windows與Linux系統結合,采用文件數據共享
a. FTP服務
b.samba服務
|
缺點2:
1 2 3 4 5 |
在高並發場景,以及存儲量比較高的場景,對數據安全性要求比較高的場景
需要采用分布式存儲:Moosefs(mfs)、FastDFS
無法在服務器中看到真實的文件信息
|
NFS共享網絡文件系統應用的場景
主要用於存儲web服務器上用戶上傳的數據信息,圖片、附件、視頻、音頻、頭像
NFS文件系統存在意義
實現數據共享,數據統一一致
軟件實現:本地文件系統NFS,分布式文件系統mfs
硬件實現:IBM(服務器 小型機 大型機 存儲 DS V7000 V5000)oracle EMC = 去IOE
NFS網絡文件系統工作方式
在nfs服務器端設置好一個共享目錄/video後,其他有權限訪問nfs服務器端的客戶端都可以將這個共享目錄/video掛載到客戶端本地的某個掛載點(其實就是一個目錄,這個掛載點目錄可以自己隨意指定),圖中兩個nfs客戶端本地掛載點分別為/v/video和/video,不同客戶端的掛載點可以不相同。
客戶端正確掛載完畢後,就可以通過nfs客戶端的掛載點所在的/v/video或/video目錄查看到nfs服務器端/video共享出來的目錄下的所有數據。在客戶端上查看時,nfs服務端的/video目錄就相當於客戶端本地的磁盤分區或目錄,幾乎感覺不到使用上的區別,根據nfs服務器端授予的nfs共享權限以及共享目錄的本地系統權限,只要在指定的nfs客戶端上操作掛載/video或/v/video的目錄,就可以將數據輕松的存取到nfs服務器端上的/video目錄中了。
NFS服務工作流程
想要實現nfs服務,首先啟動的是rpc服務,其次是nfs服務,在nfs服務啟動的時候,會向rpc服務發送nfs服務的註冊端口信息,而客戶端請求nfs服務的時候,就會向rcp服務發送請求,然後rpc服務把端口回復給客戶端(返回的是rpc本身的端口),而客戶端就可以憑借端口請求進行數據傳輸。
NFS服務部署
NFS服務端安裝
首先確認軟件是否已經安裝,沒有安裝就安裝NFS服務相關軟件
[root@nfs ~]# rpm -qa |grep nfs [root@nfs ~]# rpm -qa |grep rpc
如果沒有安裝,就安裝rpcbind nfs-utils服務程序,並進行驗證安裝是否成功
yum install -y nfs-utils rpcbind rpm -qa nfs-utils rpcbind
編寫NFS配置文件
[root@nfs ~]# cat /etc/exports /data 172.16.1.0/24(rw,sync)
配置文件內容介紹
第一部分:/data 指定共享目錄信息(表示本地NFS服務需要共享的目錄信息) 第二部分:172.16.1.0/24 指定一個網段信息,表示允許指定的網段主機掛載到我本地的共享目錄上 第三部分:(rw,sync) 表示定義共享參數信息(表示客戶端訪問目錄的權限設置) rw 表示讀寫,對共享目錄設置的權限; sync 同步參數,數據先寫入到NFS服務器內存中,會立刻同步到磁盤裏面==直接存儲到硬盤
配置文件參數介紹
rw 讀寫 ro 只讀 sync 同步參數,數據先寫入到NFS服務器內存中,會立刻同步到磁盤裏面--優點:安全、缺點:性能差 async 異步,先到內存,不管數據到不到硬盤 no_root_squash 表示root用戶不做映射 root_squash 表示root用戶做映射 all_squash 表示全部用戶做映射
創建共享目錄,並且進行權限設置
[root@nfs ~]# mkdir /data -p [root@nfs ~]# chown -R nfsnobody.nfsnobody /data/ [root@nfs ~]# ll -d /data/ drwxr-xr-x 2 nfsnobody nfsnobody 4096 Oct 12 12:06 /data/ 說明:NFS共享目錄管理用戶為nfsnobody,此用戶不用創建;安裝NFS軟件的時候會自動創建
啟動服務
首先啟動rpc服務
[root@nfs ~]# /etc/init.d/rpcbind start Starting rpcbind: [ OK ]
rpcbind啟動信息查看
[root@nfs ~]# 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 如果沒有啟動NFS服務就這些信息
其次啟動nfs服務 [root@nfs ~]# /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 ]
nfs啟動後查看信息 [root@nfs ~]# 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 41601 mountd 100005 1 tcp 26925 mountd 100005 2 udp 27046 mountd 100005 2 tcp 32480 mountd 100005 3 udp 61072 mountd 100005 3 tcp 39844 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 22703 nlockmgr 100021 3 udp 22703 nlockmgr 100021 4 udp 22703 nlockmgr 100021 1 tcp 26776 nlockmgr 100021 3 tcp 26776 nlockmgr 100021 4 tcp 26776 nlockmgr
查看nfs服務的掛載信息 [root@nfs ~]# showmount -e localhost Export list for 10.0.0.31: /data 172.16.1.0/24 註意:localhost可以換成ip地址 至此:服務端部署配置完成
NFS客戶端部署
首先還是要查看軟件是否已經下載安裝
其實客戶端是不需要安裝nfs的,但是不安裝nfs軟件客戶端就不能用showmount命令,並且無法識別nfs文件系統類型
確認完畢後直接啟動服務,也可以不啟動,不影響。
檢查nfs服務端是否有可以進行共享掛載的目錄
[root@ba ~]# rpm -qf `which showmount` nfs-utils-1.2.3-75.el6.x86_64
[root@ba mnt]# showmount -e 172.16.1.31 Export list for 172.16.1.31: /data 172.16.1.0/24
說明:showmount命令使用,需要安裝nfs-utils軟件
進行nfs客戶端掛載,並設置目錄權限
mount -t nfs 172.16.1.31:/data /mnt chown -R nfsnobody.nfsnobody /mnt
檢查測試 [root@ba mnt]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda3 8.8G 1.5G 6.9G 18% / tmpfs 238M 0 238M 0% /dev/shm /dev/sda1 190M 35M 146M 19% /boot 172.16.1.31:/data 8.8G 1.5G 6.9G 18% /mnt
然後進行處理文件測試
本地nfs客戶端進行 增刪改數據 等價於在nfs服務端共享目錄中進行的操作
客戶端上處理文件
[root@ba mnt]# touch szsn.txt
[root@ba mnt]# ll total 0 -rw-r--r-- 1 nfsnobody nfsnobody 0 Oct 13 11:25 szsn.txt
[root@ba mnt]# echo "矢誌少年" >szsn.txt
[root@ba mnt]# cat szsn.txt
矢誌少年 [root@ba mnt]# \rm -f szsn.txt
服務端上檢查
[root@nfs data]# ll total 0 -rw-r--r-- 1 nfsnobody nfsnobody 0 Oct 13 11:25 szsn.txt
[root@nfs data]# cat szsn.txt
矢誌少年 [root@nfs data]# ll total 0
這樣就搭建完成了,博主有哪裏寫的不好的,歡迎大家指出,我一定會進行改進。
Linux NFS存儲服務部署