Linux NFS 服务器的搭建 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


与磁盘配额管理方案的实施



一、 NFS 服务器的搭建:


描述: NFS 是 linux 的网络文件系统,是主机间通过网络进行文件共享的网络协议,相当于 Window 的 UNC 路径进行网络互访, NFS 只使用于 linux 系统之间进行文件互访,不适合于 Windows 。不过两者也用共同点,它们如果要用计算机名称进行访问,那都得使用 NETBIOS 协议进行解析。


NFS 是通过挂载进行实现的,( linux 里不仅可以挂载共享目录,也可以挂载移动硬盘,软盘,优盘以及光盘等等)挂载成功之后,主机里的其他用户访问共享软件就像访问本地硬盘一样方便。类似于 windows 里将其他计算机的共享文件夹在本地映射一个网络驱动器。


**************NFS 服务器的具体配置 ********************


在配置 NFS 之前,必须得安装 nfs-utils 和 portmap 这两个软件包(默认是安装上的,不过在配置 NFS 服务器之前还是检查一下,)。


解释: nfs-utils 包是 nfs 的安装包,是安装在应用层的,其功能主要是由 Linux 内核完成的,而 portmap 包是安装在传输层的,是为 NFS 等服务器程序提供 RPC (远程过程调用)服务的支持。


#rpm –q nfs-utils  portmap



如果没有安装,在RHEL-4的第二张光盘里/RedHat/RPMS/里有,具体安装如下:从提示中可以看出,我的已经安装上了。呵呵!


#mount –t iso9660  /dev/cdrom   /media/cdrom/   挂载光盘2

#cd /media/cdrom/RedHat/RPMS/   进入目录

#rpm –ivh nfs-utils-<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />1.0.6-46.i386.rpm  portmap-4.0-63.i386.rpm 安装rpm包





1、  NFS服务器的具体配置:


1.1、NFS服务器的具体配置是在“/etc/exports”下进行编辑的,默认里面是没有内容的,也就是说是即使你开启NFS服务,也不共享任何内容,而windows server 2003在默认状态下是,各个盘是隐藏共享的,可以通过compmgmt.msc或者filesvr.msc(windows server 2003支持)可以看到共享的隐藏目录)如下:


换句话说:只要你知道对方机子的账号和密码,就可以登陆到对方机子上去,具体命令如下:“//ip/盘符$”



1.2、“exports”文件的格式:


“nfs共享目录名称   客户端主机地址(设置选项)”


2、  试验步骤:


在做试验之前,必须得搭建试验环境:


虚拟机上装有两台linux服务器。从下图可以看出来:




IP地址的配置:


下面是NFS文件服务器的具体配置结果:





下面是Client的具体配置结果:


如果你用的是“netconfig eth0”命令配置的,记得别忘了重新启动网络服务哦!具体启动如下:


#/etc/init.d/network  或者  #/service network restart(这个你的系统里未必有哦)


1、  首先在NFS服务器上创建一个共享的目录,并给它全部的权限,比如说


#mkdir /software   在根目录下创建一个目录(任意)。

#chmod 777 /software    给所以的用户和组全部的权限。


2、  编辑 exports文件


#vi /etc/exports


注意:1、nfs共享目录名称必须为绝对路径


            2、客户端主机地址可以为一个主机的IP地址,指定域名的主机、一个网段的主机,所以主机。


            3、设置选项中,sync为nfs同步写磁盘。(如果你正在copy文件、即使断电,或者其他原因,也可以将一部分内容保存到自己的硬盘里)


下面配置的意思是允许192.168.1.0/24这个网段的主机对nfs服务器共享的文件有只读的功能,同时允许同步写磁盘,而网段中的192.168.1.2这台主机对共享目录具有读写的功能,其次允许同步写磁盘。



3、  启动服务:先启动应用于传输层的portmap ,在启动应用于应用层的nfs服务(顺序不能颠倒)


#service portmap restart  启动portmap服务

#service nfs restart     启动nfs服务

#exportfs –rv     输出共享的目录

#showmount –e    查看共享目录是否创建成功。


在没有启动服务之前显示的结果:



在启动服务之后显示的结果:





可以看出,共享目录已经显示出来!如果你不放心,可以通过下面的命令查看一下服务是否启动起来了!

#service protmap status

#service nfs status

注意:portmap服务,在运行级别3、4、5是自动开启的,而nfs服务只是临时设置的,如果重新启动电脑,那么,nfs服务就需要再次重新启动,是很麻烦的,通过下面的命令可以查看到:


#chkconfig --list protmap

#chkconfig –list nfs




如果你想让它在开机时就启动,就需要改它的启动级别,具体如下:


#chkconfig  --level 35 nfs on   比如说设置3、5级别开启。




从下面的显示结果可以看出,目前使用共享的只有本服务器。


#showmount –a   显示挂载的用户目录



***************NFS客户机的具体配置********************


1、首先在root模式下查看一下NFS文件服务器是否可用。



2、  在自己的一个目录下,先建立一个需要挂载到那的目录。然后输入一下命令:


#mkdir /home/clientsoftware  新建一个目录

#mount –t nfs 192.168.1.1:/software  /home/clientsoftware  挂载共享目录



3、  现在在服务器上进行测试看是否有客户机挂载到NFS服务器上:

#showmount –a  (下面显示的是客户端挂载前后显示的结果:)



#mount |grep clientsoftware  显示挂载文件的类型





4、  现在进行测试,现在在客户端下挂载的目录里创建几个文件!






5、 然后在NFS服务器端打开这个目录看有内容没!






6、  现在把客户机的IP地址改为192.168.1.3/24看看有没有在共享文件夹创建文件的权限:




从上面的实验可以看出,除了192.168.1.1和192.168.1.2两个主机对共享文件夹具有读取和写入的权限,其他的同一网段的客户机只有读取的权限!


注意:这个试验是有点缺陷的,从上面可以看出客户机从共享目录里创建的文件在服务器上是不显示谁创建的。而显示的是一串随机码!如何改变呢,也很简单,这种网络是对等网,也就是说两边必须都建立同样的用户名和密码,才能显示出是谁创建的,两边现在已创建好了两个用户,都是benet,密码都是123456。下面进行测试:


1、首先要在服务器上修改“etc/fstab“文件


将刚才写的文件重新写一下:


/software192.168.1.0/24(sync,no_root_squash,ro)192.168.1.2(sync,no_root_squash,rw)


2、首先在客户端那里用普通用户benet登陆,然后创建一些文件




下面是添加user1用户(客户机和服务器两边都要添加相同的帐号和密码),然后创建文件!


3、然后在服务器那里查看共享目录:结果一目了然!





还有一个缺陷:也就是说,NFS服务器一般是不关闭的,但客户端是经常关闭的。而共享挂载默认在关闭客户端重新登陆是需要重新挂载的,如果想在开机自动挂载,是需要修改 “/etc/fstab”配置文件的。


具体修改如下:在这个文件的末尾加上下面一行命令:


192.168.1.1:/software    /home/clientsoftware   nfs   auto 0 0


二、磁盘配额管理与NFS服务器配合使用:


注意:在进行磁盘配额设置之前,首先检查一下是否安装了quota包!


对磁盘配额的限制一般是从一个用户或一组用户占用磁盘大小和用户拥有的文件数量两个方面进行的,这个是不同于windows的,windows设置磁盘配额只针对某一个用户占用磁盘的大小进行的!


试验步骤:


1、  修改“/etc/fstab”文件。


在根目录那一栏   输入“defaults,usrquota,grpquota”(注意:不要输入错了,要不然系统就启动不起来了)


usrquota 是设置用户磁盘配额


grpquota 是设置组磁盘配额



2、  修改完之后是需要重新挂载文件系统的,最简单的办法就是重新启动系统


3、  创建配额文件:(要给分区建立配额文件)

#quotacheck –cmug /

#ls /aquota.*



4、  设置配额(以刚创建的user1为例)


#edquota –u usr1


下面显示写入成功!


如果配置没有生效,最好用


#quotaon –a 使所有配额生效!

为了更清晰的看出实验结果,我把刚在共享文件夹里的内容都删掉了,然后用user1随便在里面创建了几个文件,从下面可以看出,user1 目前使用的容量为16KB,而创建的文件为4个。而它能够写入的最大容量是12000KB,文件数量最大为20个。



下面继续往里边写入,从最后一条可以看出已经写不进入文件了,因为已经达到了最大文件数20个。




下面是每写入一次,显示的结果!可以看出用户已经创建了20个文件了!容量一直为16KB的原因是因为写入的文件或目录都是空的,大小记为0!




实验基本完成了!