Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2593686
  • 博文数量: 2110
  • 博客积分: 18861
  • 博客等级: 上将
  • 技术积分: 24420
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-05 18:23
文章分类

全部博文(2110)

文章存档

2011年(139)

2010年(1971)

我的朋友

分类: 服务器与存储

2010-11-29 10:45:55

  单独的网络附加存储服务器向多种多样的客户机提供文件级的存储,实现共享的存储。本文介绍网络附加存储设备(网络附加存储服务器)的基本原理和如何利用现有系统创建一台网络附加存储服务器。

  戴尔高性能计算企业技术专家Jeff Layton说,你经常需要共享的存储、通用的文件系统或者这种能力让客户(甚至是多种多样的客户)之间轻松地共享数据。理想的情况是你有符合标准的设备,这样,你就可以同Linux、BSD、OSX或者Windows系统共享数据。幸运的是有用于共享存储的标准:网络文件系统(NFS)。事实上,它只是一个标准的文件系统,是创建目前广泛应用的网络附加存储(NAS)设备的一个推动因素。

  本文简要介绍NFS和NAS设备并且提供在你目前可能拥有的任何服务器上运行NFS的简单步骤。由于NFS是这个事情的推动因素,我们首先评估一下NFS。

 NFS

  NFS是第一个广泛应用的允许分布式系统有效地共享数据的文件系统。事实上,它是唯一的能够承受重复的标准的网络文件系统。实际上,NFS是随着每一个*nix 发布版提供的,你还可以得到诸如Windows等其它操作系统的客户端软件。

  NFS基本上允许你使用配置一些附加存储的服务器,并且“导出”这些附加存储或者与一群客户共享这些存储。这些客户随后能够都可以访问同一个文件系统和共享数据。这台服务器上的存储实际上是与客户共享文件,而不是像在SAN(存储局域网)中那样仅提供原始数据存储器。这意味着那台服务器上的存储必须使用ext3、ext4、xfs、jfs、reiserfs等文件系统中的一个文件系统进行格式化。

  NFS是一个很容易执行的协议。所有的信息、数据和元数据都经过一个文件服务器。这通常是指下面图1显示的一种“带内”数据流模式。

  注意,文件服务器接触和管理所有的数据和元数据。这种模式使存储系统更容易配置和监视,因为你仅担心一个系统。此外,它有一个窄的定义良好的故障模式。这种架构的确定包括一个明显的性能瓶颈,负载均衡问题,而且安全是这个服务器节点的一个功能,而不是这个协议。

  NFS中的一般的数据流是非常简单的。当一个客户机向它已经“安装”的一个NFS文件系统提出一个文件请求的时候,这个安装的守护程序把这个请求转发到NFS服务器,然后这个NFS服务器访问在本地文件系统中的文件。这个数据从NFS服务器传送到那个请求节点,一般使用TCP协议。请注意,那个NFS是基于文件的。那就是说,当提出一个数据请求的时候,它是提出的一个文件的请求,不是数据块或者一个字节范围的请求。这是我们说NFS是一个基于文件的协议的原因。

  

  在上边这部分(粉色的)是客户机,它有一个应用程序提出一个传送到系统调用接口的I/O请求。如果这个文件系统是基于NFS的,那么,这个请求通过这个网络传送到服务器(中间的蓝色部分标记为“服务器”)。这个请求发送到这个文件系统的用户组件,然后这个文件系统与这个文件系统的存储组件沟通。请注意,在右侧标记为“NVRAM”的方框是一个可选的组件,一些厂商用来通过一个缓存加快运行。

  最后,这台服务器与这个存储设备上管理的块的扇区/LBA(逻辑块地址)联络,然后这个存储设备从缓存或者硬盘的盘片中提取数据。接下来,这个数据传回到客户机应用程序的栈。对于这个客户机应用程序来说,这个文件系统的行为和外观就像本地文件系统一样。

  要让人们更好地理解NFS还有更多的工作要做,但是,本文的重点是讨论利用现有的设备和制作一个NAS设备。下一节讨论如何在一台服务器上“启用”NFS,有效地创建一个NAS设备。网络上有许多介绍关于配置和开始应用NFS的方法。因此,本文仅是一个简单的总结,而不是一个全面的操作方法(也就是说省略了一些细节)。
 启动NFS

  为了更好地解释在一台现有的服务器上设置NFS的步骤,我将使用一台我在以前的文章中使用过的服务器。本文中使用的这个服务器测试系统的要点是:

 •CentOS 5.4操作系统
•技嘉MAA78GM-US2H主板
•一个AMD Phenom II X4 920处理器
•8GB内存(DDR2-800)
•Linux 2.6.30内核(只有reiser4补丁)
•操作系统和启动盘在一个IBM DTLA-307020硬盘上(在Ultra ATA/100接口上的20GB硬盘)
•/home在一个希捷ST1360827AS硬盘上   
•有两个硬盘用于测试。它们是希捷ST3500641AS-RK硬盘,每个硬盘有16MB缓存。它们分别是/dev/sdb和/dev/sdc。

  对于这个文件系统,仅使用了第一个希捷硬盘/dev/sdb。这个硬盘在这个案例中是ext4。第二个硬盘/dev/sdc用于这个文件系统的日志部分。这个硬盘分区为正确的尺寸并且只有那个分区用作日志(/dev/sdc1)。

  利用现有的服务器创建一个NAS设备的第一步就是设置和启动NFS。我假设你已经在你的系统中安装了NFS,包括NFS服务器组件。检查NFS是否已经安装在这台服务器上的一种方法是检查是否存在“/etc/exports”文件(这个文件也许没有任何内容,但是,这个文件应该存在)。此外,在CentOS或者RHEL平台上,你还可以通过查看“/usr/sbin/rpc.nfsd”这个文件检查这个NFS服务器是否安装了。

[laytonjb@test64 ]$ ls -s /usr/sbin/rpc.nfsd

20 /usr/sbin/rpc.nfsd

  对于基于rpm(每分钟转速)的系统,你还可以试试下面的方法:

[laytonjb@home8 ]$ rpm -qa | grep -i nfs
system-config-nfs-1.2.8-1
nfs-utils-1.0.6-46

  (这是一个老式的CentOS 4.1系统,因此许多数字与比较新的东西是不匹配的)。在这点上,让我们假设NFS的服务器组件已经安装了。

  一般来说,我下一步是启动这台服务器上的NFS。检查NFS是否运行的一个简便的方法是使用这个命令“rpcinfo -p”,这个命令报告这个系统上的RPC(远程程序调用)信息。如果NFS服务器还没有启动,你将看到类似于如下的信息:

[root@test64 ]# /usr/sbin/rpcinfo -p
   program vers proto   port
    100000    2   tcp    111  portmapper
    100000    2   udp    111  portmapper
    100024    1   udp    774  status
    100024    1   tcp    777  status

  在这个输出中最重要的事情是这个“portmapper”(端口映射程序)正在运行,它是NFS的一个重要部分。如果你在这个列表中没有看到“portmapper”,请阅读如何让它运行的说明书。

  要启动NFS服务器,或者NFS的服务器部分,在某种程度上取决于你的操作系统发布版。在这个测试的CentOS系统上,这是通过执行下列指令完成的。

  [root@test64 ]# /etc/init.d/nfs start

  然后,我们再一次运行“rpcinfo -p”,看看NFS是否启动。

  

[root@test64 ]# /usr/sbin/rpcinfo -p
   program vers proto   port
    100000    2   tcp    111  portmapper
    100000    2   udp    111  portmapper
    100024    1   udp    774  status
    100024    1   tcp    777  status
    100011    1   udp    645  rquotad
    100011    2   udp    645  rquotad
    100011    1   tcp    648  rquotad
    100011    2   tcp    648  rquotad
    100003    2   udp   2049  nfs
    100003    3   udp   2049  nfs
    100003    4   udp   2049  nfs
    100021    1   udp  42049  nlockmgr
    100021    3   udp  42049  nlockmgr
    100021    4   udp  42049  nlockmgr
    100021    1   tcp  54256  nlockmgr
    100021    3   tcp  54256  nlockmgr
    100021    4   tcp  54256  nlockmgr
    100003    2   tcp   2049  nfs
    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs
    100005    1   udp    669  mountd
    100005    1   tcp    672  mountd
    100005    2   udp    669  mountd
    100005    2   tcp    672  mountd
    100005    3   udp    669  mountd
    100005    3   tcp    672  mountd

  注意,你看到NFS列表,看到NFS v2、NFS v3和NFS v4启动了(看第二栏)。还要注意,用于NFS的UDP和TCP协议也列出了。

  NFS运行需要一些守护程序。“/etc/init.d/nfs”脚本为我们启动一切程序。但是,一般来说,我们需要的守护程序是:

  

rpc.nfsd (服务器)
rpc.lockd (对于服务器和客户机都是常见的)
rpc.statd (对于服务器和客户机都是常见的)
rpc.mountd (对于服务器和客户机都是常见的)
rpc.rquotad (服务器)
 输出数据

  下一步是告诉NFS服务器什么目录能够与其它系统(客户机)共享。在NFS的词汇中,这叫作“输出”目录,具体的目录叫作“输出”。现在,NFS启动了,让我们设置它以便把目录输出到服务器。

  要做这个事情,我们通过定义要输出的目录来编辑这个“/etc/exports”文件及其属性。“/etc/exports ”文件中的典型的输入内容如下:

  directory machine1(option11,option12) machine2(option21,option22)

  在这里:

  •目录(directory)是你要输出到客户机的服务器目录。它可以是一个目录或者一个整个的硬盘。然而,它必须用一个文件系统进行格式化。“/etc/exports”文件中的每一行都是一个单独的目录。

  •machine1、machine2是你希望与其共享数据的客户机的名字。例如,它们的列表可以使用client1或者client2等系统的名字(要保证客户机在/etc/hosts目录中列出或者通过NIS列出),或者使用IP地址列出,如192.168.1.8。你还可以使用通配符“*”来代表任何客户机。这里强烈建议你列出的每一个客户机都能帮助保证没有任何“流氓”客户机能够安装到输出的目录中。维护这个客户机列表是很痛苦的,特别是这个列表很长的话。这点安全性对于不太高级额的攻击是有帮助的。另一方面,如果你是在一个厚厚的防火墙后面,并且相信这个防火墙的能力以及没有人会故意地或者意外地引起故障,那么,你就可以把这些机器的名称列为“*”,这个意思是所有的客户机(高性能计算集群经常这样做,因为这个集群在一个专用网络中。这个网络通常在一个厚厚的防火墙后面)。

  •(option11, options12, …) 是用于输出到这个目录的选择列表。有许多可以使用的选择。这超出了本文介绍的范围。然而,有些更重要的选择是:

  * “ro”代表只读。因此,这个服务器可以输出只读的目录。这样,客户机就不能向它们写入内容。

  * “rw”代表读写。这意味着客户机能够对那个输出的目录做读写操作。

  * “no_root_squash”意思是在客户机上的用户的“root”将拥有与在服务器上的用户“root”相同的访问这些文件的级别。再说一次,围绕这个事情有许多安全问题,建议你在客户机上不要使用“no_root_squash”。

  * “sync”告诉NFS等待,一直到这个数据在返回之前发送到存储设备。另一个选择是“async”,它允许NFS服务器在数据发送到这就和个设备之前返回到客户机应用程序(也就是说,它可能在缓存的某个地方)。建议你使用“sync”选择,以保证这个数据写道永久性的存储设备中。然而,这种选择有性能方面的影响,使用“sync”选择的安装的NFS文件系统比使用“async”选择的系统慢。

  你把目录输出到客户机有许多方法。这完全取决于你要完成什么任务和你如何完成这个任务。例如,你可以输出包含应用程序的服务器上的一个目录。客户机只需要下面显示的“/etc/exports”目录中的一行内容。

  /opt 192.168.1.8(ro)

  在这个例子中,服务器正在向一个IP地址为192.168.1.8的客户机输出(共享)包含一些应用程序的/opt目录。这个客户机能够以只读的方式(不允许写盘)安装这个目录。这是在一台服务器上安装应用程序并且与其它客户机共享这些应用程序的一种常见的方式。

  NFS应用最多的是用于根目录。把用户的根目录放在一台服务器上,然后再把它安装在客户机上,是很容易的和常见的。在“/etc/exports”目录中输入的内容看起来也许像如下的样子:

  /home 192.168.1.8(rw)

  在这个例子中,“/home”是以读写方式安装在IP地址为192.168.1.8的客户机上的,因为我们要让用户能够对自己的根目录进行写操作。如果你要这样做的话,你可以做得更精细,在“/etc/exports”目录中的一行上指定每一个用户并且控制用户可以在哪一个客户机上有一个根目录。这向你提供了控制能力,其代价是要在NFS服务器上做额外的工作并且增加了额外的复杂性。例如,你可能需要做如下事情:

  /home/laytonjb 192.168.1.8(rw)

  /home/test 192.168.1.65(rw)

  在这个例子中,第一个用户laytonjb输出到IP地址为192.168.1.8的客户机,第二个用户test输出到IP地址为192.168.1.65的客户机。这向你提供了输出什么和向哪一个机器输出的详细控制。还有一种很好的方法,就是更新客户机上的/etc/fstab,这将为管理员提供有关数据访问的更大的控制权。

  在说一次,NFS安全不是本文的重点。但是,为了帮助你自己,建议你使用“/etc/hosts.allow”和“/etc/hosts.deny”文件。严格地说,这些文件是不必要的,但是,这样做确实能够为管理员提供对NFS设置的更多的控制。第一个文件可用来定义允许哪一个客户机使用主机上的服务。第二个文件列出禁止哪些客户机访问主机的某些服务。虽然这个链接有点陈旧,但是,它确实解释了如何利用这些文件更好地保护你的系统。

  对于这篇文章中的简单例子,我仅在“/etc/exports”目录中输入一项内容。

  /mnt/home1 192.168.1.8(rw)

  它输出一个名为“/home1”的目录到一个IP地址为192.168.1.8的客户机。并且允许读写访问这个目录。在我存储这个文件之后,我必须告诉NFS重新读取这个“/etc/exports”文件和重新输出这个文件(也就是向客户机提供这个文件)。这样做的命令是很简单的。

  [root@test64 ]# /usr/sbin/exportfs -ra

  exportfs命令控制输出的目录的列表。选择“-ra”告诉它输出到/etc/exports ("-a"选择)文件中列出的所有的目录,并且“重新输出”在/etc/exports文件中列出的("-r"选项)全部目录。
 输出数据

  下一步是告诉NFS服务器什么目录能够与其它系统(客户机)共享。在NFS的词汇中,这叫作“输出”目录,具体的目录叫作“输出”。现在,NFS启动了,让我们设置它以便把目录输出到服务器。

  要做这个事情,我们通过定义要输出的目录来编辑这个“/etc/exports”文件及其属性。“/etc/exports ”文件中的典型的输入内容如下:

  directory machine1(option11,option12) machine2(option21,option22)

  在这里:

  •目录(directory)是你要输出到客户机的服务器目录。它可以是一个目录或者一个整个的硬盘。然而,它必须用一个文件系统进行格式化。“/etc/exports”文件中的每一行都是一个单独的目录。

  •machine1、machine2是你希望与其共享数据的客户机的名字。例如,它们的列表可以使用client1或者client2等系统的名字(要保证客户机在/etc/hosts目录中列出或者通过NIS列出),或者使用IP地址列出,如192.168.1.8。你还可以使用通配符“*”来代表任何客户机。这里强烈建议你列出的每一个客户机都能帮助保证没有任何“流氓”客户机能够安装到输出的目录中。维护这个客户机列表是很痛苦的,特别是这个列表很长的话。这点安全性对于不太高级额的攻击是有帮助的。另一方面,如果你是在一个厚厚的防火墙后面,并且相信这个防火墙的能力以及没有人会故意地或者意外地引起故障,那么,你就可以把这些机器的名称列为“*”,这个意思是所有的客户机(高性能计算集群经常这样做,因为这个集群在一个专用网络中。这个网络通常在一个厚厚的防火墙后面)。

  •(option11, options12, …) 是用于输出到这个目录的选择列表。有许多可以使用的选择。这超出了本文介绍的范围。然而,有些更重要的选择是:

  * “ro”代表只读。因此,这个服务器可以输出只读的目录。这样,客户机就不能向它们写入内容。

  * “rw”代表读写。这意味着客户机能够对那个输出的目录做读写操作。

  * “no_root_squash”意思是在客户机上的用户的“root”将拥有与在服务器上的用户“root”相同的访问这些文件的级别。再说一次,围绕这个事情有许多安全问题,建议你在客户机上不要使用“no_root_squash”。

  * “sync”告诉NFS等待,一直到这个数据在返回之前发送到存储设备。另一个选择是“async”,它允许NFS服务器在数据发送到这就和个设备之前返回到客户机应用程序(也就是说,它可能在缓存的某个地方)。建议你使用“sync”选择,以保证这个数据写道永久性的存储设备中。然而,这种选择有性能方面的影响,使用“sync”选择的安装的NFS文件系统比使用“async”选择的系统慢。

  你把目录输出到客户机有许多方法。这完全取决于你要完成什么任务和你如何完成这个任务。例如,你可以输出包含应用程序的服务器上的一个目录。客户机只需要下面显示的“/etc/exports”目录中的一行内容。

  /opt 192.168.1.8(ro)

  在这个例子中,服务器正在向一个IP地址为192.168.1.8的客户机输出(共享)包含一些应用程序的/opt目录。这个客户机能够以只读的方式(不允许写盘)安装这个目录。这是在一台服务器上安装应用程序并且与其它客户机共享这些应用程序的一种常见的方式。

  NFS应用最多的是用于根目录。把用户的根目录放在一台服务器上,然后再把它安装在客户机上,是很容易的和常见的。在“/etc/exports”目录中输入的内容看起来也许像如下的样子:

  /home 192.168.1.8(rw)

  在这个例子中,“/home”是以读写方式安装在IP地址为192.168.1.8的客户机上的,因为我们要让用户能够对自己的根目录进行写操作。如果你要这样做的话,你可以做得更精细,在“/etc/exports”目录中的一行上指定每一个用户并且控制用户可以在哪一个客户机上有一个根目录。这向你提供了控制能力,其代价是要在NFS服务器上做额外的工作并且增加了额外的复杂性。例如,你可能需要做如下事情:

  /home/laytonjb 192.168.1.8(rw)

  /home/test 192.168.1.65(rw)

  在这个例子中,第一个用户laytonjb输出到IP地址为192.168.1.8的客户机,第二个用户test输出到IP地址为192.168.1.65的客户机。这向你提供了输出什么和向哪一个机器输出的详细控制。还有一种很好的方法,就是更新客户机上的/etc/fstab,这将为管理员提供有关数据访问的更大的控制权。

  在说一次,NFS安全不是本文的重点。但是,为了帮助你自己,建议你使用“/etc/hosts.allow”和“/etc/hosts.deny”文件。严格地说,这些文件是不必要的,但是,这样做确实能够为管理员提供对NFS设置的更多的控制。第一个文件可用来定义允许哪一个客户机使用主机上的服务。第二个文件列出禁止哪些客户机访问主机的某些服务。虽然这个链接有点陈旧,但是,它确实解释了如何利用这些文件更好地保护你的系统。

  对于这篇文章中的简单例子,我仅在“/etc/exports”目录中输入一项内容。

  /mnt/home1 192.168.1.8(rw)

  它输出一个名为“/home1”的目录到一个IP地址为192.168.1.8的客户机。并且允许读写访问这个目录。在我存储这个文件之后,我必须告诉NFS重新读取这个“/etc/exports”文件和重新输出这个文件(也就是向客户机提供这个文件)。这样做的命令是很简单的。

  [root@test64 ]# /usr/sbin/exportfs -ra

  exportfs命令控制输出的目录的列表。选择“-ra”告诉它输出到/etc/exports ("-a"选择)文件中列出的所有的目录,并且“重新输出”在/etc/exports文件中列出的("-r"选项)全部目录。
输出数据

  下一步是告诉NFS服务器什么目录能够与其它系统(客户机)共享。在NFS的词汇中,这叫作“输出”目录,具体的目录叫作“输出”。现在,NFS启动了,让我们设置它以便把目录输出到服务器。

  要做这个事情,我们通过定义要输出的目录来编辑这个“/etc/exports”文件及其属性。“/etc/exports ”文件中的典型的输入内容如下:

  directory machine1(option11,option12) machine2(option21,option22)

  在这里:

  •目录(directory)是你要输出到客户机的服务器目录。它可以是一个目录或者一个整个的硬盘。然而,它必须用一个文件系统进行格式化。“/etc/exports”文件中的每一行都是一个单独的目录。

  •machine1、machine2是你希望与其共享数据的客户机的名字。例如,它们的列表可以使用client1或者client2等系统的名字(要保证客户机在/etc/hosts目录中列出或者通过NIS列出),或者使用IP地址列出,如192.168.1.8。你还可以使用通配符“*”来代表任何客户机。这里强烈建议你列出的每一个客户机都能帮助保证没有任何“流氓”客户机能够安装到输出的目录中。维护这个客户机列表是很痛苦的,特别是这个列表很长的话。这点安全性对于不太高级额的攻击是有帮助的。另一方面,如果你是在一个厚厚的防火墙后面,并且相信这个防火墙的能力以及没有人会故意地或者意外地引起故障,那么,你就可以把这些机器的名称列为“*”,这个意思是所有的客户机(高性能计算集群经常这样做,因为这个集群在一个专用网络中。这个网络通常在一个厚厚的防火墙后面)。

  •(option11, options12, …) 是用于输出到这个目录的选择列表。有许多可以使用的选择。这超出了本文介绍的范围。然而,有些更重要的选择是:

  * “ro”代表只读。因此,这个服务器可以输出只读的目录。这样,客户机就不能向它们写入内容。

  * “rw”代表读写。这意味着客户机能够对那个输出的目录做读写操作。

  * “no_root_squash”意思是在客户机上的用户的“root”将拥有与在服务器上的用户“root”相同的访问这些文件的级别。再说一次,围绕这个事情有许多安全问题,建议你在客户机上不要使用“no_root_squash”。

  * “sync”告诉NFS等待,一直到这个数据在返回之前发送到存储设备。另一个选择是“async”,它允许NFS服务器在数据发送到这就和个设备之前返回到客户机应用程序(也就是说,它可能在缓存的某个地方)。建议你使用“sync”选择,以保证这个数据写道永久性的存储设备中。然而,这种选择有性能方面的影响,使用“sync”选择的安装的NFS文件系统比使用“async”选择的系统慢。

  你把目录输出到客户机有许多方法。这完全取决于你要完成什么任务和你如何完成这个任务。例如,你可以输出包含应用程序的服务器上的一个目录。客户机只需要下面显示的“/etc/exports”目录中的一行内容。

  /opt 192.168.1.8(ro)

  在这个例子中,服务器正在向一个IP地址为192.168.1.8的客户机输出(共享)包含一些应用程序的/opt目录。这个客户机能够以只读的方式(不允许写盘)安装这个目录。这是在一台服务器上安装应用程序并且与其它客户机共享这些应用程序的一种常见的方式。

  NFS应用最多的是用于根目录。把用户的根目录放在一台服务器上,然后再把它安装在客户机上,是很容易的和常见的。在“/etc/exports”目录中输入的内容看起来也许像如下的样子:

  /home 192.168.1.8(rw)

  在这个例子中,“/home”是以读写方式安装在IP地址为192.168.1.8的客户机上的,因为我们要让用户能够对自己的根目录进行写操作。如果你要这样做的话,你可以做得更精细,在“/etc/exports”目录中的一行上指定每一个用户并且控制用户可以在哪一个客户机上有一个根目录。这向你提供了控制能力,其代价是要在NFS服务器上做额外的工作并且增加了额外的复杂性。例如,你可能需要做如下事情:

  /home/laytonjb 192.168.1.8(rw)

  /home/test 192.168.1.65(rw)

  在这个例子中,第一个用户laytonjb输出到IP地址为192.168.1.8的客户机,第二个用户test输出到IP地址为192.168.1.65的客户机。这向你提供了输出什么和向哪一个机器输出的详细控制。还有一种很好的方法,就是更新客户机上的/etc/fstab,这将为管理员提供有关数据访问的更大的控制权。

  在说一次,NFS安全不是本文的重点。但是,为了帮助你自己,建议你使用“/etc/hosts.allow”和“/etc/hosts.deny”文件。严格地说,这些文件是不必要的,但是,这样做确实能够为管理员提供对NFS设置的更多的控制。第一个文件可用来定义允许哪一个客户机使用主机上的服务。第二个文件列出禁止哪些客户机访问主机的某些服务。虽然这个链接有点陈旧,但是,它确实解释了如何利用这些文件更好地保护你的系统。

  对于这篇文章中的简单例子,我仅在“/etc/exports”目录中输入一项内容。

  /mnt/home1 192.168.1.8(rw)

  它输出一个名为“/home1”的目录到一个IP地址为192.168.1.8的客户机。并且允许读写访问这个目录。在我存储这个文件之后,我必须告诉NFS重新读取这个“/etc/exports”文件和重新输出这个文件(也就是向客户机提供这个文件)。这样做的命令是很简单的。

  [root@test64 ]# /usr/sbin/exportfs -ra

  exportfs命令控制输出的目录的列表。选择“-ra”告诉它输出到/etc/exports ("-a"选择)文件中列出的所有的目录,并且“重新输出”在/etc/exports文件中列出的("-r"选项)全部目录。
NFS客户机

  在这个"/mnt/home"的例子中,NFS的服务器端至少要使用一个输出到我的网络上的一个客户机的目录来完成。这个NFS的客户机端也非常容易。同服务器一样,你必须在客户机上安装NFS,但是,你不用安装NFS的服务器部分。在许多发布版中,NFS的“客户机”部分有时候叫作“nfs-common”或者“nfs-client”或者有时候叫相同的名字。检查你的系统是否做好NFS准备的一般方法是查看/proc/filesystem文件。

 

laytonjb@laytonjb-laptop:~$ cat /proc/filesystems
nodev  sysfs
nodev  rootfs
nodev  bdev
nodev  proc
nodev  cgroup
nodev  cpuset
nodev  debugfs
nodev  securityfs
nodev  sockfs
nodev  pipefs
nodev  anon_inodefs
nodev  tmpfs
nodev  inotifyfs
nodev  devpts
    cramfs
nodev  ramfs
nodev  hugetlbfs
nodev  mqueue
nodev  fuse
    fuseblk
nodev  fusectl
nodev  usbfs
    ext3
nodev  rpc_pipefs
nodev  nfsd
nodev  binfmt_misc

  从下面数第二行显示这个系统需要具有NFS功能。

  同服务器一样,你需要一些在客户机上运行NFS的守护程序。特别是你需要三个用于这个客户机的守护程序:

  •portmapper (use "rpcinfo -p" to check)

  •rpc.statd (needed for file locking)

  •rpc.lockd (needed for file locking as well)

  当你安装客户机部分的时候,这些守护程序应该在启动计算机时开始运行。

  最后一个步骤是简单地安装这个NFS目录。如果你要亲自对它进出测试,你可以在命令行中使用“mount”。

  [root@home8 etc]# mount 192.168.1.65:/mnt/home1 /mnt/nfsserver

  [root@home8 etc]# ls -s /mnt/nfsserver

  total 8

  4 laytonjb 4 test

  [root@home8 etc]# ls -s /mnt/nfsserver/laytonjb

  total 40

  20 ext4_own_journal.txt 4 fdtest_script 16 fdtree.bash

  NFS服务器的地方是192.168.1.65。一定要保证在你安装这个文件系统之前存在这个安装点/mnt/nfsserver,否则,你将得到一个这个安装点不存在的错误提示。

  你还可以把它放在你的/etc/fstab文件中。例如,/etc/fstab文件看起来是下面这个样子。

[root@home8 etc]# more /etc/fstab
# This file is edited by fstab-sync - see 'man fstab-sync' for details
LABEL=/                 /                       ext3    defaults        1 1
LABEL=/boot             /boot                   ext2    defaults        1 2
none                    /dev/pts                devpts  gid=5,mode=620  0 0
none                    /dev/shm                tmpfs   defaults        0 0
none                    /proc                   proc    defaults        0 0
none                    /sys                    sysfs   defaults        0 0
LABEL=SWAP-hda3         swap                    swap    defaults        0 0
...
192.168.1.65:/mnt/home1  /mnt/nfsserver         nfs     defaults        0 0
 

  我在这个/etc/fstab文件中取消了一些垃圾信息以便保护无辜的人(我)。这个客户机还是一个较老的CentOS 4.1系统,因此,这个/etc/fstab文件也许与你的系统上的文件不一样。然而,这个文件中的这个输入项的语法是正确的。
总结

  利用一台现有的服务器并且把它变成供一组客户机使用的具有中央服务器功能的网络附加存储服务器实际上是非常简单的。你可以利用你喜欢的Linux发布版软件,保证安装NFS和NFS服务器。然后,你要在客户机上设置每一个客户机以安装从这台服务器输出的文件系统。这个过程不是很困难,但是也许有点耗费时间。

  本文仅简单地接触到了NFS的安全话题。如果你担心可能的安全问题,这是一个重要的问题。如果你正在一个有客户机的网络上运行(高性能计算是在不同的篇文章中介绍的另一个问题),比应该担心这个问题。一定要利用许多网站上有关NFS安全的文章和技巧。还有许多安全图书介绍保证NFS安全的事情(我喜欢的书是Bob Toxen编写的《现实世界安全》。这本书有点老,但是,对于NFS的一般讨论是非常好的)。

阅读(429) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~