NFS 是Network File System的缩写,即网络文件系统。一种使用于分散式文件系统的协定。功能是通过网络让不同的机器、不同的操作系统能够彼此分享个别的数据让应用程序在客户端通过网络访问位于服务器磁盘中的数据,是在类Unix系统间实现磁盘文件共享的一种方法。NFS 的基本原则是“容许不同的客户端及服务端通过一组RPC分享相同的文件系统”,它是独立于操作系统,容许不同硬件及操作系统的系统共同进行文件的分享。NFS在文件传送或信息传送过程中依赖于RPC协议。RPC,远程过程调用(Remote Procedure Call) 是能使客户端执行其他系统中程序的一种机制。NFS本身是没有提供信息传输的协议和功能的,但NFS却能让我们通过网络进行资料的分享,这是因为NFS使用了一些其它的传输协议。而这些传输协议用到这个RPC功能的。可以说NFS本身就是使用RPC的一个程序。或者说NFS也是一个RPC SERVER。所以只要用到NFS的地方都要启动RPC服务,不论是NFSSERVER或者NFS CLIENT。这样SERVER和CLIENT才能通过RPC来实现PROGRAM PORT的对应。可以这么理解RPC和NFS的关系:NFS是一个文件系统,而RPC是负责信息的传输。
操作系统:CentOS Linux release 7.3.1611 (Core)
服务端:10.0.1.16
客户端:10.0.1.1 10.0.1.2
命令如下:
#yum list |grep nfs-utils #查看是否有nfs-utils的rpm包
#yum install nfs-utils.x86_64 -y #安装nfs-utils
#groupadd -g 1005 rick
#useradd -g 1005 -u 1005-M rick
#mkdir -p /share/data
#chown -R rick:rick /share/data
注:1005是用户id和用户组id,这个实验我使用自定义的;也可以使用默认的,使用
cat /etc/passwd |grep rick 命令行查看,例如
rick:x:1001:1001::/home/rick:/bin/bash
以冒号为分隔符,第一个字段是用户名称;第二个字段是密码,是隐藏的;第三个字段是用户id;第四个字段是用户组id;第五个字段是描述;第六个字段是用户的主目录;第七个字段是用户可用的shell。
命令:vim /etc/exports
添加 /share/data *(rw,sync,all_squash,anonuid=1005,anongid=1005)
共享目录 权限设置,*代表允许所有ip访问,其他权限参考2.4节
注:这里为了方便使用*来设置可访问共享目录的ip,为了安全起见,部署的时候建议指定可访问的单个ip或者一个网段,
例如
/share/data 10.0.1.1(rw,sync,all_squash,anonuid=1005,anongid=1005)
#指定单个ip可访问共享文件目录
/share/data 10.0.1.0/24(rw,sync,all_squash,anonuid=1005,anongid=1005)
#指定某个网段可以访问共享文件目录
或者
/share/data 10.0.1.1(rw,sync,all_squash,anonuid=1005,anongid=1005)
10.0.1.2(rw,sync,all_squash,anonuid=1005,anongid=1005)
#上面两行是连接起来的哦,ip()空格ip(),多个ip使用空格分隔
#指定多ip可访问共享文件目录
systemctl start rpcbind.service
systemctl start nfs-server.service
#firewall-cmd --permanent --add-port=111/tcp
#firewall-cmd --permanent --add-port=2049/tcp
#firewall-cmd --reload
yum install nfs-utils.x86_64 -y
mount -t nfs 10.0.1.16:/share/data /opt
注:/opt目录是自定义的,如果本地没有此目录会自动创建
vim /etc/fstab
添加10.0.1.16:/share/data /opt nfs defaults 0 0
參數值 | 內容說明 |
rw | 該目錄分享的權限是可讀寫 (read-write) 或唯讀 (read-only),但最終能不能讀寫,還是與檔案系統的 rwx 及身份有關。 |
sync | sync 代表資料會同步寫入到記憶體與硬碟中,async 則代表資料會先暫存於記憶體當中,而非直接寫入硬碟! |
no_root_squash | 用戶端使用 NFS 檔案系統的帳號若為 root 時,系統該如何判斷這個帳號的身份?預設的情況下,用戶端 root 的身份會由 root_squash 的設定壓縮成 nfsnobody, 如此對伺服器的系統會較有保障。但如果你想要開放用戶端使用 root 身份來操作伺服器的檔案系統,那麼這裡就得要開 no_root_squash 才行! |
all_squash | 不論登入 NFS 的使用者身份為何, 他的身份都會被壓縮成為匿名使用者,通常也就是 nobody(nfsnobody) 啦! |
anonuid | anon 意指 anonymous (匿名者) 前面關於 *_squash 提到的匿名使用者的 UID 設定值,通常為 nobody(nfsnobody),但是你可以自行設定這個 UID 的值!當然,這個 UID 必需要存在於你的 /etc/passwd 當中! anonuid 指的是 UID 而 anongid 則是群組的 GID 囉。 |
本文是参考鸟哥的私房菜-服务器而进行的实验,且本文没有鸟哥写的那么详细。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。