NFS就是网络文件系统,主要用来在linux/unix系统之间共享文件,它属于RPC(remote process call),NFS的通信协议与主机及操作系统无关,因此可以在不同主机,操作系统,文件系统之间实现文件共享。
如果你想用NFS,首先你得确认你的内核已经编译进了NFS,可以通过一下方法查看你系统是否已经编译NFS。
=========================================
cat /proc/filesystems
=========================================
查看输出结果里面是否有nfs,如果没有,你得重新编译内核,把nfs选进去。
如果内核有nfs,下面就介绍怎么使用它。
1,安装NFS。
要想使用NFS,你必须安装nfs-utils和portmap,因为不同的操作系统安装软件包的命令不一样,我这里就不详细说明,你可以先用命令查询nfs包和portmap包,然后根据列出的包的信息,来安装。比如gentoo系统,就可以用一下命令:
============================
#emerge --search nfs portmap
============================
然后根据列出来的包信息,进行选择安装。
为什么要用portmap包,因为NFS是个RPC,而RPC需要端口映射,该包就可以实现该功能。NFS默认端口是111。
2,配置NFS
启动NFS服务器时候,/etc/rc.d/rc会启动exportfs,搜索/etc/exports文件,该文件是NFS服务器配置文件,决定了服务器上哪些目录可以被哪些用户用什么权限进行访问。该文件格式如下:
====================================================
共享目录 客户机1(参数1,参数2) 客户机2(参数3,参数4)
====================================================
一个目录可被多个用户共享。
客户机可以设定如下参数:
========================================================
rw:可读写
ro:只读
no_root_squash:登录NFS服务器的用户如果是root,则该用户对共享目录有root权限。
root_squash:登录NFS服务器的用户如果是root,强制将其转换为匿名用户。
all_squash:不管登录到NFS的用户是什么身份,都设定成匿名用户。
anonuid:将登录的用户设置成指定用户的user id,此ID必须存在于/etc/passwd中
anongid:将登录的用户设置成指定用户的group id,此ID必须存在于/etc/passwd中
===============================================================================================
/home/linux *.linux.org(rw,all_squash,anonuid=40,anongid=40) 无论谁登录到NFS,身份都变成uid=40
===============================================================================================
sync/async:sync磁盘中的数据是最新的。
Insecure:允许从该客户机过来的非授权访问,NFS通过1024以上的端口发送
secure:NFS通过1024以下的端口发送
Hide:不共享子目录。 //这个和下面选项可以不要,
no_hide:共享子目录。//除非子目录和上层目录不是同个文件系统,否则都会显示。
/etc/exports例子:
=============================================================================
/tmp *(rw,no_root_squash)
/home/public 10.129.120.*(rw) *(ro) //10.129.120.1--255可读写,其他用户只读。
/home/linux *.linux.org(rw,all_squash.anonuid=40,anongid=40) //域名匹配linux.org,
================================================================================
#showmount -a 可以显示已经mount上本机nfs目录的客户端。
3,客户端配置
#showmount -e ip //显示指定ip的NFS服务器上的所有共享目录
如果客户端想一直挂在nfs里面的目录,可以修改/etc/fstab
比如增加以下一行:
================================================
20.129.120.1:/home/public /share nfs rw 0 0 //把NFS上的public目录挂在到share目录下,
============================================
关于/etc/fstab格式介绍如下:
=========================================================
filesystem mount-point fs-type options dump fsck-order
=========================================================
filesystem:要挂载的文件系统。
mount-point:挂载点
fs-type:文件系统格式,ext3,nfs...
options:
dump:如果为1,则系统自动写盘,否则不自动写盘。
fsck-order;跟文件系统为1,其他文件系统为2,交换,虚拟,CD,软盘和软成目录为0
如果只是临时挂载文件系统,则可以用以下命令:
==================================
mount -t nfs ip:/目录 本地挂载点
==================================
4,服务器NFS服务的启动
===========================
#/etc/init.d/nfs start
#/etc/init.d/portmap start
===========================
如果是修改了exports文件之后,则可以重启上述两个服务,或者
==================================
#exportfs -rv //全部重新export一次
#exportfs [-aruv]
-a:mount或者umount /etc/exports所有目录
-r:重新mount共享目录
-u:umount
-v:屏幕可以看到相应信息
==================================
参考文献:Linux网络管理教程与上机指导--张光胜,王韶红,吴浩编著。