目录
NFS 网络文件系统共享服务第一步:NFS服务器安装 nfs-utils、rpcbind 软件包并启动
第八步 :强制卸载nfs服务(服务端掉线时,客户端再写入会卡死)
一.NFS
NFS简介
- NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。
- 它的主要功能是通过网络让不同的机器系统之间可以彼此共享文件和目录。NFS服务器可以允许NFS客户端将远端NFS服务器端的共享目录挂载到本地的NFS客户端中。在本地的NFS客户端的机器看来,NFS服务器端共享的目录就好像自己的磁盘分区和目录一样。一般客户端挂载到本地目录的名字可以随便,但为方便管理,我们要和服务器端一样比较好。其就相当于windows里面共享文件,然后其他主机把这个共享文件映射成了本地盘使用一样。
- NFS一般用来存储共享视频,图片等静态数据。
RPC简介
- 因为NFS支持的功能相当多,而不同的功能都会使用不同的程序来启动,每启动一个功能就会启用一些端口来传输数据。,因此,NFS的功能所对应的端口无法固定,它会随机取用一些未被使用的端口来作为传输,其中CentOS 5.x的随机端口都小于1024,而CentOS 6.x的随机端口都比较大。
- 因为端口不固定,就会造成NFS客户端与NFS服务端的通信障碍。因为NFS客户端必须要知道NFS服务端的数据传输端口才能进行通信,才能交互数据。
- 要解决上面的困扰,就需要通过远程过程调用RPC服务来帮忙,NFS的RPC服务最主要的功能就是记录每个NFS功能所对应的端口号,并且在NFS客户端请求时将该端口和功能对应的信息传递给请求数据的NFS客户端,从而确保客户端可以连接到正确的NFS端口上去,达到实现数据传输交互数据目的。这个RPC服务类似NFS服务端和NFS客户端之间的一个中介。
NFS共享存储服务
- 网络文件系统NFS(Network File System)
- 依赖于RPC(远端过程调用)
- 需安装nfs-utils、rpcbind软件包
- 系统服务:nfs、rpcbind
- 共享配置文件:/etc/exports
- rpcbind(端口111)、nfs(端口2049)
格式为: 共享的目录位置 客户机地址(权限选项)
客户机地址 | 可以是主机名、IP 地址、网段地址,允许使用“*”、“?”通配符。 |
“rw” | 表示允许读写,“ro” 表示为只读。 |
sync | 表示同步写入到内存与硬盘中。 |
no_root_squash | 表示当客户机以root身份访问时赋予本地root权限(默认是root_squash)。 |
root_squash | 表示客户机用root用户访问该共享目录时,将root用户映射成匿名用户。 |
all_squash | 所有访问用户都映射为匿名用户或用户组 |
async | 将数据先保存在内存缓冲区中,必要时才写入磁盘。 |
subtree_check(默认) | 若输出目录是一个子目录,则nfs服务器将检查其父目录的权限。 |
no_subtree_check | 即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率。 |
提供共享存储的组合
- 真正提供存储能力的硬件设备 使用通用服务器制作的文件服务器 或 专用的企业级存储设备NAS
- +
- linux系统使用的共享存储服务 NFS
- Windows系统使用的共享存储服务 CIFS
NFS 网络文件系统共享服务
第一步:NFS服务器安装 nfs-utils、rpcbind 软件包并启动
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# yum -y install nfs-utils rpcbind
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
软件包 1:nfs-utils-1.3.0-0.68.el7.2.x86_64 已安装并且是最新版本
软件包 rpcbind-0.2.0-49.el7.x86_64 已安装并且是最新版本
无须任何处理
[root@localhost ~]# systemctl start rpcbind
[root@localhost ~]# systemctl start nfs
[root@localhost ~]# systemctl enable rpcbind
[root@localhost ~]# systemctl enable nfs
第二步 :NFS服务器设置共享目录
[root@localhost ~]# mkdir -p /opt/nfstest
[root@localhost ~]# chmod 777 /opt/nfstest
第三步:服务端更改NFS配置,对访问用户进行限制
[root@localhost ~]# vim /etc/exports
/opt/nfstest 20.0.0.0/24(rw,sync,no_root_squash)
第四步:查看本机发布的共享服务
[root@localhost opt]# showmount -e
Export list for localhost.localdomain:
/opt/nfstest 20.0.0.0/24
第五步:客户端安装nfs服务,并且打开服务
[root@localhost ~]# yum -y install nfs-utils rpcbind
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
软件包 1:nfs-utils-1.3.0-0.68.el7.2.x86_64 已安装并且是最新版本
软件包 rpcbind-0.2.0-49.el7.x86_64 已安装并且是最新版本
无须任何处理
[root@localhost ~]# systemctl start rpcbind
[root@localhost ~]# systemctl start nfs
[root@localhost ~]# systemctl enable rpcbind
[root@localhost ~]# systemctl enable nfs
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# showmount -e 20.0.0.147
Export list for 20.0.0.147:
/opt/nfstest 20.0.0.0/24
第六步:客户端挂载nfs共享目录
1. 手动挂载
[root@localhost ~]# mkdir /myshare
[root@localhost ~]# mount 20.0.0.147:/opt/nfstest /myshare
[root@localhost ~]# df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 13M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 26G 5.2G 21G 20% /
/dev/sda1 xfs 1014M 187M 828M 19% /boot
tmpfs tmpfs 378M 68K 378M 1% /run/user/0
/dev/sr0 iso9660 4.5G 4.5G 0 100% /mnt
20.0.0.147:/opt/nfstest nfs4 17G 5.2G 12G 31% /myshare
2. 自动挂载
[root@localhost ~]# vim /etc/fstab
20.0.0.147:opt/nfstest/ /myshare nfs defaults,_netdev 0 0
第七步:进行共享文件的测试
1.客户端写入文件
[root@localhost ~]# cd /myshare/
[root@localhost myshare]# echo lll>a.txt
2.服务端读取共享目录中的文件
[root@localhost opt]# cd nfstest/
[root@localhost nfstest]# ls
a.txt
[root@localhost nfstest]# ll
总用量 4
-rw-r--r--. 1 root root 4 4月 29 17:08 a.txt
第八步 :强制卸载nfs服务(服务端掉线时,客户端再写入会卡死)
[root@localhost ~]# umount -lf /myshare