在Fedora 12上用GlusterFS创建类似NFS的独立存储服务器

来源: 作者:lucklily
  

本教程展示怎么在Fedora 12上安装一个独立存储服务器。这里我将会使用GlusterFS而不是NFS。客户系统能够像本地文件系统一样访问该存储器。GlusterFS是一个可以 扩展到几个peta字节的集群式文件系统。它将几个存储块通过Infiniband RDMA或者TCP/IP互联聚合成一个大的并行网络文件系统。存储块可以使用任意商业化硬件组成,比如使用SATA-II RAID和Infiniband HBA的x86_64服务器。


我不作出任何保证说这种办法一定适用于你!

 

1 前期工作

本教程中我会使用两个系统, 一个服务器和一个客户:

  • server1.example.com: IP地址为192.168.0.100 (服务器)
  • client1.example.com: IP地址为192.168.0.101 (客户)


每个系统都应该能够解析到另一个系统的主机名. 如果这一点不能通过DNS达到, 你就要在两个系统上编辑/etc/hosts文件使之包含下 面两行:

vi /etc/hosts

[...]
192.168.0.100 server1.example.com server1
192.168.0.101 client1.example.com client1
[...]

(在接下来的安装过程中也可以使用IP地址来代替主机名. 如果你喜欢使用IP地址, 你不需要关心主机名能否被解析.)

 

2 安装GlusterFS服务器

server1.example.com:

GlusterFS服务器是Fedora 12中一个已经可用的软件包, 所以你可以这样来安装:

yum install glusterfs-server


命令

glusterfs --version

则可以显示你所安装的GlusterFS的版本 (本例中是2.0.9):

[root@server1 ~]# glusterfs --version
glusterfs 2.0.9 built on Jan  3 2010 00:12:49
Repository revision: v2.0.9
Copyright (c) 2006-2009 Gluster Inc. <http://www.gluster.com>
GlusterFS comes with ABSOLUTELY NO WARRANTY.
You may redistribute copies of GlusterFS under the terms of the GNU General Public License.
[root@server1 ~]#


接下来我们创建一些目录:

mkdir /data/
mkdir /data/export
mkdir /data/export-ns


现在我们创建GlusterFS服务器的配置文件/etc/glusterfs/glusterfsd.vol (之前首先要对原始的/etc/glusterfs/glusterfsd.vol进行备 份)来定义即将被导出的目录(/data/export)和允许进行连接的客户机(192.168.0.101 = client1.example.com):

cp /etc/glusterfs/glusterfsd.vol /etc/glusterfs/glusterfsd.vol_orig
cat /dev/null > /etc/glusterfs/glusterfsd.vol
vi /etc/glusterfs/glusterfsd.vol

volume posix
type storage/posix
option directory /data/export
end-volume

volume locks
type features/locks
option mandatory-locks on
subvolumes posix
end-volume

volume brick
type performance/io-threads
option thread-count 8
subvolumes locks
end-volume

volume server
type protocol/server
option transport-type tcp
option auth.addr.brick.allow 192.168.0.101 # Edit and add list of allowed clients comma separated IP addrs(names) here
subvolumes brick
end-volume


值得注意的是可以在IP地址中使用通配符 (比如192.168.*) 并且可以通过逗号分隔来指定多个IP地址 (如 192.168.0.101,192.168.0.102).


然后我们创建GlusterFS的系统自启动链接并且启动之:

chkconfig --levels 35 glusterfsd on
/etc/init.d/glusterfsd start


3 安装GlusterFS客户

client1.example.com:

有一个用于Fedora 12的GlusterFS客户端rpm包,但是当你尝试访问GlusterFS共享存储的时候存在一个类似于这样的问题: df: `/mnt/glusterfs': Software caused connection abort 或者 df: `/mnt/glusterfs': Transport endpoint is not connected. 这就是为什么我们要从源代码开始构建GlusterFS客户端以避免这个问题的原因。


在构建GlusterFS客户端之前,我们先安装其先决条件:

yum groupinstall 'Development Tools'

yum groupinstall 'Development Libraries'

yum install libibverbs-devel fuse-devel


然后我们下载GlusterFS 2.0.9的源码(请注意这是和已经安装的服务器相同的版本!) 并按如下步骤构建GlusterFS:

cd /tmp
wget http://ftp.gluster.com/pub/gluster/glusterfs/2.0/LATEST/glusterfs-2.0.9.tar.gz
tar xvfz glusterfs-2.0.9.tar.gz
cd glusterfs-2.0.9
./configure


./configure命令结束的尾部,你会看到类似于这样的信息:

[...]
GlusterFS configure summary
===========================
FUSE client        : yes
Infiniband verbs   : yes
epoll IO multiplex : yes
Berkeley-DB        : yes
libglusterfsclient : yes
argp-standalone    : no

[root@client1 glusterfs-2.0.9]#

make && make install
ldconfig


然后检查GlusterFS的版本(应该是2.0.9):

glusterfs --version

[root@client1 glusterfs-2.0.9]# glusterfs --version
glusterfs 2.0.9 built on Feb 19 2010 19:20:46
Repository revision: v2.0.9
Copyright (c) 2006-2009 Gluster Inc. <http://www.gluster.com>
GlusterFS comes with ABSOLUTELY NO WARRANTY.
You may redistribute copies of GlusterFS under the terms of the GNU General Public License.
[root@client1 glusterfs-2.0.9]#


然后我们创建如下两个目录:

mkdir /mnt/glusterfs
mkdir /etc/glusterfs


接下来创建文件/etc/glusterfs/glusterfs.vol:

vi /etc/glusterfs/glusterfs.vol

volume remote
type protocol/client
option transport-type tcp
option remote-host server1.example.com # can be IP or hostname
option remote-subvolume brick
end-volume

volume writebehind
type performance/write-behind
option window-size 4MB
subvolumes remote
end-volume

volume cache
type performance/io-cache
option cache-size 512MB
subvolumes writebehind
end-volume


确保你在option remote-host行使用了正确的服务器主机名或者IP地址!


就这么回事! 现在你可以使用下面两个命令中的一个来将GlusterFS文件系统挂载到/mnt/glusterfs:

glusterfs -f /etc/glusterfs/glusterfs.vol /mnt/glusterfs

或者

mount -t glusterfs /etc/glusterfs/glusterfs.vol /mnt/glusterfs


你现在应该可以在mount的输出中看到新的共享信息...

[root@client1 glusterfs-2.0.9]# mount
/dev/mapper/vg_server2-lv_root on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
/etc/glusterfs/glusterfs.vol on /mnt/glusterfs type fuse.glusterfs (rw,allow_other,default_permissions,max_read=131072)
[root@client1 glusterfs-2.0.9]#

... 还有...

df -h

[root@client1 glusterfs-2.0.9]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_server2-lv_root
                       29G  2.6G   25G  10% /
tmpfs                 185M     0  185M   0% /dev/shm
/dev/sda1             194M   23M  161M  13% /boot
/etc/glusterfs/glusterfs.vol
                       29G  2.7G   25G  10% /mnt/glusterfs
[root@client1 glusterfs-2.0.9]#


相比于在客户端手动挂载GlusterFS共享,你还可以修改/etc/fstab以 实现在客户端启动时让共享存储自动挂载。

打开/etc/fstab并且添加下面这行:

vi /etc/fstab

[...]
/etc/glusterfs/glusterfs.vol /mnt/glusterfs glusterfs defaults 0 0


想要测试修改过的/etc/fstab是否正常工作,重启客户端:

reboot


重启之后,你可以在下列命令的输出中发现共享存储的信息...

df -h

... 和...

mount

 

4 相关链接


原文:http://www.howtoforge.com/creating-an-nfs-like-standalone-storage- server-with-glusterfs-on-fedora-12

时间:2010-02-24 16:54 来源: 作者:lucklily 原文链接

好文,顶一下
(7)
100%
文章真差,踩一下
(0)
0%
------分隔线----------------------------


把开源带在你的身边-精美linux小纪念品
无觅相关文章插件,快速提升流量