天天看點

NFS

一. nfs

1. nfs簡介

nfs全稱是network file system

nfs允許一個系統在網絡上與他人共享目錄和檔案。通過使用nfs,使用者和程式可以像通路本地檔案一樣通路遠端系統上的檔案。 

假如有三台機器a, b, c,它們需要通路同一個目錄,目錄中都是圖檔,傳統的做法是把這些圖檔分别放到a, b, c. 但是使用nfs隻需要放到a上,然後a共享給b和c即可。通路的時候,b和c是通過網絡的方式去通路a上的那個目錄的。 

2. 安裝、配置nfs服務

需要安裝兩個包(nfs-utils和rpcbind)

yum install -y nfs-utils  會同時安裝上rpcbind

提供nfs服務的機器上 vim /etc/exports  //内容如下:

      /home/ 192.168.137.0/24(rw,sync,all_squash,anonuid=501,anongid=501) 

共分為三部分,第一部分就是本地要共享出去的目錄,第二部分為允許通路的主機(可以是一個ip也可以是一個ip段)第三部分就是小括号裡面的,為一些權限選項。它表示:共享的目錄為/home,信任的主機為192.168.137.0/24這個網段,權限為讀寫,同步,限定所有使用者,并且限定的uid和gid都為501。

啟動順序

 /etc/init.d/rpcbind start    #首先啟動rpcbind用于啟動注冊端口,nfs用戶端通過該服務确定連接配接通道

[root@localhost data]# netstat -antpl | grep rpcbind

tcp  0  0 0.0.0.0:111  0.0.0.0:*  listen  1816/rpcbind

 /etc/init.d/nfs start  

showmount -e 192.168.1.116  #檢視

3. nfs配置的一些選項說明

rw :讀寫;

ro :隻讀;

sync :同步模式,記憶體中資料時時寫入磁盤;

async :不同步,把記憶體中資料定期寫入磁盤中;

no_root_squash :加上這個選項後,root使用者就會對共享的目錄擁有至高的權限控制,就像是對本機的目錄操作一樣。不安全,不建議使用;

root_squash:和上面的選項對應,root使用者對共享目錄的權限不高,隻有普通使用者的權限,即限制了root;

all_squash:不管使用nfs的使用者是誰,他的身份都會被限定成為一個指定的普通使用者身份;

anonuid/anongid :要和root_squash 以及all_squash一同使用,用于指定使用nfs的使用者限定後的uid和gid,前提是本機的/etc/passwd中存在這個uid和gid。

4. 用戶端上挂載nfs

用戶端同樣安裝 yum install -y nfs-utils 

檢視伺服器端都共享了哪些目錄 

    showmount -e 192.168.137.10  

在用戶端上挂載服務端的nfs 

    mount -t nfs  -onolock,nfsvers=3 192.168.137.10:/home/ /mnt/     #如果不加 -onolock,nfsvers=3 則在挂載目錄下的檔案屬主群組都是nobody,如果指定nfsvers=3則顯示root

df -h  檢視挂載的情況

[root@slave mnt]# df -h

filesystem            size  used avail use% mounted on

192.168.1.116:/data/www/    14g  2.1g   11g  17% /mnt

5. exportfs 指令的使用

-a :全部挂載或者解除安裝;

-r :重新挂載;

-u :解除安裝某一個目錄;

-v :顯示共享的目錄

改變/etc/exports配置檔案後,不用重新開機nfs服務直接用這個exportfs即可

exportfs -arv  使生效

在使用nfs時,常用一個選項就是 -o nolock  

我們還可以把要挂載的nfs目錄寫到client上的/etc/fstab檔案中  192.168.137.10:/tmp/ /test nfs nolock 0 0  然後 mount -a

故障錯誤

從出錯日志可以看出,mount.nfs: access denied by server while mounting 

i googled and found that since the port is over 1024 i needed to add the "insecure" option to the relevant line in /etc/exports on the server. once i did that (and ran exportfs -r), the mount -a on the client worked.

//如果端口号大于1024,則需要将 insecure 選項加入到配置檔案(/etc/exports)相關選項中mount用戶端才能正常工作:

檢視 exports 手冊中關于 secure 選項說明也發現确實如此

[root@lzgonline init.d]# man exports

secure,this  option requires that requests originate on an internet port less than ipport_reserved (1024). this option is on by default. to turn it off, specify insecure.

//secure 選項要求mount用戶端請求源端口小于1024(然而在使用 nat 網絡位址轉換時端口一般總是大于1024的),預設情況下是開啟這個選項的,如果要禁止這個選項,則使用 insecure 辨別

修改配置檔案/etc/exports,加入 insecure 選項

/home/lzgonline/rootfs  *(insecure,rw,async,no_root_squash)

儲存退出

然後重新開機nfs服務:service nfs restart

NFS

繼續閱讀