1. 程式人生 > >NFS安裝配置及常見問題、/etc/exports配置檔案、showmount命令

NFS安裝配置及常見問題、/etc/exports配置檔案、showmount命令

1,伺服器端軟體:安裝nfs-utils和portmap(rpcbind)
nfs-utils: 提供rpc.nfsd 及 rpc.mountd這兩個NFS DAEMONS的套件
portmap: NFS其實可以被看作是一個RPC SERVER PROGRAM,而要啟動一個RPC SERVER PROGRAM,都要做好PORT的對應工作,而且這樣的任務就是由PORTMAP來完成的。通俗的說PortMap就是用來做PORT的mapping的。
NFS需要啟動的DAEMONS:參考NFS daemons
  • pc.nfsd:主要複雜登陸許可權檢測等 必須
  • portmap:處理RPC程式客戶端和伺服器端的埠對應 必須
  • rpc.mountd:負責NFS的檔案系統,當CLIENT端通過rpc.nfsd登陸SERVER後,對clinet存取server的檔案進行一系列的管理 必須
  • lockd:處理通過RPC包的鎖定請求
  • statd:為nfs鎖定服務提供crash恢復功能
  • rquotad:處理當使用者通過nfsmount到遠端伺服器時的配額
  • 守護程序啟動順序:rpc.portmap, rpc.mountd, rpc.nfsd, rpc.statd, rpc.lockd (新版本會自動跟著nfsd啟動起來), rpc.rquotad

NF伺服器端命令
  • yum  install  nfs-utils  portmap
  • chkconfig rpcbind on #chkconfig:更新和查詢各執行級別的系統服務
  • chkconfig nfs on
  • service rpcbind start
  • service nfs start

2,伺服器端配置檔案/etc/exports:指定要共享的目錄及許可權  man exports
Html程式碼  收藏程式碼
  1. #:允許ip地址範圍在192.168.0.*的計算機以讀寫的許可權來訪問/home/work 目錄。  
  2. /home/work 192.168.0.*(rw,sync,root_squash)  
  3. /home  192.168.1.105 (rw,sync)  
  4. /public  * (rw,sync)  
  5. 配置檔案每行分為兩段:第一段為共享的目錄,使用絕對路徑,第二段為客戶端地址及許可權。  
  6. 地址可以使用完整IP或網段,例如10.0.0.8或10.0.0.0/24,10.0.0.0/255.255.255.0當然也可以地址可以使用主機名,DNS解析的和本地/etc/hosts解析的都行,支援萬用字元,例如:*.chengyongxu.com  
  7. 許可權有:  
  8. rw:read-write,可讀寫;    注意,僅僅這裡設定成讀寫客戶端還是不能正常寫入,還要正確地設定共享目錄的許可權,參考問題7  
  9. ro:read-only,只讀;  
  10. sync:檔案同時寫入硬碟和記憶體;  
  11. async:檔案暫存於記憶體,而不是直接寫入記憶體;  
  12. no_root_squash:NFS客戶端連線服務端時如果使用的是root的話,那麼對服務端分享的目錄來說,也擁有root許可權。顯然開啟這項是不安全的。  
  13. root_squash:NFS客戶端連線服務端時如果使用的是root的話,那麼對服務端分享的目錄來說,擁有匿名使用者許可權,通常他將使用nobody或nfsnobody身份;  
  14. all_squash:不論NFS客戶端連線服務端時使用什麼使用者,對服務端分享的目錄來說都是擁有匿名使用者許可權;  
  15. anonuid:匿名使用者的UID值,通常是nobody或nfsnobody,可以在此處自行設定;  
  16. anongid:匿名使用者的GID值。  

NFS客戶端使用者對映:客戶端登陸使用者為root或者其他使用者,然後根據伺服器端nfs server配置,相應客戶端連線對映到nfs伺服器端的使用者為root或者指定使用者(通過anonuid或者anongid來設定)、nfsnobody等。最後這個對映使用者和共享目錄的許可權共同影響該客戶端連線是否有讀寫許可權
手動設定客戶端、伺服器端使用者對映,引數:map_static=/etc/nfs.map
/etc/nfs.map檔案對映內容如下:
# remote local
gid 500 1000
uid 500 2003
參考:NFS 學習筆記中關於nfs客戶連線使用者身份的描述,沒有驗證過下述的描述:
  • 客戶端連線時候,對普通使用者的檢查,NO.1如果明確設定了普通使用者被壓縮的身份,那麼此時客戶端使用者的身份轉換為指定使用者,NO.2如果NFS server上面有同名使用者,那麼此時客戶端登入賬戶的身份轉換為NFS server上面的同名使用者,NO.3如果沒有明確指定,也沒有同名使用者,那麼此時 使用者身份被壓縮成nfsnobody
  • 客戶端連線的時候,對root的檢查,NO.1如果設定no_root_squash,那麼此時root使用者的身份被壓縮為NFS server上面的root,NO.2如果設定了all_squash、anonuid、anongid,此時root 身份被壓縮為指定使用者,NO.3如果沒有明確指定,此時root使用者被壓縮為nfsnobody,NO.4如果同時指定no_root_squash與all_squash 使用者將被壓縮為 nfsnobody,如果設定了anonuid、anongid將被壓縮到所指定的使用者與組


3,防火牆設定修改
預設情況下,CentOS6伺服器版安裝完成後,防火牆iptables配置中只放開了22埠。
nfs配置檔案/etc/sysconfig/nfs中指定nfs服務相關埠,並修改防火牆放開相應埠
Java程式碼  收藏程式碼
  1. #Port rpc.mountd should listen on.    
  2. #MOUNTD_PORT=892
  3. #Port rpc.statd should listen on.    
  4. #STATD_PORT=662
  5. #/usr/sbin/rpc.rquotad Port rquotad should listen on.    
  6. #RQUOTAD_PORT=875
  7. #TCP port rpc.lockd should listen on.    
  8. #LOCKD_TCPPORT=32803
  9. #UDP port rpc.lockd should listen on.    
  10. #LOCKD_UDPPORT=32769

修改iptables配置檔案/etc/sysconfig/iptables,放開111(portmap服務埠),2049(nfs服務埠)

4,/etc/hosts.allow配置修改
/etc/hosts.allow,/etc/hosts.deny 描述哪些主機允許使用本地的INET服務。
預設這裡好像可以不需要修改,不過最好設定成只允許需要的客戶端機器連線,然後其他機器的連線都deny
#服務程序名:主機列表:當規則匹配時可選的命令操作
server_name:hosts-list[:command]
在/etc/hosts.allow中新增允許客戶端訪問的規則
ALL:127.0.0.1         #允許本機訪問本機所有服務程序
ALL:192.168.0.135     #允許192.168.0.135客戶端機器訪問本機所有服務程序
smbd:192.168.0.0/255.255.255.0    #允許網段的IP訪問smbd服務
sshd:192.168.100.0/255.255.255.0        #允許192.168.100.網段的IP訪問伺服器上的sshd程序
sshd:60.28.160.244                                  #允許外網的60.28.160.244訪問這個伺服器上的sshd程序
在/etc/hosts.deny中 被禁制登陸的嘗試連線資訊也可以設定成記錄下來併發到使用者郵箱
sshd:ALL    #禁止所有

5,修改共享出去的目錄許可權為760,並修改目錄所有組為nfsnobody
參考:問題7

6,客戶端掛載:執行下面的指令就可以把NFS伺服器(IP地址為192.168.1.45)共享出來的/home掛裝到本地的/mnt/nfs/home目錄下。
showmount -e nfs-serverip: 檢視nfs伺服器共享出來的資源
mount -t nfs 192.168.1.45:/home /mnt/nfs/home

7,NFS效能測試:
  • 根據命令time dd if=/dev/zero of=/mnt/home bs=16k count=16384 來設定合理的WSIZE,RSIZE值
  • 根據nfs客戶端數,在/etc/sysconfig/nfs配置檔案中設定合適的nfs伺服器端程序數RPCNFSDCOUNT,預設為8

exportfs命令:如果我們在啟動了NFS之後又修改了/etc/exports,是不是還要重新啟動nfs呢?這個時候我們就可以用exportfs命令來使改動立刻生效,該命令格式如下:
exportfs [-aruv] -a :全部mount或者unmount /etc/exports中的內容 -r :重新mount /etc/exports中分享出來的目錄 -u :umount 目錄 -v :在 export 的時候,將詳細的資訊輸出到螢幕上。
showmount命令:顯示NFS伺服器的掛載資訊。
showmount -e [nfs-server]:顯示指定的NFS SERVER上export出來的目錄,不指定後面IP時檢視的是本機作為NFS Server時,對外共享的目錄。
rpcinfo -p命令:顯示RPC資訊  -p引數:用rpc協議來探測主機host上使用的rpcbind,並顯示所有已註冊的RPC程式
nfsstat命令:檢視NFS的執行狀態,對於調整NFS的執行有很大幫助

過程中出現的問題解決:
1, 通過yum或者rpm安裝完portmap後,發現執行命令service portmap start時報如下錯誤:portmap: unrecognized service
CentOS6(Linux Kernel 2.6.32)中,portmap已經被rpcbind代替了,仔細檢視安裝資訊就會發現,執行命令yum install portmap時安裝的就是rpcbind。安裝完成後也可以通過命令:yum whatprovides portmap來檢視詳細資訊。

2, 客戶端掛載時,報錯誤mount clntudp_create: RPC: Port mapper failure - RPC: Unable to receive。
  • 1,通過命令rpcinfo -p來檢視portmap服務時候正常啟動以及相應的埠(預設111)
  • 2,檢查/etc/sysconfig/iptables防火牆設定,允許tcp,udp的111埠訪問,然後service iptables restart
  • 3,檢查/etc/hosts.deny,/etc/hosts.allow看客戶端連線是否被阻止了

3, 客戶端執行命令showmount -e nfs-server時,報錯誤:mount clntudp_create: RPC: Program not registered。
nfs、rpcbind服務沒有啟動,使用chkconfig把nfs、rpcbind加到系統服務中並用service來啟動
或者在/etc/hosts.allow中新增允許客戶端訪問的規則 ALL:192.168.0.135

4, 客戶端執行命令showmount -e nfs-server時,報錯誤:rpc mount export: RPC: Unable to receive; errno = No route to host
配置檔案:/etc/sysconfig/nfs
找到nfs服務相關埠設定的地方,並移除註釋後,在iptables防火牆設定中指定允許相應埠的Udp,tcp流通過。
#MOUNTD_PORT=892
#STATD_PORT=662
#LOCKD_TCPPORT=32803
#LOCKD_UDPPORT=32769
iptables -A INPUT -p TCP --dport 662 -m state --state NEW -j ACCEPT
iptables -A INPUT -p UDP --dport 661 -m state --state NEW -j ACCEPT

5, showmount -e nfs-server成功,正式掛載時報錯:mount: mount to NFS server '192.168.1.5' failed: System Error: No route to host.這是由於nfs服務的預設埠2049被防火牆阻塞了,和上面類似修改iptables允許2049埠通過

6, showmount -e nfs-server成功,正式掛載時報錯:mount: mount to NFS server '192.168.1.5' failed: timed out (retrying).
編輯/etc/sysconfig/iptables時,相關埠的tcp埠允許通過,而udp不允許。其他可能的原因參考:mount command fails with NFS server failed error.
Disable name lookup requests from NFS server to a DNS server. 
or  NFS version used by the NFS client is other than version 3.

7,exports配置檔案中目錄許可權屬性設定為rw(預設為root_squash),但是在客戶端mount目錄執行touch命令時報錯誤:touch: cannot touch `a': Permission denied。解決:
  • 伺服器端共享目錄許可權檢視ll -d /home
  • 修改伺服器端共享目錄許可權chown 760 /home(檔案所有者root有全許可權、檔案所有組使用者有讀寫許可權、其他使用者無許可權,然後把目錄的組設定為nfsnobody)
  • 修改伺服器端共享目錄許可權組擁有者為nfsnobody(cat /etc/passwd | grep nob)
  • chgrp nfsnobody /home
  • 成功在客戶端建立新的檔案!


CentOS NFS配置
維基百科 - 網路檔案系統

相關推薦

NFS安裝配置常見問題/etc/exports配置檔案showmount命令

1,伺服器端軟體:安裝nfs-utils和portmap(rpcbind) nfs-utils: 提供rpc.nfsd 及 rpc.mountd這兩個NFS DAEMONS的套件 portmap: NFS其實可以被看作是一個RPC SERVER PROGRAM,而要啟動一個RPC SERVER PROGRAM

命令NFS安裝配置常見問題/etc/exports配置檔案showmount命令 (深度好文)

轉載:http://desert3.iteye.com/blog/1675522 1,伺服器端軟體:安裝nfs-utils和portmap(rpcbind) nfs-utils: 提供rpc.nfsd 及 rpc.mountd這兩個NFS DAEMONS的套件 portma

windows系統下nodejs安裝環境配置刪除NPM全局配置

例如 參考 -h clas shel fcm gpe tar tortoise nodejs安裝及設置NPM全局路徑 刪除NPM全局路徑配置 一、nodejs安裝及設置NPM全局路徑 第一步:下載安裝文件 下載nodejs,官網:http://nodejs.org/do

OpenVPN安裝配置使用詳解,證書驗證使用者密碼驗證手機連線配置

搞了一天安裝過程中不是很順利,部分文章說明的不是太詳細,因此結合多個文章撰寫的此文,希望能幫上使用OpenVpn的兄弟們。一、OpenVPN     OpenVPN是一個用於建立虛擬專用網路(Virtual Private Network)加密通道的免費開源軟體。使用Op

Hbase叢集安裝配置常見問題解決方法

Hbase介紹 HBASE是一個高可靠性、高效能、面向列、可伸縮的分散式儲存系統,利用HBASE技術可在廉價PC Server上搭建起大規模結構化儲存叢集。 HBASE的目標是儲存並處理大型的資料,更具體來說是僅需使用普通的硬體配置,就能夠處理由成千上萬的行和列所組成的大型

Eclipse初始安裝配置常見問題總結

    已經好幾年沒用Java平臺做過東西了,又要用的時候才發現連平臺安裝都有問題了,真是三天不練手藝生啊!不由感嘆,真是人生如戲,世事無常啊!     先收集了一點別人的安裝配置文章,發覺還是有問題,多次試驗才成功,總結如下:     一、平臺安裝     JDK 6

WebLogic安裝使用常見問題

1.4 為我 mic 電腦 jdk tps weblogic round images WebLogic的下載與安裝 參考地址:http://blog.csdn.net/acmman/article/details/70093877 安裝常見問題: 1. 虛擬內存不足

Windows下mysql-python安裝步驟常見問題

ack 常見問題 virt pyo 文件夾 安裝目錄 mysql 本機 pypi windows下安裝mysql-python,直接使用pip安裝多半會失敗,最好還是下載exe安裝。 可以從此處下載,註意64位還是32位https://pypi.python.org/pyp

git安裝使用常見問題

LK這兩天在弄git這玩意,以後就用Lk來稱呼自己了。可以向遠端倉庫提 交專案和程式碼了,也可以從遠端倉庫擋專案了。 一 。實現這些之前你要先下載git,下載地址:http://git-scm.com/download/win, 下載完成以後,預設安裝就行。 可以看到有Bash 有沒有很

VMware-虛擬機器 VMnet8網路配置常見問題解決

本文環境 物理機OS: Windows10 虛擬機器平臺: VMware Workstation 14 虛擬機器OS: CentOS 7 配置步驟 一、 檢視物理主機的網路配置資訊 主要是找到可以上網的網絡卡的資訊,在Windows的cmd中輸入 ipcon

cocoapods安裝步驟常見問題解決

1.檢查ruby源:gem sources -l;     如果是     *** CURRENT SOURCES ***  https://rubygems.org/   當然這個源在牆內是訪問不到的。因此我們需要尋

vagrant-安裝教程常見問題

在我們的開發目錄下有一個檔案Vagrantfile,裡面包含有大量的配置資訊,主要包括三個方面的配置,虛擬機器的配置、SSH配置、Vagrant的一些基礎配置。Vagrant是使用Ruby開發的,所以它的配置語法也是Ruby的,但是我們沒有學過Ruby的人還是可以跟著它的註釋知道怎麼配置一些基本項的配置。#

Python環境下安裝pip 常見問題

可能的原因1:安裝的不是對應python版本的庫,下載的庫名中cp27代表python2.7,我這裡下的是跟我電腦安裝的python的版本相對應的cp36,即python3.6版本的。 可能的原因2:個別情況   我下載到的pygame-1.9.3-cp36-cp36m-win_amd64.whl庫檔

Linux安裝vsftp常見問題處理

Linux安裝vsftp 1. Linux檢視是否安裝vsftp rpm -qa vsftp 如果安裝過,如下圖: 2. 安裝vsftp yum install -y vsftpd 3. 關閉匿名訪問 安裝成功後,使

WinPcap快速安裝步驟常見錯誤總結

       WinPcap 是網路抓包常用工具,新手入門的時候難免遇到一些C語法上的錯誤,在此小結一下常見的幾個錯誤及解決方法。  1. 錯誤提示:d:\c++\microsoft visual studio\myprojects\get_arp\1.cpp(20) :  error C2011: 'in

OpenCV安裝流程從原始碼編譯方法 + 配置VS

本篇文章記錄了安裝OpenCV 3.4.2及配置VS2017的方法,以及利用CMake從原始碼編譯適用於老版本VS2013的OpenCV 3.4.2的編譯及配置流程。本文也可以作為其他OpenCV及VS版本安裝配置方法的參考。 1 安裝OpenCV 3.4.2

RedHat6.5安裝MySQL5.6解除安裝MySQL5.6(安裝解除安裝過程常見問題解決)

準備工作: 下載mysql5.6的tar包:MySQL-5.6.16-1.el6.x86_64.rpm-bundle.tar 開始安裝: 1、建立mysql使用者及使用者組 #groupadd mysql #useradd -r -g mysql mysql 2、複

Linux vim配置常見錯誤

一、vim配置 1.配置檔案的位置 首先cd ~進入工作目錄,然後ls -al看~/目錄下是否存在.vim目錄和.vimrc檔案,沒有的話,自行建立 下載地址 http://www.vim.org/scripts/script.php?script_id=273 下載完

樹莓派入坑指南——系統初始化配置常見Q&A

筆者抱著很糾結的心態寫下了此文,僅以紀念我N刷系統的落寞。。。 本文基於RaspberryPi Model 3B,以Ubuntu-Mate(16.04.3)和Raspbian(2017-07-05-raspbian-jessie)系統配置為例。 現將常見初始

ubuntu安裝nginx常見問題解決

安裝nginx常見的問題就是gcc,zlib,pcre,openssl缺少這四個依賴,具體的安裝辦法如下: 1.安裝依賴 安裝gcc $ sudo apt-get install gc