inux系統中的經典的語句”一切皆文件”,意思就是說在Linux系統中,我們要達成任何目標,都是通過配置文件去實現的。既然這樣,那我們就少不了跟文件打交道,今天就跟大家分享下如何在Linux系統中配置網絡文件系統(Network File System, NFS)服務來達到Linux系統之間的文件共享的目的。
之前有跟大家介紹過FTP(文件傳輸)協議,使得不同網絡系統上的文件可以互相傳輸,類似Windows系統中的復制粘貼功能,這樣同一文件在不同系統之間都要占內存,如果傳輸的文件比較大,對系統內存就不是很友好,而且修改文件也比較麻煩。今天跟大家分享的就是使用NFS服務將Linux服務端的共享資源掛載到客戶端,這樣客戶端基于TCP/IP協議,就像操作本地資源那樣對服務端的資源進行操作。
那么該如何使用NFS服務呢?且看以下步驟:
執行命令:dnf install nfs-utils
執行命令: mkdir /sharefile
chmod -R 777 /sharefile
echo “welcome to linuxprobe.com” > /sharefile/readme
執行命令: vim /etc/exports
/sharefile 192.168.10.*(rw,sync,root_squash)
執行命令:systemctl restart rpcbind
systemctl enable rpcbind
systemctl start nfs-server
systemctl enable nfs-server
執行命令:showmount -e 192.168.10.10
執行命令: mkdir /clientsharefile
mount -t nfs 192.168.10.10:/sharefile /clientsharefile
這樣整個NFS服務的配置就配置好啦,如果想要NFS掛載共享服務一直有效,需要將其寫入到fstab文件中,這樣服務端的資源就會隨著服務器的開機而掛載。但是這樣會產生一個問題,如果掛載的資源太多或者資源長期掛載而不使用的話,就會造成資源浪費,如果每次在使用的時候會自動掛載,就會解決這一問題。autofs服務會解決這一問題,當客戶端需要訪問某一文件時,autofs會自動掛載這一文件。autofs使用方法如下:
執行命令:systemctl start autofs
systemctl enable autofs
這樣autofs服務就配置好啦,是不是特別簡單。Autofs服務只有檢測到有需要掛載的文件時才會自動掛載,大大提高工作效率。
這里要特別強調的一點是NFS服務只能用于Linux操作系統之間的文件共享,如果有Linux和Windows之間的文件共享需要考慮 用其他服務,如Samba服務程序等,這里就不詳述。如果想要深入了解NFS服務和Samba服務的小伙伴可以查閱《Linux就該這么學(第2版)》這本書,這本書里會比本文介紹的更加詳細,如執行命令需要配置的參數,每個參數表示什么意思,每個操作需要的注意事項,書中都會有,誠摯推薦給有需要的小伙伴。
有個刷了 Armbian 的玩客云想當文件共享服務器。
某些版本的 Armbian 內核不支持 nfsd,剛好穌就刷到!如果按照 debian 服務器玩法——安裝 kernel 版服務端,是無法正常工作的:
apt install nfs-common nfs-kernel-server
啟動時會提示:
mount: /proc/fs/nfsd: unknown filesystem type 'nfsd'.
proc-fs-nfsd.mount: Mount process exited, code=exited, status=32/n/a
proc-fs-nfsd.mount: Failed with result 'exit-code'.
nfs-mountd.service: Job nfs-mountd.service/start failed with result 'dependency'.
nfs-idmapd.service: Job nfs-idmapd.service/start failed with result 'dependency'.
nfs-server.service: Job nfs-server.service/start failed with result 'dependency'.
使用用戶態的 nfs-ganesha。
apt install nfs-ganesha nfs-ganesha-vfs
配置文件為 /etc/ganesh/ganesha.conf。nfs-ganesha-vfs 包另帶一個 vfs.conf 參考模板。以下配置創建讀寫共享 /root/share 和只讀共享 /opt:
EXPORT_DEFAULTS
{
Protocols = 4;
}
EXPORT
{
Export_Id = 77;
Protocols = 3, 4;
Path = /root/share;
Pseudo = /root/share;
Access_Type = RW;
FSAL {
Name = VFS;
}
}
EXPORT
{
Export_Id = 78;
Path = /opt;
Pseudo = /opt;
Access_Type = RO;
FSAL {
Name = VFS;
}
}
改完重啟服務:
systemctl restart nfs-ganesha.service
apt install nfs-common
注意:如果提示 mount.nfs: No such device,說明內核沒有 NFS 模塊,洗洗睡了,換 Windows 10 吧!
安裝 NFS 客戶端
瀏覽 NFS 共享
NFS 屬性
注意:Windows 10 目前只有 NFS v3 客戶端。服務端如果只開 v4 協議,則 Windows 10 將無法訪問。
https://github.com/nfs-ganesha/nfs-ganesha/blob/next/src/config_samples/config.txt
https://github.com/nfs-ganesha/nfs-ganesha/blob/next/src/config_samples/export.txt