一、环境介绍
####################################
两台机器全是Centos 5.4 x86_64
服务端IP=121.33.253.84
客户端IP=121.33.253.83
####################################
二、配置服务端
####################################
#因为默认已经安装rpcbind ,nfs,也可以先查看服务器是否已安装nfs
# rpm -qa|grep nfs
查看状态和版本
# nfsstat 或 nfsstat -m
如果没有安装,则:
# yum install nfs-utils
(如果是centos6.0以下的版本用portmap代替rpcbind )
三、开启自动启动
- chkconfig --level 345 rpcbind on 或者 chkconfig --level 345 portmap on (centos5.X)
- chkconfig --level 345 nfs on
#创建要共享的目录
- mkdir -p /localdisk2/nfsdata
- vi /etc/exports
- #---引用文字-开始---------
- #加入
- /localdisk2/nfsdata 121.33.253.83(rw,root_squash,no_all_squash,sync)
- #---------引用文字-结束----------------------------
# exportfs -rv 重新共享所有目录并输出详细信息
四、启动、测试
####################################
#先启动所依赖的 rpcbind
- service rpcbind start
- service nfs start
- [root@localhost etc]# showmount -e 121.33.253.84
- Export list for 121.33.253.84:
- /localdisk2/nfsdata 121.33.253.83
- mkdir -p /mnt/nfsdata
- mount -t nfs 192.168.17.30:/localdisk2/nfsdata /mnt/nfsdata
- mount: mount to NFS server '121.33.253.84' failed: System Error: No route to host.
- 修改/etc/sysconfig/nfs文件,将下列内容的注释去掉:
- RQUOTAD_PORT=875
- LOCKD_TCPPORT=32803
- LOCKD_UDPPORT=32769
- MOUNTD_PORT=892
for centos 5.X
- -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 892 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m state --state NEW -m udp --dport 892 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 111 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m state --state NEW -m udp --dport 111 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 2049 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m state --state NEW -m udp --dport 2049 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 875 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m state --state NEW -m udp --dport 875 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 32803 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m state --state NEW -m udp --dport 32769 -j ACCEPT
- -A INPUT -m state --state NEW -m tcp -p tcp --dport 892 -j ACCEPT
- -A INPUT -m state --state NEW -m udp -p udp --dport 892 -j ACCEPT
- -A INPUT -m state --state NEW -m tcp -p tcp --dport 111 -j ACCEPT
- -A INPUT -m state --state NEW -m udp -p udp --dport 111 -j ACCEPT
- -A INPUT -m state --state NEW -m tcp -p tcp --dport 2049 -j ACCEPT
- -A INPUT -m state --state NEW -m udp -p udp --dport 2049 -j ACCEPT
- -A INPUT -m state --state NEW -m tcp -p tcp --dport 875 -j ACCEPT
- -A INPUT -m state --state NEW -m udp -p udp --dport 875 -j ACCEPT
- -A INPUT -m state --state NEW -m tcp -p tcp --dport 32803 -j ACCEPT
- -A INPUT -m state --state NEW -m udp -p udp --dport 32769 -j ACCEPT
然后重启:
- service rpcbind restart
- service nfs restart
在其它节点上设置自动挂载:
vi /etc/fstab
- node01:/usr/local /usr/local nfs defaults 1 0
- node01:/home /home nfs defaults 1 0
#检查
01 | mount |
02 | #----------------------------输出文字-开始---------------------------- |
03 | /dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw) |
04 | proc on /proc type proc (rw) |
05 | sysfs on /sys type sysfs (rw) |
06 | devpts on /dev/pts type devpts (rw,gid=5,mode=620) |
07 | /dev/hda1 on /boot type ext3 (rw) |
08 | tmpfs on /dev/shm type tmpfs (rw) |
09 | none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) |
10 | sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw) |
11 | nfsd on /proc/fs/nfsd type nfsd (rw) |
12 | 10.0.0.52:/nfsdata on /root/nfsdata type nfs (rw,addr=10.0.0.52) |
13 | #----------------------------输出文字-结束---------------------------- |
NFS的设置选项:
访问权限选项 | 说明 |
ro | 设置输出共享目录为只读 |
rw | 设置输出共享目录为可读写 |
用户映射选项 | 说明 |
all_squash | 将远程访问的所有普通用户及所属用户都映射为匿名用户或用户组(一般均为nfsnobody) |
no_all_squash | 不将远程访问的所有普通用户及所属用户都映射为匿名用户或用户组(默认设置) |
root_squash | 将root用户及所属用户组都映射为匿名用户或用户组(默认设置) |
no_root_squash | 不将root用户及所属用户组都映射为匿名用户或用户组 |
anonuid=xxx | 将远程访问的所有用户都映射为匿名用户,并指定该匿名用户账户为本地用户账户(UID=xxx) |
anongid=xxx | 将远程访问的所有用户组都映射为匿名用户组账户, 并指定该匿名用户组账户为本地用户组账户(GID=xxx) |
其它选项 | 说明 |
secure | 限制客户端只能从小于1024的TCP/IP端口连接NFS服务器(默认设置) |
insecure | 允许客户端从大于1024的TCP/IP端口接连NFS服务器 |
sync | 将数据同步写入内存缓冲区与磁盘中,虽然这样做效率较低,但可以保证数据的一致性 |
async | 将数据先保存在内存缓冲区,必要时才写入磁盘 |
wdelay | 检查是否有相关的写操作,如果有,则将这些写操作一起执行,这样可以提高效率(默认设置) |
no_wdelay | 若有写操作则立即执行,应与sync配合使用 |
subtree_check | 若输出共享目录是一个子目录,则NFS服务器将检查其父目录的权限(默认设置) |
no_subtree_check | 即使输出目录是一个子目录,NFS服务器也不检查其父目录的权限,这样做可提高效率 |
no_root_squash:登入 NFS 主机使用分享目录的使用者,如果是 root 的话,那么对于这个分享的目录来说,他就具有 root 的权限!这个项目『极不安全』,不建议使用!
root_squash:在登入 NFS 主机使用分享之目录的使用者如果是 root 时,那么这个使用者的权限将被压缩成为匿名使用者,通常他的 UID 与 GID 都会变成 nobody 那个系统账号的身份。
我刚开始配置的时候 在权限的地方,只写了(rw),就发生了客户端对共享目录操作没有权限,在经过n次尝试后,把权限改为(rw,no_root_squash )就行了,问题是解决了
步骤:
1,在要分享数据的主机上修改
vi /etc/exports
*(rw,no_root_squash,no_all_squash,sync)
2.不用重启nfs,刷新即可
exportfs -rv
3. 在其它主机重新mount
4.nfs只能挂载为nobody的解决方法
- mount -t nfs -o vers=3 master:/home /home
- 10.0.0.4:/home /home nfs vers=3 1 0
5. 解决NFS:clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)
service iptables stop