一. 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