首页 > 代码库 > NFS与PRC

NFS与PRC

NFS与PRC

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服务器,直接启动就行

root@db2 ~]# 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  以后导出时最好导出整个分区

[root@db2 ~]# 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

格式化分区

[root@db2 ~]# mke2fs -t ext4 /dev/sda4

创建目录并把分区挂载至此目录下

[root@db2 ~]# mkdir /nfsshared

[root@db2 ~]# vim /etc/fstab

/dev/sda4              /nfsshared               ext4    defaults          0 0

root@db2 ~]# mount -a

[root@db2 ~]# 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网段的所有主机挂载

[root@db2 ~]# vim /etc/exports

/nfsshared  172.16.0.0/16(rw,no_root_squash)


客户端查看服务器可挂载目录则

[root@node4 ~]# showmount -e 172.16.24.7

Export list for 172.16.24.7:

/nfsshared 172.16.0.0/16

客户端创建目录并挂载

[root@node4 ~]# mkdir /mnt/nfs

[root@node4 ~]# mount -t nfs 172.16.24.7:/nfsshared /mnt/nfs

[root@node4 ~]# ls /mnt/nfs

lost+found



创建一个文件验证一下看看

[root@node4 nfs]# touch a.txt

[root@node4 nfs]# ls

a.txt  lost+found


[root@db2 ~]# cd /nfsshared

[root@db2 nfsshared]# ls

a.txt  lost+found



本文出自 “linux” 博客,请务必保留此出处http://8519539.blog.51cto.com/8509539/1409516