类型:System V-launched Service
软件包:nfs-utils
进程:nfsd,lockd,rpciod,rpc.{mounted,rquotad,statd}
脚本:nfs,nfslock
端口:由portmap服务指派端口(111)
配置文件:/etc/exports
辅助工具:portmap(必须)
相关命令:rpcinfo -p [IPADD]:查看服务器提供的rpc服务
showmount -e:查看服务共享的目录
Server端:
1./etc/exports格式:
目录 选项
例:共享/share目录给192.168.0.x的用户
/share 192.168.0.0/24 (rw)
2.启动portmap服务:
service portmap start[restart]
3.启动NFS服务:
service nfs start[restart]
Client端
1.启动portmap服务:
service portmap start[restart]
2.挂载服务器端的共享目录(假设服务器端192.168.0.1):
mount -t nfs 192.168.0.1:/share /mnt/localshare
卸载使用umount
# umount /mnt/localshare
关机时如果NFS Server上面还有Client联机,建议NFS Server关机之前,要先关掉portmap与nfs这两个系统服务。如果无法正确地将这两个系统服务关掉,那么先以netstat -utlp找出PID,然后使用kill杀掉进程,这样才能正常关机。
1. 查看系統有沒有nfs功能
cat /proc/filesystes
2. ntsysv 命令選中nfs
service nfs restart,看能否啟動,如不能正常,可以查看相應的出錯信息
tali /var/log/messages
3. 配置/etc/exports
eg: /home/mis *(rw)
此文件是配置相關的文件和一些權限,上面的設置表示,所有的用戶對/home/mis都有讀寫的權限
4. 執行exportfs -a 表示將所有的更新.
5. service nfs restart
6. 執行mount命令
eg: mount 10.0.1.153:/home/mis /mnt/mis
7. 常用的命令
showmount
repcinfo
8. 如果在開機時就加載,可在/etc/fstab中加入
ip:/home.mis /mnt/mis nfs intr
细解:
1 、 NFS 安装
系统默认已经安装了 NFS 软件包,如果手工安装 NFS ,需要 5 个 RPM 包。
setup-* : 共享 NFS 目录在 /etc/exports 中定义
initscripts-* : 包括引导过程中装载网络目录的基本脚本
nfs-utils-* : 包括基本的 NFS 命令与监控程序
portmap-* : 支持安全 NFS RPC 服务的连接
quota-* : 网络上共享的目录配额,包括 rpc.rquotad (这个包不是必须的)
可以使用下面命令查看系统是否已经安装了某个软件包。
[root@Meil sda1]# rpm -qa |grep setup
setup-2.5.25-1
losetup-2.11y-9
setuptool-1.12-1
2 、配置 NFS
编辑 /etc/exports ,在文件中列出,要共享的目录。书写规则是:(每个共享规则一行) 共享目录 主机 ( 参数 ) 。
例如:
/mnt/sda1 10.50.92.36(ro,sync,no_root_squash)
上面的规则代表将 /mnt/sda1 目录以读写同步方式共享给主机10.50.92.36 。如果登陆到 NFS 主机的用户是 root, 那么该用户就具有 NFS 主机的 root 用户的权限。
下面是一些 NFS 共享的常用参数:
rw :可读写的权限;
ro :只读的权限;
no_root_squash :登入到 NFS 主机的用户如果是 ROOT 用户,他就拥有 ROOT 的权限 root_squash :在登入 NFS 主机使用目录的使用者如果是 root 时,那么这个使用者的权限将被压缩成为匿名使用者,通常他的 UID 与 GID 都会变成 nobody 那个身份;
all_squash :不管登陆 NFS 主机的用户是什么都会被重新设定为 nobody 。
anonuid :将登入 NFS 主机的用户都设定成指定的 user id, 此 ID 必须存在于 /etc/passwd 中。
anongid :同 anonuid ,但是变成 group ID 就是了!
sync :资料同步写入存储器中。
async :资料会先暂时存放在内存中,不会直接写入硬盘。
insecure 允许从这台机器过来的非授权访问。
exportfs 命令:
如果我们在启动了 NFS 之后又修改了 /etc/exports ,是不是还要重新启动 nfs 呢?这个时候我们就可以用 exportfs 命令来使改动立刻生效,该命令格式如下:
exportfs [-aruv]
-a :全部 mount 或者 unmount /etc/exports 中的内容
-r :重新 mount /etc/exports 中分享出来的目录
-u : umount 目录
-v :在 export 的时候,将详细的信息输出到屏幕上。
具体例子:
[root@Meil sda1]# exportfs -rv
exporting 10.50.92.36:/mnt/sda1
reexporting 10.50.92.36:/mnt/sda1 to kernel<== 全部重新 export 一次!
3 、启动 NFS
# service portmap start
# service nfs start
检查 NFS 的运行级别:
# chkconfig --list portmap
# chkconfig --list nfs
根据需要设置在相应的运行级别自动启动 NFS :
# chkconfig --level 235 portmap on
# chkconfig --level 235 nfs on
另外,还需要查看系统的 iptables 、 /etc/hosts.allow 、 /etc/hosts.deny 是否设置了正确的 NFS 访问规则。
4 、客户端配置
客户端运行以下命令 MOUNT NFS 文件系统
[root@NTP_92_36 root]# mkdir /mnt/nfs
[root@NTP_92_36 root]# mount -t nfs 10.50.44.89:/mnt/disk1 /mnt/nfs
mount: 10.50.44.89:/mnt/disk1 failed, reason given by server: Permission denied
[root@NTP_92_36 root]# mount -t nfs 10.50.44.89:/mnt/sda1 /mnt/nfs
[root@NTP_92_36 root]# cd /mnt/nfs/
5 、可能出现的问题
rpc 超时问题
在服务器上的 hosts 文件加上了客户机的 ip 地址解析。