用现有系统创建NAS服务器之NFS输出数据

日期: 2010-08-08 作者:东缘 来源:TechTarget中国 英文

  输出数据

  下一步是告诉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的一般讨论是非常好的)。

上一篇文章  用现有系统创建NAS服务器之启动NFS

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

作者

东缘
东缘

相关推荐

  • 云计算NAS提供跨本地和云端的文件访问

    非结构化内容正在快速增长,并在新数据中处于领先地位。 通常来说,以非结构化格式创建的信息会作为对象储存在对象存 […]

  • 对象级存储正准备替代企业中的NAS

    文件服务接口已经成为许多供应商的可大规模扩展对象存储产品的标准功能,这就让对象储技术的使用变得更简单,也让对象存储越来越容易替代传统NAS存储。

  • 企业存储系统新旧大比拼

    传统的外部存储系统主要有两种类型:网络连接存储(NAS)和存储区域网络(SAN)。而云计算和对象存储的兴起促成了软件定义存储的出现。

  • 什么是文件存储?

    文件存储,也叫作文件级或者基于文件的存储,它是以一种分层的结构存储数据。数据保存于文件和文件夹中,同样的格式用于存储和检索。