您好,方法
創(chuàng)新互聯(lián)建站長(zhǎng)期為成百上千家客戶(hù)提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為張家界企業(yè)提供專(zhuān)業(yè)的網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì),張家界網(wǎng)站改版等技術(shù)服務(wù)。擁有10多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。
1、用rpm或者yum源方式安裝nfs,兩個(gè)軟件包nfs-utils和nfs-utils-lib(這里已經(jīng)裝過(guò)了)。
2、創(chuàng)建共享目錄 share,并在其文件夾下面創(chuàng)建一個(gè)a的文本文件。
3、修改nfs配置文件 vi /etc/exports 設(shè)置允許192.168.4.122用戶(hù)以讀寫(xiě)方式來(lái)掛載/share,
4、啟動(dòng)nfs服務(wù)service nfs start ,并關(guān)閉防火墻。
5、查看本機(jī)nfs共享目錄信息,用命令exportfs。
6、客戶(hù)端測(cè)試,用rpm -qa nfs-utils 查看是否安裝,沒(méi)有安裝的話可以使用yum安裝。
7、在客戶(hù)端進(jìn)行查看并掛載,用mount -t 命令進(jìn)行掛載。
在客戶(hù)端查看是否可以看到服務(wù)器端的數(shù)據(jù),卸載umount。
NFS(Network File System),網(wǎng)絡(luò)文件存儲(chǔ)系統(tǒng),它最早是由 Sun 公司開(kāi)發(fā)的,也是 FreeBSD 支持的文件系統(tǒng)中的一個(gè),它允許網(wǎng)絡(luò)中的計(jì)算機(jī)之間通過(guò)TCP/IP 網(wǎng)絡(luò)共享資源。通過(guò) NFS 協(xié)議,我們本地 NFS 的客戶(hù)端應(yīng)用可以透明的讀寫(xiě)位于服務(wù)端 NFS 服務(wù)器上的文件,就像訪問(wèn)本地文件一樣方便。簡(jiǎn)單的理解,NFS 就是可以透過(guò)網(wǎng)絡(luò),讓不同的主機(jī),不同的操作系統(tǒng)可以共享存儲(chǔ)的服務(wù)。
NFS 在文件傳送或信息傳送過(guò)程中依賴(lài) RPC(Remote Procedure Call)協(xié)議,即遠(yuǎn)程過(guò)程調(diào)用,NFS的各項(xiàng)功能都必須向 RPC 來(lái)注冊(cè),如此一來(lái) RPC 才能了解 NFS 這服務(wù)的各項(xiàng)功能 Port,PID,NFS 在服務(wù)器所監(jiān)聽(tīng)的 IP 等,而客戶(hù)端才能透過(guò) RPC 的詢(xún)問(wèn)找到正確對(duì)應(yīng)的端口,所以 NFS 必須要有 RPC 存在是才能成功的提供服務(wù),簡(jiǎn)單的理解二者關(guān)系:NFS 是一個(gè)文件存儲(chǔ)系統(tǒng),而 RPC 是負(fù)責(zé)信息的傳輸。
通過(guò)上面的簡(jiǎn)介,我們知道 NFS 服務(wù)需要依賴(lài) RPC 服務(wù),所以這里 NFS 服務(wù)端需要安裝 rpcbind 和 nfs-utils ,客戶(hù)端只需要安裝 nfs-utils 即可,由于我們選用 CentOS 系統(tǒng),所以可以使用 yum 快速的安裝。
然后安裝 NFS 服務(wù)
另:Ubuntu 16.04 安裝命令
我們?cè)诜?wù)端創(chuàng)建一個(gè)共享目錄 /data/share ,作為客戶(hù)端掛載在遠(yuǎn)端入口,然后設(shè)置權(quán)限
然后,修改 NFS 配置文件 /etx/exports
說(shuō)明一下,這里配置后邊有很多參數(shù),每個(gè)參數(shù)有不同的含義,具體可以參考下邊。此處,我配置了將 /data/share 文件目錄設(shè)置為允許IP為 192.168.0.0/24 區(qū)間的客戶(hù)端掛載。然后,如果客戶(hù)端IP不在該區(qū)間也想要掛載的話,可以設(shè)置IP區(qū)間更大或者設(shè)置為 * 即允許所有客戶(hù)端掛載,例如: /home *(ro, sync,insecure,no_root_squash) 設(shè)置 /home 目錄允許所有客戶(hù)端只讀掛載。
接下來(lái),我們先啟動(dòng) RPC 服務(wù)
我們發(fā)現(xiàn),啟動(dòng)了 NFS 服務(wù)后,RPC 注冊(cè)的端口列表明顯增多?,F(xiàn)在服務(wù)端都啟動(dòng)起來(lái)了,在服務(wù)端看下是否正確加載了設(shè)置的 /etc/exports 配置
最后,在另一臺(tái)Linux虛擬機(jī)上測(cè)試一下,是否能夠正確掛載。首先,我們可以在客戶(hù)端查看下NFS服務(wù)端設(shè)置可共享的目錄信息
然后,在客戶(hù)端創(chuàng)建掛載目錄/share
最后,掛載遠(yuǎn)端目錄到本地 /share 目錄
可以看到,可以正確將遠(yuǎn)端 NFS 目錄掛載到本地。注意:掛載點(diǎn) /share 目錄必須已經(jīng)存在,而且目錄中沒(méi)有文件或子目錄
最后,我們?cè)?NFS 服務(wù)端 /data/share 目錄下創(chuàng)建一個(gè)文件,看下客戶(hù)端能否正確讀取并修改
都可以了,這里因?yàn)樯厦嬖O(shè)置了 NFS 遠(yuǎn)端目錄權(quán)限為 rw 擁有讀寫(xiě)權(quán)限,如果設(shè)置為 ro ,那么客戶(hù)端只能讀取,不能寫(xiě)入。根據(jù)實(shí)際應(yīng)用場(chǎng)景合理配置。
NFS 默認(rèn)使用 UDP協(xié)議進(jìn)行掛載,為了提供 NFS 的穩(wěn)定性,可以使用 TCP 協(xié)議掛載,那么客戶(hù)端掛載命令如下:
最后,卸載命令
首先我們要明確我們所指的程序,是放在有目錄級(jí)結(jié)構(gòu)的文件系統(tǒng)里,為了尋找到所需要操作系統(tǒng)來(lái)運(yùn)行的程序,我們必須告訴它,文件在哪個(gè)文件系統(tǒng)。一 般來(lái)說(shuō),PC機(jī)的文件就存儲(chǔ)在硬盤(pán)上;對(duì)于Live CD而言,文件系統(tǒng)就藏在光盤(pán)上面。也就是說(shuō),只要操作系統(tǒng)能找到并正確地認(rèn)識(shí)了文件系統(tǒng),就可以執(zhí)行里面的程序了!
設(shè)置目標(biāo)機(jī)器上的NFS啟動(dòng)
看完了第一節(jié),明白啟動(dòng)的過(guò)程了嗎? 簡(jiǎn)單地說(shuō),就是內(nèi)核加載 ,內(nèi)核找到一個(gè)文件系統(tǒng) ,內(nèi) 核執(zhí)行文件系統(tǒng)里的一個(gè)程序 。無(wú)論是從NFS啟動(dòng),還是從硬盤(pán)啟動(dòng),都是上述過(guò)程。只是NFS啟動(dòng),其文件系統(tǒng)是放在網(wǎng)絡(luò)上的。只要我 們告訴內(nèi)核,具體放在什么地方,在網(wǎng)絡(luò)的另一端我們?cè)O(shè)置好共享,自然可以從NFS啟動(dòng)。
讓內(nèi)核識(shí)別NFS并可從NFS啟動(dòng)
編譯內(nèi)核
在內(nèi)核源代碼目錄樹(shù)下,配置內(nèi)核:
$make menuconfig
依次進(jìn)入 File Systems - Network File System中選擇 NFS client support 以及 Root file system on NFS。如果找不到Root file system on NFS 選項(xiàng),要打開(kāi)第一級(jí)菜單下的Networking support - Networking options - TCP/IP networking - IP: kernel level autoconfiguration。如果NFS要使用DHCP,還得選上 IP: DHCP support。
保存配置并重新編譯即可。
配置內(nèi)核參數(shù)
進(jìn)入ARM開(kāi)發(fā)板的設(shè)置 linux_cmd_line的地方(mini2440則為開(kāi)機(jī)按 s,輸入linux_cmd_line,并帶著引號(hào)輸入?yún)?shù)),或者進(jìn)入PC的GRUB,設(shè)置類(lèi)似參數(shù)
root=/dev/nfs rw nfsroot=192.168.1.1:/linux ip=192.168.1.5:::255.255.255.0:linux::off
該配置為靜態(tài)IP設(shè)置。各參數(shù)意義如下:
root=/dev/nfs :指定根文件系統(tǒng)為 /dev/nfs,即NFS 。這與/dev這個(gè)目錄并沒(méi)有什么關(guān)系,在此僅為一個(gè)名字。
rw :根文件系統(tǒng)掛載為可讀寫(xiě)。還可以有 ro 即只讀的選項(xiàng)。
nfsroot=192.168.1.1:/linux :指明掛載哪一個(gè)NFS上的哪一個(gè)目錄。這里指的是掛載IP 為192.168.1.1的電腦上導(dǎo)出的/linux目錄。
ip=192.168.1.5:::255.255.255.0:linux::off :設(shè)置本機(jī)的IP。此舉是為了 連接剛才設(shè)置的IP。這里是一個(gè)靜態(tài)的配置,配置的格式為 ip=本機(jī)的IP地址::網(wǎng)關(guān)地址:網(wǎng)絡(luò)掩碼:本機(jī)的主機(jī)名:網(wǎng)絡(luò)接口名:off 。一般情況下網(wǎng)關(guān)、網(wǎng)絡(luò)接口名都不需要設(shè)置。如果是DHCP獲取IP,那很簡(jiǎn)單,直接 ip=dhcp 即可。
設(shè)置NFS服務(wù)器
Ubuntu下看鏈接:
NFS服務(wù)器可以是任意操作系統(tǒng),只要能提供NFS服務(wù)即可(WINDOWS可以使用 WSU —— Windows Services for Unix來(lái)實(shí)現(xiàn),具體請(qǐng)參考接下來(lái)本站要發(fā)表的文章)。在這里以Fedora為例,希望別的發(fā)行版的用戶(hù)觸類(lèi)旁通。
對(duì)于Fedora來(lái)說(shuō),有圖形界面的工具進(jìn)行設(shè)置,在管理-》服務(wù)器設(shè)置-》NFS中添加一個(gè)共享即可。
更通用的作法,就是修改 /etc/exports文件,之后再啟動(dòng)NFS服務(wù)器。
/etc/exports文件格式如下
導(dǎo)出的文件夾 導(dǎo)出的網(wǎng)段(對(duì)該導(dǎo)出的網(wǎng)段的選項(xiàng))
所謂導(dǎo)出的網(wǎng)段就是只向哪個(gè)網(wǎng)段導(dǎo)出,保證安全性。一個(gè)例子為:
/linux 192.168.1.0/24(rw,sync,no_root_squash)
就是將 /linux 導(dǎo)出到網(wǎng)段為192.168.1.0,子網(wǎng)掩碼為255.255.255.0 (即24)的網(wǎng)絡(luò)。其中可用的選項(xiàng)為(翻譯自man文檔):
secure和insecure : secure選項(xiàng)下,所有連接的端口均小于1024。默認(rèn)打開(kāi)。
rw和ro : Read/Write和Read Only
async和sync async將使用異步數(shù)據(jù)存取,數(shù)據(jù)并非馬上寫(xiě)入服務(wù)器的。sync則相反。使用async需要注意服務(wù)器不能隨意不正常地關(guān)閉,否則可能導(dǎo)致數(shù)據(jù)丟失。
no_wdelay :不使用延遲寫(xiě)入。NFS服務(wù)器會(huì)將寫(xiě)入寫(xiě)入請(qǐng)求緩沖起來(lái),可以提高性能。如果async已經(jīng)打開(kāi)那么該選項(xiàng)無(wú)效。
no_subtree_check :不進(jìn)行子樹(shù)檢查(使用該選項(xiàng)易引起安全問(wèn)題)
root_squash和no_root_squash、all_squash :root_squash選項(xiàng)使得客戶(hù)端以root權(quán)限訪問(wèn) 文件系統(tǒng)時(shí),轉(zhuǎn)換為服務(wù)器端的匿名用戶(hù)。這選項(xiàng)打開(kāi)一定要設(shè)置好服務(wù)器的權(quán)限。
之后再重新啟動(dòng)NFS服務(wù)。Fedora下使用 /etc/init.d/nfs restart
使用 exports查看導(dǎo)出的文件。