⑴ 在Windows上自建nfs,性能比較差,這個怎麼辦
本文描述了在應用環境為Windows系統下,需要使用文件存儲的場景。本文採用了私有化部署的方式向用戶提供了文件共享存儲服務。用NFS協議,搭建Windows環境NFS服務,為Windows系統下的雲主機提供共享訪問服務。
存儲格式都有哪些?
文件、塊和對象是三種以不同的方式來保存、整理和呈現數據的存儲格式。這些格式各有各的功能和限制。文件存儲會以文件和文件夾的層次結構來整理和呈現數據;塊存儲會將數據拆分到任意劃分且大小相同的卷中; 對象存儲會管理數據並將其鏈接至關聯的元數據
塊存儲
塊存儲主要是將裸磁碟空間整個映射給主機使用的,就是說例如磁碟陣列裡面有5塊硬碟(為方便說明,假設每個硬碟1G),然後可以通過劃邏輯盤、做Raid、或者LVM(邏輯卷)等種種方式邏輯劃分出N個邏輯的硬碟。(假設劃分完的邏輯盤也是5個,每個也是1G,但是這5個1G的邏輯盤已經於原來的5個物理硬碟意義完全不同了。例如第一個邏輯硬碟A裡面,可能第一個200M是來自物理硬碟1,第二個200M是來自物理硬碟2,所以邏輯硬碟A是由多個物理硬碟邏輯虛構出來的硬碟。)
典型設備:磁碟陣列,硬碟
文件存儲
為了克服塊存儲文件無法共享的問題,所以有了文件存儲。主要功能是通過網路(一般是區域網)讓不同的主機系統之間可以共享文件或目錄。本文文件存儲採用NFS協議,NFS客戶端(一般為應用伺服器,例如Web)可以通過掛載(mount)的方式將NFS伺服器端共享的數據目錄掛載帶NFS客戶端本地系統中(就是某一個掛載點下)。從客戶端本地看,NFS伺服器端共享的目錄就好像是客戶端自己的磁碟分區或目錄一樣,而實際上確實遠端的NFS伺服器的目錄。
典型設備:FTP、NAS
對象存儲
對象存儲系統(Object-Based Storage System)是綜合了NAS和SAN的優點,同時具有SAN的高速直接訪問和NAS的數據共享等優勢,提供了高可靠性、跨平台性以及安全的數據共享的存儲體系結構。對象存儲主要操作對象是對象(Object)。和文件和對象存儲相比,沒有隨機讀寫的介面。和文件存儲相比,沒有目錄樹的概念。協議更注重簡潔。
典型設備:內置大容量硬碟的分布式伺服器、京東雲OSS即對象存儲
文件存儲的適用場景
文件與較底層的塊存儲不同, 上升到了應用層, 一般指的就是NAS ,一套網路儲存設備, 通過TCP/IP進行訪問, 協議為NFSv3/v4由於通過網路。下面簡單介紹以下NFS存儲適用的兩個場景,當然,還有更多的場景適合使用文件存儲,本文不一一列出。
Web 服務
前端面向終端用戶的服務由多台web伺服器提供,多台伺服器需要共享文件存儲,文件系統、文件命名約定和許可權等符合應用系統需求。
媒資管理
媒體行業由於其工作流和媒資是一直變化的,很多用戶使用多雲或混合雲,媒體的剪輯、編輯在本地進行,存儲和分發在雲端,由於文件存儲可以和現有的系統輕松的集成,因此,很多用戶將文件存儲用於媒資管理。
Windows環境下的NFS文件服務的搭建
選擇Windows系統搭建NFS協議文件存儲系統的優勢如下:
系統交付後由用戶進行維護,用戶對Windows系統熟悉;
部分應用系統只能訪問文件存儲;
微軟的SMB協議是面向網路連接的共享協議,對網路傳輸的可靠性要求高,常使用TCP/IP;NFS是獨立於傳輸的,可使用TCP或UDP,同時考慮後期有linux系統擴容需求,故選擇NFS協議。
京東雲提供Linux環境的文件存儲服務,無需另行搭建。(詳見https://www.jdcloud.com/cn/procts/cloud-file-service)
本設計的優勢:
共享訪問-您在同一子網內的多台雲主機可以共享同一個雲文件服務中的文件存儲系統。對於多個應用實例需要共享通用數據源的場景,特別適合使用雲文件服務實現。
易於使用-支持標準的NFS協議,提供全託管的服務,無需修改應用,通過標準的文件系統掛載步驟即可實現無縫集成。極大降低遷移成本,簡化雲上項目開發。
穩定可靠-本系統存儲基於京東雲雲硬碟,採用3副本冗餘存儲,提供超強的穩定性和可靠性,滿足應用服務對文件系統的可用性和可靠性需求。
易於擴展-本系統存儲基於京東雲雲硬碟,可根據業務需求進行存儲空間的擴展。
一、創建NFS服務主機
1、創建實例
在京東雲上創建一台雲主機,作為NFS伺服器;NFS服務要和已有雲資源創建在同一區域,同一VPC中。
登錄京東雲控制台,選擇彈性計算-雲主機-實例,選擇創建實例所屬地域,點擊「創建」按鈕,進入雲主機購買頁面。
2、選擇計費模式
包年包月和按配置計費,包年包月按一個正月進行購買付費,按配置計費按照實際使用的時長(精確至秒)每小時進行扣費。
3、地域與可用區選擇
在此步驟仍可以選擇實例對應的地域(華北-北京、華南-廣州、華東-宿遷及華東-上海)及可用區,請注意「不同地域資源內網不互通,創建之後不可更改」,如果所選地域限額已滿,可以通過提交工單提升限額。
4、創建方式選擇
提供三種創建方式 自定義創建、使用實例模板創建、在高可用組內創建,後兩種需要您預先創建好實例模板和高可用組,我們使用保持默認選項「自定義創建」。
5、選擇windows系統鏡像
鏡像分為雲硬碟系統盤鏡像及本地盤系統盤鏡像,前者僅支持創建系統盤為雲硬碟的實例,後者僅支持創建系統盤為本地盤的實例。因為搭建windows系統環境的NFS存儲,故鏡像選擇官方-windows server-windows server 2012 R2標准版。
6、選擇實例規格
實例的規格支持用戶自定義選擇,從最小的1核1G(如g.s1.micro)到72C576GB(如m.n2.18xlarge),用戶可以根據不同業務場景選擇實例規格及相應配置。考慮到NFS對主機計算性能要求不高,選擇2核4G規格主機。
7、配置NFS存儲
雲主機數據盤:數據盤為NFS系統存儲盤,可以根據實際業務需要選擇容量。(此處選擇20G為例)
8、配置實例網路
選擇私有網路及子網:VPC子網選擇與需要訪問NFS存儲的雲主機所在的VPC。
選擇內網IP分配方式:如對內網IP地址沒有特殊要求,可以不指定由系統自動在子網可用網段內分配,如需指定請在提示範圍內輸入,系統會校驗IP是否可用。須注意的是,若選擇自定義內網IP地址,則無法批量創建實例。
9、選擇安全組
實例在創建時必須綁定一個安全組,若當前地域下未創建自定義安全組,可以在系統創建的三個默認安全組中選擇一個綁定(每個私有網路創建成功之後都會自動創建三個默認安全組),也可以通過快速入口前往安全組頁面創建安全組。由於官方鏡像系統內防火牆默認關閉,建議綁定僅開放22埠(Linux)或3389埠(Windows)的安全組,實例創建之後再根據訪問需求創建新的安全組並綁定。
10、配置公網帶寬
帶寬計費方式:京東雲提供按固定帶寬和按使用流量兩種帶寬計費類型的彈性公網IP,按固定帶寬計費按購買時設置的帶寬上限值付費,而與實際訪問公網所用帶寬無關,按使用流量計費則根據您實時訪問公網的實際流量計費。
線路:彈性公網IP線路分為:BGP和非BGP,若您需要更快更高效的網路接入請選用BGP。
帶寬范圍:1Mbps~200Mbps。在創建主機過程中可以暫不購買公網IP,完成主機創建後,再進行綁定。
NFS存儲如果只供VPC內雲主機使用,可以不購買公網IP和帶寬。
11、設置實例名稱、描述
您需要設置創建的主機名,名稱不可為空,只支持中文、數字、大小寫字母、英文下劃線「 _ 」及中劃線「 - 」,且不能超過32字元,如果為批量創建購買,名稱以「xxx1」、「xxx2」依次顯示。同時支持為實例添加描述,描述允許為空,若添加長度不能超過256字元。
12、設置密碼
可以選擇「立即設置」密碼,也可以選擇「暫不設置」(系統會以簡訊和郵件方式發送默認密碼),密碼除了用於SSH登錄實例時的密碼,也是控制台通過VNC登錄實例的密碼。
確認雲主機數量及購買時長 購買數量受限該地域您雲主機、雲硬碟、公網IP限額以及所選子網剩餘IP數量,若限額不夠,可通過提交工單提升限額。若購買包年包月實例,則需要設置購買時長,最短為1個月,最長為2年,支付十個月費用即可享受一年服務。若需要更長服務時長請提交工單。
點擊確認後,返回到控制台,顯示創建中,待狀態為運行,NFS服務主機創建完畢。
13、登陸雲主機
14、添加數據盤
打開,開始菜單-伺服器管理器-文件和存儲服務-磁碟,如下圖:
選擇數據硬碟,右鍵選擇新建卷,文件格式為NTSF
二、建立NFS服務
1、安裝NFS伺服器端組件
打開,開始菜單-伺服器管理器」,在主頁儀錶板中單擊「添加角色和功能」,如下圖所示。
在「開始之前」對話框中,會顯示配置成NFS伺服器必要的前提步驟,請按文字介紹的注意事項確認一下,如果沒有問題的話,可以單擊「下一步」,如下圖所示:
在「安裝類型」對話框中,選擇「基於角色或基於功能的安裝」,然後單擊「下一步」,如下圖所示:
在「伺服器選擇」對話框中,選擇「從伺服器池中選擇伺服器」,然後單擊「下一步」:
在「伺服器角色」對話框中,選擇「文件和存儲服務」中「NFS伺服器」,然後單擊「下一步」,如下圖所示:
繼續單擊「下一步」,如下圖所示:
在「確認」對話框中,可以看到我們從第一步到最後一步選擇的參數等信息,如果有要修改的地方,可以單擊「上一步」返回修改,確認沒有問題的話,可以單擊「安裝」,如下圖所示:
至此,Windows系統的NFS服務端安裝完畢,根據提示重啟伺服器。
2、創建共享服務
NFS服務端安裝完畢,回到伺服器管理器,選擇文件和存儲服務
選擇 共享-啟動新加共享向導
選擇「NFS共享-快速」
選擇數據盤,設置共享名稱
選擇「身份驗證」相關配置,如下圖所示:
設置共享許可權,許可權請根據實際需要設置
創建完畢,顯示」已成功創建共享「,如下圖所示:
3、設置共享文件夾
在要設定共享的文件夾屬性中,選擇「NFS共享」欄位,點擊「管理NFS共享」, 在「NFS高級共享」對話框中,選擇並勾選「共享此文件夾」:
返回伺服器管理器,共享對話框中,可以看到剛才新建的文件夾共享已經成功
參考資料:
1、文件存儲、塊存儲還是對象存儲?redhat官網
2、塊存儲、文件存儲、對象存儲這三者的本質差別是什麼?.知乎.2016-1-1[引用日期2017-10-04]
(https://ke..com/reference/18736489/a856jWYROoQogtX1hq-v--)
3、今非昔比:塊存儲的復雜度提高 .TechTarget存儲[引用日期2015-10-21](https://ke..com/reference/18736489/_rJK0l8aRaFmmhbzPj4Kk-4OMDrn9AGlEt1D-YeUws8wnhuYuc7rJUcaI-B0fg)
點擊"京東雲"了解更多詳情
⑵ NFS 與 NAS 是什麼關系
NFS是NAS伺服器支持的其中一種文件系統。
1、NAS被定義為一種特殊的專用數據存儲伺服器,包括存儲器件和內嵌系統軟體,可提供跨平台文件共享功能。NAS通常在一個LAN上佔有自己的節點,無需應用伺服器的干預,允許用戶在網路上存取數據,在這種配置中,NAS集中管理和處理網路上的所有數據,將負載從應用或企業伺服器上卸載下來,有效降低總擁有成本,保護用戶投資。
它是一種專用數據存儲伺服器。它以數據為中心,將存儲設備與伺服器徹底分離,集中管理數據,從而釋放帶寬、提高性能、降低總擁有成本、保護投資。其成本遠遠低於使用伺服器存儲,而效率卻遠遠高於後者。目前國際著名的NAS企業有Netapp、EMC、OUO等。
2、NFS(Network File System)即網路文件系統,是FreeBSD支持的文件系統中的一種,它允許網路中的計算機之間共享資源。在NFS的應用中,本地NFS的客戶端應用可以透明地讀寫位於遠端NFS伺服器上的文件,就像訪問本地文件一樣。
(2)nfs提高存儲效率擴展閱讀:
NFS最顯而易見的好處:
1、節省本地存儲空間,將常用的數據存放在一台NFS伺服器上且可以通過網路訪問,那麼本地終端將可以減少自身存儲空間的使用。
2、用戶不需要在網路中的每個機器上都建有Home目錄,Home目錄可以放在NFS伺服器上且可以在網路上被訪問使用。
3、一些存儲設備如軟碟機、CDROM和Zip(一種高儲存密度的磁碟驅動器與磁碟)等都可以在網路上被別的機器使用。這可以減少整個網路上可移動介質設備的數量。
參考資料來源:
網路-NAS
網路-NFS
⑶ NFS的好處
以下是NFS最顯而易見的好處:
1. 節省本地存儲空間,將常用的數據存放在一台NFS伺服器上且可以通過網路訪問,那麼本地終端將可以減少自身存儲空間的使用。
2. 用戶不需要在網路中的每個機器上都建有Home目錄,Home目錄可以放在NFS伺服器上且可以在網路上被訪問使用。
3. 一些存儲設備如軟碟機、CDROM和Zip(一種高儲存密度的磁碟驅動器與磁碟)等都可以在網路上被別的機器使用。這可以減少整個網路上可移動介質設備的數量。
⑷ 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(即讀寫分離)。
使用分布式文件系統。
⑸ 如何使用NFS和NAS解決虛擬伺服器存儲問題
然而,這樣的靈活性有一個條件:物理機能夠看到所有虛擬磁碟鏡像。這通常會導致存儲網路成為一個使用網路文件系統(NFS)和虛擬網路附屬存儲(NAS)集群的開放網路。
在傳統基於塊的存儲中,如iSCSI和光纖通道存儲區域網路(FC SAN),這意味著我們必須能夠分配和操作邏輯單元號(LUN),以便在遷移虛擬機時可以迅速重新分配LUN給其它物理機。這個操作不僅是在最初部署時很難執行,隨著環境越來越大和復雜,它也會很難執行。要為每個虛擬機分配一個LUN,然後還要能夠迅速地將它重新分配給其它物理主機,這對IT人士來說已然是一個越來越嚴重的問題。
在越來越多的環境里,IT管理員都開始使用更大的LUN來承載多個虛擬機。盡管這可以減輕分配多個LUN給多個虛擬機的重擔,但無法解決分區和LUN增長的問題。
NFS解決方案
現在,VMware支持通過NFS啟動部署虛擬機。通過可啟動的NFS載入(mount)部署虛擬機是解決這個問題的一個理想方法,而且也被越來越廣泛地接受。
NFS是一個客戶端或伺服器系統,允許用戶跨網路訪問文件,並能夠像操作本地文件目錄一樣操作這些遠程文件。它是通過輸出(exporting)和載入(mounting)兩個過程完成的。輸出過程是指NFS伺服器向遠程客戶端提供文件訪問的過程;載入過程是指文件系統對操作系統和用戶變為可用的過程。NFS主要用於Unix-to-Unix文件共享,即使你的所有虛擬機都是基於Windows的,你也可以選用NFS。盡管Windows無法引導NFS,但VMware將NFS建立在它的磁碟虛擬層,所以Windows無需引導NFS。
NFS工作站很容易創建和操作。每個物理伺服器都能看到所有的虛擬磁碟鏡像,而且VMotion等功能也更加容易操作。與iSCSI或FC SAN中的每個VMDK創建一個LUN不同,你可以在一個NFS卷中共置多個VMDK(VMware Virtual Disk)文件。因為VMDK只是文件,而不是真正的磁碟。為什麼使用NFSNFS讓存儲和VMware管理員的工作變得容易得多,而且在很多VMware環境下都不會有任何性能損失。除了一些例外的存儲廠商提供虛擬化解決方案以外,LUN管理對存儲和VMware管理員來說都很具有挑戰性。而有了NFS執行,與單個文件系統的交互讓VMware鏡像供應更加容易。
訪問控制通過內置NFS安全性被啟用後,可以向一組VMware管理員提供NFS文件系統。有了NFS,就不需要微操作每一個LUN了。例如,VMware鏡像在文件夾中可以根據應用類型進行分組,而且可以同時提供給一系列應用使用。
此外,訪問路徑是基於傳統的乙太網,這不僅節省了成本,也更加易於進行故障檢修。因為,大多數企業對於IP管理的了解要遠遠多於對FC管理的了解。
NFS有一個優點就是訪問簡易。所有ESX伺服器都可以連接到載入點(mount point),這使得VMotion的使用更加容易。在FC部署中,每個ESX伺服器都必須能夠看到所有其它ESX伺服器的LUN,這很不利於配置和管理。NFS是一項共享技術,所有共享訪問都是內置的。
NFS的另一優勢在於數據保護方面。盡管通過NFS提供的VMware鏡像無法使用VMware VCB,但Unix或Linux主機可以載入這些鏡像來進行備份。利用支持NDMP的備份軟體可以備份這些鏡像。通過Linux主機的方法可以訪問VMware鏡像,而且可以通過這種方法可以載入快照和備份卷。此外,你還可以綜合利用NFS主機的復制工具保障業務持續性和災難恢復,而不用購買VMware專門的復制工具。
說得直白一點,NFS不是唯一的協議,它也有不太適合的時候。例如,Microsoft Cluster Service必須有成組存取(block access),而且有些情況下就需要光纖通道。iSCSI有一些很獨特的功能,其中一個是它能夠直接分配一個LUN給一個子操作系統,而不用通過VMware磁碟虛擬層。這些獨特的功能可以快速地將特定的LUN轉移出VMware環境。
這個執行需要的不僅僅是一個標準的文件伺服器或NAS,因為除了保存用戶數據以外,它還是架構的一個關鍵部分。
利用虛擬NAS集群解決I/O問題
通過NAS集群虛擬化可以緩解某些物理存儲相關問題,如I/O限制。
隨著負荷的不斷增加,傳統的NAS無法有效地擴展升級。部署多個物理伺服器會迅速加重I/O帶寬的負擔,這樣的負荷比在多數文件伺服器環境中的負荷要大得多。要減輕I/O帶寬負擔,就必須部署更多的NAS,而這又會導致NAS蔓延。
這使得我們必須在滿足額外的NAS系統需求以解決文件服務需求的同時,還要讓這些NAS系統必須能處理虛擬伺服器環境不斷變化的I/O需求。有了單獨的NAS head,VMotion就很難適用了,唯一的其它選擇是購買更大的單一的NAS head。在VMware環境下,這樣的升級不是因為容量限制而進行的,而是為了提供更高的性能而升級。
下面,我們說說虛擬NAS集群。一個虛擬NAS集群代表著整個ESX環境的一個NAS對象,即使這個對象是多個NAS head。一個虛擬NAS集群是一系列NAS節點,這些節點是作為一個整體被管理的。性能或容量的升級就成為相互獨立的事了,I/O性能升級只是連接更多的節點到集群,而容量升級則是連接更多的磁碟,互不影響。
此外,虛擬NAS集群還可以為環境提供冗餘。如果集群的其中一個節點出錯,該節點的文件系統會自動轉向集群中的其它節點。這個功能可以保障數據訪問不受中斷,對於虛擬伺服器環境非常重要。因為,虛擬伺服器環境下的一個錯誤可能會導致幾十個虛擬機受到嚴重影響,多層冗餘對於這樣的環境就顯得尤為重要。
Global Files System
將虛擬伺服器從一台物理機遷移到另一台物理機是一項勢在必行的工作,它可以給數據中心帶來很大的靈活性。而數據中心的靈活性也正是客戶所尋求的。相關虛擬磁碟的遷移,尤其是從一個陣列到另一陣列或一個NAS head到另一NAS head的遷移,並不是不可能的任務,但是會非常耗費時間,並且會中斷服務。
而在虛擬NAS集群環境下,這就是一件非常簡單的工作,而且不會造成服務中斷。這進一步提高了虛擬環境的靈活性。例如,如果某台物理機中的好幾個虛擬機存在I/O帶寬需求高峰期,那麼你可以將其它虛擬機磁碟鏡像移開它們所在的節點來應對I/O高峰期。這個功能還可以用於虛擬NAS集群中的標准文件系統,因為它們可以根據需求進行重新分配。
虛擬NAS和FC
在VMware近期的白皮書中,基於FC的塊I/O仍是一個尚未成熟的I/O性能領導者。盡管有些NAS供應商會對這些結果存在爭議,但這並不影響我們對這二者的利用。
首先,不到萬不得已不要使用FC。現在市場上有兩種不同的產品。第一種是NAS供應商(如Network Appliance)為他們的NAS head提供的FC和iSCSI服務。NAS head必須在NAS文件系統中創建一個封裝的FC LUN。第二種是EMC和OnStor等公司提供的網關(Gateway)解決方案,這些解決方案允許本地FC訪問存儲系統。在EMC的解決方案中,這當然是一個通向Clarriion陣列的網關。OnStor允許你通過它們的NAS網關(NAS gateway)為你現有的存儲添加一個有Global Files System的虛擬NAS集群。
⑹ 要配置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 強制結束)
⑺ docker使用NFS解決數據存儲問題
NFS :Net File System 網路文件存儲系統
將雲存儲的磁碟掛載到本地計算機,本文所用的NFS提供商是阿里雲網路文件存儲系統。
1. 首先在阿里雲配置好網路文件存儲系統
具體文檔在該鏈接中:https://help.aliyun.com/document_detail/27526.html?spm=a2c4g.11186623.6.559.121b5ddemjaPZP
2. 在本地linux測試掛載
首先安裝nfs客戶端工具
sudo apt-get install nfs-common
掛載,執行下列命令後,即可看到 /mount-point 掛載點出現,有關mount和umount命令的使用,需要自行網路和谷歌
sudo mount -t nfs -o vers=4.0,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport file-system-id-xxxx.region.nas.aliyuncs.com:/ /mount-point
3. 使用docker創建驅動為nfs類型的磁碟(volume,不推薦使用bind mount)
docker volume create --driver local --opt type=nfs --opt o=addr=192.168.138.130,rw --opt device=:/data/nfs volume-nfs
4. 運行容器時,掛載 volume-nfs 磁碟即可
使用-v選項將volume掛載到容器上
docker run -dit --name data1 -v volume-nfs:/mnt ubuntu:16.04
⑻ NFS網路文件系統配置
配置流程適用於DebianUbuntu等的衍生發行版
Server:Armbian192.168.2.225
Client:Deepin192.168.2.222
增添一行
將 /root/share 共享給192.168.2.222 ,客戶端許可權rw
其中共享對象可以用通配符,比如 * 代表所有地址。
rw: 讀寫
ro :只讀
fsid=0 : 指定/root/share為nfs的根目錄
sync:將數據同步寫入內存緩沖區與磁碟中,效率低,但可以保證數據的一致性;
async:是大數據時使用,是先寫到緩存區,必要時再寫到磁碟里。
all_squash:所有訪問用戶都映射為匿名用戶或用戶組;
no_all_squash(默認):訪問用戶先與本機用戶匹配,匹配失敗後再映射為匿名用戶或用戶組;
root_squash(默認):將來訪的root用戶映射為匿名用戶或用戶組;
no_root_squash:來訪的root用戶保持root帳號許可權;
wdelay(默認):檢查是否有相關的寫操作,如果有則將這些寫操作一起執行,這樣可以提高效率;
no_wdelay:若有寫操作則立即執行,應與sync配合使用;
subtree_check :若輸出目錄是一個子目錄,則nfs伺服器將檢查其父目錄的許可權;
no_subtree_check(默認):即使輸出目錄是一個子目錄,nfs伺服器也不檢查其父目錄的許可權,這樣可以提高效率;
看到最後有 192.168.2.225:/ 15G 9.3G 5.2G 65% /mnt
不能寫入,沒有密碼
⑼ nfs:server is not responding,still trying的解決辦法
系統 :centos7.9
nfs版本:nfsstat: 1.3.0
rpcbind版本:rpcbind:0.2.0
查看message日誌發現nfs 客戶連接端報如下錯誤
問題原因:
Mandag 27 november 2006 20:12 skrev Verner Kjærsgaard:
NFS協議到現在經歷了V1、V2、V3、V4四個版本,但是它有一個缺點就是協議沒有用戶認證機制,而且數據在網路上傳送的時候是明文傳送,所以安全性極差,一般只能在區域網中使用。
NFSv3是1995年發布的,相比NFSv3,NFSv4發生了比較大的變化,最大的變化是NFSv4有狀態了。NFSv2和NFSv3都是無狀態協議,服務端不需要維護客戶端的狀態信息。無狀態協議的一個優點在於災難恢復,當伺服器出現問題後,客戶端只需要重復發送失敗請求就可以了,直到收到服務端的響應信息。但是某些操作必須需要狀態,如文件鎖。如果客戶端申請了文件鎖,但是服務端重啟了,由於NFSv3無狀態,客戶端再執行鎖操作可能就會出錯了。NFSv3需要NLM協助才能實現文件鎖功能,但是有的時候兩者配合不夠協調。NFSv4設計成了一種有狀態的協議,自身實現了文件鎖功能,就不需要NLM協議了。
後來的 NFSv4.1
與NFSv4.0相比,NFSv4.1最大的變化是支持並行存儲了。在以前的協議中,客戶端直接與伺服器連接,客戶端直接將數據傳輸到伺服器中。當客戶端數量較少時這種方式沒有問題,但是如果大量的客戶端要訪問數據時,NFS伺服器很快就會成為一個瓶頸,抑制了系統的性能。NFSv4.1支持並行存儲,伺服器由一台元數據伺服器(MDS)和多台數據伺服器(DS)構成,元數據伺服器只管理文件在磁碟中的布局,數據傳輸在客戶端和數據伺服器之間直接進行。由於系統中包含多台數據伺服器,因此數據可以以並行方式訪問,系統吞吐量迅速提升。現在新的是nfsv4.2
所以盡可能用nfs4
補充:
nfs4掛載的fsid問題
問題現象:
掛載nfs4時,報錯:reason given by server :No such file or directory
背景知識:
NFSv4將所有共享使用一個虛擬文件系統展示給客戶端。偽文件系統根目錄(/)使用fsid=0標示,只有一個共享可以是fsid=0。客戶端需要使用「nfs server ip:/」掛載偽文件系統,偽文件系統一般使用RO方式共享,其他共享可以通過mount –bind選項在偽文件系統目錄下掛載。客戶端掛載過程需要通過mount –t nfs4指定NFS版本為4,默認採用nfsv3。
解決:
以下是我的配置文件,我想掛在/datapool/nfs目錄
/ *(rw,fsid=0,insecure,no_root_squash)
/datapool/nfs *(rw,fsid=1000,insecure,no_root_squash
然後mount -t nfs4 ip:/datapool/nfs /mnt/nfs/
nfs配置參數選項說明:
ro:共享目錄只讀;
rw:共享目錄可讀可寫;
all_squash:所有訪問用戶都映射為匿名用戶或用戶組;
no_all_squash(默認):訪問用戶先與本機用戶匹配,匹配失敗後再映射為匿名用戶或用戶組;
root_squash(默認):將來訪的root用戶映射為匿名用戶或用戶組;
no_root_squash:來訪的root用戶保持root帳號許可權;
anonuid=<UID>:指定匿名訪問用戶的本地用戶UID,默認為nfsnobody(65534);
anongid=<GID>:指定匿名訪問用戶的本地用戶組GID,默認為nfsnobody(65534);
secure(默認):限制客戶端只能從小於1024的tcp/ip埠連接伺服器;
insecure:允許客戶端從大於1024的tcp/ip埠連接伺服器;
sync:將數據同步寫入內存緩沖區與磁碟中,效率低,但可以保證數據的一致性;
async:將數據先保存在內存緩沖區中,必要時才寫入磁碟;
wdelay(默認):檢查是否有相關的寫操作,如果有則將這些寫操作一起執行,這樣可以提高效率;
no_wdelay:若有寫操作則立即執行,應與sync配合使用;
subtree_check(默認) :若輸出目錄是一個子目錄,則nfs伺服器將檢查其父目錄的許可權;
no_subtree_check :即使輸出目錄是一個子目錄,nfs伺服器也不檢查其父目錄的許可權,這樣可以提高效率;
Troubleshooting
1、在上面的操作過程中,如果你不幸遇到下面這個問題的話,可以嘗試更新 Linux kernel 或通過打開 IPv6 來解決這個問題,這是1個 bug:
mount.nfs4: Cannot allocate memory
2、如果遇到如下問題,可能是因為你的 mount -t nfs 使用的是 nfsv3 協議,需要明確指出使用 nfsv4 協議掛載 mount -t nfs4:
mount: mount to NFS server 餄.16.20.1' failed: RPC Error: Program not registered.
如果網路不穩定
NFS默認是用UDP協議,換成TCP協議掛載即可:
mount -t nfs 11.11.165.115:/tmp/test0920 /data -o proto=tcp -o nolock
nfs:server xxx.xxx.xxx.xxx is not responding,still trying的解決方法
方法1 :
我在 arm 上通過NFS共享文件時出現下面的錯誤提示
nfs:server is not responding,still trying 原因分析: NFS 的默認傳輸協議是 UDP,而PC機與嵌入式系統通過UPD交互時就會出現嚴重的網卡丟包現象。
解決方法:在客戶端改用TCP協議,使用下面的命令, **#mount -o tcp 10.10.19.25:/home/export /mnt/local
方法2:** 在目標板上通過NFS復制PC機上較大文件到目標板上的時候遇到的問題:
nfs: server *** not responding, still trying
修改方法:
nfs mount時候出現的NFS崩潰,按照以下的方式mount
mount -t nfs -o intr,nolock,rsize=1024,wsize=1024 192.168.1.3/root/somedir /client
附 問題四:在測試時,「./progressbar -qws」後出現如Q3一樣的提示 ,按Q3來處理。
以上參考了一些 「 快樂的天空」的經驗,他的網頁是:
http://blog.chinaunix.net/u2/67519/showart_677885.html
他的
mount -t nfs -o intr,nolock,rsize=1024,wsize=1024 192.168.1.3/root/somedir /host
應該改成
mount -t nfs -o intr,nolock,rsize=1024,wsize=1024 192.168.1.3/root/somedir /client
⑽ 搭建NFS Server
TIP 本章節中所有命令都以 root 身份執行
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伺服器也不檢查其父目錄的許可權,這樣可以提高效率;
TIP本章節中所有命令都以 root 身份執行
伺服器端防火牆開放111、662、875、892、2049的 tcp / udp 允許,否則遠端客戶無法連接。