菜鸟学Linux 第065篇笔记 nfs
NFS (Network File System)
是一个可以将远端的计算机硬盘挂载到本地来进行使用,让本地的计算机可以使用远程
计算机所提供的硬盘,而且和在操作本地硬盘所使用的命令相同,没有区别 (个人解释)
它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。 (官方解释)
LPC (Local Procedure Call)
RPC (Remote Procedure Call)
Linux 提供rpc服务的程序: portmap 111/tcp and udp
一种编程技术(协议),简化分布式应用程序的开发、
可以将底层网络之间数据报文封装传送,隐藏,在上层表现为和本地的调用一样
实现数据交换可以基于二进制格式,也可文本格式(xmlRPC) -->
SOAP(Simple Object Access Protocol)
NFS: Sun公司开发
NFSv1 公司内部使用
NFSv2 公开
NFSv3 流行
NFSv4 最新
NFS 只可以Unix/Linux之间数据通信
NFS实现
NFS Server端软件包
nfs-utils
yum install nfs-utils (默认已经安装)
# service nfs start
会启动三个主进程
nfsd(nfs服务) , mountd(挂载), quotad(配额)
nfsd 2049/tcp 2049/udp
mountd 会变换
quotad 会变换
半随机的端口 由于随机所以可能会占用其它应用程序的端口
想要固定需要配置
确保nfs server端 portmap已经启动
此软件为RPC的实现 (Remote Proceduer Call)
# service protmap status
工作端口 111/tcp 111/udp
rpcinfo -p 来查看一台主机上所有rpc的进程所监听的端口号
nfs配置文件/etc/exports
/path/to/some-dir CLIENT_LIST
多个客户端之间使用空白字符分隔
每个客户端后必须跟一个小括号,里面定义了此客户端访问特性,如访问权限等
如 192.168.11.0/24(ro,async) 192.168.1.0/24(rw,sync)
访问属性
ro
rw
sync
async
root_squash 将root用户映射为来宾账号
no_root_squash
all_squash
anonuid, anongid 指定映射的来客账号UID和GID
如共享/shared目录
/shared 192.168.11.0/16(ro)
重启nfs
# service nfs restart
showmount -e NFS_SERVER 查看nfs服务器“导出”的各文件系统
showmount -e 192.168.11.122
showmount -a NFS_SERVER 查看nfs服务器所有被挂载的文件系统和客户端的对应列表
showmount -d NFS_SERVER 只显示被客户端挂载的
export命令 用来实现不中断nsf服务加载配置
-a 跟-r或-u选项同时使用,表示重新挂载所有文件系统或取消导出所有文件系统
-r 重新导出
-u 取消导出
-v 显示详细信息
让mountd 和 quotad 等进程监听在固定端口,编辑配置文件/etc/sysconfig/nfs
#MOUNTD_PORT=892
#RQUOTAD_PORT=875
#LOCKD_TCPPORT=32803
#LOCKD_UDPPORT=32769
将如上所述选项开启即可实现mountd quotad进程端口固定
客户端挂载服务器的目录
mount -t nfs NFS_SERVER:/PATH/TO/SOME_EXPORT /path/to/somewhere
_rnetdev 可以使系统开机是挂载nfs文件系统无法挂载时自动跳过
实现nfs服务步骤
nsf服务器端配置(ip 192.168.11.122)
1.安装nfs-utils
# yum install nfs-utils -y
# service nfs start
# chkconfig nfs on
# service portmap restart
2.创建要共享给其它客户端的访问的目录
# mkdir /shared
# useradd -u 1100 nfsuser
# chown -R nfsuser.nfsuser /shared/
3.编辑配置文件/etc/exports 使其共享给特定的客户端
# vim /etc/exports
/shared 192.168.11.0/24(ro,async,all_squash,anonuid=1100,anongid=1100)
# showmount -e 192.168.11.122
# exportfs -ar
(此时nfs服务器便配置好了,注意我这里的权限设置的小,如有其它需求可以自行配置)
客户端配置挂载服务器端的nfs文件系统 (ip 192.168.11.122)
# showmount -e 192.168.11.123
# mount -t nfs 192.168.11.123:/shared /mnt
(至此我的客户端便可以访问服务器端/shared目录下的文件,至于权限就归服务器端来定)
简单的nfs服务已经配置完成
下面给一个题目
实现两台主机共为一个网站进行服务
细节:1.如建立一个网站www.mysky.com 里边是一个论坛网站
2.在DNS服务器上分别指向这两台主机
3.而这两台主机都可响应此请求
实现方式
1.建立两台lamp
2.建立nfs 使一台server端已经建设好该论坛网站
并将网站的目录做共享
然后客户端进行访问
3.mysql 要指向主服务器的mysql
就是说要给客户端配置访问mysql的权限
(个人有一个小疑问共享目录都做了,如何在安装论坛网站时使其主配置文件不一样呢)