一.介绍

    NFS 是Network File System的缩写,即网络文件系统。一种使用于分散式文件系统的协定,功能是让客户端通过网络访问不同主机上磁盘里的数据,主要用在类Unix系统上实现文件共享的一种方法。
NFS在文件传送或信息传送过程中依赖于RPC协议。RPC,远程过程调用 (Remote Procedure Call) 是能使客户端执行其他系统中程序的一种机制。NFS本身是没有提供信息传输的协议和功能的,但NFS却能让我们通过网络进行资料的分享,这是因为NFS使用了一些其它的传输协议。而这些传输协议用到这个RPC功能的。可以说NFS本身就是使用RPC的一个程序。或者说NFS也是一个RPC SERVER。所以只要用到NFS的地方都要启动RPC服务,不论是NFS SERVER或者NFS CLIENT。这样SERVER和CLIENT才能通过RPC来实现PROGRAM PORT的对应。可以这么理解RPC和NFS的关系:NFS是一个文件系统,而RPC是负责负责信息的传输。

二.服务端配置

1.关闭系统防火墙和selinux

#查看系统防火墙的状态,可以看到防火墙是开着的
[root@bogon ~]#systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: active (running) since Sat 2017-06-03 09:38:00 CST; 8s ago
Docs: man:firewalld(1)
Main PID: 24067 (firewalld)
CGroup: /system.slice/firewalld.service
└─24067 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid Jun 03 09:37:58 bogon systemd[1]: Starting firewalld - dynamic firewall daemon...
Jun 03 09:38:00 bogon systemd[1]: Started firewalld - dynamic firewall daemon.
#关闭防火墙
[root@bogon ~]#systemctl stop firewalld
#再次查看防火墙,可以看到已经关闭了
[root@bogon ~]#systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: man:firewalld(1) Jun 01 11:33:35 localhost systemd[1]: Starting firewalld - dynamic firewall daemon...
Jun 01 11:33:44 localhost systemd[1]: Started firewalld - dynamic firewall daemon.
Jun 03 09:11:32 bogon systemd[1]: Stopping firewalld - dynamic firewall daemon...
Jun 03 09:11:34 bogon systemd[1]: Stopped firewalld - dynamic firewall daemon.
Jun 03 09:37:58 bogon systemd[1]: Starting firewalld - dynamic firewall daemon...
Jun 03 09:38:00 bogon systemd[1]: Started firewalld - dynamic firewall daemon.
Jun 03 09:38:34 bogon systemd[1]: Stopping firewalld - dynamic firewall daemon...
Jun 03 09:38:36 bogon systemd[1]: Stopped firewalld - dynamic firewall daemon.
#查看selinux的运行模式,现在为强制模式
[root@bogon share]#getenforce
Enforcing
#把selinux设为许可模式
[root@bogon share]#setenforce 0
#再次查看selinux的运行模式,已经变为许可模式
[root@bogon share]#getenforce
Permissive
#要想禁用selinux,则需要编辑selinux的配置文件,把SELINUX设置成disabled,然后重启生效
[root@bogon share]#vi /etc/sysconfig/selinux
[root@bogon share]#cat /etc/sysconfig/selinux # This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted

2.安装所需的软件包

[root@bogon ~]#yum install -y rpc-bind nfs-utils

3.服务端配置


NFS服务的主要配置文件为 /etc/exports.
/etc/exports文件内容格式:
<输出目录> 客户端(选项:访问权限,用户映射,其他]
输出目录是指NFS系统中所定义的共享给客户端使用的文件系统
客户端是定义网络中可以访问这个NFS共享目录的IP地址或网段或域名等
客户端常用的指定方式
指定ip地址的主机:192.168.100.1
指定一个子网:192.168.100.0/24 也可以写成:192.168.100.0/255.255.255.0
指定域名的主机:david.bsmart.cn
指定域中的所有主机:*.bsmart.cn
所有主机:*
选项用来设置输出目录的访问权限、用户映射等。
NFS主要有3类选项:
设置输出目录只读:ro
设置输出目录读写:rw
用户映射选项
all_squash:将远程访问的所有普通用户及所属组都映射为匿名用户或用户组(nfsnobody);
no_all_squash:与all_squash取反(默认设置);
root_squash:将root用户及所属组都映射为匿名用户或用户组(默认设置);
no_root_squash:与rootsquash取反;
anonuid=xxx:将远程访问的所有用户都映射为匿名用户,并指定该用户为本地用户(UID=xxx);
anongid=xxx:将远程访问的所有用户组都映射为匿名用户组账户,并指定该匿名用户组账户为本地用户组账户(GID=xxx);
其它选项
secure:限制客户端只能从小于1024的tcp/ip端口连接nfs服务器(默认设置);
insecure:允许客户端从大于1024的tcp/ip端口连接服务器;
sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;
async:将数据先保存在内存缓冲区中,必要时才写入磁盘;
wdelay:检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率(默认设置);
no_wdelay:若有写操作则立即执行,应与sync配合使用;
subtree:若输出目录是一个子目录,则nfs服务器将检查其父目录的权限(默认设置);
no_subtree:即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;

修改/etc/exports文件,定义NFS共享

#修改NFS配置文件,定义共享
[root@bogon ~]#vi /etc/exports
#定义向所有客户端共享/share目录,共享方式为可读可写
[root@bogon ~]#cat /etc/exports
/share *(rw,sync)
#创建/share这个共享目录
[root@bogon ~]#mkdir /share
#把共享目录的权限设定为所有用户都可读可写权限
[root@bogon ~]#chmod 766 /share
#把NFS加入到开机自启动选项中
[root@bogon ~]#systemctl enable nfs
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
#开启NFS服务
[root@bogon ~]#systemctl start nfs
#把RPCbind加入开机处启动选项中
[root@bogon ~]#systemctl enable rpcbind
#启动RPCbind
[root@bogon ~]#systemctl start rpcbind
#查看NFS服务的状态 ,可以看到NFS服务已经在运行中
[root@bogon ~]#systemctl status nfs
● nfs-server.service - NFS server and services
Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; enabled; vendor preset: disabled)
Active: active (exited) since Sat 2017-06-03 09:22:02 CST; 37min ago
Main PID: 23967 (code=exited, status=0/SUCCESS)
CGroup: /system.slice/nfs-server.service Jun 03 09:22:02 bogon systemd[1]: Starting NFS server and services...
Jun 03 09:22:02 bogon systemd[1]: Started NFS server and services.
#查看本机共享的文件系统
[root@bogon ~]#exportfs
/share <world>

三.客户端配置:

1.客户端关闭防火墙和selinux,方法同上.

2.客户端安装NFS软件包,并把NFS服务设为开机自启动,方法同上.

3.挂载共享的NFS文件系统

#把192.168.16.29这个主机上的共享目录挂载到本机的/media上
[root@bogon ~]#mount 192.168.16.29:/share /media
#查看是否已经挂载成功
[root@bogon ~]#mount | grep media
192.168.16.29:/share on /media type nfs4 (rw,relatime,vers=4.0,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.16.177,local_lock=none,addr=192.168.16.29)
#把共享目录写入系统挂载文件系统
[root@bogon ~]#vi /etc/fstab
[root@bogon ~]#cat /etc/fstab | grep media
192.168.16.29:/share /media nfs4 defaults 0 0

四.测试:

1.在服务端共享目录中新建一个10M大小的文件

[root@bogon media]#cd /share
[root@bogon share]#ls
#在NFS共享目录上新建一个10M大小的文件,提示成功
[root@bogon share]#dd if=/dev/zero of=/share/f1 bs=1M count=10
10+0 records in
10+0 records out
10485760 bytes (10 MB) copied, 0.0351504 s, 298 MB/s
[root@bogon share]#ll -h
total 10M
-rw-r--r--. 1 root root 10M Jun 3 10:14 f1

2.在客户端新建另一个文件f2,同时尝试删除另一个文件f1

[root@bogon ~]#cd /media
[root@bogon media]#ls
f1
#在共享目录上新建一个文件f2,未报错
[root@bogon media]#touch f2
#删除存在的文件f1,未报错
[root@bogon media]#rm -f f1

3.在服务端查看共享目录中的文件

[root@bogon share]#ls
f2

在CentOS7上实现NFS共享的更多相关文章

  1. 如何在centos6和centos7上部署nfs共享服务器和客户端

    nfs共享服务为中小型企业在存储上提供了有效的节省空间,许多大型的网站也在使用nfs,如百度和阿里等,下面结合自己所学的知识,阐述如何在centos6和centos7下配置nfs.注:除了必要的说明外 ...

  2. cnetos6上实现nfs共享

    利用空余时间,做个nfs共享实验,岂不美滋滋!!! 系统测试环境: 主机ip 系统     主机名(服务) 192.168.241.130    centos6.5    hadoop1(nfs-sr ...

  3. centos7上搭建NFS的实践

    NFS 即network file system 可用于向k8s集群提供持久存储 最小化安装centos后  把网卡设置好了后 1.关闭防火墙 [root@NFS ~]# systemctl stop ...

  4. 工程师技术(四):配置SMB文件夹共享、多用户Samba挂载、普通NFS共享的实现、安全NFS共享的实现

    一.配置SMB文件夹共享 目标: 本例要求在虚拟机 server0 上发布两个共享文件夹,具体要求如下: 1> 此服务器必须是 STAFF 工作组的一个成员   2> 发布目录 /comm ...

  5. 配置samba和NFS共享服务

                            配置samba和NFS共享服务 1案例1:配置SMB文件夹共享 1.1问题 本例要求在虚拟机server0上发布两个共享文件夹,具体要求如下: 此服务器 ...

  6. centos7中nfs共享的配置方法

    NFS是Network File System的缩写,即网络文件系统.客户端通过挂载的方式将NFS服务器端共享的数据目录挂载到本地目录下. 一.nfs为什么需要RPC? 因为NFS支持的功能很多,不同 ...

  7. (转)Centos7安装配置NFS服务和挂载

    Centos7安装配置NFS服务和挂载 原文:https://www.u22e.com/601.html NFS简介 NFS(Network File System)即网络文件系统,是FreeBSD支 ...

  8. CentOS7.5搭建NFS(Network File System)

    NFS(Network File System)即网络文件系统,是由Sun公司开发的一种通过网络方式共享文件系统的通用共享解决方案.可以将远程Linux系统上的文件共享资源挂载到本地主机(Linux客 ...

  9. 基于NFS共享存储实现KVM虚拟机动态迁移

    基于NFS共享存储实现KVM虚拟机动态迁移 一:配置环境 二:安装相关的依赖包 三:实现NFS共享存储 四:KVM机配置相同的步骤 五:安装KVM01安装虚拟机 六:实现迁移  实验初始配置:所有主机 ...

随机推荐

  1. awvs的用法

    awvs中的new scan新加一个漏洞扫描任务,web scanner是扫描漏洞的,我们可以看见高危到low的漏洞 awvs中的site Crawler是爬虫,他可以帮我们爬虫网站目录 awvs中的 ...

  2. HDU 4010 Query on The Trees

    Problem Description We have met so many problems on the tree, so today we will have a query problem ...

  3. HDU2824-The Euler function-筛选法求欧拉函数+求和

    欧拉函数: φ(n)=n*(1-1/p1)(1-1/p2)....(1-1/pk),其中p1.p2-pk为n的所有素因子.比如:φ(12)=12*(1-1/2)(1-1/3)=4.可以用类似求素数的筛 ...

  4. int ,long long等范围

    unsigned   int   0-4294967295   int   -2147483648-2147483647 unsigned long 0-4294967295long   -21474 ...

  5. qt creator 中的"提升为..."功能简介

    1.新建一个项目 2.打开文件:mainwindow.ui ->拖一个 tree widget 控件到画布->右击弹出对话框->单击"提升为..."选项 3.输入 ...

  6. javascript 指定绑定函数名称,并且传递参数

      <html> <head> <title> New Document </title> <script type="text/jav ...

  7. Laravel5中使用阿里大于(鱼)发送短信验证码

    在做用户注册和个人中心的安全管理时,我实现借助第三方短信平台(阿里大于(鱼))在Laravel框架中进行手机验证的设置:阿里大于,是阿里通信旗下优质便捷的云通信服务平台,整合了三大运营商的通信能力,为 ...

  8. linux 下 用phpmailer类smtp发送邮件始终不成功,提示:ERROR: Failed to co

    https://zhidao.baidu.com/question/509191264.html?fr=iks&word=PHPMailerSMTP+connect()+failed& ...

  9. 邓_mysql_面试

    问题1:你如何确定 MySQL 是否处于运行状态? 答案: Debian 上运行命令service mysql status,在RedHat 上运行命令service mysqld status.然后 ...

  10. Centos6.9安装部署nginx服务器

    (一)依赖包安装 首先,gcc,pcre,zlib,openssl安装一边(可以用非-devel,但是嫌麻烦....用非-devel的看这个链接) yum  -y install gcc ------ ...