菜鸟学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的权限


(个人有一个小疑问共享目录都做了,如何在安装论坛网站时使其主配置文件不一样呢)