NFS就是(Network File System的缩写,最初是由sum这家公司所发展起来的。它最大的功能就是可能通过网络,让不同的机器、不同的操作系统可以共享彼此的文件。NFS是通过网络来传输数据的,那么NFS使用哪个端口来进行数据传输呢?基本上NFS这个服务器的端口开在2049,但是由于文件系统非常复杂,NFS还有其它的程序去启动额外的端口,因此默认NFS用来传输的端口是随机的,小于1024的端口,那么用户怎么知道服务器使用哪个端口呢?此时就需要远程过程调用RPC(Remote Procedure Call)协议来辅助了。
RPC是主要的功能就是指定每一个NFS功能对就的端口号,并且通知给客户端,让客户端可以连接到正确的端口上去。RPC是如何知道每一个NFS的端口呢?这是因为当服务器可在启动NFS时会随机选取数个端口,并主动向RPC进行注册,因此RPC就知道每个端口对应的NFS功能。RPC就用固定端口111来监听客户端的需求并向客户端响应正确的端口。
服务器端所需的软件:
RPC
rpcbind(在centos5.X之前这个软件名称为portmap,在centos6.x之后才称为rpcbind)
NFS
nfs-utils
NFS主配置文件/etc/exports
/etc/exports:
文件系统 客户端1(文件系统导出属性) 客户端2(文件系统导出属性)
文件系统
客户端:
IP: 172.16.100.8
Hostname: 主机名
Network: 网络地址
文件系统导出属性:
rw
async:异步
sync :同步
root_squash: 压缩root用户,基于imapd,将root通过网络访问时转换为nfsnobody用户
no_root_squash: 不压缩root用户;
all_squash: 压缩所有用户;
anonuid, anongid: 指定匿名用户映射为的UID和GID;
showmount
-e: 在nfs客户端执行,探查某主机所导出的nfs文件系统;使用格式“showmount -e Server_IP”;
-d: 在nfs服务器端执行,显示哪个导出的文件系统已经被至少一个客户挂载使用了;
-a: 在nfs服务器端显示所有的挂载会话;
exportfs:
-a: 操作所有文件系统
-ra: 重新导出所有文件系统
-ua: 取消导入的所有文件系统
-v: 显示详细信息
nfs的辅助进程mountd等监听在固定端口上,可以通过在编辑/etc/sysconfig/nfs中的某参数来实现。
要想启动成为NFS服务器,直接启动就行
[email protected] ~]# service nfs start
Starting NFS services: [ OK ]
Starting NFS quotas: 磁盘配额检查 [ OK ]
Starting NFS mountd: 等待客户端挂载进程 [ OK ]
Starting NFS daemon: 服务端进程 [ OK ]
Starting RPC idmapd: ID号 映射 [ OK ]
查看rpcinfo -p localhost
新建一个分区 10G 以后导出时最好导出整个分区
[[email protected] ~]# fdisk /dev/sda
Command (m for help): n
Selected partition 4
First cylinder (10471-15665, default 10471):
Using default value 10471
Last cylinder, +cylinders or +size{K,M,G} (10471-15665, default 15665): +10G
格式化分区
[[email protected] ~]# mke2fs -t ext4 /dev/sda4
创建目录并把分区挂载至此目录下
[[email protected] ~]# mkdir /nfsshared
[[email protected] ~]# vim /etc/fstab
/dev/sda4 /nfsshared ext4 defaults 0 0
[email protected] ~]# mount -a
[[email protected] ~]# mount
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
nfsd on /proc/fs/nfsd type nfsd (rw)
/dev/sda4 on /nfsshared type ext4 (rw,acl)
把目录共享出去,并充许172.16网段的所有主机挂载
[[email protected] ~]# vim /etc/exports
/nfsshared 172.16.0.0/16(rw,no_root_squash)
客户端查看服务器可挂载目录则
[[email protected] ~]# showmount -e 172.16.24.7
Export list for 172.16.24.7:
/nfsshared 172.16.0.0/16
客户端创建目录并挂载
[[email protected] ~]# mkdir /mnt/nfs
[[email protected] ~]# mount -t nfs 172.16.24.7:/nfsshared /mnt/nfs
[[email protected] ~]# ls /mnt/nfs
lost+found
创建一个文件验证一下看看
[[email protected] nfs]# touch a.txt
[[email protected] nfs]# ls
a.txt lost+found
[[email protected] ~]# cd /nfsshared
[[email protected] nfsshared]# ls
a.txt lost+found
NFS与PRC