如何用现有系统创建NAS服务器
发布网友
发布时间:2022-04-21 19:12
我来回答
共1个回答
热心网友
时间:2022-05-26 17:20
•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 ]{$selection}nbsp;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”目录中输入的内容看起来也许像如下的样子: