NFS (network file system) 网络文件系统
可以快速进行文件共享,方便集中管理
NFS 并不是监听在固定端口,而是随机采用一些未被使用并且小于 1024 的端口,中间通过 RPC 协调实现互联. 而 RPC 工作在 tcp udp 的 111 端口.
可以通过 # rpcinfo –p localhost 查看 //rpcbind 的守护进程 //NFS 的守护进程 //NFS mountd 守护进程
AUTOFS
当客户端和服务器端连接后,任何一方离线都可能导致另一方在不断等待,消耗 NFS 服务器的资源
使用 autofs 就可以避免这类问题,让用户仅在访问时能够动态挂载目录
试验环境 CentOS版本为 6.7
两台虚拟主机即可,关闭防火墙\SElinx,互相能ping通
本人使用的是 vmvare workstation11 . 之前一直没用克隆选项,没想到在11中关闭虚拟机完成克隆后不需要做任何更改.
假如原来的主机网卡为eth0. 那么克隆后的主机网卡则为eth1. 两台主机的 MAC 地址也不一样. 真是方便 (木哈哈哈哈)
1) NFS SERVER : 192.168.0.28
2) NFS CLIENT : 192.168.0.30
首先配置 NFS SERVER
[[email protected] ~]# rpm -qa nfs-utils rpcbind
nfs-utils-1.2.3-26.el6.x86_64 # NFS 服务主程序
rpcbind-0.2.0-9.el6.x86_64 # Centos6.X 下为 RPC 主程序 ( Centos5.X下为 portmap )
↑ # 在 CentOS 6x 桌面版中,默认已经安装了 NFS 服务
[[email protected] ~]# mkdir /shared
[[email protected] ~]# cp /etc/fstab /shared
↑ # 在 / 目录下创建 shared 目录,作为将要共享出去的目录,复制一个文件,方便后面测试是否能够成功
[[email protected] ~]# /etc/init.d/rpcbind start
[[email protected] ~]# /etc/init.d/nfs start
↑ # 要想启动 NFS 服务需要启动 rpcbind 服务和 NFS 服务.由于 NFS 在启动时需要进行端口注册,所以需要注意启动程序 先启动 rpcbind 在启动 nfs
接下来开始配置 /etc/exports 配置文件. 该文件为 NFS 的主要配置文件,但是需要自行创建,手工进行编辑
exports 文件的编辑格式如下
共享目录 [客户端1](选项1,选项2,......) [客户端2](选项1,选项2,.....)
/shared 192.168.0.0/24(ro)
↑ # 实验中我的 /etc/exports 内容. 表示共享目录的名称为 /shared 192.168.0.0 中的所有主机可以访问,权限为 只读
该实验中可以访问我的客户端为 192.168.0.0 中所有主机,但也支持主机名与通配符 "*" "?"
客户端地址设置
example 表示主机名为 example 的主机可以访问
host?.example.com ?表示为任意一个字符
*.example.com 表示为 example.com 域中的所有主机均可以访问
* 表示为所有主机均可以访问
选项设置
ro 客户端只能以只读的方式共享目录中的文件
rw 客户端对目录可读写
sync 数据同步写内存与磁盘.效率低
async 异步 IO 方式,数据先存入内存,需要时写入磁盘.效率高,风险大
在将 /etc/exports 文件保存退出后可以重启 nfs 服务 (service nfs restart)
[[email protected] ~]# exportfs –rv (也可以使用 /etc/init.d/nfs reload)
↑ # 平滑加载 , 不影响客户也不用重启
[[email protected] ~]# showmount -e 192.168.0.28
Export list for 192.168.0.28:
/shared 192.168.0.0/24
到此为止 , NFS 服务器端的配置已经完毕 , 通过 showmount 命令得知该服务器共享的目录
以下是几个常用命令总结 :
[[email protected] ~]# /etc/init.d/rpcbind status #检查 rpcbind 服务是否在运行
rpcbind (pid 5798) is running...
exportfs 命令 -rv : 重新输出 , 不用重启 -au : 取消全部输出
-a : 全部输出或取消全部输出所有的共享目录
-i : 忽略 /etc/exports 配置文件 , 而使用默认或命令行中指定的选项
-r : 重新读取 /etc/exports 中的配置
-u : 取消一个或多个共享目录的输出
-v : 单独使用时显示共享目录以及现象设置,组合使用时为显示了进行哪些操作
showmount 命令
格式 : showmount [选项] [主机或 IP 或名称]
-a : 显示已经挂载了服务器共享目录的客户端及他们所使用的共享目录
-e : 显示指定 NFS 服务器输出的共享目录列表. (客户端服务器端均可以使用)
-d : 与 –a 类似 , 但是只显示目录 , 不显示客户端
常用命令总结完毕,接下来配置客户端
---------------来个分割线--------------NFS服务器端配置-------------------------------------
[[email protected] ~]# rpm -qa rpcbind
rpcbind-0.2.0-11.el6.x86_64
↑ # 服务器端同样需要安装 rpcbind 包
[[email protected] ~]# showmount -e 192.168.0.28
Export list for 192.168.0.28:
/shared 192.168.0.0/24
↑ # 192.168.0.28 为 NFS 服务器的地址 , 查看有哪些可以挂载的目录
[[email protected] ~]# mount -t nfs -o nfsvers=3 192.168.0.28:/shared /mnt/nfs
↑ # 开始挂载 –o nfsvers=3 为指定 nfs 的版本 , 在CentOS6中默认版本为4,若不加此选项,在服务器端执行 showmount –a –d 命令无法成功.当然 /mnt/nfs 的目录是提前创建好的,为挂载点
[[email protected] nfs]# ls
fstab
↑ # 此时进入 /mnt/nfs 目录可以看到 fstab 文件,测试成功
设置开机自动挂载
若需要开机自动挂载可以通过 chkconfig nfs on 命令 , 也可以写入 /etc/fstab 文件中. 格式如下
192.168.0.28:/shared /mnt/nfs nfs defaults 0 0
---------------------再来一个分割线-------------配置autofs---------------------------------
[[email protected] ~]# rpm -qa autofs
autofs-5.0.5-113.el6.x86_64
↑ # 客户端需要安装 autofs , 版本中已经默认安装
autofs 服务的主要配置文件为 /etc/auto.master . 需要编辑该文件,添加挂载目录
↑ # /mnt/nfs 为本机的挂载点 /etc/auto.nfs 该文件本来并不存在,需要一会儿手工创建 --timeout=10 动态链接你懂的
[[email protected] ~]# cat /etc/auto.nfs
server -ro 192.168.0.28:/shared
↑ # 在 /etc 中创建文件 auto.nfs 内容如上 . server目录是不存在,autofs会自动创建
[[email protected] ~]# service autofs reload
↑ # 重新载入 maps
[[email protected] ~]# cd /mnt/nfs
[[email protected] nfs]# cd server
[[email protected] server]# ls
fstab
[[email protected] server]# pwd
/mnt/nfs/server
↑ # cd 进 /mnt/nfs 目录后 , cd server 访问挂载成功.
[[email protected] ~]# chkconfig autofs on
↑ # 实现 autofs 开机自启动
最后自己在总结一下权限的问题
挂载后对共享目录的权限有两层,一个是在服务器端挂载时设置的权限,还有一个是共享文件自身的权限,二者取最小的权限
写的不对不好的地方,还希望各位大虾指教,小弟虚心接受.