『壹』 在nfs的配置文件/etc/exports中,如何配置一個nfs共享目錄,並描述其含義。 要求:
1.檢查是否安裝nfs-utlis 和 rpc軟體
2.開啟rpc服務(先啟動)和nfs服務(後啟動)
3.配置/etc/exports 加入如下語句
#這里是說明 share /home/work dir
/home/work 192.168.1.0/24(rw,sync)
第一部分是要求共享的目錄 第二部分是客戶端地址(第三部分是參數)
rw是可讀可寫,
sync是同時同步到內存和硬碟
保存退出
4.重啟nfs服務
/etc/init.d/nfs reload
還有做好說一下你什麼系統..內核。
『貳』 nfs的管理命令不包括
熱門頻道
首頁
博客
研修院
VIP
APP
問答
下載
社區
推薦頻道
活動
招聘
專題
打開CSDN APP
Copyright © 1999-2020, CSDN.NET, All Rights Reserved
c語言文件讀寫操作代碼
打開APP
開心才是真
關注
linux網路文件系統NFS詳解 轉載
2018-12-07 14:21:17
開心才是真
碼齡5年
關注
Linux網路文件系統NFS詳解
閱讀目錄
什麼是文件系統,NFS文件系統又是什麼?
NFS包括兩部分,服務端(servlet)及客戶端(client)
NFS配置文件
回到頂部
什麼是文件系統,NFS文件系統又是什麼?
簡單的說,文件系統就是通過軟體對磁碟上的數據進行組織和管理的一種機制,對其的一種封裝或透視。
你女朋友拍了美美的曖昧照片,放一個文件夾里發送給了A伺服器,當你來訪問的時候,被F5路由給B伺服器了,然後你找不到資源了,你女朋友給你鬧,你就不性福了哈哈,所以我們很容易想到,是不是可以把文件上傳到一個公用的伺服器上呢? 這樣不管訪問的是A還是B,讀、取文件都只存在一份。答案是肯定的,這個公用的伺服器我們也稱之為文件伺服器,NFS,Network File System。顧名思義,網路文件系統,即通過網路,對在不同主機上的文件進行共享。
回到頂部
NFS包括兩部分,服務端(servlet)及客戶端(client)
由於NFS服務功能很多,會有很多埠,這些埠還有可能不固定,(pc -ef | egrep nfs 我們可以看到nfs 不同的埠號)那麼客戶端就無法與伺服器進行通信,因為程序間通信必須通過埠(tcp/udp都是端到端通信),那麼就需要一個中間的橋接機制,RPC進程即充當這樣一個角色,RPC的埠是一定的(111),當NFS啟動時,會向RPC進行注冊, (rpc 一定是在nfs啟動前,就已經啟動了,)那麼客戶端PRC就能與伺服器RPC進行通信, 從而進行文件的傳輸。
當客戶端用戶打開一個文件或目錄時,內核會判斷,該文件是本地文件還是遠程共享目錄文件(如果是遠程共享文件就都掛載mount 到/etc/init.d/rc.local下面),如果是遠程文件則通過RPC進程訪問遠程NFS服務端的共享目錄,如果是本地文件,則直接打開。
為了更好的並發,RPC進程及NFS進程都有多個。
NFS服務進程啟動說明表格
服務(進程名字) 用途說明
nfsd(rpc.nfsd) rpc.nfsd主要功能就是管理NFS客戶端是否能夠登陸NFS伺服器主機(登陸著id判別)
mountd(rpc.mountd) rpc.mountd管理nfs文件系統,當nfs客戶端順利通過rpc.nfsd服務端後,它可以使用NFS伺服器提供數據,讀取NFS的配置文件/etc/exports來進行文件系統許可權比對
rpc.statd 檢查文件的一致性
這些進程都可以執行man 進程名 來查看進程的詳細功能
回到頂部
NFS配置文件
NFS配置文件定義
NFS的配置文件為 /etc/exports,內容格式,如:<共享目錄> 客戶端1(選項) [客戶端2(選項) ...]
共享目錄:NFS共享給客戶機的目錄。
客戶端:網路中可以訪問此目錄的主機。多個客戶端以空格分隔。
選項:設置目錄的訪問許可權、用戶映射等,多個選項以逗號分隔。
例如: /data 192.168.1.0/24(rw,insecure,sync,all_squash,anonuid= 65534,anongid=65534)
NFS配置文件路徑
NFS常用路徑 說明
/etc/exports NFS服務主配置文件,配置NFS具體共享服務的地點,默認內容是空的 /usr/sbin/exports NFS服務的管理命令
exportfs
不重啟nfs服務應用更新,相關選項如下:
-a 全部掛載或卸載 /etc/exports中的內容
-r 重新讀取/etc/exports 中的信息 ,並同步更新/etc/exports、/var/lib/nfs/xtab
-u 卸載單一目錄(和-a一起使用為卸載所有/etc/exports文件中的目錄)
-v 在export的時候,將詳細的信息輸出到屏幕上。
nfsstat
查看NFS的運行狀態。
rpcinfo
查看rpc服務注冊情況。
相關選項:
-p 顯示所有的埠與程序信息。
示例:
rpcinfo -p localhost #列出本機的RPC注冊狀況。
showmount
查詢nfs共享目錄信息,相關選項如下:
-a 顯示已經於客戶端連接上的目錄信息
-e IP或者hostname 顯示此IP地址分享出來的目錄
示例:
showmount -e localhost #查詢本機nfs共享目錄情況
showmount -a localhost #查詢本機共享目錄連接情況
/usr/sbin/showmount 用來查看客戶度那,查看NFS配置及掛載結果的命令 /var/lib/nfs/etab NFS配置文件的完成參數設定的文件
NFS配置參數許可權
rw 表示可讀寫許可權。
sync 請求或寫入數據時,數據同步寫入到NFS Server的硬碟後才返回。
async寫入數據時會先寫到內存緩沖區,直到硬碟有空檔才會在寫入磁碟,這樣可以提升寫入效率。風險是若伺服器宕機或不正常關機,會損失緩沖區中未寫入硬碟的數據(解決辦法:伺服器主板電池或UPS不間斷電源)。
all_squash不管訪問NFS Server共享目錄的用戶身份如何,它的許可權都將被壓縮為匿名用戶,同時它的UID和GID都會變成nfsnobody賬號身份,在生產環境中配置NFS的重要技巧:
1)確保所有客戶端伺服器對NFS共享目錄具備相同的用戶訪問許可權,all_squash把所有客戶端都壓縮成匿名用戶(UID相同),就是anonuid,anongid指定的UID和GID相同,
2)所有的客戶端和伺服器端都需要有一個相同的UID和GID的用戶,nfsnodoby(UID必須相同)
anonuid參數以anon*開頭即值anonymous匿名用戶,這個用戶的UID設置值通常為nfsnobody的UID值,當然我們也可以自行設置這個UID值。但是,UID必須存在於/etc/passwd中。在多個NFS Clients時,如多台web server共享一個NFS目錄時,通過這個參數可以使得不同的NFS Clients寫入的數據對所有NFS Clients保持同樣的用戶許可權,即為配置的匿名UID對應用戶許可權,這個參數很有用。一般默認就好
anongid同anonuid,區別是把uid(用戶id)換成gid(組id)
ro 表示只有隻讀許可權
sync是synchronized的縮寫,意為同步,async是asynchonous的縮寫意為非同步,怎麼理解同步和非同步的,比如:你女朋買了一張票等你下班一起看電影,她會親自給你電影票然後一起看電影,在比如生產者跟消費者,(要實現這個問題,需要用到多線程,要實現多線程,就需要繼承(extend)Thread類,實現Runnable,Future介面並寫run方法,,,線程有6中狀態,初始,運行,阻塞,等待,等待超時,結束,,,咳咳咳跑題了)我們常常加同步鎖synchronized,這樣就是生產一個,消費一個(Linux分為實時同步和定時同步)。非同步,在比如生產者跟消費者,生產100個產品,消費者只能消費50個,那麼就會把生產者的產品放在超市,消費者就會去超市買東西,
總結NFS服務的配置過程:
--服務端--
1)查看系統版本,並檢測有沒有安裝nfs和rpcbind服務,如果沒有安裝就執行:
2.啟動服務(先啟動rpcbind)
3.設置開機自啟動
4.配置NFS服務
5.重新載入服務
6.檢查或測試掛載
--客戶端-
1.安裝軟體
2.啟動rpcbind
3.配置開機自啟動
?
1
chkconfig rpcbind on
4.測試服務端共享情況
5.掛載
如果客戶端沒有寫許可權,就檢查共享文件的配置是否是rw許可權,檢查共享的文件的本身是否是rw 許可權(也就是檢查/data ls -li /data 如果不是655 就chmod 655 /data)
常見錯誤
1.df -h 檢查服務端的NFS服務是不是啟動成功,
2.確認NFS客戶端showmount是否OK。
3.確認rpcbind上是否有NFS注冊,(rpcbind必須先啟動)
3.確認網路是否通暢
4.確認是否因為防火牆擋住(一般內網不需要開啟防火牆,在出口加防火牆就夠了)(/etc/init.d/iptables stop/start)
技術的提升是量的積累,思想的提升是質的飛越
分類: Linux學習之路
打開CSDN,閱讀體驗更佳
最新發布 linux-NFS(網路文件系統)
全稱 Network File System,網路文件系統專用於Linux與Linux之間的文件共享服務NFS服務可以將遠程Linux機器上的文件目錄數據,通過掛載的形式映射在本地機器。
繼續訪問
linux 的NFS網路文件系統
NFS(Network File System)即網路文件系統,是由Sun 公司開發的一種通過網路方式共享文件系統的通用共享解決方案。目前NFS 有三個版本,分別為NFSv2、NFSv3、NFSv4。NFSv2 是一個古老的版本,但卻被眾多的操作系統所支持,這樣它的兼容性會更好;NFSv3 擁有更多的特點,包括更快的速度、更大的單個文件大小、更多便於排錯的錯誤及成功信息、對TCP ...
繼續訪問
伺服器 硬碟 恢復,伺服器硬碟故障恢復備忘
新系統使用的是Fedora Core 4。回家學習使用了一下yum,和debian的apt-get差不多了:而且軟體包的依賴關系整理的比較好。以下是應用的安裝備忘:2006年7月30日 星期日 00時18分用awk生成關閉服務的腳本:關閉不需要的服務sudo /sbin/chkconfig --list| grep 3:on | awk '{print "/sbin/chkconfig "$1" ...
繼續訪問
配置網路文件系統(NFS)
網路文件系統(NFS)網路文件系統(NFS)是一種在網路上的機器間共享文件的方法,文件就如同位於客戶的本地硬碟驅動器上一樣。Red Hat Linux 既可以是 NFS 伺服器也可以是 NFS 客戶,這意味著它可以把文件系統導出給其它系統,也可以掛載從其它機器上導入的文件系統。NFS 對於在同一網路上的多個用戶間共享目錄很有用途。譬如,一組致力於同一工程項目的用戶可以通過使用 NFS 文件系統(
繼續訪問
linux 命令 /sbin/chkconfig
chkconfig --list 查看全部服務狀態 例如: 運行chkconfig --list httpd 看自動啟動狀態 httpd 0:off 1:off 2:off 3:on 4:on 5:on 6:off 0~6是指運行級別,一般伺服器都運行在3這個級別上。 添加為自...
繼續訪問
linux查看nfs服務狀態,Linux下NFS服務配置
NFS(Network File System)即網路文件系統,是FreeBSD支持的文件系統中的一種,它允許網路中的計算機之間通過TCP/IP網路共享資源。在NFS的應用中,本地NFS的客戶端應用可以透明地讀寫位於遠端NFS伺服器上的文件,就像訪問本地文件一樣。NFS在文件傳送或信息傳送過程中依賴於RPC協議。環境:項目IP服務目錄nfs-server192.168.1.253nfs-utils...
繼續訪問
NFS掛載情況查看
Linux NFS掛載 一、NFS掛載 192.25.10.101/home/sharedata/azkaban/ODS_HS08 掛載到 192.25.10.102/home/data_azkaban (一)192.25.10.101上操作: 1,查看rpcbind、nfs是否安裝 rpm -qa|grep nfs rpm -qa|grep rpcbind 安裝命令:yum install -y nfs-utils rpcbind 2,vi /etc/exports 內容:/home/s
繼續訪問
linux系統如何啟動rpcbind,關於Centos6.8操作系統安裝配置nfs、rpcbind服務後實現linux系統間文件數據共享(掛載mount共享路徑)...
一、前言關於多個centos6.8操作系統間實現文件數據資源共享(掛載mount網路文件路徑),這邊通過在服務端配置nfs(網路文件系統)+rpcbind服務軟體,具體操作步驟如下所示。二、安裝步驟1. 確認服務端安裝ndf服務、啟動並設置為開機啟動[root@centos6~]#rpm-qa|grepnfs@[email protected]_64@b@nfs4...
繼續訪問
linux系統如何啟動rpcbind,rpcbind無法啟動的問題【已解決】
linux小白,請大神指教環境如下:[root@nfs-server ~]# uname -r2.6.32-504.el6.x86_64[root@nfs-server ~]# uname -mx86_64[root@nfs-server ~]# uname -aLinux nfs-server 2.6.32-504.el6.x86_64 #1 SMP Wed Oct 15 04:27:16 UT...
繼續訪問
配置 NFS 伺服器並實現開機自動掛載
NFS 服務端概述: NFS,是 Network File System 的簡寫,即網路文件系統。網路文件系統是 FreeBSD 支持的文件系統中的一種,也被稱為 NFS.NFS 允許一個系統在網路上與他人共享目錄和文件。通過使用 NFS,用戶和程序可以像訪問本地文件一樣訪問遠端系統上的文件。 NFS 的模式: C/S 模式 NFS 監聽的埠: 2049 CentOS7 是以 NFSv4 作為默認版本,NFSv4 使用 TCP 協議(埠號是 2049)和 NFS 伺服器建立連接。 NFS 是通
繼續訪問
nfs自動啟動 linux,CentOS7系統下安裝NFS並設置開機時啟動
yum 安裝yum -y install nfs-utils rpcbindnfs 的配置文件 /etc/expots默認為空vi /etc/exports/opt/test/ 192.168.1.0/24(rw,no_root_squash,no_all_squash,sync,anonuid=501,anongid=501)使配置生效exportfs -r註:配置文件說明:/opt/test ...
繼續訪問
使用nfsstat命令查看NFS伺服器狀態
轉載於:http://www.cnblogs.com/jankie/archive/2011/09/03/2165851.html nfsstat命令顯示關於NFS和到內核的遠程過程調用(RPC)介面的統計信息,也可以使用該命令重新初始化該信息。如果未給定標志,默認是nfsstat -csnr命令。使用該命令顯示每條信息,但不能重新初始化任何信息。 nfsstat命令的主要參數如下。 (1)...
繼續訪問
linux查看nfs掛載信息,Linux NFS掛載
Linux NFS掛載一、NFS掛載192.25.10.101/home/sharedata/azkaban/ODS_HS08 掛載到 192.25.10.102/home/data_azkaban(一)192.25.10.101上操作:1,查看rpcbind、nfs是否安裝rpm -qa|grep nfsrpm -qa|grep rpcbind安裝命令:yum install -y nfs-ut...
繼續訪問
大話存儲-學習總結6-系統IO路徑及優化
理解主機端IO路徑架構應用程序層1. NFS下的緩存機制 默認mount參數下的IO 默認條件下使用非同步(async)方式,rsize=wsize=65535。內核不會透傳程序的IO給NFS Server,對於寫IO會延緩執行,積累一定的時間以便合並上層的IO。不管讀還是寫,async方式都會具有一定的效果,尤其是連續的IO地址。 Linux下使用NFS,對於寫操作,不管offset是否為P
繼續訪問
linux檢查nfs服務,Linux-nfs服務
一、概念nfs server:提供服務的伺服器。nfs client:訪問服務端的伺服器。RPC:遠程過程調用 (Remote Procere Call) 是能使客戶端執行其他系統中程序的一種機制。關系:NFS是一種文件系統,RPC負責信息的傳輸。二、NFS守護進程nfsd:基本的nfs守護進程,保證客戶端能夠連接服務端。mountd:RPC安裝守護進程,管理NFS文件系統。當客戶端通過nfs...
繼續訪問
linux查看nfs服務是否打開,linux 驗證 NFS 是否成功
伺服器端----->>客戶端1. 伺服器端[root@allentuns ~]# ifconfig |grep "Bcast"inet addr:192.168.1.4 Bcast:192.168.1.255 Mask:255.255.255.0[root@allentuns ~]# cd /web/htdocs/[root@allentuns htdocs]# ls[root@a...
繼續訪問
Linux之nfs文件系統詳解
NFS 概念 網路文件系統 (NFS) 是 Unix 系統和網路附加存儲文件管理器常用的網路文件系統 , 允許多個客戶端通過網路共享文件訪問。它可用於提供對共享二進制目錄的訪問 , 也可用於允許用戶在同一工作組中從不同客戶端訪問其文件。 一、nfs配置文件常用參數 服務端: 安裝nfs服務 [root@server ~]# yum install nfs-utils -y 實驗環...
繼續訪問
linux中的NFS
NFS的連接一、NFS1.1 概述1.2 相關軟體包1.3 nfs特點1.4 nfs 工作原理1.5 nfs工作流程圖1.6 掛載原理二、nfs 部署2.1 主伺服器配置 IP 192.168.161.1282.2二、客戶端配置2.3 檢驗總結: 引言: 闡述了多個客戶端通過一台伺服器達到數據互通 一、NFS 1.1 概述 NFS 是一種基於 TCP/IP 傳輸的網路文件系統協議,最初由 sun 公司開發。通過使用 NFS協議,客戶機可以像訪問本地目錄一樣訪問遠程 NFS 伺服器中的共享資源。 NFS 也
繼續訪問
linux-NFS詳解
一、NFS共享存儲服務概述 1、NFS的概念及優點 NFS是一種基於TCP/IP傳輸的網路文件系統協議。 通過使用NFS協議,客戶機可以像訪問本地目錄一樣訪問遠程伺服器中的共享資源; 對於大多數負載均衡群集來說,使用NFS協議來共享數據存儲 是比較常見的方法,NFS也是NAS存儲設備必然支持的一種協議; 2、NFS的缺點 由於NFS沒有用戶認證機制,而且數據在網路上明文傳輸,所以安全性很差,一般只在區域網中使用。 3、NFS的使用要求: NFS服務的實現依賴於RPC(遠程過程調用)機制,以完成遠程到本
繼續訪問
資料庫課程設計
c語言文件讀寫操作代碼
html+css+js網頁設計
寫評論
1
1
點贊
踩
分享
『叄』 Linux 環境下搭建NFS服務
NFS(Network File System),網路文件存儲系統,它最早是由 Sun 公司開發的,也是 FreeBSD 支持的文件系統中的一個,它允許網路中的計算機之間通過TCP/IP 網路共享資源。通過 NFS 協議,我們本地 NFS 的客戶端應用可以透明的讀寫位於服務端 NFS 伺服器上的文件,就像訪問本地文件一樣方便。簡單的理解,NFS 就是可以透過網路,讓不同的主機,不同的操作系統可以共享存儲的服務。
NFS 在文件傳送或信息傳送過程中依賴 RPC(Remote Procere Call)協議,即遠程過程調用,NFS的各項功能都必須向 RPC 來注冊,如此一來 RPC 才能了解 NFS 這服務的各項功能 Port,PID,NFS 在伺服器所監聽的 IP 等,而客戶端才能透過 RPC 的詢問找到正確對應的埠,所以 NFS 必須要有 RPC 存在是才能成功的提供服務,簡單的理解二者關系:NFS 是一個文件存儲系統,而 RPC 是負責信息的傳輸。
通過上面的簡介,我們知道 NFS 服務需要依賴 RPC 服務,所以這里 NFS 服務端需要安裝 rpcbind 和 nfs-utils ,客戶端只需要安裝 nfs-utils 即可,由於我們選用 CentOS 系統,所以可以使用 yum 快速的安裝。
然後安裝 NFS 服務
另:Ubuntu 16.04 安裝命令
我們在服務端創建一個共享目錄 /data/share ,作為客戶端掛載在遠端入口,然後設置許可權
然後,修改 NFS 配置文件 /etx/exports
說明一下,這里配置後邊有很多參數,每個參數有不同的含義,具體可以參考下邊。此處,我配置了將 /data/share 文件目錄設置為允許IP為 192.168.0.0/24 區間的客戶端掛載。然後,如果客戶端IP不在該區間也想要掛載的話,可以設置IP區間更大或者設置為 * 即允許所有客戶端掛載,例如: /home *(ro, sync,insecure,no_root_squash) 設置 /home 目錄允許所有客戶端只讀掛載。
接下來,我們先啟動 RPC 服務
我們發現,啟動了 NFS 服務後,RPC 注冊的埠列表明顯增多。現在服務端都啟動起來了,在服務端看下是否正確載入了設置的 /etc/exports 配置
最後,在另一台Linux虛擬機上測試一下,是否能夠正確掛載。首先,我們可以在客戶端查看下NFS服務端設置可共享的目錄信息
然後,在客戶端創建掛載目錄/share
最後,掛載遠端目錄到本地 /share 目錄
可以看到,可以正確將遠端 NFS 目錄掛載到本地。注意:掛載點 /share 目錄必須已經存在,而且目錄中沒有文件或子目錄
最後,我們在 NFS 服務端 /data/share 目錄下創建一個文件,看下客戶端能否正確讀取並修改
都可以了,這里因為上面設置了 NFS 遠端目錄許可權為 rw 擁有讀寫許可權,如果設置為 ro ,那麼客戶端只能讀取,不能寫入。根據實際應用場景合理配置。
NFS 默認使用 UDP協議進行掛載,為了提供 NFS 的穩定性,可以使用 TCP 協議掛載,那麼客戶端掛載命令如下:
最後,卸載命令
『肆』 NFS架構(轉載)
1.為什麼用共享存儲
2.存儲有哪些工具
3.共享存儲應用場景有哪些
4.部署nfs共享存儲
5.客戶端嘗試連接共享存儲
什麼是NFS?
NFS 是 Network File System 的縮寫及網路文件系統。 NFS 主要功能是通過區域網絡讓不同的主機系統之間可以共享文件或目錄。
NFS 系統和 Windows 網路共享、網路驅動器類似, 只不過 windows 用於區域網, NFS 用於企業集群架構中, 如果是大型網站, 會用到更復雜的分布式文件系統 FastDFS,glusterfs,HDFS
那麼我們為什麼要使用數據存儲共享服務?
1.實現多台伺服器之間數據共享
2.實現多台伺服器之間數據一致
下面我將通過圖解給大家展示集群需要共享存儲服務的理由。
1.A 用戶上傳圖片經過負載均衡,負載均衡將上傳請求調度至 WEB1 伺服器上。
2.B 用戶訪問 A 用戶上傳的圖片,此時 B 用戶被負載均衡調度至 WEB2 上,因為 WEB2 上沒有這張圖片,所以 B用戶無法看到 A 用戶傳的圖片
如果有共享存儲的情況
1.A 用戶上傳圖片無論被負載均衡調度至 WEB1 還是 WEB2, 最終數據都被寫入至共享存儲
2.B 用戶訪問 A 用戶上傳圖片時,無論調度至 WEB1 還是 WEB2,最終都會上共享存儲訪問對應的文件,這樣就可以訪問到資源了
NFS工作原理
1.用戶進程訪問 NFS 客戶端,使用不同的函數對數據進行處理
2.NFS 客戶端通過 TCP/IP 的方式傳遞給 NFS 服務端
3.NFS 服務端接收到請求後,會先調用 portmap 進程進行埠映射。
4.nfsd 進程用於判斷 NFS 客戶端是否擁有許可權連接 NFS 服務端。
5.Rpc.mount 進程判斷客戶端是否有對應的許可權進行驗證。
6.idmap 進程實現用戶映射和壓縮
7.最後 NFS 服務端會將對應請求的函數轉換為本地能識別的命令,傳遞至內核,由內核驅動硬體。
注意: rpc 是一個遠程過程調用,那麼使用 nfs 必須有 rpc 服務
1.nfs依賴於RPC服務來傳遞消息
2.NFS服務啟動的埠號是隨機的,啟動之後會向本地的RCP注冊
3.先啟動RPC服務,再啟動NFS服務
4.NFS和RPC之間的通訊是他們自己內部完成的,對於用戶來說無感知
5.NFS客戶端和服務端不會直接溝通,必須通過RPC服務傳遞消息
6.防火牆要開放RPC服務的埠
nfs 服務程序的配置文件為/etc/exports,需要嚴格按照共享目錄的路徑 允許訪問的 NFS 客戶端(共享許可權參數)格式書寫,定義要共享的目錄與相應的許可權,具體書寫方式如下圖所示
配置文件參數解釋:
執行 man exports 命令,然後切換到文件結尾,可以快速查看如下樣例格式:
nfs共享參數 參數作用
rw 讀寫許可權
ro 只讀許可權
root_squash
當 NFS 客戶端以 root 管理員訪問時,映射為 NFS 伺服器的匿名用戶(不常用)
no_root_squash
當 NFS 客戶端以 root 管理員訪問時,映射為 NFS 伺服器的 root 管理員(不常用)
all_squash
無論 NFS 客戶端使用什麼賬戶訪問,均映射為 NFS 伺服器的匿名用戶(常用)
no_all_squash
無論 NFS 客戶端使用什麼賬戶訪問,都不進行壓縮
sync
同時將數據寫入到內存與硬碟中,保證不丟失數據
async
優先將數據保存到內存,然後再寫入硬碟;這樣效率更高,但可能會丟失數據
anonuid
配置 all_squash 使用,指定 NFS 的用戶 UID,必須存在系統
anongid
配置 all_squash 使用,指定 NFS 的用戶 UID,必須存在系統
寫入配置文件:注意!IP地址和後面的小括弧沒有空格
創建數據目錄和授權:
在使用 NFS 服務進行文件共享之前,需要使用 RPC(Remote Procere Call 遠程過程調用服務將 NFS 伺服器的IP 地址和埠號信息發送給客戶端。因此,在啟動 NFS 服務之前,需要先重啟並啟用 rpcbind 服務程序,同時都加入開機自啟動
客戶端安裝nfs服務十分簡單,只需要安裝nfs軟體包即可
安裝完成後只需要啟動rpcbind,不需要啟動nfs
使用showmount命令查看nfs共享信息查詢 NFS 伺服器的遠程共享信息,其輸出格式為「共享的目錄名稱 允許使用客戶端地址」。
掛載命令: 創建掛載目錄
在 NFS 客戶端創建一個掛載目錄, 使用 mount 命令並結合-t 參數, 指定要掛載的文件系統的類型, 並在命令後面寫上伺服器的 IP 地址, 以及伺服器上的共享目錄, 最後需要寫上要掛載到本地系統(客戶端)的目錄
查看是否掛載成功:
測試寫入數據是否正常
寫入開機自動掛載
卸載命令:注意!卸載的時候如果提示」umount.nfs: /nfsdir: device is busy」先切換到其他目錄再卸載
強制卸載命令:
服務端配置:
客戶端掛載:
測試讀取:
寫入測試:
服務端配置:
服務端創建用戶及授權:
重啟NFS服務:
更改目錄授權:
客戶端操作:
我們會發現依然可以寫入,但是為了避免這種情況發生,建議客戶端也創建相同uid gid的用戶
參考博客
啟動NFS會開啟如下埠:
1)portmapper 埠:111 udp/tcp;
2)nfs/nfs_acl 埠:2049 udp/tcp;
3)mountd 埠:"32768--65535" udp/tcp
4)nlockmgr 埠:"32768--65535" udp/tcp
系統 RPC服務在 nfs服務啟動時默認會給 mountd 和 nlockmgr 動態選取一個隨機埠來進行通訊。
1.查看NFS啟動後的埠
2.將隨機的埠號設置固定
3.重啟nfs和rpc服務
4.再次查看埠信息,發現埠號已經固定了
5.設置iptables
6.保存配置
如果設置了開機自啟動,但是系統啟動的時候NFS並沒有提供服務,就會導致開機自檢的時候卡在掛在那一步
NFS 存儲優點
1.NFS 文件系統簡單易用、方便部署、數據可靠、服務穩定、滿足中小企業需求。
2.NFS 文件系統內存放的數據都在文件系統之上,所有數據都是能看得見
NFS 存儲局限
1.存在單點故障, 如果構建高可用維護麻煩 web->nfs()->backup
2.NFS 數據明文, 並不對數據做任何校驗。
3.客戶端掛載 NFS 服務沒有密碼驗證, 安全性一般(內網使用)
NFS 應用建議
1.生產場景應將靜態數據盡可能往前端推, 減少後端存儲壓力
2.必須將存儲里的靜態資源通過 CDN 緩存 jpg\png\mp4\avi\css\js
3.如果沒有緩存或架構本身歷史遺留問題太大, 在多存儲也無用
准備 3 台虛擬機伺服器,並且請按照要求搭建配置 NFS 服務。
NFS 服務端(A)
NFS 客戶端(B)
NFS 客戶端(C)
1.在 NFS 服務端(A)上共享/data/w(可寫)及/data/r(只讀)
2.在 NFS 客戶端(B/C)上進行掛載
環境准備
『伍』 十三、NFS、FTP、DNS
那RPC和NFS之間又是如何之間相互通訊的?
實驗環境
nfc_server操作
client客戶端操作
ftp主動模式
ftp被動模式
實驗環境
ftp_server端操作
配置文件詳解
client端操作
域名解析
域名空間
dns解析過程
實驗環境
1.安裝軟體
2.工作目錄:
3.編輯主配置文件:
『陸』 NFS的主要配置文件是什麼
/etc/exports
nfs目錄,IP地址,許可權
『柒』 NFS 深入配置
1.1 NFS配置參數許可權
參數名稱
參數用途
rw
read-write,表示可讀寫許可權
ro
read-only,表示只讀許可權
sync
請求或寫入數據時,數據同步寫入到硬碟才完成
async
非同步寫到遠程緩沖區
all_squash
不管客戶端什麼用戶,到服務端都會被壓縮成匿名用戶
anonuid
匿名用戶的UID
anongid
匿名用戶的GID
在配置文件內設置共享目錄時所給予的許可權:
[root@nfs01 ~]$ cat /etc/exports
/data 172.16.1.0/24(rw,sync) 10.0.0.0/24(ro)
配置好NFS服務後,/var/lib/nfs/etab文件中可以看到的配置參數以及默認自帶的參數:
[root@nfs01 ~]$ cat /var/lib/nfs/etab
/data
172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,
no_all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,
anongid=65534,sec=sys,rw,secure,root_squash,no_all_squash
1.1.1 更改NFS默認用戶
1.1.1.1 nfs01服務端NFS、以及所有客戶端:
[root@nfs01 ~] id www
uid=1111(www) gid=1111(www) 組=1111(www)
1.1.1.2 服務端NFS特殊配置
配置文件增加如下內容:
[root@nfs01 ~]$ tail -2 /etc/exports
/data 172.16.1.0/24(rw,sync,all_squash,anonuid=1111,anongid=1111)
/data1 10.0.0.0/24(ro)
共享目錄更改用戶和用戶組:
[root@nfs01 ~] ls -ld /data
drwxr-xr-x 2 www www 70 4月 18 10:05 /data
1.1.1.3 服務端NFS重啟
[root@nfs01 ~]$ systemctl reload nfs
1.1.1.4 每個客戶端掛載
[root@web01 ~] df -h
文件系統 容量 已用 可用 已用% 掛載點
172.16.1.31:/data 19G 1.8G 18G 10% /data
新創建文件驗證用戶名:
[root@web01 /data]# touch new_web01.txt
[root@web01 /data]# ls -l
總用量 0
-rw-r--r-- 1 www www 0 4月 18 11:01 new_web01.txt
-rw-r--r-- 1 www www 0 4月 17 11:59 oldboy.txt
-rw-r--r-- 1 www www 0 4月 17 12:30 oldgirl.txt
1.2 NFS服務重點知識梳理
當多個NFS客戶端訪問伺服器端讀寫文件時,需要具有以下幾個許可權:
NFS伺服器/etc/exports設置需要開放許可寫入的許可權,即伺服器端的共享許可權
NFS伺服器實際要共享的NFS目錄許可權具有可寫入w的許可權,即伺服器端本地目錄的安全許可權
每台機器都對應存在和NFS默認配置UID的相同UID的用戶
下表列出了常用的重點NFS服務文件或命令。
NFS常用路徑
說明
/etc/exports
NFS服務主配置文件,配置NFS具體共享服務的地點,默認內容為空
/var/lib/nfs/etab
NFS配置文件的完整參數設定的文件
/proc/mounts
客戶端的掛載參數
1.3 NFS客戶端掛載深入
1.3.1 mount -o 參數選項及系統默認設置
參數
參數意義
系統默認值
suid/nosuid
當掛載的文件系統上有任何SUID的程序時,只要使用nosuid就能夠取消設置SUID的功能
suid
rw/ro
可以指定文件系統是只讀(ro)或可讀寫(rw)
rw
dev/nodev
是否可以保留裝置文件的特殊功能
dev
exec/noexec
是否具有執行文件的許可權
exec
user/nouser
是否允許用戶擁有文件的掛載與卸載功能
nouser
auto/noauto
auto指的是「mount -a」時會不會被掛載的項目,如果不需要這個分區隨時被掛載,可以設置為noauto
auto
1.3.2 mount -o 參數詳細說明
參數選項
說明
async
涉及文件系統I/O的操作都是非同步處理,即不會同步寫到磁碟,能提高性能,但會降低數據安全。
sync
有I/O操作時,都會同步處理I/O,會降低性能,但數據比較安全。
atime
在每一次數據訪問時,會更新訪問文件的時間戳,是默認選項,在高並發的情況下,可以通過添加noatime來取消默認項。
ro
以只讀的方式掛載一個文件系統
rw
以可讀寫的方式掛載一個文件系統
auto
能夠被自動掛載通過-a選項
noauto
不會自動掛載文件系統
defaults
這是fstab里的默認值,包括rw、suid、dev、exec、auto、nouser、async
exec
允許文件系統執行二進制文件,取消這個參數,可以提升系統安全性。
noexec
在掛載的文件系統中不允許執行任何二進製程序,進僅對二進製程序有效。
noatime
訪問文件時不更新文件的時間戳,高並發情況下,一般使用該參數
nodiratime
不更新文件系統上的directory inode時間戳,高並發環境,推薦顯式應用該選項,可以提高系統I/O性能。
nosuid
不允許set-user-identifier or set-group-identifier位生效。
suid
允許set-user-identifier or set-group-identifier位生效。
nouser
禁止一個普通用戶掛載該文件系統,這是默認掛載時的默認選項。
remount
嘗試重新掛載一個已經掛載了的文件系統,這通常被用來改變一個文件系統的掛載標志,從而使得一個只讀文件系統變的可寫,這個動作不會改變設備或者掛載點。當系統故障時進人single或rescue模式修復系統時,會發現根文件系統經常會變成只讀文件系統,不允許修改,此時該命令就派上用場了。具體命令為:mount -o remount,rw /,表示將根文件系統重新掛載使得可寫。single或rescue模式修復系統時這個命令十分重要。
dirsync
目錄更新時同步寫人磁碟。
1.3.3 企業生產場景NFS共享存儲優化
硬體:使用ssd/sas磁碟,可以買多塊,製作成raid10。
NFS伺服器端配置:
/data 10.0.0.0/24(rw,sync,all_squash,anonuid=65534,anongid=65534)
NFS客戶端掛載優化配置命令:
mount -t nfs -o nosuid,noexec,nodev,noatime,nodiratime,rsize=131072,
wsize=131072 172.16.1.31:/data /mnt <===兼顧安全性能
對NFS服務的所有伺服器內核進行優化,執行命令如下:
cat >>/etc/sysctl.conf <<EOF
net.core.wmen_default = 8388608
net.core.rmen_default = 8388608
net.core.wmen_max = 16777216
net.core.rmen_max = 16777216
EOF
執行sysctl -p 生效
大型網站NFS網路文件系統的替代軟體為分布式文件系統,如:Moosefs(mfs)、GlusterFS、FastDFS。
1.4 NFS系統應用的優缺點
1.4.1 優點
簡單,容易上手,容易掌握。
NFS文件系統內數據是在文件系統之上的,即數據是能看得見的。
部署快速維護簡單方便,且可控,滿足需求就是最好的。
可靠,從軟體層面上看,數據可靠性高,經久耐用。
服務非常穩定。
1.4.2 缺點(局限)
存在單點故障,如果NFS服務端宕機了,所有客戶端都不能訪問共享目錄。
在大數據高並發的場合,NFS效率、性能有限。
客戶端認證是基於IP和主機名的,許可權要根據ID識別,安全性一般。
NFS數據是明文的,NFS本身不對數據完整性進行驗證。
多台客戶機掛載一個NFS伺服器時,連接管理維護麻煩。
1.4.3 解決性能問題的方法
使用CDN加速以及自己搭建文件緩存服務(squid、nginx、varnish)。
把多個目錄分配到不同的NFS伺服器上。
棄用NFS(即讀寫分離)。
使用分布式文件系統。
『捌』 Linux nfs 配置文件怎麼寫就是/etc/exports
先看我的樣版:
/home/nfs 192.168.0.0/255.255.255.0(rw,no_root_squash)
1、每行分兩部分,由空格分開
2、第一部份(空格之前的那段)是你要共享出內去的目容錄。
3、第二部份(空格之後的那段)又可以分三部分:
(1)、「192.168.0.0」表示有權共享本目錄的IP網段。
(2)、「255.255.255.0」是那個有權共享的網段所用的掩碼
(3)、括弧裡面又有兩部分,用逗號隔開:
(i)、「rw」表示來訪者對所共享出去的目錄享有讀和寫的權力,如果只給讀不給寫就將之換成「ro」 (意思是 Read Only)
(ii)、"no_root_squash"表示如果來訪者是該機的 root 則在本機也給予 root 待遇,如果沒有"no_root_squash"(以及前面的逗號),那來訪者在本機只相當於本機的 nobody 用戶。
『玖』 linux配置nfs步驟
NFS的配置過程很簡單。在伺服器端中編輯 /etc/exports 文件,添加如下內容: /home/nfs-share 192.168.1.122 (rw,sync)
第一項是要共享的目錄,後者為共享的配置參數一般為: (rw,sync,no_root_squash,no_all_squash,no_subtree_check)
然後開啟NFS和portmap服務:
/etc/init.d/nfs start //用service nfs start也可以 /etc/init.d/portmap start //用service portmap stasrt也可以
在centos6.5中portmap已經改為rpcbind 在客戶端,用mount –t nfs 192.168.123:/home/nfs-share /home/remote_file掛載伺服器端的共享目錄到本地的/home/remote-file掛載點,然後我們就可以在客戶端上應用到遠程主機上的/home/nfs-share目錄了。想要系統在開機時自動掛載,修改/etc/fstab文件,把NFS伺服器的共享目錄添加進去就可以了,這個不用多說。
如何知道遠程主機上的共享目錄情況呢?使用showmount命令,這個命令需要root許可權。它有三個選項(記住這三個選項代表的含義: showmount –a IP 顯示指定NFS伺服器的客戶端以及伺服器端在客戶端的掛載點 showmount –d IP 顯示指定NFS伺服器在客戶端的掛載點 showmount –e IP 顯示指定NFS伺服器上的共享目錄列表(或者叫輸出列表) 我們輸入命令showmount –a 192.168.1.123:
圖片客戶端中出現的mount clntudp_create: RPC: Program not registered錯誤是怎麼回事?噢,我剛才重啟了一下伺服器端,重啟後NFS服務沒有開啟。 我們開啟伺服器端的NFS服務,再從客戶端上查看一下NFS伺服器的情況:
Showmount –a顯示出NFS伺服器192.168.1.123的共享目錄被客戶端192.168.122掛載到/home中;
在showmount -e IP,出現clnt_create: RPC: Port mapper failure - Timed out報錯
解決方案:
被訪問的NFS伺服器上的防火牆沒有添加規則,向iptables裡面添加以下查看的所有埠即可(目前解決的方法,當然你也可以關閉防火牆,不過這樣是比較不安全的,如果你的nfs作用不大,建議你另選別的應用來替代吧!畢竟開那麼多的埠,比較不安全呀!)
通過#rpcinfo -p 10.10.209.148
[root@rh01 /]# rpcinfo -p 10.10.209.148program vers proto port service100000 4 tcp 111 portmapper100000 3 tcp 111 portmapper100000 2 tcp 111 portmapper100000 4 udp 111 portmapper100000 3 udp 111 portmapper100000 2 udp 111 portmapper100024 1 udp 52943 status100024 1 tcp 37706 status100011 1 udp 875 rquotad100011 2 udp 875 rquotad100011 1 tcp 875 rquotad100011 2 tcp 875 rquotad100003 2 tcp 2049 nfs100003 3 tcp 2049 nfs100003 4 tcp 2049 nfs100227 2 tcp 2049 nfs_acl100227 3 tcp 2049 nfs_acl100003 2 udp 2049 nfs100003 3 udp 2049 nfs100003 4 udp 2049 nfs100227 2 udp 2049 nfs_acl100227 3 udp 2049 nfs_acl100021 1 udp 37438 nlockmgr100021 3 udp 37438 nlockmgr100021 4 udp 37438 nlockmgr100021 1 tcp 46331 nlockmgr100021 3 tcp 46331 nlockmgr100021 4 tcp 46331 nlockmgr100005 1 udp 57177 mountd100005 1 tcp 43147 mountd100005 2 udp 49154 mountd100005 2 tcp 54810 mountd100005 3 udp 55707 mountd100005 3 tcp 58309 mountd
[root@rh01 /]#
剛才在重啟NFS服務的時候,細心的話可以注意到,我們在輸入命令/etc/init.d/nfs start開啟nfs服務時,系統還自作主張地開啟了NFS quotas等其它3個服務。
怎麼回事?我們只輸入了一條啟動NFS服務的命令,它怎麼額外的啟動了3個服務?後面的啟動portmap服務又是怎麼回事? 我們首先要了解一點:NFS文件系統要提供服務單靠本身的NFS服務是不夠的,還需要調用其它服務,這個其它服務就是RPC(remote procere call,遠程過程調用)服務和portmap服務。由於NFS服務本身不提供文件傳輸功能,我們要遠程使用NFS文件系統就需要RPC服務的支持;而portmap服務用來為RPC服務進行動態埠分配和映射,所以portmap服務也是NFS服務所必須的。
我們查看一下服務的啟動情況:
所遇錯誤:
/etc/init.d/nfs-kernel-server: 沒有那個文件或目錄
解決方案:
沒有配置、安裝NFS
Linux 下配置NFS服務
1、安裝
2、配置
3、客戶端
所遇問題:centos6.5
portmap: 未被識別的服務
解決方案:
由於在6系列裡面,portmap已經改名了 ,6系列需要使用 service rpcbind start啟動[root@unix-big-bang ~]# service portmap start
portmap: 未被識別的服務
[root@unix-big-bang ~]# service rpcbind status
rpcbind (pid 1312) is running...
[root@unix-big-bang ~]#
好文共賞:
linux nfs文件共享
◆一、概念
NFS是網路文件系統(Network File System)的簡稱,是分布式計算機系統的一個組成部分,可實現在異構網路上共享和裝配遠程文件系統。
NFS由SUN公司開發,目前已成為文件服務的一種標准(RFC1904,RFC1813)。其最大的功能就是可以通過網路,讓不同 操作系統 的計算機可以共享數據,所以也可以看作是一個文件伺服器。NFS是除了SAMBA之外Windows與Linux及Unix與Linux之間通信的方法。
理想條件下的NFS 網路拓撲結構
1、設置Linux系統之間的文件共享(Linux與Windows中間文件共享採用SAMBA服務);
2、NFS只是一種文件系統,本身沒有傳輸功能,是基於RPC協議實現的,才能達到兩個Linux系統之間的文件目錄共享;
3、NFS為C/S 架構 ;
◆二、伺服器配置
1、配置文件
主要配置文件為:/etc/exports
格式為: 共享目錄 可mount主機IP(參數1,參數2,……)
如:/var/nfs 172.20. . (rw,sync,no_rootl_squash)
說明:必須注意nfs/目錄的訪問許可權,必須設置成777許可權;父目錄/var許可權無要求,普通的755即可;
2、啟動相關服務
然後依次啟動相關服務:portmap,nfslock,nfs
service portmap start
service nfslock start
service nfs start
關閉順序相反。
3、檢查共享目錄
隨後可以採用showmount –e查看一下,看看共享的目錄情況:
[root@ns var]# showmount -e
Export list for ns.osserver:
/var/nfs 172.20. .
OK,到此為止,NFS伺服器搭建完畢;
◆三、客戶端配置
1、確保portmap運行
客戶端必須確保RPC協議相應的portmap正常運行,否則mount將失敗;
2、掛載/var/nfs目錄(本地掛載點為/mnt/nfs)
mount -t nfs 172.20.65.16:/var/nfs /mnt/nfs
成功mount以後,即可同本地目錄一樣隨意操作;
◆四、其它相關命令
1、當修改了/etc/exports文件後,可以不用重新啟動nfs服務,直接採用exports –rv 即可重新導出共享目錄;
該命令格式如下:
exportfs [-aruv]
-a :全部mount或者unmount /etc/exports中的內容
-r :重新mount /etc/exports中分享出來的目錄
-u :umount 目錄
-v :在 export 的時候,將詳細的信息輸出到屏幕上。
具體例子:
[root@ns var]# showmount -e
Export list for ns.osserver:
/var/nfs 172.20. .
[root@ns var]# exportfs –au #全部卸載
[root@ns var]# showmount -e
Export list for ns.osserver:
[root@ns var]# exportfs –rv #全部重新 export 一次
exporting 172.20. . :/var/nfs
[root@ns var]#
2、showmout命令對於NFS的操作和查錯有很大的幫助,所以我們先來看一下showmount的用法
showmout
-a :這個參數是一般在NFS SERVER上使用,是用來顯示已經mount上本機nfs目錄的cline機器。
-e :顯示指定的NFS SERVER上export出來的目錄。
例如:
[root@localhost ~]# showmount -e 172.20.16.139
Export list for 172.20.16.139 :/root/share 172.20.16.137
[root@ns var]# showmount -a
All mount points on localhost.localdomain: :/root/share,172.20. . :/root/share,172.20.16. :/root/share,172.20.16.139:/nfsshare,172.20.16.139:/root/share172.20.16.137: 172.20.16.137:,172.20. . 172.20.16.137:,172.20.16. 172.20.16.137:/root/share172.20.16.139: 172.20.16.139:,172.20. . 172.20.16.139:,172.20.16. 172.20.16.139:,172.20.16.139172.20.16.139:DEFAULT
◆五、常見問題解答
1、提示:mount to NFS server 餄.20.67.203' failed: server is down.
解決方案:可能是NFS伺服器的防火牆有問題;
2、提示:mount: RPC: Timed out
解決方案:由於RPC協議沒運行;啟動portmap服務;
也有可能是防火牆問題;Server/Client均有可能。
『拾』 要配置nfs伺服器在伺服器端主要配置什麼文件
一、NFS服務簡介
NFS 是Network File System的縮寫,即網路文件系統。一種使用於分散式文件系統的協定,由Sun公司開發,於1984年向外公布。功能是通過網路讓不同的機器、不同的操作系統能夠彼此分享個別的數據,讓應用程序在客戶端通過網路訪問位於伺服器磁碟中的數據,是在類Unix系統間實現磁碟文件共享的一種方法。
NFS 的基本原則是「容許不同的客戶端及服務端通過一組RPC分享相同的文件系統」,它是獨立於操作系統,容許不同硬體及操作系統的系統共同進行文件的分享。
NFS在文件傳送或信息傳送過程中依賴於RPC協議。RPC,遠程過程調用 (Remote Procere Call) 是能使客戶端執行其他系統中程序的一種機制。NFS本身是沒有提供信息傳輸的協議和功能的,但NFS卻能讓我們通過網路進行資料的分享,這是因為NFS使用了一些其它的傳輸協議。而這些傳輸協議用到這個RPC功能的。可以說NFS本身就是使用RPC的一個程序。或者說NFS也是一個RPC SERVER。所以只要用到NFS的地方都要啟動RPC服務,不論是NFS SERVER或者NFS CLIENT。這樣SERVER和CLIENT才能通過RPC來實現PROGRAM PORT的對應。可以這么理解RPC和NFS的關系:NFS是一個文件系統,而RPC是負責負責信息的傳輸。
二、系統環境
系統平台:CentOS release 5.6 (Final)
NFS Server IP:192.168.1.108
防火牆已關閉/iptables: Firewall is not running.
SELINUX=disabled
三、安裝NFS服務
NFS的安裝是非常簡單的,只需要兩個軟體包即可,而且在通常情況下,是作為系統的默認包安裝的。
nfs-utils-* :包括基本的NFS命令與監控程序
portmap-* :支持安全NFS RPC服務的連接
1、查看系統是否已安裝NFS
系統默認已安裝了nfs-utils portmap 兩個軟體包。
2、如果當前系統中沒有安裝NFS所需的軟體包,需要手工進行安裝。nfs-utils 和portmap 兩個包的安裝文件在系統光碟中都會有。
復制代碼
# mount /dev/cdrom /mnt/cdrom/
# cd /mnt/cdrom/CentOS/
# rpm -ivh portmap-4.0-65.2.2.1.i386.rpm
# rpm -ivh nfs-utils-1.0.9-50.el5.i386.rpm
# rpm -q nfs-utils portmap
復制代碼
四、NFS系統守護進程
nfsd:它是基本的NFS守護進程,主要功能是管理客戶端是否能夠登錄伺服器;
mountd:它是RPC安裝守護進程,主要功能是管理NFS的文件系統。當客戶端順利通過nfsd登錄NFS伺服器後,在使用NFS服務所提供的文件前,還必須通過文件使用許可權的驗證。它會讀取NFS的配置文件/etc/exports來對比客戶端許可權。
portmap:主要功能是進行埠映射工作。當客戶端嘗試連接並使用RPC伺服器提供的服務(如NFS服務)時,portmap會將所管理的與服務對應的埠提供給客戶端,從而使客戶可以通過該埠向伺服器請求服務。
五、NFS伺服器的配置
NFS伺服器的配置相對比較簡單,只需要在相應的配置文件中進行設置,然後啟動NFS伺服器即可。
NFS的常用目錄
/etc/exports NFS服務的主要配置文件
/usr/sbin/exportfs NFS服務的管理命令
/usr/sbin/showmount 客戶端的查看命令
/var/lib/nfs/etab 記錄NFS分享出來的目錄的完整許可權設定值
/var/lib/nfs/xtab 記錄曾經登錄過的客戶端信息
NFS服務的配置文件為 /etc/exports,這個文件是NFS的主要配置文件,不過系統並沒有默認值,所以這個文件不一定會存在,可能要使用vim手動建立,然後在文件裡面寫入配置內容。
/etc/exports文件內容格式:
<輸出目錄> [客戶端1 選項(訪問許可權,用戶映射,其他)] [客戶端2 選項(訪問許可權,用戶映射,其他)]
a. 輸出目錄:
輸出目錄是指NFS系統中需要共享給客戶機使用的目錄;
b. 客戶端:
客戶端是指網路中可以訪問這個NFS輸出目錄的計算機
客戶端常用的指定方式
指定ip地址的主機:192.168.0.200
指定子網中的所有主機:192.168.0.0/24 192.168.0.0/255.255.255.0
指定域名的主機:david.bsmart.cn
指定域中的所有主機:*.bsmart.cn
所有主機:*
c. 選項:
選項用來設置輸出目錄的訪問許可權、用戶映射等。
NFS主要有3類選項:
訪問許可權選項
設置輸出目錄只讀:ro
設置輸出目錄讀寫:rw
用戶映射選項
all_squash:將遠程訪問的所有普通用戶及所屬組都映射為匿名用戶或用戶組(nfsnobody);
no_all_squash:與all_squash取反(默認設置);
root_squash:將root用戶及所屬組都映射為匿名用戶或用戶組(默認設置);
no_root_squash:與rootsquash取反;
anonuid=xxx:將遠程訪問的所有用戶都映射為匿名用戶,並指定該用戶為本地用戶(UID=xxx);
anongid=xxx:將遠程訪問的所有用戶組都映射為匿名用戶組賬戶,並指定該匿名用戶組賬戶為本地用戶組賬戶(GID=xxx);
其它選項
secure:限制客戶端只能從小於1024的tcp/ip埠連接nfs伺服器(默認設置);
insecure:允許客戶端從大於1024的tcp/ip埠連接伺服器;
sync:將數據同步寫入內存緩沖區與磁碟中,效率低,但可以保證數據的一致性;
async:將數據先保存在內存緩沖區中,必要時才寫入磁碟;
wdelay:檢查是否有相關的寫操作,如果有則將這些寫操作一起執行,這樣可以提高效率(默認設置);
no_wdelay:若有寫操作則立即執行,應與sync配合使用;
subtree:若輸出目錄是一個子目錄,則nfs伺服器將檢查其父目錄的許可權(默認設置);
no_subtree:即使輸出目錄是一個子目錄,nfs伺服器也不檢查其父目錄的許可權,這樣可以提高效率;
六、NFS伺服器的啟動與停止
在對exports文件進行了正確的配置後,就可以啟動NFS伺服器了。
1、啟動NFS伺服器
為了使NFS伺服器能正常工作,需要啟動portmap和nfs兩個服務,並且portmap一定要先於nfs啟動。
# service portmap start
# service nfs start
2、查詢NFS伺服器狀態
# service portmap status
# service nfs status
3、停止NFS伺服器
要停止NFS運行時,需要先停止nfs服務再停止portmap服務,對於系統中有其他服務(如NIS)需要使用時,不需要停止portmap服務
# service nfs stop
# service portmap stop
4、設置NFS伺服器的自動啟動狀態
對於實際的應用系統,每次啟動LINUX系統後都手工啟動nfs伺服器是不現實的,需要設置系統在指定的運行級別自動啟動portmap和nfs服務。
# chkconfig --list portmap
# chkconfig --list nfs
設置portmap和nfs服務在系統運行級別3和5自動啟動。
# chkconfig --level 35 portmap on
# chkconfig --level 35 nfs on
七、實例
1、將NFS Server 的/home/david/ 共享給192.168.1.0/24網段,許可權讀寫。
伺服器端文件詳細如下:
# vi /etc/exports
/home/david 192.168.1.0/24(rw)
2、重啟portmap 和nfs 服務
# service portmap restart
# service nfs restart
# exportfs
3、伺服器端使用showmount命令查詢NFS的共享狀態
# showmount -e//默認查看自己共享的服務,前提是要DNS能解析自己,不然容易報錯
# showmount -a//顯示已經與客戶端連接上的目錄信息
4、客戶端使用showmount命令查詢NFS的共享狀態
# showmount -e NFS伺服器IP
5、客戶端掛載NFS伺服器中的共享目錄
命令格式
# mount NFS伺服器IP:共享目錄 本地掛載點目錄
# mount 192.168.1.108:/home/david/ /tmp/david/
# mount |grep nfs
掛載成功。
查看文件是否和伺服器端一致。
6、NFS的共享許可權和訪問控制
現在我們在/tmp/david/ 裡面建立一個文件,看看許可權是什麼
# touch 20130103
這里出現Permission denied,是因為NFS 伺服器端共享的目錄本身的寫許可權沒有開放給其他用戶,在伺服器端打開該許可權。
# chmod 777 -R /home/david/
再次在客戶端/tmp/david/ 裡面建立一個文件
我用root 用戶建立的文件,變成了nfsnobody 用戶。
NFS有很多默認的參數,打開/var/lib/nfs/etab 查看分享出來的/home/david/ 完整許可權設定值。
# cat /var/lib/nfs/etab
默認就有sync,wdelay,hide 等等,no_root_squash 是讓root保持許可權,root_squash 是把root映射成nobody,no_all_squash 不讓所有用戶保持在掛載目錄中的許可權。所以,root建立的文件所有者是nfsnobody。
下面我們使用普通用戶掛載、寫入文件測試。
# su - david
$ cd /tmp/david/
$ touch 2013david
普通用戶寫入文件時就是自己的名字,這也就保證了伺服器的安全性。
關於許可權的分析
1. 客戶端連接時候,對普通用戶的檢查
a. 如果明確設定了普通用戶被壓縮的身份,那麼此時客戶端用戶的身份轉換為指定用戶;
b. 如果NFS server上面有同名用戶,那麼此時客戶端登錄賬戶的身份轉換為NFS server上面的同名用戶;
c. 如果沒有明確指定,也沒有同名用戶,那麼此時 用戶身份被壓縮成nfsnobody;
2. 客戶端連接的時候,對root的檢查
a. 如果設置no_root_squash,那麼此時root用戶的身份被壓縮為NFS server上面的root;
b. 如果設置了all_squash、anonuid、anongid,此時root 身份被壓縮為指定用戶;
c. 如果沒有明確指定,此時root用戶被壓縮為nfsnobody;
d. 如果同時指定no_root_squash與all_squash 用戶將被壓縮為 nfsnobody,如果設置了anonuid、anongid將被壓縮到所指定的用戶與組;
7、卸載已掛載的NFS共享目錄
# umount /tmp/david/
八、啟動自動掛載nfs文件系統
格式:
<server>:</remote/export> </local/directory> nfs < options> 0 0
# vi /etc/fstab
保存退出,重啟系統。
查看/home/david 有沒有自動掛載。
自動掛載成功。
九、相關命令
1、exportfs
如果我們在啟動了NFS之後又修改了/etc/exports,是不是還要重新啟動nfs呢?這個時候我們就可以用exportfs 命令來使改動立刻生效,該命令格式如下:
# exportfs [-aruv]
-a 全部掛載或卸載 /etc/exports中的內容
-r 重新讀取/etc/exports 中的信息 ,並同步更新/etc/exports、/var/lib/nfs/xtab
-u 卸載單一目錄(和-a一起使用為卸載所有/etc/exports文件中的目錄)
-v 在export的時候,將詳細的信息輸出到屏幕上。
具體例子:
# exportfs -au 卸載所有共享目錄
# exportfs -rv 重新共享所有目錄並輸出詳細信息
2、nfsstat
查看NFS的運行狀態,對於調整NFS的運行有很大幫助。
3、rpcinfo
查看rpc執行信息,可以用於檢測rpc運行情況的工具,利用rpcinfo -p 可以查看出RPC開啟的埠所提供的程序有哪些。
4、showmount
-a 顯示已經於客戶端連接上的目錄信息
-e IP或者hostname 顯示此IP地址分享出來的目錄
5、netstat
可以查看出nfs服務開啟的埠,其中nfs 開啟的是2049,portmap 開啟的是111,其餘則是rpc開啟的。
最後注意兩點,雖然通過許可權設置可以讓普通用戶訪問,但是掛載的時候默認情況下只有root可以去掛載,普通用戶可以執行sudo。
NFS server 關機的時候一點要確保NFS服務關閉,沒有客戶端處於連接狀態!通過showmount -a 可以查看,如果有的話用kill killall pkill 來結束,(-9 強制結束)