CC00036.LinuxNetwork——|Linux&NFS服务.V02|——|NFS部署|...

一、NFS服务器部署
### --- 安装nfs-utils服务
~~~     注:通常情况下:是作为系统的默认包安装的
~~~     CentoOS6.x之前rpcbind叫portmap

[root@server21 ~]# yum install -y nfs-utils-*
[root@server21 ~]# yum install -y rpcbind-*
二、NFS服务器的启动与停止:
### --- 启动NFS服务器
~~~     为了使NFS服务器能正常工作,需要启动rpcbind和nfs两个服务,
~~~     并且rpcbing一定要先于nfs启动。

[root@server21 ~]# service rpcbind start
[root@server21 ~]# service nfs start
Starting RPC idmapd:      [  OK  ]                          // 最后一步是把nfs向rpc注册一下
### --- 查询NFS服务器状态

[root@server21 ~]# service rpcbind status
[root@server21 ~]# service nfs status
### --- 停止NFS服务器
~~~     要停止NFS运行时,需要先停止nfs服务再停止rpcbind服务,
~~~     对于系统中有其他服务(如NIS)需要使用时,不需要停止rpcbind服务

[root@server21 ~]# service nfs stop
[root@server21 ~]# service rpcbind stop                     // 可以不需要停止,rpc是默认启动的。若停止可能影响其他的服务
### --- 设置NFS服务器的自动启动状态
~~~     设置rpcbind和nfs服务在系统运行级别2345自动启动

[root@server21 ~]# chkconfig --list rpcbind
rpcbind         0:off   1:off   2:on    3:on    4:on    5:on    6:off
[root@server21 ~]# chkconfig --list nfs
nfs             0:off   1:off   2:off   3:off   4:off   5:off   6:off
[root@server21 ~]# chkconfig nfs on
### --- 查看RPC服务器开启了那些端口

[root@server21 ~]# rpcinfo  -p localhost
三、实验相关实例:
### --- 将NFS服务器的/atyanqi共享给20.20.20.22网段,rw权限

[root@server21 ~]# mkdir /atyanqi
[root@server21 ~]# chmod o+w /atyanqi/                      // 给其他人设置共享写入的权限
[root@server21 ~]# ll -ld /atyanqi/
drwxr-xrwx 2 root root 4096 Feb  4 09:47 /atyanqi/
[root@server21 ~]# vim /etc/exports 
 /atyanqi 20.20.20.22(rw)                                   // /atyanqi:共享那个目录 20.20.20.22:客户端地址(rw):给予的权限
[root@server21 ~]# service nfs reload                       // 重新把配置文件加载一下
### --- 重启rpcbind 和nfs服务

[root@server21 ~]# service rpcbind restart
[root@server21 ~]# service nfs restart
[root@server21 ~]# exportfs                                 // 查看共享目录列表
/atyanqi        20.20.20.22
### --- 服务器端查看nfs共享状态

[root@server21 ~]# showmount -e 20.20.20.21                 // 本机测试,
Export list for 20.20.20.21:
/atyanqi 20.20.20.22
### --- 查看自己共享的服务
### --- 客户端查看NFS共享状态

[root@server22 ~]# showmount -e 20.20.20.21                 // 客户度测试,服务器端IP地址
Export list for 20.20.20.21:
/atyanqi 20.20.20.22
### --- 客户端挂载NFS服务器共享目录

~~~     命令格式:mount NFS服务器IP:共享目录  本地挂载点目录
[root@server22 ~]# mkdir /atyanqi                                   // 创建本地挂载点
[root@server22 ~]# service rpcbind start
[root@server22 ~]# mount -o vers=3 20.20.20.21:/atyanqi  /atyanqi/  // 临时挂载 #-o vers=3 指定挂载使用nfs V3版本(避免同步延迟)
[root@server22 ~]# df -h
20.20.20.21:/atyanqi   94G  841M   88G   1% /atyanqi
[root@server22 ~]# mount |grep nfs
20.20.20.21:/atyanqi on /atyanqi type nfs (rw,vers=3,addr=20.20.20.21) 
~~~     测试挂载的目录是否可以正常读写
[root@server22 ~]# touch /atyanqi/a.txt
[root@server22 ~]# vim /atyanqi/a.txt
aaaaaaaaaaaaaaaaaaaaaaaaa 
~~~     验证客户端和nfs服务器端文件是否一致:
[root@server21 ~]# cat /atyanqi/a.txt                               // 服务端查看该文件正常 
aaaaaaaaaaaaaaaaaaaaaaaaa
~~~     修改服务器端响应权限,不然客户端无法正常访问和使用
### --- nfs共享权限和访问控制
### --- 客户端root用户
~~~     使用客户端和root身份在nfs服务器上创建文件,文件的所有者和所属组是nfsnobody
~~~     默认是以nfsnobody身份创建文件或者目录

[root@server22 ~]# touch /atyanqi/a.txt                         // root身份创建文件
[root@server22 ~]# ll /atyanqi/a.txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Feb  4 10:10 /atyanqi/a.txt  // 但文件最终属于nfsnobody用户及组;默认采用的是rootsport会映射成nfsnobody
### --- 客户端普通用户
~~~     使用客户端的普通用户身份在nfs服务器上创建文件,所有者和所属组是nobody或普通用户。
~~~     如果明确设定了普通用户的映射用户身份,那么此时客户端用户的身份转换为指定映射用户
~~~     如果NFS server上面有同名用户,
~~~     那么此时客户端登录账户的身份转换为NFS server上面的同名用户。
~~~     以root_squash身份运行

[root@server21 ~]# vim /etc/exports 
/atyanqi 20.20.20.22(rw,no_root_squash)
[root@server21 ~]# service nfs reload
[root@server22 ~]# touch /atyanqi/b.txt                     // 客户端可能会保留之前的挂载记录,这样我们需要把挂载断开,重新挂载。
[root@server22 ~]# ll /atyanqi/                             // 查看到以root身份创建用目录,目录权限未发生变化。
total 0
-rw-r--r-- 1 nfsnobody nfsnobody 0 Feb  4 10:10 a.txt   
-rw-r--r-- 1 root      root      0 Feb  4 10:19 b.txt 
 [root@server21 ~]# ll /atyanqi/
total 0
-rw-r--r-- 1 nfsnobody nfsnobody 0 Feb  4 10:10 a.txt
-rw-r--r-- 1 root      root      0 Feb  4 10:19 b.txt
### --- 以其它身份运行

[root@server22 ~]# useradd nfstest
[root@server22 ~]# id nfstest
uid=500(nfstest) gid=500(nfstest) groups=500(nfstest)
[root@server21 ~]# vim /etc/exports                         // 说明在客户端不管你是用什么身份创建文件或者目录,都会显示是这个UID及GID是500的用户身份创建的,也就是nfstest这个用户创建的。
/atyanqi 20.20.20.22(rw,all_squash,anonuid=500,anongid=500)
[root@server21 ~]# service nfs reload
[root@server22 ~]# touch /atyanqi/c.txt
[root@server22 ~]# ll /atyanqi/                             // 在服务器上查看都是这个UID及GID。
total 0
-rw-r--r-- 1 nfsnobody nfsnobody 0 Feb  4 10:10 a.txt
-rw-r--r-- 1 root      root      0 Feb  4 10:19 b.txt
-rw-r--r-- 1       500       500 0 Feb  4 10:37 c.txt

[root@server21 ~]# ll /atyanqi/                             // 在客户端查看到的是nfstest的用户创建的。
total 0
-rw-r--r-- 1 nfsnobody nfsnobody 0 Feb  4 10:10 a.txt
-rw-r--r-- 1 root      root      0 Feb  4 10:19 b.txt
-rw-r--r-- 1 nfstest   nfstest   0 Feb  4 10:37 c.txt
四、卸载和自动挂载
### --- 卸载和自动挂载:
### --- 卸载:
### --- 卸载客户端的挂载目录

[root@server22 ~]# umount /atyanqi/
### --- 停止服务器端的共享

[root@server21 ~]# exportfs -au                             // 停止挂载
[root@server22 ~]# cd /atyanqi 
bash: cd: /atyanqi: Stale file handle                       // 无效的文件句柄,挂载已经失效了,客户端时没有办法进行写入的
[root@server22 ~]# ll /atyanqi 
ls: cannot access /atyanqi: Stale file handle
[root@server21 ~]# exportfs -ra                                                                             //重新挂载
[root@server22 ~]# cd /atyanqi/                             //可以正常写入
~~~     自动挂载:/etc/fstab
~~~     格式:<server>:<remote/export></local/directory>nfs<options> 0 0
~~~     #192.168.115.10:/home/zhangsan /media/zhangsan nfs defaults 0 0
~~~     mount -a

[root@server22 ~]# vim /etc/fstab 
 20.20.20.21:/atyanqi      /atyanqi          nfs      defaults,vers=3       0 0             //为避免延迟加,vers=3
[root@server22 ~]# umount /atyanqi/
[root@server22 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        94G  841M   88G   1% /
tmpfs           931M     0  931M   0% /dev/shm
/dev/sda1       976M   35M  891M   4% /boot
/dev/sr0        3.7G  3.7G     0 100% /mnt/cdrom
[root@server22 ~]# mount -a                                 // 重新读取/etc/fstab文件
[root@server22 ~]# df -h                                    // 挂载成功 
20.20.20.21:/atyanqi   94G  841M   88G   1% /atyanqi
### --- 相关命令

~~~     exportfs命令
~~~     如果我们在启动了NFS之后又修改了/etc/exports,
~~~     是不是还要重新启动nfs呢?这个时候我们就可以用exportfs命令来是改动立刻生效,
~~~     该命令格式如下:
~~~     格式:exportfs[-aruv]
~~~     -a:全部挂载或卸载/etc/exports中的内容
~~~     -r:重新读取/etc/exports中的信息,并同步更新/etc/exports /var/lib/nfs/xtab
~~~     -u:卸载单一目录(和-a一起使用为卸载所有/etc/exports文件中的目录
~~~     -v:在export的时候,将详细的信息输出到屏幕上。
### --- 具体例子:
~~~     exportfs -au:卸载所有共享目录
~~~     exportfs -ra:重新共享所有目录并输出详细信息

[root@server22 ~]# exportfs -au                             // 服务器端全部卸载
[root@server22 ~]# exportfs -ar                             // 服务器端全部挂载,重新读取
[root@server21 ~]# exportfs 
/atyanqi        20.20.20.22
[root@server21 ~]# exportfs -v                              // 将信息输出到屏幕上
/atyanqi        20.20.20.22(rw,wdelay,root_squash,all_squash,no_subtree_check,anonuid=500,anongid=500,sec=sys,rw,root_squash,all_squash)
### --- rpcinfo命令
~~~     利用rpcinfo -p 可以查看出RPC开启的端口所可提供的程序有哪些
~~~     其中NFS开启的是2049,portmapper(rpcbind)开启的是111,其余则是rpc开启的。
~~~     rpcbind服务最好不要停止,可以reload,因为rpcbind并不只是为nfs提供服务,
~~~     还需要为其他用户提供服务。

[root@server21 ~]# rpcinfo -p
    100003    2   tcp   2049  nfs
    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs
    100003    2   udp   2049  nfs
    100003    3   udp   2049  nfs
    100003    4   udp   2049  nfs
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yanqi_vip

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值