安装NFS服务,需要安装两个软件,分别是:
RPC主程序:rpcbind
NFS 其实可以被视为一个 RPC 服务,因为启动任何一个 RPC 服务之前,我们都需要做好 port 的对应 (mapping) 的工作才行,这个工作其实就是『 rpcbind 』这个服务所负责的!也就是说, 在启动任何一个 RPC 服务之前,我们都需要启动 rpcbind 才行! (在 CentOS 5.x 以前这个软件称为 portmap,在 CentOS 6.x 之后才称为 rpcbind 的!)
NFS主程序:nfs-utils
就是提供 rpc.nfsd 及 rpc.mountd 这两个 NFS daemons 与其他相关 documents 与说明文件、执行文件等的软件!这个就是 NFS 服务所需要的主要软件。
NFS的相关文件:
主要配置文件:/etc/exports
这是 NFS 的主要配置文件了。该文件是空白的,有的系统可能不存在这个文件,主要手动建立。NFS的配置一般只在这个文件中配置即可。
NFS 文件系统维护指令:/usr/sbin/exportfs
这个是维护 NFS 分享资源的指令,可以利用这个指令重新分享 /etc/exports 变更的目录资源、将 NFS Server 分享的目录卸除或重新分享。
分享资源的登录档:/var/lib/nfs/*tab 在 NFS 服务器的登录文件都放置到 /var/lib/nfs/ 目录里面,在该目录下有两个比较重要的登录档, 一个是 etab ,主要记录了 NFS 所分享出来的目录的完整权限设定值;另一个 xtab 则记录曾经链接到此 NFS 服务器的相关客户端数据。
客户端查询服务器分享资源的指令:/usr/sbin/showmount 这是另一个重要的 NFS 指令。exportfs 是用在 NFS Server 端,而 showmount 则主要用在 Client 端。showmount 可以用来察看 NFS 分享出来的目录资源。
服务端安装NFS服务步骤:
第一步:安装NFS和rpc
#安装nfs服务
[root@localhost ~]# yum install -y nfs-utils
#安装rpc服务
[root@localhost ~]# yum install -y rpcbind
#其实安装yum install -y nfs-utils就会自动把rpcbind安装上 所以不用执行第二步
1
2
3
4
5
#安装nfs服务
[root@localhost~]# yum install -y nfs-utils
#安装rpc服务
[root@localhost~]# yum install -y rpcbind
#其实安装yum install -y nfs-utils就会自动把rpcbind安装上 所以不用执行第二步
第二步:启动服务和设置开启启动:
[root@localhost~]# systemctl start rpcbind
[root@localhost~]# systemctl enable rpcbind
[root@localhost~]# systemctl start nfs-server
[root@localhost~]# systemctl start nfs-secure.service
[root@localhost~]# systemctl enable nfs-server
[root@localhost~]# systemctl enable nfs-secure.service
1
2
3
4
5
6
[root@localhost~]# systemctl start rpcbind
[root@localhost~]# systemctl enable rpcbind
[root@localhost~]# systemctl start nfs-server
[root@localhost~]# systemctl start nfs-secure.service
[root@localhost~]# systemctl enable nfs-server
[root@localhost~]# systemctl enable nfs-secure.service
如果你开启了防火墙,配置下放行nfs服务
firewall-cmd --permanent --add-service=nfs
firewall-cmd --reload
1
2
firewall-cmd--permanent--add-service=nfs
firewall-cmd--reload
第三步:配置共享文件目录,编辑配置文件:
#创建共享目录
mkdir /public
#配置文件
vim /etc/exports
/public 172.17.0.2(rw,no_root_squash,no_all_squash,sync,anonuid=501,anongid=501)
/public 172.17.0.3(rw,no_root_squash,no_all_squash,sync,anonuid=501,anongid=501)
/public 172.17.0.4(rw,no_root_squash,no_all_squash,sync,anonuid=501,anongid=501)
或者直接写这个网络段
vim /etc/exports
/public 172.17.0.2/24(rw,no_root_squash,no_all_squash,sync,anonuid=501,anongid=501)
1
2
3
4
5
6
7
8
9
10
11
#创建共享目录
mkdir/public
#配置文件
vim/etc/exports
/public172.17.0.2(rw,no_root_squash,no_all_squash,sync,anonuid=501,anongid=501)
/public172.17.0.3(rw,no_root_squash,no_all_squash,sync,anonuid=501,anongid=501)
/public172.17.0.4(rw,no_root_squash,no_all_squash,sync,anonuid=501,anongid=501)
或者直接写这个网络段
vim/etc/exports
/public172.17.0.2/24(rw,no_root_squash,no_all_squash,sync,anonuid=501,anongid=501)
配置文件解析
格式: 共享目录的路径 允许访问的NFS客户端(共享权限参数)
如上:
/public #共享目录路径
172.17.0.2 #允许访问的客户端为172.17.0.2网络用户
(rw,no_root_squash,no_all_squash,sync,anonuid=501,anongid=501) #权限
#注意,nfs客户ip地址与权限之间没有空格
ro 只读
rw 读写
root_squash当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户
no_root_squash当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员
all_squash无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户
no_all_squash 与all_squash取反(默认设置)
sync 同时将数据写入到内存与硬盘中,保证不丢失数据
async 优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据
anonuid 将客户机上的用户映射成指定的本地用户ID的用户
anongid 将客户机上的用户映射成属于指定的本地用户组ID
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
格式:共享目录的路径允许访问的NFS客户端(共享权限参数)
如上:
/public#共享目录路径
172.17.0.2#允许访问的客户端为172.17.0.2网络用户
(rw,no_root_squash,no_all_squash,sync,anonuid=501,anongid=501)#权限
#注意,nfs客户ip地址与权限之间没有空格
ro只读
rw读写
root_squash当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户
no_root_squash当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员
all_squash无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户
no_all_squash与all_squash取反(默认设置)
sync同时将数据写入到内存与硬盘中,保证不丢失数据
async优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据
anonuid将客户机上的用户映射成指定的本地用户ID的用户
anongid将客户机上的用户映射成属于指定的本地用户组ID
showmount命令的用法
-e [本机ip]显示NFS服务器的共享列表
-a [本机ip]显示本机挂载的文件资源的情况NFS资源的情况
-v显示版本号
1
2
3
-e[本机ip]显示NFS服务器的共享列表
-a[本机ip]显示本机挂载的文件资源的情况NFS资源的情况
-v显示版本号
#显示已经mount到本机nfs目录的客户端机器
showmount -e localhost
#将配置文件中的目录全部重新export一次!无需重启服务。
exportfs -rv
#查看NFS的运行状态
nfsstat
#查看rpc执行信息,可以用于检测rpc运行情况
rpcinfo
#查看网络端口,NFS默认是使用111端口。
netstat -tu -4
#重启nfs服务
service nfs-kernel-server restart
1
2
3
4
5
6
7
8
9
10
11
12
#显示已经mount到本机nfs目录的客户端机器
showmount-elocalhost
#将配置文件中的目录全部重新export一次!无需重启服务。
exportfs-rv
#查看NFS的运行状态
nfsstat
#查看rpc执行信息,可以用于检测rpc运行情况
rpcinfo
#查看网络端口,NFS默认是使用111端口。
netstat-tu-4
#重启nfs服务
servicenfs-kernel-serverrestart
如果你安装了防火墙,需要配置nfs需要开放的端口
portmap 端口 111 udp/tcp
nfsd 端口 2049 udp/tcp
mountd 端口 “xxx” udp/tcp 负责客户端来源认证的进程,认证成功后接受客户端的挂载请求,工作在随机端口,即时向RPC注册。
系统 RPC服务在 nfs服务启动时默认会为 mountd动态选取一个随机端口(32768–65535)来进行通讯,我们可以通过编辑/etc/services 文件为 mountd指定一个固定端口:
#注意下面这个为mountd指定端口我试了下没有成功,一般情况下不需要指定,人家自己获取是多少就是多少。你可以通过 rpcinfo -p 查看当前随机指定的mountd端口是多少然后加入到你的防火墙中。
# vim /etc/services
在末尾添加
mountd 1011/udp
mountd 1011/tcp
保存该文件,重启rpc.mountd
rpcinfo -p Hostname
现在我们会发现 mountd已经和端口 1011绑定了。
1
2
3
4
5
6
7
8
9
10
#注意下面这个为mountd指定端口我试了下没有成功,一般情况下不需要指定,人家自己获取是多少就是多少。你可以通过 rpcinfo -p 查看当前随机指定的mountd端口是多少然后加入到你的防火墙中。
# vim /etc/services
在末尾添加
mountd1011/udp
mountd1011/tcp
保存该文件,重启rpc.mountd
rpcinfo-pHostname
现在我们会发现mountd已经和端口1011绑定了。
服务器本机测试
rpcinfo -p
#检测nfs的rpc注册状态
rpcinfo -u 10.0.2.15 nfs
#查看共享目录和参数设置
cat /var/lib/nfs/etab
#使用showmount命令查看共享目录发布及使用情况
showmount -e 10.0.2.15
1
2
3
4
5
6
7
rpcinfo-p
#检测nfs的rpc注册状态
rpcinfo-u10.0.2.15nfs
#查看共享目录和参数设置
cat/var/lib/nfs/etab
#使用showmount命令查看共享目录发布及使用情况
showmount-e10.0.2.15
二:配置客户端机器
1.安装nfs服务
yum install -y nfs-utils
如果是linux挂载windows的nfs需要安装 cifs-utils
yum install cifs-utils
1
yuminstallcifs-utils
2. 查看nfs服务器共享目录
3.临时挂载
mount -t nfs -o rw 10.0.2.15:/public /home/shooter/data
1
mount-tnfs-orw10.0.2.15:/public/home/shooter/data
其他挂载:
#linux挂载windows 本身共享(非nfs)
mount -t cifs //192.168.1.126/linux_nfs /mnt/linux_nfs/ -o username=linux,password=123asd,rw,file_mode=0777,dir_mode=0777,setuid=509,setgid=101
#挂载权限为0777
mount -t cifs //192.168.1.126/linux_nfs /mnt/linux_nfs/ -o username=linux,password=123asd
1
2
3
4
5
6
其他挂载:
#linux挂载windows 本身共享(非nfs)
mount-tcifs//192.168.1.126/linux_nfs/mnt/linux_nfs/-ousername=linux,password=123asd,rw,file_mode=0777,dir_mode=0777,setuid=509,setgid=101
#挂载权限为0777
mount-tcifs//192.168.1.126/linux_nfs/mnt/linux_nfs/-ousername=linux,password=123asd
4. 启动自动挂载nfs文件系统
#vim /etc/fstab
10.0.2.15:/mysqlbak /mnt/nfs nfs defaults
1
2
#vim /etc/fstab
10.0.2.15:/mysqlbak/mnt/nfsnfsdefaults
mount -a 刷新使挂载文件生效
查看挂载生效
hello文件为我在宿主机新建的文件,这说明虚拟机已经成功挂载了
最后编辑:2020-03-25作者:shooter
这个作者貌似有点懒,什么都没有留下。