搭建nfs服务器

NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样

组成NFS体系至少有两个主要部分:

一台NFS服务器和若干台客户机,如右图所示。

客户机通过TCP/IP网络远程访问存放在NFS服务器上的数据
在这里插入图片描述

RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无需额外地为这个交互作用编程。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。
在这里插入图片描述

exports 文件的格式

nfs的主配置文件在/etc/exports定义NFS系统的输出目录(即共享目录)、访问权限和允许访问的主机等参数。该文件默认为空,没有配置输出任何共享目录,这是基于安全性的考虑,如此即使系统启动了NFS服务也不会输出任何共享资源

客户端常见的指定方式

客户端说明
192.168.11.128指定ip地址的主机
192.168.11.0/24指定子网中的所有主机
www.csdn.com指定域名的主机
* (缺省)所有主机

访问权限选项:

访问权限选项说明
ro设置输出目录只读
rw设置输出目录可读。可写
用户映射选项:
用户映射选项说明
all_squash将远程访问的所有普通用户及所属组都映射为匿名
no_all_squash不将远程访问的所有普通用户及所属用户组都映射为匿名用户或用户组(默认设置)
root_squash将root用户及所属用户组都映射为匿名用户或用户组(默认设置)
no_root_squash不将root用户及所属用户组都映射为匿名用户或用户组
anonuid=xxx将远程访问的所有用户都映射为匿名用户,并指定该匿名用户为本地用户帐户(UID=xxx)
anongid=xxx将远程访问的所有用户组都映射为匿名用户组,并指定该匿名用户组为本地用户组(GID=xxx)
常用的其他选项:
其他选项说明
secure限制客户端只能从小于1024的TCP/IP端口连接NFS服务器(默认设置)
insecure允许客户端从大于1024的TCP/IP端口连接NFS服务器
sync将数据同步写入内存缓冲区或磁盘中,效率较低,但可保证数据一致性
async将数据先保存在内存缓冲区中,必要时才写入磁盘
wdelay检查是否有相关的写操作,如果有则这些写操作一起执行,可提高效率(默认设置)
no_wdelay若有写操作则立即执行,应与sync配置使用
subtree_check若输出目录是一个子目录,则NFS服务器将检查其父目录的权限(默认设置)
no_subtree_check即使输出目录是一个子目录,NFS服务亦不检查其父目录的权限,可提高效率
nohide若将一个目录挂载到另一个目录之上,则原来的目录通常就被隐藏起来或看起来像空的一样。要禁用这种行为,需启用hide选项
nfs工作机制
///nfs服务器运行的四个进程:
nfsd
mountd
idmapd
portmapper
idmapd   //实现用户账号的集中映射,把所有的账号都映射为nfsnobody,但在访问时却能以本地用户访问
mountd  //用于验证客户端是否允许访问nfs文件系统的客户端列表中,在允许访问(发送一个令牌,拿着令牌去找nfsd),不然拒绝访问

nfsd   //nfs的守护进程,监听2049/cp  2049/udp端口上
// 不负责文件存储(由nfs服务器本地内核负责调度存储),用于理解客户端发起的rps请求,并将其转交给本地内核,然后存储在指定的文件系统上
portmapper  //nfs服务器的rpc服务,将其监听与111/TCP和111/UDP套接字上,用于管理远程过程调用rpc

在这里插入图片描述

nfs管理

NFS的安装:

nfs的安装//
yum -y install nfs-utils
nfs的启动//
systemctl start rpcbind nfs-server

[root@localhost ~]# systemctl enable --now nfs-server
Created symlink /etc/systemd/system/multi-user.target.wants/nfs-server.service → /usr/lib/systemd/system/nfs-server.service.
使用shoumount命令测试nfs服务器的输出目录状态:
// 语法shouwmount  [选项] [nfs服务器的名称与地址]
//常见选项有
- a   /显示指定nfs服务器的所有客户端主机其连接的目录
- d   // 显示指定的nfs服务器中已被客户端连接的所有输出目录
-e  //显示指定的NFS服务器上所有输出的共享目录

在客户端挂载nfs文件系统
mount -t nfs 192.168.11.128:/nfs /media/
在客户端的配置文件/etc/fstab/中开机自动挂载
192.168.11.128:/nfs /media nfs defaults,_netdev 0 0

手动搭建一个nfs服务器
1.开放/nfs/shared目录,供所有用户查阅资料
2.开放/nfs/upload目录为172.16.12.0/24网段的数据上传目录,并将所有用户及所属的用户组都映射为nfs-upload,其UID与GID均为300

1.在客户端和服务端安装nfs-utils

[root@localhost ~]# yum -y install nfs-utils

//1.开放/nfs/shared目录,供所有用户查阅资料
创建/nfs/shared目录

mkdir -p /nfs/{/shared,/upload}

防火墙和seliunx关闭

systemctl disable firewalld
systemctl stop  firewalld
setenforce 0
vim /etc/selinux/config

systemctl enable --now nfs-server 启动
[root@client ~]# mount -t nfs 192.168.11.128:/nfs /media/
[root@client ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 963M 0 963M 0% /dev
tmpfs 980M 0 980M 0% /dev/shm
tmpfs 980M 8.7M 972M 1% /run
tmpfs 980M 0 980M 0% /sys/fs/cgroup
/dev/mapper/rhel-root 17G 1.7G 16G 10% /
/dev/nvme0n1p1 1014M 160M 855M 16% /boot
tmpfs 196M 0 196M 0% /run/user/0
192.168.11.128:/nfs 17G 1.2G 16G 7% /media
[root@client ~]# showmount -e 192.168.11.128
Export list for 192.168.11.128:
/nfs *

自动挂载写入etc/fstab/
192.168.11.128:/nfs /media nfs defaults,_netdev 0 0
[root@client ~]# mount -a
[root@client ~]# df -h

2.开放/nfs/upload目录为172.16.12.0/24网段的数据上传目录,并将所有用户及所属的用户组都映射为nfs-upload,其UID与GID均为300

[root@server ~]# mkdir /nfs/upload
[root@server ~]# chmod 777 /nfs/upload/
[root@server ~]# touch /nfs/upload/hhh
[root@server ~]# vim /etc/exports
/nfs/upload  192.168.226.0/24(rw,sync,anonuid=300,anongid=300)
在客户端挂载
[root@client ~]# showmount -e 192.168.11.128
开放/nfs/upload目录为172.16.12.0/24网段的数据上传目录,并将所有用户及所属的用户组都映射为nfs-upload,其UID与GID均为300
1.//关闭防火墙和selinux

[root@localhost ~] systemctl disable firewalld
[root@localhost ~] systemctl stop  firewalld
[root@localhost ~] setenforce 0
[root@localhost ~] vim /etc/selinux/config
//第一步在服务端安装NFS,并启动(客户机也要安装NFS)
[root@localhost ~]# yum -y install nfs-utils

[root@localhost ~]# systemctl enable --now rpcbind nfs-server

[root@cwt ~]# systemctl enable --now rpcbind nfs-server

//第二步,在服务端创建需要共享的目录
[root@cwt ~]# mkdir -p /nfs/{shared,upload}

//第三步,在服务端创建对应的组和用户
[root@cwt ~]# useradd -r -u 300 nfs-upload

//第四步,编辑服务端/etc/exportfs文件,添加以下两行内容
[root@cwt ~]# vim /etc/exports

/nfs/shared     *(ro)
/nfs/upload     192.168.86.0/24(rw,anonuid=300,anongid=300)

//第五步,在服务端重启服务或者使用exportfs -r命令让刚刚添加的配置生效
[root@cwt ~]# exportfs -r

//第六步,在服务端修改共享目录的属主和属组
[root@cwt ~]# chown -R nfs-upload /nfs/

//第七步,在客户机上查看并挂载
[root@localhost ~]# showmount -e 192.168.11.131
Export list for 192.168.11.131:
/nfs/shared *
/nfs/upload 192.168.86.0/24


[root@localhost ~]# mount -t nfs 192.168.11.131:/nfs  /mnt/
[root@localhost ~]# df -h
Filesystem             Size  Used Avail Use% Mounted on
devtmpfs               963M     0  963M   0% /dev
tmpfs                  980M     0  980M   0% /dev/shm
tmpfs                  980M  8.7M  972M   1% /run
tmpfs                  980M     0  980M   0% /sys/fs/cgroup
/dev/mapper/rhel-root   17G  1.7G   16G  10% /
/dev/nvme0n1p1        1014M  160M  855M  16% /boot
tmpfs                  196M     0  196M   0% /run/user/0
192.168.11.134:/nfs     17G  1.2G   16G   7% /mnt



[root@localhost ~]# cd /mnt/shared/
[root@localhost shared]# touch 123
touch: cannot touch '123': Read-only file system
// 只有可读权限没有写权限

[root@localhost shared]# cd ../upload/


//第八步,在客户端/etc/fstab中添加配置,实现开机自动挂载
192.168.86.129:/nfs /mnt/ nfs defaults,_netdev 0 0
[root@ansible ~]# mount -a
[root@ansible ~]# df -h
Filesystem             Size  Used Avail Use% Mounted on
devtmpfs               963M     0  963M   0% /dev
tmpfs                  980M     0  980M   0% /dev/shm
tmpfs                  980M  8.8M  972M   1% /run
tmpfs                  980M     0  980M   0% /sys/fs/cgroup
/dev/mapper/rhel-root   17G  1.7G   16G  10% /
/dev/nvme0n1p1        1014M  160M  855M  16% /boot
tmpfs                  196M     0  196M   0% /run/user/0
192.168.11.131:/nfs     17G  1.7G   16G  10% /mnt
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值