NFS介绍、NFS服务端安装配置、NFS配置选项

目录

一、NFS介绍
二、NFS服务端安装配置
三、NFS配置选项

一、NFS介绍

  • NFS:Network File System的缩写,是一个基于网络的文件系统,使用广泛。 NFS最早由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4.0开始Netapp公司参与并主导开发,最新为4.1版本。NFS数据传输基于RPC协议,RPC为Remote Procedure Call的简写。NFS的服务端和客户端本身无法直接通信,需要借助RPC来完成。

  • NFS应用场景是:A,B,C三台机器上需要保证被访问到的文件是一样的,A共享数据出来,B和C分别去挂载A共享的数据目录,从而B和C访问到的数据和A上的一致。可以通过NFS实现服务器间实时的数据共享。

  • NFS原理图


    NFS原理
  • NFS服务端启动NFS服务,NFS服务作为服务在系统中启动,但不监听任何端口,监听端口完成TCP/IP通信的工作由RPCbind服务产生的RPC协议实现。服务端借助RPC协议为客户端提供服务,该协议由RPC服务实现。RPC服务在Centos5及之前被称为portmap,6及以后的版本被称为RPCbind。

  • RPC服务监听111端口,当通信时,

  1. 先由客户端和服务端的RPC协议相互通信,
  2. NFS服务端会在RPC协议中注册一个端口,
  3. 服务端的NFS服务告诉本地RPC自己通信的端口,
  4. 服务端RPC服务告诉客户端的RPC服务该通信端口
  5. 最后NFS客户端主机与服务端NFS的端口通信实现数据传输。

二、NFS服务端安装配置

  • NFS服务需要安装两个包(nfs-utils和rpcbind)
//在安装nfs-utills时会自一并安装rpcbind
[root@minglinux-01 ~] yum install -y nfs-utils rpcbind 
  • 客户端也需要安装nfs-utills
[root@minglinux-02 ~] yum install -y nfs-utils
  • 先修改配置文件(默认该文件为空)
[root@minglinux-01 ~] ls /etc/exports
/etc/exports
[root@minglinux-01 ~] cat !$
cat /etc/exports
[root@minglinux-01 ~] vim !$
vim /etc/exports
//写入以下内容
  1 /home/nfstestdir 192.168.162.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)

这个配置文件就一行,共分为三部分。第一部分是本地要共享出去的目录,第二部分是允许访问的主机(可以是一个IP,也可以是一个IP段),第三部分就是小括号里面的一些权限选项。此处配置的含义为:共享的目
录为/home/nfstestdir,信任的主机为192.168.162.0/24这个网段,权限为读/写,同步模式,限定所有使用者,并且限定的uid和gid都为1000。

  • 创建共享目录并修改其权限
[root@minglinux-01 ~] mkdir /home/nfstestdir
[root@minglinux-01 ~] chmod 777 /home/nfstestdir 
//为了避免由于权限导致的报错,将共享目录改为777权限
  • 启动rpcbind
[root@minglinux-01 ~] systemctl start rpcbind.service 
[root@minglinux-01 ~] netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1/systemd           
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      758/sshd            
tcp6       0      0 :::3306                 :::*                    LISTEN      1235/mysqld         
tcp6       0      0 :::111                  :::*                    LISTEN      1/systemd           
tcp6       0      0 :::22                   :::*     

[root@minglinux-01 ~] ps aux |grep rpcbind
rpc        2132  0.0  0.0  69220  1204 ?        Ss   22:53   0:00 /sbin/rpcbind -w
root       2136  0.0  0.0 112720   984 pts/1    S+   22:55   0:00 grep --color=auto rpcbind

  • 启动NFS服务
[root@minglinux-01 ~] systemctl start nfs
[root@minglinux-01 ~] ps aux| grep nfs
root       1518  0.0  0.0      0     0 ?        S<   23:07   0:00 nfsd4_callbacks]
root       1524  0.0  0.0      0     0 ?        S    23:07   0:00 nfsd]
root       1525  0.0  0.0      0     0 ?        S    23:07   0:00 nfsd]
root       1526  0.0  0.0      0     0 ?        S    23:07   0:00 nfsd]
root       1527  0.0  0.0      0     0 ?        S    23:07   0:00 nfsd]
root       1528  0.0  0.0      0     0 ?        S    23:07   0:00 nfsd]
root       1529  0.0  0.0      0     0 ?        S    23:07   0:00 nfsd]
root       1530  0.0  0.0      0     0 ?        S    23:07   0:00 nfsd]
root       1531  0.0  0.0      0     0 ?        S    23:07   0:00 nfsd]
root       1547  0.0  0.0 112720   984 pts/0    S+   23:07   0:00 grep --color=auto nfs

[root@minglinux-01 ~] ps aux| grep rpc  //启动nfs服务时会自动启动rpc相关的服务,若rpc相关服务未启动则无法正常使用nfs
root        551  0.0  0.0      0     0 ?        S<   23:03   0:00 rpciod]
rpc         585  0.0  0.0  69220  1528 ?        Ss   23:03   0:00 /sbin/rpcbind -w
rpcuser    1504  0.0  0.0  42420  1756 ?        Ss   23:07   0:00 /usr/sbin/rpc.statd
root       1512  0.0  0.0  42608   944 ?        Ss   23:07   0:00 /usr/sbin/rpc.mountd
root       1513  0.0  0.0  45924   548 ?        Ss   23:07   0:00 /usr/sbin/rpc.idmapd
root       1550  0.0  0.0 112724   980 pts/0    S+   23:08   0:00 grep --color=auto rpc

[root@minglinux-01 ~] systemctl enable nfs  //设置nfs服务开机启动
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.

客户端与服务端均需要启动rpcbind,但仅服务端需要启动nfs

  • 客户端启动rpcbind
[root@minglinux-02 ~] ps aux |grep rpcbind
root       1871  0.0  0.0 112720   984 pts/0    S+   07:13   0:00 grep --color=auto rpcbind
[root@minglinux-02 ~] systemctl start rpcbind
[root@minglinux-02 ~] ps aux |grep rpcbind
rpc        1879  1.5  0.0  69220  1208 ?        Ss   07:14   0:00 /sbin/rpcbind -w
root       1881  0.0  0.0 112720   984 pts/0    S+   07:14   0:00 grep --color=auto rpcbind
[root@minglinux-02 ~] netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1392/master         
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1/systemd           
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      887/sshd            
tcp6       0      0 ::1:25                  :::*                    LISTEN      1392/master         
tcp6       0      0 :::3306                 :::*                    LISTEN      1400/mysqld         
tcp6       0      0 :::111                  :::*                    LISTEN      1/systemd           
tcp6       0      0 :::22                   :::*                    LISTEN      887/sshd  

三、NFS配置选项

/home/nfstestdir 192.168.162.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)

上节提到的配置文件中小括号里面的内容是权限选项,下面简单介绍NFS的一些相关权限选项:

rw:表示读/写。
ro:表示只读。
sync:同步模式,表示内存中的数据实时写入磁盘。
async:非同步模式,表示把内存中的数据定期写入磁盘。
no_root_squash:加上这个选项后,root用户就会对共享的目录拥有至高的权限控制,就像是对本机的目录操作一样。但这样安全性降低。
root_squash:与no_root_squash选项对应,表示root用户对共享目录的权限不高,只有普通用户的权限,即限制了root。
all_squash:表示不管使用NFS的用户是谁,其身份都会被限定为一个指定的普通用户身份。
anonuid/anongid:要和root_squash以及all_squash选项一同使用,用于指定使用NFS的用户被限定后的uid和gid,但前提是本机的/etc/passwd中存在相应的uid和gid。

  • 客户端查看NFS的共享情况
[root@minglinux-02 ~] showmount -e 192.168.162.130  //192.168.162.130为服务端虚拟机IP
Export list for 192.168.162.130:
/home/nfstestdir 192.168.162.0/24
//在nfs服务工作时,rpcbind通过111端口通信,但nfs服务使用的是随机端口。
//防火墙和selinux可能限制端口通信,所以最好关闭selinux和防火墙(服务端和客户端均需要关闭)
上例我们可以看到192.168.162.130的共享目录为/home/nfstestdir,
信任主机为192.168.168.0/24这个网段。
  • 客户端挂载NFS共享目录
[root@minglinux-02 ~] mount -t nfs 192.168.162.130:/home/nfstestdir /mnt/
[root@minglinux-02 ~] df -h
文件系统                          容量  已用  可用 已用% 挂载点
/dev/sda3                          28G  3.1G   25G   11% /
devtmpfs                          901M     0  901M    0% /dev
tmpfs                             911M     0  911M    0% /dev/shm
tmpfs                             911M  9.6M  902M    2% /run
tmpfs                             911M     0  911M    0% /sys/fs/cgroup
/dev/sda1                         197M  140M   58M   71% /boot
tmpfs                             183M     0  183M    0% /run/user/0
192.168.162.130:/home/nfstestdir   28G  6.6G   22G   24% /mnt
  • 客户端在共享目录下创建测试文件
[root@minglinux-02 ~] cd /mnt/
[root@minglinux-02 /mnt] touch ming.txt
[root@minglinux-02 /mnt] ll
总用量 0
-rw-r--r--. 1 mysql mysql 0 12月  8 23:43 ming.txt
[root@minglinux-02 /mnt] id mysql
uid=1000(mysql) gid=1000(mysql) 组=1000(mysql)
  • 服务端查看共享目录
[root@minglinux-01 ~] ll /home/nfstestdir
总用量 0
-rw-r--r-- 1 1000 1000 0 12月  8 23:43 ming.txt  //可以看到文件的属主和属组都为1000

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