1. 程式人生 > 其它 >NFS檔案系統及搭建NFS共享服務

NFS檔案系統及搭建NFS共享服務

一、什麼是檔案系統?

  檔案系統是對一個儲存裝置上的資料和元資料進行組織的一種機制。檔案系統是在一個磁碟(包括光碟、軟盤、閃盤及其它儲存裝置)或分割槽上組織檔案方式方法,常見檔案系統如ext2、ext3、ext4、NTFS或fat、fat32等。檔案系統格式組織儲存檔案或資料的方法,目的是易於查詢和存取資料,如果磁碟上沒有檔案系統也就無法儲存資料了,因此,磁碟分割槽後能夠使用之前必須建立對應的檔案系統才行(類似買了電腦不裝系統就無法使用)。

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

  (2)分割槽必須格式化,建立的檔案系統才能存放資料,不同的分割槽只能有一種檔案系統。

  (3)Linux下常見檔案系統ext2、ext3、ext4、zfs、xfs、和Reiserfs

     Windows下常見檔案系統NTFS、FAT31。

二、NFS網路檔案共享服務:

1、NFS概述:

  NFS是第一個構建於IP協議之上的現代網路檔案系統;

  NFS 是 Network File System 的縮寫,它的主要功能是通過網路讓不同的主機系統之間可以彼此共享檔案或目錄。NFS客戶端(一般為應用伺服器,如web)可以通過掛載(mount)的方式將NFS伺服器共享的資料檔案目錄掛載到NFS客戶端本地系統中(就是某一個掛載點下)。從NFS客戶端的機器本地上看,NFS伺服器端共享的目錄就好像是客戶端自己的磁碟分割槽或者目錄一樣,而實際上確是遠端的伺服器目錄。

  NFS網路檔案系統的使用很像是windows系統的網路共享、安全功能、網路驅動器對映,這也和Linux裡的samba服務類似。

2、NFS應用場景:

  在企業叢集架構的工作場景中,NFS網路檔案系統一般被用來儲存共享視訊、圖片、附件等靜態資原始檔,NFS是當前網際網路系統架構中最常用的資料儲存服務之一,特別是中小型網站公司應用頻率很高。

3、NFS掛載原理:

  傳統掛載:mount 源 目標

  NFS掛載:mount 遠端的IP地址:/video 本地目錄(/video)

    -- 訪問本地的video就到了遠端地址的video目錄下,和在本機訪問沒什麼區別。

4、搭建NFS服務

  

  hostname 新主機名;su

  實驗環境:Centos6.5 兩臺機器,

       一臺 nfsserver -- 192.168.3.137

        一臺 nfsclient -- 192.168.3.138

     NFS主要有兩個軟體包 -- nfs-utils(包括rpc.nfsd、rpc.mountd)、rpcbind(Centos6版本)

(1)安裝 nfs-utils 包,服務端和客戶端都需要安裝。

1 yum groupinstall #檢視軟體包,軟體包是中文修改字符集(LANG=en)。
1 yum groupinstall -y "NFS file server" #安裝NFS包,一定要加雙引號。

 

(2)服務端(nfsserver)啟動 rpc 服務

1 /etc/init.d/rpcbind start #啟動 rpc 服務

  檢視本地有沒有共享,rpc 服務對外的埠是 111

-------------------------------------------------------------------------------------

反例:出現如下報錯表示 rpc 服務沒有啟動:

----------------------------------------------------------------------------------------

(3)服務端啟動 nfs 服務

/etc/init.d/nfs  start     #啟動 nfs 服務

  再次檢視本地 rpc 服務,出現很多埠。

(4)將 rpcbind 和 nfs 設定成開機自啟動。

chkconfig rpcbind on
chkconfig nfs on
chkconfig --list rpcbind  #檢查狀態
chkconfig --list nfs

  檢查狀態:

(5)客戶端(nfsclent)開啟 rpcbind 服務,不用開啟 nfs 服務

/etc/init.d/rpcbind  start    #開啟 rpcbind 服務
chkconfig rpcbind on        #設定 rpcbind 服務開機自啟動
chkconfig --list rpcbind

(6)/etc/exports -- nfs 的配置檔案,此檔案預設為空

vim /etc/exports    #編輯檔案
sync 同步到磁碟,把資料從buffer寫入到磁碟
async -- 表示寫入到快取裡
ro -- read only -- 表示只讀
rw -- 可讀可寫

(7)重啟 nfs 服務,不能用 restart 重啟,要用 reload 重啟。

/etc/init.d/nfs  reload   #平滑重啟 nfs 服務

  在本機做檢查,檢視共享的檔案是否能共享。

showmount  -e  localhost

  在客戶端(nfsclient)檢視是否能發現共享檔案。

showmount  -e  192.168.3.137   #訪問的IP地址

----------------------------------------------------------------------------------------------------------

注意:如果出現客戶端無法發現服務端的共享檔案,需要從以下方面排錯。

①檢查是否關閉防火牆:

  

service  iptables stop

②能否 ping 通對端地址

③能否 telnet 遠端登入對端。後面接 rpc 的埠號 111(下述為 telnet 登入對端)

  

  一般(2)(3)沒問題是可以正常訪問的,注意要關閉防火牆。

-----------------------------------------------------------------------------------------------------------

(8)在客戶端(nfsserver)掛載。

mount  -t nfs 192.168.3.137:/data  /mnt     #將對端共享的目錄掛載到本地的 /mnt 目錄下

(9)在客戶端的 /mnt 目錄下檢視檔案是否成功共享。

服務端(nfsserver)的 /data 目錄:

  

客戶端(nfsclient)檢視 /mnt 目錄:

  

  檔案已經共享。

(10)測試:服務端刪除一個檔案,客戶端檢視共享檔案內容。

服務端:刪除 abc.txt 檔案

  

客戶端:檢視共享檔案

  

但是:在服務端配置共享檔案的時候,給的許可權是可讀可寫,此時卻不能寫。

  

因為這是目錄本身的許可權問題:

  

服務端的 /data 目錄對於其他使用者沒有可寫的許可權,因此加上許可權即可。

chmod 777 /data

客戶端可寫。

(11)其他授予寫許可權的操作。

客戶端進行寫的操作,使用者和使用者組屬於 nfsnobody

  

在 /var/lib/nfs/etab 檔案中說明 nfs其他使用者的 UID 是從 65534 開始。

  

nfsnobody的UID和GID都為65534

  

由於NFS其他使用者都是屬於 nfsnobody,所以可以將服務端的 /data 目錄所屬組和所屬主修改為 nfsnobody。

  

/data 目錄其他使用者不具備寫的許可權,但是將 /data 的所屬組和所屬主更改為 nfsnobody;

在客戶端進行增刪操作。

  

客戶端可以直接進行建立檔案,同時最後刪除所有檔案,在服務端檢視是否檔案全部刪除。

  

NFS網路檔案共享服務搭建完成。

  但是掛載在 /mnt 目錄下,開機會丟失,所以最好把共享的目錄放在 rc.local 裡或者 fstab 中