实习成果—GlusterFS

 

简介

在Gluster Storage Platform上,管理员可以通过创建一个全局的存储空间来存储所有的虚拟机,然后让文件系统自动分布数据和平衡资源负载。除了加强虚拟机磁盘镜像本身, Gluster Storage Platform也为在虚拟机上层的应用提供了NAS卷。它支持GlusterFS自己的客户端,CIFS,NFS和WebDAV协议。在一个单独的全局namespace里,卷可以增加到数PB。此外,复制和自我在线修复能力使得虚拟机可以永不停止地运转。

协议支持

GlusterFS提供了最大的灵活性:你可以自由地用各种现在存在的协议输出存储卷。例如,这允许一个Unix Server通过网络文件系统协议(NFS)访问一个放在Windows Vista客户端上的共享文件夹(CIFS)里的文件。Gluster支持的每一个协议都有着自己的性能表现,可管理性,以及操作系统支持优势,总结如下:

1. Gluster自己的协议:

Gluster从最底层做起,来设计这个协议,从而支持大规模的对外扩展并简化管理。尽管它功能很强大很灵活,但它只是像一个标准的应用程序一样安装,而不需要任何的内核操作。这个协议自动支持所有Gluster的实施。它兼容POSIX,这使得现有的应用可以不经过任何改变就跨存储运行。并且它支持GNU/Linux和Mac OS X操作系统(10.4以上)。

2. NFS:

GNU/Linux和Unix操作系统有内置的NFS客户端支持,这使得应用程序无需安装任何其它软件就可以访问存储卷。这是一个对通用的文件存储和归档很有用,易于部署的协议。

3. Server Message Block/Common Internet File System (SMB/CIFS):

微软的操作系统有内置的CIFS客户端支持,这使得这个协议对于在windows环境下的通用的文件存储和归档是一个理想的选择。

4. HTTP GET/PUT:

GlusterFS提供了一个兼容亚马逊S3云存储服务的分布式对象存储机制。这对于可扩展的Web或者基于云的应用是很理想的。它还提供了一个说明充分的可以RESETful的,并绑定了流行的编程语言的API。图形化界面十分简单,用户甚至可以通过浏览器中的JavaScript对其进行访问。

5. Web-based Distributed Authoring and Versioning (WebDAV):

这个协议提供了一个基于标准的,分布式对象存储机制,它采用HTTP作为底层传输协议。功能比基本的HTTP GET/PUT命令更加强大。它通过一个全局的namespace提供了对文件,文件夹,以及meta属性的支持。

6. File Transfer Protocol (FTP):

这是网络下载文件的最流行的协议之一,它适用于在网络上传输大容量的文件。所有主流的系统都支持FTP协议。由于它工作在应用层,它是最互通的协议。

 

实习成果—Gluster File System 安装及使用指南

1. 配置要求

硬件要求:GlusterFS支持大多数的符合商业标准的x86-64bit硬件平台。存储可以是直接附加的存储,RAID盘,以SATA/SAS/FC盘做后端的FC/Infiniband/iSCSI SAN盘。

1.1 网路要求

GlusterFS支持千兆网,百兆网和Infiniband(光纤)。

1.2 操作系统要求

GlusterFS可以支持很多POSIX兼容的系统,如GNU/Linux, FreeBSD, OpenSolaris, Solaris, 和Mac OS X。Gluster建议采用Ext3, Ext4或者ZFS作为子系统磁盘的格式。Gluster对GNU/Linux, Mac OS X, FreeBSD和OpenSolaris有内嵌的支持。

1.3 本文中的安装测试环境

Ubuntu Server 9.10

千兆网

服务器端IP: 124.127.117.28, 124.127.117.11, 124.127.117.9

客户端IP:124.127.117.12

2. 在服务器端,从源码安装GlusterFS,用作GlusterFS Server。

下载最新版本(http://www.gluster.org/download

官方FTP主页(http://ftp.gluster.com/pub/gluster/glusterfs/

本文中安装测试所用的GlusterFS为version3.0.4

2.1 安装必要的支持软件包

sudo apt-get install flex
sudo apt-get install bison

2.2 开始安装

tar -xzf glusterfs-version.tar.gz
cd glusterfs-version
./configure --prefix= > /dev/null
sudo make
sudo make insatll

2.3 安装完毕,执行

sudo ldconfig

2.4 检验安装是否成功,输入

glusterfs --version

显示如下输出则说明安装成功

Glusterfs 3.0.4 built on Apr 21 2010 11:54:11
Repository revision: v3.0.4
Copyright (c) 2006-2009 Gluster Inc.
GlusterFS comes with ABSOLUTELY NO WARRANTY.
You may redistribute copies of GlusterFS under the terms of the GNU General Public License.

2.5 创建必要的文件

sudo mkdir /home/dir1
sudo chmod 1777 /home/dir1

2.6 配置

此配置方法为手工配置,参数设置简单。此方法可以用于在一台服务器上同时启动多个Sever。另外一种配制方法将在最后介绍。

cd /etc/glusterfs

在此目录下有两个文件:glusterfsd.vol.sample,glusterfs.vol.sample 。glusterfsd.vol.sample,是服务器端配置文件的模板;glusterfs.vol.sample 是客户端配置文件的模板。

2.6.1 备份客户端配置文件模板

sudo cp glusterfsd.vol.sample glusterfsd.vol

2.6.2 编辑服务器端配置文件

sudo vim glusterfsd.vol

编辑glusterfsd.vol中内容如下:

volume brick
type storage/posix # POSIX FS translator
option directory /home/dir1 # Export this directory
end-volume
volume server
type protocol/server
option transport-type tcp/server
option transport.socket.bind-address 124.127.117.28 # Default is to listen on all interfaces
subvolumes brick
option auth.addr.brick.allow * # Allow access to "brick" volume
end-volume

2.7 启动Server

sudo glusterfsd -f /etc/glusterfs/glusterfsd.vol -l /var/log/glusterfs/glusterfsd.log

2.8 检验Server启动是否成功

2.8.1 检验glusterfsd进程是否存在

ps ax|grep -v grep |grep gluster

显示如下则说明Server进程启动

7535 ? Ssl 0:00 glusterfsd -f /etc/glusterfs/glusterfsd.vol -l /var/log/glusterfs/glusterfsd.log

2.8.2 检验端口6996是否启用监听

netstat -ln | grep 6996

显示如下则说明6996端口处在监听状态

tcp 0 0 124.127.117.28:6996 0.0.0.0:* LISTEN

2.8.3 查看log

vim /var/log/glusterfs/glusterfsd.log

log末尾显示如下则说明Server正常启动

+------------------------------------------------------------------------------+
[2010-05-14 10:15:18] N [glusterfsd.c:1408:main] glusterfs: Successfully started

2.9 关闭Server

用sudo kill -9加进程号,结束server进程。如:

sudo kill -9 7535

3. 在客户端,从源码安装GlusterFS,用作GlusterFS Client

3.1 客户端必须要有FUSE的内核支持。FUSE可到http://fuse.sourceforge.net下载安装。

Ubuntu9.10的内核里应该是有FUSE的,但是也许是没有开启,我在机器上查,没有FUSE加载。用网上的命令试了,也开启不了。于是我去下了个来安。安起来比较麻烦,于是后来放弃了。但是Gluster却可以用,至今没搞懂。。。

3.2 从源码安装GlusterFS。方法步骤参看服务器端安装。

3.3 配置:

此配置方法为手工配置,参数设置简单。另外一种配制方法将在最后介绍。

cd /etc/glusterfs

在此目录下有两个文件:glusterfsd.vol.sample,glusterfs.vol.sample。glusterfsd.vol.sample,是服务器端配置文件的模板;glusterfs.vol.sample 是客户端配置文件的模板。

3.3.1 备份客户端配置文件模板

sudo cp glusterfs.vol.sample glusterfs.vol

3.3.2 编辑客户端配置文件

sudo vim glusterfs.vol

编辑glusterfs.vol中内容如下:

volume client
type protocol/client
option transport-type tcp/client
option remote-host 124.127.117.28 # IP address of the remote brick
option remote-subvolume brick # name of the remote volume
end-volume

3.4 在客户端挂载

sudo glusterfs -f /etc/glusterfs/glusterfs.vol -l /var/log/glusterfs/glusterfs.log /mnt/

3.5 检测客户端是否正常挂载

3.5.1 查看挂在盘符

df -h

显示如下则说明客户端正常挂载了服务器端的磁盘 (即 /home/dir1)

Filesystem    Size     Used       Avail      Use%   Mounted on
/dev/sda1      21G      14G        5.7G       71%    /
udev          502M     176K        501M        1%    /dev
none          502M        0        502M        0%    /dev/shm
none          502M      56K        502M        1%    /var/run
none          502M        0        502M        0%    /var/lock
none          502M        0        502M        0%    /lib/init/rw
/dev/sda6     9.2G     150M        8.6G        2%    /image
/dev/sda7     115G     188M        109G        1%     /data
/etc/glusterfs/glusterfs.vol
              913G      33G        834G        4%      /mnt

3.5.2 查看glusterfs进程是否存在

ps ax|grep -v grep |grep gluster

显示如下则说明glusterfs进程正常启动

23593 ? Ssl 0:00 glusterfs -f /etc/glusterfs/glusterfs.vol -l /var/log/glusterfs/glusterfs.log /mnt/

3.5.3 查看log

vim /var/log/glusterfs/glusterfs.log

log末尾显示如下则说明Client正常启动,并和Server交互正常

+------------------------------------------------------------------------------+
[2010-05-14 10:09:38] N [glusterfsd.c:1408:main] glusterfs: Successfully started
[2010-05-14 10:09:38] N [client-protocol.c:6246:client_setvolume_cbk] client: Connected to 124.127.117.28:6996, attached to remote volume 'brick'.
[2010-05-14 10:09:38] N [client-protocol.c:6246:client_setvolume_cbk] client: Connected to 124.127.117.28:6996, attached to remote volume 'brick'.
[2010-05-14 10:09:38] N [fuse-bridge.c:2950:fuse_init] glusterfs-fuse: FUSE inited with protocol versions: glusterfs 7.13 kernel 7.12

3.6 在客户端进行操作

cd /mnt

进入挂载目录后即可在客户端实现各种文件读写工作。

3.7 卸载时用命令

sudo umount /mnt

4. 利用GlusterFS内建的命令自动生成配置文件,并实现Client与Server的交互

glusterfs-volgen是GlusterFS内建的命令,可以用来生成配置文件。

4.1 生成分布式系统的配置文件

glusterfs-volgen –name <storage name> <hostname/ IP address>:<export directory>

如本例中有3个Server,分别是28, 11, 9。可以输入以下命令来生成配置文件。

glusterfs-volgen --name test 124.127.117.28:/home/dir1 124.127.117.11:/home/dir1 124.127.117.9:/home/dir1

如此,系统会生成4个文件:

124.127.117.28-test-export.vol

124.127.117.11-test-export.vol

124.127.117.19-test-export.vol

test-tcp.vol

前三个分别为28,11,9这三个Server端的配置文件,最后一个为Client端的配置文件。

4.2 配置服务器端

把124.127.117.28-test-export.vol拷贝到28服务器上,并进行如下操作,以创建GlusterFS Server的配置文件。

sudo cp 124.127.117.28-test-export.vol /etc/glusterfs/glusterfsd.vol

在11和9服务器上,安对应的文件重复以上操作。

4.3 启动Server

sudo /etc/init.d/glusterfsd start

显示如下则说明启动成功

* Starting glusterfs server glusterfsd [ OK ]

也可以他通过查看log了解Server启动情况

vim /var/log/glusterfs/etc-glusterfs-glusterfsd.vol.log

在log的末尾显示如下则表明启动成功

+------------------------------------------------------------------------------+
[2010-05-16 22:41:31] N [glusterfsd.c:1408:main] glusterfs: Successfully started

4.4 配置客户端

把test-tcp.vol拷贝到12服务器上,并进行如下操作,以创建GlusterFS Client的配置文件。

sudo cp test-tcp.vol /etc/glusterfs/glusterfs.vol

4.5 在client挂载

4.5.1 创建挂载点

sudo mkdir /mnt/glusterfs

4.5.2 挂载

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

4.5.3检测挂载是否成功

输入一下命令查看挂载情况

df -h

输出如下则说明正常挂载

Filesystem  Size  Used  Avail  Use%  Mounted on
/dev/sda1    21G   14G   5.7G   71%  /
udev        502M  176K   501M    1%  /dev
none        502M     0   502M    0%  /dev/shm
none        502M   56K   502M    1%  /var/run
none        502M     0   502M    0%  /var/lock
none        502M     0   502M    0%  /lib/init/rw
/dev/sda6   9.2G  150M   8.6G    2%  /image
/dev/sda7   115G  188M   109G    1%  /data
/etc/glusterfs/glusterfs.vol
            949G   79G   822G    9%  /mnt/glusterfs

也可查看log

vim /var/log/glusterfs/mnt-glusterfs.log

4.6 在客户端操作

cd /mnt/glusterfs

进入挂载目录后即可在客户端实现各种文件读写工作。

4.7 卸载

sudo umount /mnt/glusterfs

实习成果—Gluster Storage Platform

0 Comments and 0 Reactions

简介

Gluster Storage Platform是一个开源的集群存储解决方案。这个系统是一个功能强大的灵活的解决方案,它简化了管理非结构化的文件数据的工作,无论是几TB或者好几PB的数据量。Gluster Storage Platform集成了Gluster File System,它是一个操作系统层,一个基于web的管理界面的安装软件。整个安装过程十分简单,用户只需点几下鼠标就可以部署上百TB的集群存储。Gluster Storage Platform运行在标准的工业化硬件平台上,并可以低成本地实现多次扩展。

Gluster Storage Platform把存储积木,磁盘聚集,内存资源,以及管理数据的功能集成在了一个全局的namespace中。它采用的可折叠的文件系统结构,可以简单地通过插件模块对特定的应用配置进行优化,在各种工作负载的情况下优化系统的性能。

优势

更低的成本—开源软件运行在商用的硬件上:使用工业化的标准硬件,利用现有的系统。

可扩展性—可以线性扩展到数百PB。

性能—没有metadata server造成的瓶颈。

高可用性—数据镜像,实时的自我修复能力。

更好的虚拟存储—时刻保持虚拟机的运转。。

简洁—完善的基于web的管理界面:模块化的结构使得管理员可以各种负载轻松地对系统进行配置。

关键特性

1. 可扩展性—线性扩展能力使得它可以很容易地根据需要进行扩展。

真正的线性扩展

可扩展到数百PB

添加新节点的时候只需点几下鼠标

2. 性能—独有的一个消除metadata server的结构,并提供了真正的突破性的了IOPS(Input/Output Operations Per Second)和吞吐量。

没有metadata server

没有单点故障

自动负载均衡

文件条目分布在数十个存储块上

3. 独立内核—可以在性能不受任何影响的情况下实现内核独立。

没有复杂的跨平台兼容性问题

没有升级问题

易于自定义应用程序和模块

4. 高可用性—包括数据镜像和实时自我修复。

可以自动检测并修复错误,甚至是在文件运行或者是硬件故障的时候

5. 易于部署和管理—-可以在15分钟内部署PB级的存储。通过集成的容量、数据、资源和服务器的管理,持续性的维护变得很简单并且高效。

自我恢复

自动修复错误

基于向导的部署

集中的日志和报告

在升级和添加节点的时候,系统会继续保持运转

6. 优化虚拟服务器—为服务器虚拟化提供真正的虚拟存储

把虚拟机镜像和数据存储在独立的namespace中

虚拟机镜像的多备份保证了系统的持续性能—即使在硬件故障的时候

7. 快捷灵活的配置—Gluster功能按键可以使管理员为自己的系统负载进行配置,可以轻松地优化小文件,云计算,或者其它任何用途。

提供自带的客户端,但不是必须的

支持NFS,CIFS,HTTP,Web-DAV和FTP协议

网络:千兆以太网,百兆以太网,光纤

8. 灵活的模块设计—Gluster的模式化结构使得添加新特性变得很简单

简单快捷地增强新特性

根据自己系统的工作负载设计Gluster

禁用不必要的特性以提升系统性能

Gluster Storage Platform系统结构



实习成果—Gluster原理分析

2 Comments and 0 Reactions

简介

GlusterFS是一个可扩展的开源集群文件系统。它提供了全局的namespace,分布式的前端,并可以轻松地扩展到数百PB的量级。GlusterFS是Gluster Storage System的核心堆栈。

设计的核心是一个全新的存储结构构建观点。其结果是一个可线性扩展的,高弹性的,并可提供非凡业绩的系统。 Gluster Storage Platform集成了GlusterFS、操作系统层和基于Web的管理及安装工具。这些把部署PB级规模的集群存储简化到了两个步骤,整个过程只需要点几次鼠标。

线性扩展

最根本的变化—为了实现真正的线性扩展,必须进行三个转变

可扩展性:

  1. metadata同步的消除和升级更新。
  2. 数据的有效分配,从而实现可扩展性和可靠性
  3. 使并行性能达到最大化

这些转变的影响是很显著的—在保持弹性的同时实现了可扩展性。更好的是,一个平衡的系统可以获得更高的性能。

Metadata—Gluster可扩展性的关键

Gluster结构中最重要的一个优势是它从任何依赖metadata的结构中解放出来,在所有商业化的存储管理系统中一枝独秀。这种根本的结构变化解决的是围绕着文件系统中的metadata的核心问题。

Gluster摆脱了metadata,他独一无二的无metadata的服务器结构消除了瓶颈效应,并提供了增强的扩展能力,可靠性以及性能。

Gluster不是将与文件,文件夹有关的metadata存在一系列静态的结构上,而是使用算法动态生成同等的信息。这些计算的结果是一个Gluster系统中一个节点所获得的任何必要的动态值。这消除了metadata不能同步的风险,因为这种算法是全局的,在分布式系统中无所不在。由于这些根本的原因,系统不可能永远不同步,并且这对于性能的提升是惊人的。

因为系统对节点没有“保持同步”的要求,Gluster可以独立地处理分布式结构中所有位置的数据访问。这使得无损耗的线性扩展得以实现。

此外,由于不依赖于静态数据结构(无论是单实例或可复制的整个分布式部署),Gluster速度较快。原因有二:配置性;以及与处理任何申请级别的文件系统相关I/O活动的工作量比例减少。Gluster不受metadata瓶颈的限制,所以这里可以提出一些大胆的想法。无论由什么产生的工作量(如NFS, CIFS, 以及本地应用软件的实例对I/O的请求),你可以简单地通过将CPU和硬盘升级到原来的两倍,来达到两倍的系统性能。Gluster中的每个元素都可以靠其独立的全局算法,独立地处理metadata。从而系统资源不必像传统文件系统终端那样长期处于等待状态,并受硬盘I/O瓶颈限制。

Gluster更快,可实现真正的线性扩展,并且更加安全

Gluster使每个独立的操作更快。因为它用算法计算metadata,并且这种方法比从任何介质中取metadata要快。

Gluster使大型的不断增长的独立系统更快。因为对存储在一个位置的任何一个单独的metadata实例来说,不会有任何争夺发生。

Gluster使分布式系统更快,并能实现真正的线性扩展。因为每个节点在它们处理自己metadata的算法时是独立的,这避免了同步metadata的需要。

Gluster使分布式部署更加安全。因为他避免了由同步metadata带来的各种风险。

数据分布:复制如何实现

Gluster用一种算法取代了metadata,来决定metadata在实时中的状态。通过这种算法,系统可以智能地处理文件分布,并可确保比一个单独的存储服务器容量大的文件可以被正确地处理。

弹性Hash

弹性Hash是由Gluster研发出的一种新的具体存储算法。它负责决定数据保存的位置,是摆脱metadada的关键。

实现的核心有两个关键特性:

  1. 这种算法可以保证在添删服务器时不丢失对已存在的数据的追踪。
  2. 这种算法工作在文件层,而不是块层。

这种添删服务器的能力并不是一种典型的算法。大多数功能的实现是基于一个事实,即位置数据的量保持不变。在存储中,添加存储通常是通过抽象层(逻辑卷)实现,所以不需要对特定的文件系统进行修改。然而Gluster中的多个文件系统互相粘合在一起,通过metadada来追踪每个信息的位置。而在长期应用中metadata不需要可扩展性。

第二个特性的特点很显著:从块层向文件层的转变,加上抛弃了metadata,Gluster有了可以扩展到非凡水平的能力。

弹性的Hash使得对文件的存放位置的选择在host层决定,然后系统再把完成的文件发到选定的存储中。通过管理员的设定,多个文件的多个副本可以被放置到不同的host上去。这意味着,host以及所有与其相关的磁盘可以因为任何原因而下线,而由其它弄得host来担任文件的完整副本(例如网络分割,甚至只是系统维护)。

弹性的Hash使这些得到更进一步的推进。在优化选择的时候不仅基于可用性,更基于性能。所以在读取文件时,系统会选择离用户更近的副本。这种特性为系统提供了一种天然的复制机制,因为存储服务器集群可以分散把同样的文件副本分发到两个站点,并让用户选择离他们最近的站点。

当系统中出现永久性损坏的时候(如一台服务器的磁盘发生故障,导致本地文件无法读取),系统会更换主机并将其加入集群,并自动开始恢复过程。

并行

Gluster的系统决定运行在host级别,而不是独立的文件系统或者块级别,这使得它可以通过多CPU进行扩展。并且可以更好地分配在服务器的CPU以及其磁盘状态均衡的环境下,运行一个存储网络时的负载。随着每个CPU成为一个网络链接,所有传统文件系统中影响其扩展能力的严重缺陷在Gluster的结构中得到了良好的解决。

稳定性

假设故障

假设的故障有硬件故障, 磁盘故障,网络被分割,以及管理员误将电源线拔掉。Gluster对这些假定的故障都有处理预案,系统会自动处理这些故障,而不需要管理员的参与。

不重做已经得到信任的东西

在现有的操作系统中,已经有很多经过充分测试的磁盘文件系统,Gluster并不会去取代他们。相反的,Gluster站在巨人的肩膀上,并实地验证他们的可靠性。这除了证明了Gluster充分应变能力以外,还使得管理员在已存在的host上使用已经公认的磁盘文件系统的时候,即使没有Gluster层,也可以看到每个host上面的文件。

这使得管理员具有一个全新级别的自由度。Gluster使得管理员可以在任何时候很容易地停止使用Gluster,而不是将管理员锁定到这个特定的文件系统上。这样管理员可以使任何数据不受束缚。

不依赖于metadata

Gluster提供了一流的可靠性。不依赖于metadata,系统将不用担心任何源于metadada的故障。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值