NFS(Network File System),網(wǎng)絡(luò)文件存儲系統(tǒng),它最早是由 Sun 公司開發(fā)的,也是 FreeBSD 支持的文件系統(tǒng)中的一個,它允許網(wǎng)絡(luò)中的計算機之間通過TCP/IP 網(wǎng)絡(luò)共享資源。通過 NFS 協(xié)議,我們本地 NFS 的客戶端應(yīng)用可以透明的讀寫位于服務(wù)端 NFS 服務(wù)器上的文件,就像訪問本地文件一樣方便。簡單的理解,NFS 就是可以透過網(wǎng)絡(luò),讓不同的主機,不同的操作系統(tǒng)可以共享存儲的服務(wù)。
目前創(chuàng)新互聯(lián)建站已為近1000家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬主機、網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計、常熟網(wǎng)站維護等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
NFS 在文件傳送或信息傳送過程中依賴 RPC(Remote Procedure Call)協(xié)議,即遠程過程調(diào)用,NFS的各項功能都必須向 RPC 來注冊,如此一來 RPC 才能了解 NFS 這服務(wù)的各項功能 Port,PID,NFS 在服務(wù)器所監(jiān)聽的 IP 等,而客戶端才能透過 RPC 的詢問找到正確對應(yīng)的端口,所以 NFS 必須要有 RPC 存在是才能成功的提供服務(wù),簡單的理解二者關(guān)系:NFS 是一個文件存儲系統(tǒng),而 RPC 是負責(zé)信息的傳輸。
通過上面的簡介,我們知道 NFS 服務(wù)需要依賴 RPC 服務(wù),所以這里 NFS 服務(wù)端需要安裝 rpcbind 和 nfs-utils ,客戶端只需要安裝 nfs-utils 即可,由于我們選用 CentOS 系統(tǒng),所以可以使用 yum 快速的安裝。
然后安裝 NFS 服務(wù)
另:Ubuntu 16.04 安裝命令
我們在服務(wù)端創(chuàng)建一個共享目錄 /data/share ,作為客戶端掛載在遠端入口,然后設(shè)置權(quán)限
然后,修改 NFS 配置文件 /etx/exports
說明一下,這里配置后邊有很多參數(shù),每個參數(shù)有不同的含義,具體可以參考下邊。此處,我配置了將 /data/share 文件目錄設(shè)置為允許IP為 192.168.0.0/24 區(qū)間的客戶端掛載。然后,如果客戶端IP不在該區(qū)間也想要掛載的話,可以設(shè)置IP區(qū)間更大或者設(shè)置為 * 即允許所有客戶端掛載,例如: /home *(ro, sync,insecure,no_root_squash) 設(shè)置 /home 目錄允許所有客戶端只讀掛載。
接下來,我們先啟動 RPC 服務(wù)
我們發(fā)現(xiàn),啟動了 NFS 服務(wù)后,RPC 注冊的端口列表明顯增多?,F(xiàn)在服務(wù)端都啟動起來了,在服務(wù)端看下是否正確加載了設(shè)置的 /etc/exports 配置
最后,在另一臺Linux虛擬機上測試一下,是否能夠正確掛載。首先,我們可以在客戶端查看下NFS服務(wù)端設(shè)置可共享的目錄信息
然后,在客戶端創(chuàng)建掛載目錄/share
最后,掛載遠端目錄到本地 /share 目錄
可以看到,可以正確將遠端 NFS 目錄掛載到本地。注意:掛載點 /share 目錄必須已經(jīng)存在,而且目錄中沒有文件或子目錄
最后,我們在 NFS 服務(wù)端 /data/share 目錄下創(chuàng)建一個文件,看下客戶端能否正確讀取并修改
都可以了,這里因為上面設(shè)置了 NFS 遠端目錄權(quán)限為 rw 擁有讀寫權(quán)限,如果設(shè)置為 ro ,那么客戶端只能讀取,不能寫入。根據(jù)實際應(yīng)用場景合理配置。
NFS 默認使用 UDP協(xié)議進行掛載,為了提供 NFS 的穩(wěn)定性,可以使用 TCP 協(xié)議掛載,那么客戶端掛載命令如下:
最后,卸載命令
NFS(Network File System)即網(wǎng)絡(luò)文件系統(tǒng),是FreeBSD支持的文件系統(tǒng)中的一種,它允許網(wǎng)絡(luò)中的計算機之間共享資源。在NFS的應(yīng)用中,本地NFS的客戶端應(yīng)用可以透明地讀寫位于遠端NFS服務(wù)器上的文件,就像訪問本地文件一樣。
NFS最顯而易見的優(yōu)點:
1、節(jié)省本地存儲空間,將常用的數(shù)據(jù)存放在一臺NFS服務(wù)器上且可以通過網(wǎng)絡(luò)訪問,那么本地終端將可以減少自身存儲空間的使用。
2、用戶不需要在網(wǎng)絡(luò)中的每個機器上都建有Home目錄,Home目錄可以放在NFS服務(wù)器上且可以在網(wǎng)絡(luò)上被訪問使用。
3、一些存儲設(shè)備如軟驅(qū)、CDROM和Zip(一種高儲存密度的磁盤驅(qū)動器與磁盤)等都可以在網(wǎng)絡(luò)上被別的機器使用。這可以減少整個網(wǎng)絡(luò)上可移動介質(zhì)設(shè)備的數(shù)量。
擴展資料:
NFS 有很多實際應(yīng)用。下面是比較常見的四點:
1、多個機器共享一臺CDROM或者其他設(shè)備。這對于在多臺機器中安裝軟件來說更加便宜跟方便。
2、在大型網(wǎng)絡(luò)中,配置一臺中心 NFS 服務(wù)器用來放置所有用戶的home目錄可能會帶來便利。這些目錄能被輸出到網(wǎng)絡(luò)以便用戶不管在哪臺工作站上登錄,總能得到相同的home目錄。
3、不同客戶端可在NFS上觀看影視文件,節(jié)省本地空間。
4、在客戶端完成的工作數(shù)據(jù),可以備份保存到NFS服務(wù)器上用戶自己的路徑下。
NFS是運行在應(yīng)用層的協(xié)議。隨著NFS多年的發(fā)展和改進,NFS既可以用于局域網(wǎng)也可以用于廣域網(wǎng),且與操作系統(tǒng)和硬件無關(guān),可以在不同的計算機或系統(tǒng)上運行。
參考資料來源:
百度百科-NFS
百度百科-linux
nfs語法參數(shù)解釋
(1) nfs共享目錄:是NFS服務(wù)器需要共享出去的實際目錄,文件夾,必須寫絕對路徑,且注意目錄的讀寫本地權(quán)限,如果你允許客戶端讀寫操作,other需要有一個讀寫的權(quán)限(user,group,other三個身份)
(2) NFS客戶端地址,也就是NFS服務(wù)端授權(quán)可以訪問共享目錄的地址,可以寫主機名,可以寫通配符,ip地址
(3) 權(quán)限參數(shù),對NFS授權(quán)的客戶端,進行權(quán)限控制的參數(shù),詳細見下面的案例
nfs客戶端地址形式
單一客戶端 192.168.178.120 用的很少
允許整個網(wǎng)段訪問 192.168.178.0/24 指定局域網(wǎng)網(wǎng)段,用的還是很多的
授權(quán)整個域名客戶端 nfs.yu.com 用的很少
授權(quán)子域名客戶端 *.yu.com 用的很少
nfs客戶端的權(quán)限參數(shù)
ro 只讀
rw 讀寫
root_squash 當(dāng)nfs客戶端以root賬號訪問NFS服務(wù)端共享目錄數(shù)據(jù)的時候,把該root映射為NFS服務(wù)端的一個匿名用戶,該用戶的UID,GID會變成nfsnobody的信息
no_root_squash 幾乎和上面一樣,root賬號會映射為root賬戶,非常不安全,禁用
all_squash 所有nfs客戶端的用戶都映射為匿名用戶,很安全,生產(chǎn)環(huán)境常用
sync 數(shù)據(jù)同步寫入到內(nèi)存和磁盤,優(yōu)點是保證內(nèi)存數(shù)據(jù)安全,但是效率太低
async 數(shù)據(jù)先寫入到內(nèi)存,再持久化到磁盤,效率非常高,但是可能會有數(shù)據(jù)丟失的隱患
最近做了一個文件的異地備份,采用網(wǎng)絡(luò)掛載的方式,效果比之前用sync拷貝要方便的多。
也比之前簡單的多,其實也就是幾件事情。
首先是,需要備份的服務(wù)器和備份的服務(wù)器都裝上nfs。
yum?install?nfs-utils
有的可能還需要單獨安裝一下rpcbind
那就
yum?install?rpcbind
接著在被掛載服務(wù)器編寫配置文件
vim? /etc/exports
/root/work 192.168.0.3(rw,no_root_squash,no_all_squash,async)
/root/work 192.168.0.16(rw,no_root_squash,no_all_squash,async)
如像這樣,授權(quán)了本地的/root/work?目錄可以被兩個服務(wù)器訪問,權(quán)限是讀寫(rw)
這一部分就完成了。
接下來是需要備份的服務(wù)器:
安裝玩nfs以后,在/mnt目錄下建一個目錄(通常都是在這個目錄下,別問為什么?問就是通用習(xí)慣。)
cd? /mnt
mkdir backserver
這就完成了目錄創(chuàng)建
接著也是最重要的一步
mount -t nfs 192.168.0.18:root/work/backup /mnt/backserver/
這條命令的意思是掛載192.168.0.18:root/work/backup目錄到本機的/mnt/backserver/
-t?是指定掛載類型,nfs,就是網(wǎng)絡(luò)文件系統(tǒng)的簡稱。
這樣之后,本機的/mnt/backserver/存的文件實際上是存在192.168.0.18:root/work/backup目錄下的。
接下來就是一個見的文件拷貝命令。
rsync -avz /usr/local/nginx /usr/local/tomcat? /mnt/backserver/09back
就把文件備份到192.168.0.18:root/work/backup目錄下了。
實現(xiàn)自動備份就更簡單了,直接把剛才的命令寫入shell腳本
保存為backup.sh
然后加入系統(tǒng)定時計劃
crontab -e
30 3 * * * sh /root/work/work/backup.sh
意思是每天三點執(zhí)行一次腳本,就完成了自動異地備份。
整個過程還是很簡答的,其中涉及一個cs的模式。
需要知道:
1,是客戶端掛載到服務(wù)端。
2,服務(wù)端需要授予客戶端訪問權(quán)限。