一安装启动:
先检查有没有安装过NFS服务的包:rpm -aq nfs-utils rpcbind
没有的话就进行安装:yum install nfs-utils rpcbind -y
然后进入NFS的配置文件里写入需要共享的文件及其权限和共享客户端的范围:
[[email protected] ~]#
cat /etc/exports
/data/r_shared
192.168.20.0/24(ro,sync)
/data/w_shared
192.168.20.0/24(rw,sync)
然后先启动rpcbind,再启动nfs要先启动rpcbind服务再启动nfs服务否则倒过来的话会导致nfsbind学习不到nfs的共享。
/etc/init.d/rpcbind
start
/etc/init.d/nfs
start
也可以把这两条命令加入/etc/rc.local开机启动时自启动
[[email protected] ~]#
cat /etc/rc.local
#!/bin/sh
#
# This script will
be executed *after* all the other init scripts.
# You can put your
own initialization stuff in here if you don‘t
# want to do the
full Sys V style init stuff.
touch
/var/lock/subsys/local
>/etc/udev/rules.d/70-persistent-net.rules
/etc/init.d/rpcbind
start
/etc/init.d/nfs
start
用chkconfig启动rpcbind和nfs
chkconfig rpcbind on
chkconfig nfs on
用chkconfig --list rpcbind或nfs查看有没有启动
问题?要求rpcbind服务要先启动于nfs服务,现在两个都启动要怎么解决rpcbind先启动?
rpcbind的启动号比nfs小,所以两个一起打开的时候rpcbind自然会比nfs先启动
查看rpc里面有没有东西用:rpcinfo -p localhost
里面就是存放nfs给的东西
[[email protected]
~]# rpcinfo -p localhost
program vers proto port
service
100000
4 tcp 111
portmapper
100000
3 tcp 111
portmapper
100000
2 tcp 111
portmapper
100000
4 udp 111
portmapper
100000
3 udp 111
portmapper
100000
2 udp 111
portmapper
100005
1 udp 50653
mountd
100005
1 tcp 55661
mountd
100005
2 udp 35917
mountd
100005
2 tcp 39194
mountd
100005
3 udp 49181
mountd
100005
3 tcp 47489
mountd
100003
2 tcp 2049
nfs
100003
3 tcp 2049
nfs
100003
4 tcp 2049
nfs
100227
2 tcp 2049
nfs_acl
100227
3 tcp 2049
nfs_acl
100003
2 udp 2049
nfs
100003
3 udp 2049
nfs
100003
4 udp 2049
nfs
100227
2 udp 2049
nfs_acl
100227
3 udp 2049
nfs_acl
100021
1 udp 40329
nlockmgr
100021
3 udp 40329
nlockmgr
100021
4 udp 40329
nlockmgr
100021
1 tcp 45731
nlockmgr
100021
3 tcp 45731
nlockmgr
100021
4 tcp 45731
nlockmgr
100024
1 udp 35464
status
100024
1 tcp 55621
status
二、配置
1、配置文件定义
NFS的配置文件为 /etc/exports,内容格式如下:
<共享目录> 客户端1(选项) [客户端2(选项) ...]
共享目录:NFS共享给客户机的目录。
客户端:网络中可以访问此目录的主机。多个客户端以空格分隔。
选项:设置目录的访问权限、用户映射等,多个选项以逗号分隔。
例如:
/data/r_shared 192.168.20.0/24(rw,insecure,sync,all_squash,anonuid=
65534,anongid=65534)
2、客户端的指定方式
指定ip地址的主机:192.168.02.100
指定子网中的所有主机:192.168.20.0/24 或192.168.20.0/255.255.255.0
指定域名的主机:nfs.test.com
指定域中的所有主机:*.test.com
所有主机:*
3、选项说明
ro:共享目录只读;
rw:共享目录可读可写;
all_squash:所有访问用户都映射为匿名用户或用户组;
no_all_squash(默认):访问用户先与本机用户匹配,匹配失败后再映射为匿名用户或用户组;
root_squash(默认):将来访的root用户映射为匿名用户或用户组;
no_root_squash:来访的root用户保持root帐号权限;
anonuid=<UID>:指定匿名访问用户的本地用户UID,默认为nfsnobody(65534);
anongid=<GID>:指定匿名访问用户的本地用户组GID,默认为nfsnobody(65534);
secure(默认):限制客户端只能从小于1024的tcp/ip端口连接服务器;
insecure:允许客户端从大于1024的tcp/ip端口连接服务器;
sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;
async:将数据先保存在内存缓冲区中,必要时才写入磁盘;
wdelay(默认):检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率;
no_wdelay:若有写操作则立即执行,应与sync配合使用;
subtree_check(默认) :若输出目录是一个子目录,则nfs服务器将检查其父目录的权限;
no_subtree_check :即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;
如我的配置是:
[[email protected] ~]#
cat /etc/exports
/data/r_shared
192.168.20.0/24(ro,sync)
/data/w_shared
192.168.20.0/24(rw,sync)
配置好之后重启下rpcbind与nfs服务:(注意重启前你所要共享的那两个目录得先存在没有的话要先创建
mkdir -p /data/r_shared
mkdir
-p /data/w_shared )
/etc/init.d/rpcbind
restart
/etc/init.d/nfs restart
三,测试
现在本地挂载试下有没有错误:
mount -t nfs
192.168.20.6:/data/r_shared /mnt
[[email protected] ~]#
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 18G 1.2G
16G 8% /
tmpfs 504M 0
504M 0% /dev/shm
/dev/sda1 190M 48M
132M 27% /boot
192.168.20.6:/data/r_shared
18G 1.2G
16G 8% /mnt
表示挂载成功
四,到客户端安装NFS服务
先检查有没有安装过NFS服务的包:rpm -aq nfs-utils rpcbind
没有的话就进行安装:yum install nfs-utils rpcbind -y
然后开启rpcbind的服务:
/etc/init.d/rpcbind
start
也可以加入开机自启动里面:
[[email protected] ~]# cat
/etc/rc.local
#!/bin/sh
#
# This script will
be executed *after* all the other init scripts.
# You can put your
own initialization stuff in here if you don‘t
# want to do the
full Sys V style init stuff.
touch
/var/lock/subsys/local
>/etc/udev/rules.d/70-persistent-net.rules
/etc/init.d/rpcbind
start
查看有没有启动成功
[[email protected] ~]#
/etc/init.d/rpcbind status
rpcbind (pid 2561) 正在运行...
然后开始挂载:
mount -t nfs
192.168.20.6:/data/r_shared /mnt
[[email protected] ~]#
mount -t nfs 192.168.20.6:/data/r_shared /mnt
mount.nfs:
Connection timed out
出现这个问题一般是防火墙没有关闭
暂时关闭防火墙,重启后失效的命令是:
service iptables
stop
查看防护墙状态的命令 是:
service iptables status
想永久的关闭防火墙的命令是
vi
/etc/selinux/config
把SELINUX=enforcing
和SELINUXTYPE=targeted 两行注释掉在最后加入
SELINUX=disabled
[[email protected] ~]# cat
/etc/selinux/config
# 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
# SELINUXTYPE= can
take one of these two values:
# targeted - Targeted processes are
protected,
# mls - Multi Level Security protection.
#SELINUXTYPE=targeted
SELINUX=disabled
然后再进行挂载:
[[email protected] ~]#
mount -t nfs 192.168.20.6:/data/r_shared /mnt
[[email protected] ~]# df
-h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 18G 1.2G
16G 8% /
tmpfs 504M 0
504M 0% /dev/shm
/dev/sda1 190M 48M
132M 27% /boot
192.168.20.6:/data/r_shared
18G 1.2G
16G 8% /mnt
可以了