1. 场景
某单位需要配置 NFS 服务器,为同步图片文件。
主机名:nfs.local,test.local
IP地址:192.168.3.15、192.168.3.18
2. 实验环境
2.1. 操作系统
# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 6.5 (Santiago)
# uname -a
Linux localhost.localdomain 2.6.32-431.el6.x86_64 #1 SMP Sun Nov 10 22:19:54 EST 2013 x86_64 x86_64 x86_64 GNU/Linux
2.2. 服务器基本配置
修改 IP 地址。(注意:根据您的实现环境进行配置)
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.3.15
NETMASK=255.255.255.0
GATEWAY=192.168.3.1
修改主机名
# vi /etc/sysconfig/network
NETWORKING=yes
#HOSTNAME=localhost.localdomain
HOSTNAME=nfs.local
# service network restart
为了方便实验,将防火墙关闭。
# service iptables stop
# chkconfig iptables off
同时关闭 selinux。
# vi /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=enforcing
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
重新启动以便生效。
reboot或init 6
3. NFS服务器安装与配置
3.1. 安装NFS服务器组件
3.1.1.通过YUM来进行安装
通过 YUM 来解决包的相关性。
# yum -y install nfs-utils
很方便地就安装完毕了
3.2. 启动NFS服务
NFS 依赖rpcbind服务,设置为其自动启动
# chkconfig rpcbind on
# chkconfig nfs on
# service rpcbind start
# service nfs start
Starting NFS services: [ OK ]
Starting NFS quotas: [ OK ]
Starting NFS mountd: [ OK ]
Starting NFS daemon: [ OK ]
在日志文件/var/log/messages 中,会看到如下信息:
rpc.mountd[1797]: Version 1.2.3 starting
kernel: NFSD: Using /var/lib/nfs/v4recovery as the NFSv4 state
recovery directory
kernel: NFSD: starting 90-second grace period
3.3. 配置NFS服务器(192.168.3.15)
查看当前共享的 NFS 信息
# showmount -e localhost
Export list for localhost: 空白无输出
配置 export 文件
# vi /etc/exports
添加如下内容,注意选项中逗号之间没有空格!
/home/tomcat/p_w_picpath/webapps/static/resources *(rw,no_root_squash,no_all_squash,sync)
保存退出
exportfs -r //重新挂载/etc/exports中的设置
service rpcbind restart
service nfs restart
3.3.1. 服务端验证NFS共享:
[root@localhost ~]# showmount -e
Export list for localhost.localdomain:
/home/tomcat/p_w_picpath/webapps/static/resources *
注:正常能显示出上面设置的共享目录,如果报如下错误:
clnt_create: RPC: Program not registered
说明 rpcbind服务与NFS服务 启动顺序不对,把他俩都停了,重新启动,先启动rpcbind服务再启动nfs服务;
3.4. 配置NFS客户机(192.168.3.18)
NFS 客户机也需要安装 nfs-utils 包。
# yum -y install nfs-utils
[root@localhost ~]# showmount -e 192.168.3.15
Export list for 192.168.3.15:
/home/tomcat/p_w_picpath/webapps/static/resources *
3.5. 客户端基本配置
修改 IP 地址。(注意:根据您的实现环境进行配置)
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.3.18
NETMASK=255.255.255.0
GATEWAY=192.168.3.1
修改主机名
# vi /etc/sysconfig/network
NETWORKING=yes
#HOSTNAME=localhost.localdomain
HOSTNAME=test.local
# service network restart
为了方便实验,将防火墙、selinux关闭。
3.6. 启动服务
启动rpcbind服务,设置为其自动启动
# chkconfig rpcbind on
# service rpcbind start
客户端rpcbind服务一定要启动,nfs可以不用启动
3.7. 手动挂载目录
mount 192.168.3.15:/home/tomcat/p_w_picpath/webapps/static/resources /restest
3.8. 设置启动自动挂载(192.168.3.18)
[root@localhost ~]# vi /etc/fstab
新增
192.168.3.15:/home/tomcat/p_w_picpath/webapps/static/resources /home/tomcat/p_w_picpath/webapps/static/resources nfs defaults 0 0
#
# /etc/fstab
# Created by anaconda on Fri Dec 16 15:54:15 2016
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/VolGroup-lv_root / ext4 defaults 1 1
UUID=78193f8b-3efc-4c29-bbaf-2d0b1613d69f /boot ext4 defaults 1 2
/dev/mapper/VolGroup-lv_home /home ext4 defaults 1 2
/dev/mapper/VolGroup-lv_swap swap swap defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
192.168.3.15:/home/tomcat/p_w_picpath/webapps/static/resources /home/tomcat/p_w_picpath/webapps/static/resources nfs defaults 0 0
四.知识扩展
exports命令:
参数说明如下。
(1)-a:全部挂载(或卸载)/etc/exports文件内的设定。
(2)-r:重新挂载/etc/exports中的设置,此外同步更新/etc/exports及/var/lib/nfs/xtab中的内容。
(3)-u:卸载某一目录。
(4)-v:在export时将共享的目录显示在屏幕上。
/etc/exports文件内容格式:
<共享目录> [客户端1 选项(访问权限,用户映射,其他)]
用户映射选项
-
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服务器也不检查其父目录的权限,这样可以提高效率;