NFS服务原理及配置

  • NFS(Network File System)即网络文件系统,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样,也就是说客户端PC可以挂载NFS服务器所提供的目录并且挂载之后这个目录看起来如同本地的磁盘分区一样,可以使用cp、cd、mv、rm及df等与磁盘相关的命令。
    • 优点
      * 节省本地存储空间将常用的数据存放在一台服务器可以通过网络访问
      * 简单容易上手
      * 方便部署非常快速,维护十分简单
    • 缺点
      * 局限性容易发生单点故障,及server机宕机了所有客户端都不能访问
      * 在高并发下NFS效率/性能有限
      * 客户端没用用户认证机制,且数据是通过明文传送,安全性一般(一般建议在局域网内使用)
      * NFS的数据是明文的,对数据完整性不做验证
      * 多台机器挂载NFS服务器时,连接管理维护麻烦

(1)、NFS原理

  • 1)、NFS Server服务器上设定/data目录被分享,而客户端可以通过网路将/data目录挂载到本地的挂载点(常用mnt)后,客户端就可以进入挂载点目录进行文件的读写。NFS客户端所开放的端口是随机的,由RPC服务分配端口。

  • 2)、RPC(Remote Procedure Call)即远程过程调用。RPC 最主要的功能就是在指定每个 NFS 功能所对应的 port number ,并且回报给客户端,让客户端可以连结到正确的port上去。

  • 3)、 RPC服务原理

  • 执行顺序:1(注册端口)>>2(达成协议)>>3(直接建立联系)>>4(达成协议)>>5(建立连接)

  • 当服务器在启动NFS时会随机取用数个port,并且主动的向RPC注册,因此RPC可以知道每个NFS的port对应的NFS功能,然后RPC又是固定使用port111来监听客户端的需求并汇报客户端的正确的port,所以rpc能够找到对应的port。

  • 4)portmap
    * 功能:主要是把RPC程序号转化为Internet的端口号。
    * 特点:只在第一次建立连接时候帮助网络应用程序找到正确的port,当当双方正确连接时,端 口就和应用绑定,portmap就无用。


    image.png

(2)安装NFS

环境为两台CentOS7虚拟主机

  • 首先关闭selinux和防火墙
[root@nfs-104 ~]# systemctl stop firewalld
[root@nfs-104 ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@nfs-104 ~]# vim /etc/selinux/config 
 SELINUX=disabled
[root@nfs-104 ~]# systemctl reboot  #重启生效

  • NFS配置文件:/etc/exports或/etc/exports.d/*
  • NFS服务的主配置文件为/etc/exports,用于定义共享的目录以及访问NFS共享目录的客户端的权限,其格式如下:
    /PATH/TO/SOME_DIR clients1(export_options, ...) clients2(export_options, ...)
  • 其中clients客户端格式有:
    single host:ipv4, ipv6, FQDN;
    network:address/netmask,支持长短格式的掩码;
    wildcards:主机名通配,例如:.magedu.com;
    netgroups:NIS域内的主机组;@group_name;
    anonymous:使用
    通配所有主机;

export_options选项有:
General Options通用选项
ro:只读
rw:读写;
sync:同步;会影响性能
async:异步;
secure:客户端端口小于1024,否则就要使用insecure选项;
User ID Mapping:用户id号映射选项
root_squash:压缩root用户,一般指将其映射为nfsnobody;
no_root_squash:不压缩root用户;
all_squash:压缩所有用户;
anonuid and anongid:将压缩的用户映射为此处指定的用户;

安装配置nfs-server服务端
 [root@nfs-104 ~]# lsmod | grep nfs                   #查询是否有nfs模块
[root@nfs-104 ~]# yum -y install nfs-utils          #安装nfs
[root@nfs-104 ~]# rpm -qa nfs-utils                   #查询是否安装成功
[root@nfs-104 ~]# mkdir /data/mysql -pv         #创建nfs共享文件目录
[root@nfs-104 ~]#  vim /etc/exports                 #定义共享的目录以及访问NFS共享目录的客户端的权限
/data/mysql  172.16.15.*(rw,sync,no_root_squash)   #如果设置成root_squash,会导致权限被压缩为nobody权限,无法对该目录进行写入操作。

[root@nfs-104 ~]#  vim /etc/sysconfig/nfs #设置nfs固定端口
MOUNTD_PORT=4001
STATD_PORT=4002

[root@nfs-104 ~]#systemctl start rpcbind
[root@nfs-104 ~]#  systemctl start nfs #启动nfs
[root@nfs-104 ~]#  ss -tnl
State      Recv-Q Send-Q                          Local Address:Port                                         Peer Address:Port              
LISTEN     0      128                                         *:4001                                                    *:*      
[root@nfs-104 ~]# showmount -e        #测试本机是否有可挂载目录

(3)客户端测试

在另外一台客户端测试:
关闭selinux和防火墙

客户端上:
[root@client-90 ~]# yum install nfs-utils #安装nsf-utils
[root@client-90 ~]# showmount -e 172.16.15.104 #查看远程主机可挂载路径
Export list for 172.16.15.104:
/data/mysql 172.16.15.*
[root@client-90 ~]# mount -t nfs 172.16.15.104:/data/mysql  /mnt #挂载到本地mnt目录下
[root@client-90 mnt]# touch /mnt/test   #创建一个测试文件
[root@client-90 mnt]# ls
test                                   #创建test文件成功

回到服务器端查看:
[root@nfs-104 ~]# ls /data/mysql      ##查看服务器端是否有刚才的测试文件
test

指定NFS服务的映射用户

将客户端访问共享文件的登录用户映射为NFS服务器上的指定用户账号。

NFS服务器上:
[root@nfs-104 ~]# useradd -u 1001 centos #添加用户
[root@nfs-104 ~]# mkdir /data/mysql/test  #创建测试目录
[root@nfs-104 ~]# chown -R 1001.1001 /data/mysql/test  #修改此目录属主为1001用户
[root@nfs-104 ~]#  ll -d /data/mysql/test #查看权限
[root@nfs-104 ~]#  vim /etc/exports                 #定义共享的目录以及访问NFS共享目录的客户端的权限
    
     /data/mysql/test  172.16.15.*(rw,sync,all_squash,anonuid=1001,anongid=1001)
     
[root@nfs-104 ~]# exportfs -rav                     #重新输出文件系统配置信息
exporting 172.16.15.*:/data/mysql/test

在客户端测试:

在客户端上:
[root@client-90 ~]# umount -f /mnt          #强行解挂目录
[root@client-90 ~]# mount -t nfs 172.16.15.104:/data/mysql/test /mnt    #挂载新创建的测试目录
[root@client-90 ~]# cd /mnt               #切换目录
[root@client-90 mnt]# touch test2         #创建文件
[root@client-90 mnt]# ll
total 0
-rw-r--r-- 1 1001 1001 0 Jun 26 20:05 test2   #生成的文件的uid和gid与NFS服务映射用户的相一致

在NFS服务器上:
[root@nfs-104 ~]# ll   /data/mysql/test/*   #查询共享目录
-rw-r--r-- 1 centos centos 0 Jun 26 20:05 /data/mysql/test/test2
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容

  • 一、简介 NFS即Network File server 网络问卷系统,用于通过网络让不同的主机系统之间可以共享文...
    小尛酒窝阅读 2,072评论 0 0
  • 上图所示问题在新版nfs 已经不存在 ,服务器端软件:安装nfs-utils和portmap(rpcbind)nf...
    不排版阅读 764评论 1 0
  • 29.1 引言 本章中我们要讨论另一个常用的应用程序:NFS(网络文件系统),它为客户程序提供透明的文件访问。NF...
    张芳涛阅读 970评论 0 4
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,587评论 18 139
  • 今天分享的是舞蹈教学的常用语,一起看啊! 1、基训 指以舞蹈演员或学员基本能力的训练。如发展身体各部分肌肉的能力,...
    极度酷娱阅读 422评论 0 1