NFS配置及使用
什么是NFS
NFS(Network File System)即網絡文件系統,是FreeBSD支持的文件系統中的一種,它允許網絡中的計算機之間通過TCP/IP網絡共享存儲。在NFS的應用中,本地NFS的客戶端應用可以透明地讀寫位于遠端NFS服務器上的文件,就像訪問本地文件一樣。
NFS 的實現使用了RPC(Remote Procedure Call)的機制,遠程過程調用使得客戶端可以調用服務端的函數。由于有 VFS 的存在,客戶端可以像使用其他普通文件系統一樣使用 NFS 文件系統,由操作系統內核將 NFS 文件系統的調用請求通過 TCP/IP 發送至服務端的 NFS 服務,執行相關的操作,之后服務端再講操作結果返回客戶端。
FTP、NFS、Samba區別
FTP
FTP 是一個文件傳輸的協議,客戶端需要使用專門的 ftp 客戶端與服務器端進行通信,以完成文件的上傳和下載,FTP 協議工作在應用層。它使用兩個連接與客戶端通信:
- 命令連接:用于傳輸文件管理類命令,此連接在客戶端連接后會始終在線
- 數據連接:用于傳輸文件數據,此連接會按序創建
FTP 服務器會監聽 TCP 21 號端口用于命令連接,而數據連接有兩種模式:
- 主動模式,服務器使用 TCP 20 號端口主動創建連接到客戶端的某隨機端口
- 被動模式,客戶端使用隨機端口連接服務器端的隨機端口
NFS
略
Samba
NFS 只能在 Unix 系統間進行共享,而 Windows 對其支持很有限。因此有人就在 Linux/Unix 系統中實現了 Windows 文件共享所使用的 CIFS 協議,也叫做 SMB(Simple Message Block)協議。這使得 Windows/Linux/Unix 間可以自由的進行文件共享。
系統環境
服務器系統平臺:Ubuntu 16.04
- Server IP:192.168.64.130
- Client IP :192.168.64.129 (Ubuntu)
- Client IP :192.168.6.23 (Windows)
NFS服務器配置
Ubuntu安裝NFS服務
[iceman@ubuntu]$: sudo apt-get install rpcbind nfs-kernel-serverNFS服務配置
配置NFS比較簡單,主要是在/etc/exports文件中添加需要共享的文件目錄和相應權限,
1.建立共享文件
[iceman@ubuntu]$: sudo mkdir /home/share [iceman@ubuntu]$: sudo vim /etc/exports #編輯添加權限配置 /home/share 192.168.64.129(rw,sync,no_root_squash,no_all_squash,no_subtree_check)2.exports配置選項簡介
/etc/exports配置文件配置比較簡單,只需要上面一行即可。該行分為3部分:
3.輸出目錄選項簡介:
訪問權限選項:
- rw:讀寫
- ro:只讀
用戶映射選項:
- no_root_squash:加上這個選項后,root用戶就會對共享的目錄擁有至高的權限控制,就像是對本機的目錄操作一樣。不安全,不建議使用
- root_squash:和上面的選項對應,root用戶對共享目錄的權限不高,只有普通用戶的權限,即限制了root;
- all_squash:不管使用NFS的用戶是誰,他的身份都會被限定成為一個指定的普通用戶身份
- anonuid/anongid:要和root_squash 以及 all_squash一同使用,用于指定使用NFS的用戶限定后的uid和gid,前提是本機的/etc/passwd中存在這個uid和gid
其他選項:
- sync:同步模式,內存中數據時時寫入磁盤
- async:不同步,把內存中數據定期寫入磁盤中
- secure:限制客戶端只能從小于1024的tcp/ip端口連接nfs服務器(默認設置)
- insecure:允許客戶端從大于1024的tcp/ip端口連接服務器
- wdelay:檢查是否有相關的寫操作,如果有則將這些寫操作一起執行,這樣可以提高效率(默認設置)
- no_wdelay:若有寫操作則立即執行,應與sync配合使用
- subtree:若輸出目錄是一個子目錄,則nfs服務器將檢查其父目錄的權限(默認設置)
- no_subtree:即使輸出目錄是一個子目錄,nfs服務器也不檢查其父目錄的權限,這樣可以提高效率
4.NFS服務器重啟
[iceman@ubuntu]$: sudo /etc/init.d/rpcbind restart #重啟rpcbind 服務(nfs是通過RPC端口映射) [iceman@ubuntu]$: sudo /etc/init.d/nfs-kernel-server restart #重啟nfs服務。NFS客戶端掛載
客戶端配置本文主要從Ubuntu和Windows下進行文件系統掛載
Ubuntu掛載
[iceman@ubuntu]$: sudo apt-get install nfs-kernel-server [iceman@ubuntu]$: sudo mount -t nfs 192.168.64.130:/home/share /home/foo自動掛載NFS
[iceman@ubuntu]$: sudo vim /etc/rc.local #添加如下信息 mount -t nfs 192.168.64.130:/home/share /home/foo exit 0Windows掛載
在windows中默認NFS客戶端服務是關閉的,需要開啟服務
開啟步驟:
- 打開控制面板->程序->打開或關閉windows功能->NFS客戶端
- 勾選NFS客戶端,即開啟windows NFS客戶端服務
開始掛載:
- win+R->cmd
- mount 192.168.64.130:/home/share X:
成功掛載,打開我的點腦,你即可在你網絡位置看到 X:盤
取消掛載
Ubuntu取消掛載
[iceman@ubuntu]$: sudo umount /home/fooWindows取消掛載
- 直接在 "我的電腦" 里面鼠標點擊取消映射網絡驅動器 X:
- 或者: win+R->cmd; 輸入: umount X: #(umount -a 取消所有網絡驅動器)
Showmount命令
- showmount –a IP 顯示指定NFS服務器的客戶端以及服務器端在客戶端的掛載點
- showmount –d IP 顯示指定NFS服務器在客戶端的掛載點
- showmount –e IP 顯示指定NFS服務器上的共享目錄列表
偶遇問題
"mount.nfs: access denied by server while mounting"
當出現該問題時,記得在exports 添加insecure,如下:
[iceman@ubuntu]$: sudo vim /etc/exports #編輯添加權限配置 /home/share 192.168.64.129(insecure,rw,sync,no_root_squash,no_all_squash,no_subtree_check)Windows7配置NFS服務器
在windows上配置NFS服務器,目前可以通過開源軟件來進行搭建,目前只介紹下開源庫,后期再詳細分析
開源Windows NFS服務端庫
NFS(C#)
WinNFSd(C++)
轉載于:https://www.cnblogs.com/wqliceman/p/7228538.html
總結
- 上一篇: Python当中的a += a 与 a
- 下一篇: 语音记帐软件