Gluster 文件系统 3.3 管理员手册
使用gluster 文件系统
前言
本指南介绍如何配置,操作和管理Gluster的文件系统(GlusterFS)
本指南是针对那些有兴趣在配置和管理GlusterFS系统管理员。
本指南假定您熟悉Linux操作系统,文件系统的概念,
GlusterFS概念和GlusterFS安装
一、介绍Gluster的文件系统
GlusterFS是一个开源的集群文件系统能够扩展到PB级,能够处理数以千计的客户请求。 GlusterFS可以灵活组合与商品的物理,虚拟,和云资源,在的一小部分提供高度可用和高性能的企业级存储传统解决方案的成本。
GlusterFS集群能够借助infiniband RDMA和/或TCP / IP聚集不同节点的磁盘和内存资源,使用统一全局命名空间进行数据的管理。 GlusterFS是一种基于可堆叠的用户空间设计,可为各种不同的数据负载提供优异的性能。
图1.1。虚拟化的云计算环境
GlusterFS是专为当今的高性能,虚拟化的云计算环境进行设计,不同于传统的数据中心,云计算环境需要支持多用户以及增长或收缩资源需求的能力。企业可以扩展容量,性能和可用性的需求,能够跨私有云,公共云和混合环境部署。GlusterFS已经在上千家企业进行生产应用,跨越媒体,医疗保健,政府,教育,Web 2.0和金融服务等领域。
二、管理glusterd服务
安装GlusterFS后,您必须启动glusterd服务。该glusterd服务为Gluster进行弹性卷管理,监督glusterfs进程以及协调动态卷的操作,比如跨多个存储服务器进行无中断的添加和删除卷的操作。
本节将介绍如何通过以下方式启动glusterd服务:
•第2.1节“启动和手动停止glusterd”
•第2.2节,“自动启动glusterd”
注意:您必须在所有GlusterFS服务器中启动glusterd。
2.1 手动启动和停止glusterd
本节介绍如何手动启动和停止glusterd
•要手动启动glusterd,输入以下命令:
# /etc/init.d/glusterd start
•要手动停止glusterd,输入以下命令:
# /etc/init.d/glusterd stop
2.2 自动启动glusterd
本节介绍如何配置系统在启动的时候自动启动glusterd服务
2.2.1 基于Red Hat的系统
要配置基于Red Hat的系统在启动的时候自动启动glusterd服务,命令如下:
# chkconfig glusterd on
2.2.2 基于Debian的系统
要配置基于Debian的系统在启动的时候自动启动glusterd服务,命令如下:
# update-rc.d glusterd defaults
2.2.3 除了Red Hat和Debain的其他系统
要配置其他系统在启动的时候自动启动glusterd服务,将以下条目添加到/etc / rc.local文件中:
# echo "glusterd" >> /etc/rc.local
三、使用Gluster的命令行控制台管理器
Gluster的控制台管理器是一个命令行实用程序,简化了存储环境的配置和管理。Gluster的控制台管理器类似于LVM(逻辑卷管理器),CLI或ZFS命令行界面,但它在多个存储服务器间进行同步。您可以使用Gluster的控制台管理器即使卷的已经被挂载或正在使用,Gluster的所有Gluster的服务器会自动同步卷的配置信息。
使用Gluster的控制台管理器可以创建新卷,启动卷,停止卷,即使在使用过程中您也可以添加brick到卷,从现有卷删除brick,以及改变卷设置(如某些传输特定的配置)以及其它操作。
您也可以使用这些命令来创建自动化脚本,以及使用这些命令作为一个API,允许与第三方应用的集成。
运行Gluster的控制台管理器
您可以通过调用命令或在交互模式在任何GlusterFS服务器上运行的Gluster的控制台管理器运行Gluster的命令,。您还可以远程通过SSH执行Gluster的命令。
•直接运行命令:
# gluster peer command
例如:
# gluster peer status
•要在交互模式下运行Gluster的控制台管理器
# gluster
您可以从控制台管理器提示符下执行Gluster的命令:
gluster> command
例如:检查连接的服务器的状态
#gluster
gluster> peer status
显示连接服务器的状态
对于任何安装了Gluster的服务器,检查所有受支持的命令,使用'gluster help’
四、建立信任的存储池
在配置一个GlusterFS卷前您必须创建一个可信的存储池,可提供brick到存储池的服务器。存储池是存储服务器的可信网络。当您启动第一个服务器,存储池由单独的服务器组成。要添加额外的存储服务器到存储池,可以从已经是存储池的一部分的存储服务器使用probe命令。
注意:在第一台服务器/本地主机上不要自己添加自己的(probe)。
想要添加到存储池中的所有存储服务器必须运行glusterd服务。参见第2章,了解更多管理glusterd服务的信息。
4.1 将服务器添加到受信任的存储池
要创建一个值得信赖的存储池,将服务器添加到受信任的存储池中
1. 用于创建存储池的主机名必须是能够被DNS解析的。还要确保防火墙没有阻止请求/回复。(iptables -F)
将服务器添加到存储池:
# gluster peer probe server
例如,要创建的四台服务器组成一个值得信赖的存储池,从server1添加三个服务器的存储池:
# glusterpeer probe server2
Probesuccessful
# glusterpeer probe server3
Probesuccessful
# glustereer probe server4
Probesuccessful
2. 在第一个服务器使用下面的命令验证对方身份:
状态显示中会显示与自己peer的节点而不会显示自己的相关信息,在当前节点的
/var/lib/glusterd/peer 目录中会有以其他节点uuid命名的文件。记录节点的uuid,state,主机名。
# glusterpeer status
Number ofPeers: 3
Hostname:server2
Uuid:5e987bda-16dd-43c2-835b-08b7d55e94e5
State:Peer in Cluster (Connected)
Hostname:server3
Uuid:1e0ca3aa-9ef7-4f66-8f15-cbc348f29ff7
State:Peer in Cluster (Connected)
Hostname:server4
Uuid:3e0caba-9df7-4f66-8e5d-cbc348f29ff7
State:Peer in Cluster (Connected)
4.2 从受信任的存储池删除服务器
从存储池中删除服务器:
# gluster peer detach server
例如,从受信任的存储池中删除server4:
# glusterpeer detach server4
Detach successful
五、配置GlusterFS服务器的卷
卷是brick的逻辑集合,其中每个在可信存储池中的服务器上的brick为卷提供目录。大多数Gluster的管理操作均在卷上执行。
若要在您的存储环境中创建新卷,需要指定包含该卷的brick。在挂载一个新卷前,你必须先启动它。
•存储环境中支持创建下列类型的卷:
•分布式 - 分布文件到整个卷的主机上。分布式卷使用场景为大规模存储和冗余不重要或者由硬件/软件层来提供的。欲了解更多信息,请参见第5.1节“创建分布式卷”。
复制 - 复制卷中文件跨brick。在高可用性和高可靠性环境中使用复制卷。欲了解更多信息,请参见第5.2节“创建复制卷”。
条带卷 – 在bricks中进行数据的条带化。在高并发环境下访问非常大的文件应使用条带卷。欲了解更多信息,请参见第5.3节“创建条带卷”。
分布式条带卷 - 分布式条带卷,集群中有两个或多个节点的数据。您应该使用分布式带区卷,适合需要扩展存储和高并发环境下访问非常大的文件。欲了解更多信息,请参见第5.4节“创建分布式条带卷”。
•分布式复制 - 分布式复制会复制整个卷中文件跨越brick。分布式复制卷适合需要存储扩展和高可靠性。分布式复制卷在大多数环境也提供了更好的读取性能。欲了解更多信息,请参见第5.5节“创建分布式复制卷“。
分布式条带复制 - 分布式条带复制,使用分布式条带复制卷适合在高并发环境下的非常大的文件和要求并行访问的性能的场景。在此版本中,只支持 Map Reduce workloads。欲了解更多信息,请参见第5.6节“创建分布式条带复制卷”。
•条带复制 - 跨条纹砖复制复制卷的条纹数据集群中。为了获得最佳结果,适合在高并发环境下有非常大的文件和要求并行访问性能。在此版本中,只支持 Map Reduce workloads.。欲了解更多信息,请参见第5.7节“创建条带复制卷”。
要创建一个新卷
•创建一个新卷:
# gluster volume create NEW-VOLNAME [stripe COUNT |replica COUNT]
[transport [tcp | rdma | tcp,rdma]] NEW-BRICK1NEW-BRICK2 NEW-BRICK3...
例如,创建一个卷名叫test-volume包含server3:/exp3 and server4:/exp4:
# glustervolume create test-volume server3:/exp3 server4:/exp4
Creationof test-volume has been successful
Please startthe volume to access data.
5.1 创建分布式卷
分布式卷上的文件都随机分布在包含的brick中。使用分布式卷,扩展存储和冗余不重要的或由其它硬件/软件层提供。
注意:分布式卷盘/服务器故障可能会导致严重的数据丢失,因为目录的内容是随机分布在卷中
图5.1 分布式卷
要创建一个分布式卷
1. 建立如前面4.1节中描述的可信存储池,“将服务器添加到受信任的存储池”.
2. 创建分布式卷:
# gluster volume create NEW-VOLNAME [transport [tcp |rdma | tcp,rdma]]
NEW-BRICK...
例如,要创建一个由四个存储服务器组成的使用TCP的分布式卷:
# glustervolume create test-volume server1:/exp1 server2:/exp2 server3:/exp3 server4:/
exp4
Creationof test-volume has been successful
Please startthe volume to access data.
(可选)可以显示卷信息:
# glustervolume info
VolumeName: test-volume
Type:Distribute
Status:Created
Number ofBricks: 4
Transport-type:tcp
Bricks:
Brick1:server1:/exp1
Brick2:server2:/exp2
Brick3:server3:/exp3
Brick4: server4:/exp4
例如,要建立在InfiniBand的分布式卷有四个存储服务器:
# glustervolume create test-volume transport rdma server1:/exp1 server2:/exp2 server3:/
exp3server4:/exp4
Creationof test-volume has been successful
Pleasestart the volume to access data.
如果未指定传输类型,TCP作为默认值。您还可以设置是否需要额外的选项,例如auth.allow或auth.reject。欲了解更多信息,请参见第7.1节,“配置卷选项”
请确保您启动卷,然后再尝试挂载它们,见第5.8节“启动卷”了解详情。
5.2 创建复制卷
复制卷模式会在多个brick上创建文件的副本。您可以在需要高可用性和高可靠性中使用复制卷。
注意:每次添加的Brick的数量应该与副本数的数量相同,为了保证数据安全,需要卷中的brick在不同的服务器上。
图5.2 复制卷
要创建一个复制的卷
建立如前面4.1节中描述的可信存储池“,将服务器添加到受信任的存储池”。
创建复制卷:
#gluster volume create NEW-VOLNAME [replica COUNT] [transport [tcp |
rdma |tcp,rdma]] NEW-BRICK...
例如,要创建两个存储服务器复制的卷:
# glustervolume create test-volume replica 2 transport tcp server1:/exp1 server2:/exp2
Creationof test-volume has been successful
Please startthe volume to access data.
如果未指定传输类型,TCP作为默认值。您还可以设置是否需要额外的选项,例如auth.allow或auth.reject。欲了解更多信息,请参见第7.1节,“调节卷选项”
5.3 创建条带卷
数据会被条带化到所有节点。为了获得最佳结果,使用条带卷应该在高并发环境下访问非常大的文件的情形下。
注意:每次添加的brick的数量应该与条带卷数相等。
图5.3 条带卷
创建一个条带卷
1. 建立如前面4.1节中描述的可信存储池,“将服务器添加到受信任的存储池”。
2. 创建带区卷:
# gluster volume create NEW-VOLNAME [stripe COUNT][transport [tcp |
rdma | tcp,rdma]] NEW-BRICK...
例如,要在两个存储服务器创建一个条带卷:
# glustervolume create test-volume stripe 2 transport tcp server1:/exp1 server2:/exp2
Creationof test-volume has been successful
Pleasestart the volume to access data.
如果未指定传输类型,TCP作为默认值。您还可以设置是否需要额外的选项,例如auth.allow或auth.reject。欲了解更多信息,请参见第7.1节,“调整卷选项“
5.4 创建分布式条带卷
分布式条带文件在集群中的两个或更多个节点上。适用场景为对扩展存储和高并发要求比较高,尤其是访问非常大的文件
注意:每次添加的Brick的数量应该跟条带的数量相等
图5.4 分布式条带卷
要创建一个分布式的条带卷
1. 建立如前面4.1节中描述的可信存储池,“将服务器添加到受信任的存储池”
2. 创建分布式带区卷:
# gluster volume create NEW-VOLNAME [stripe COUNT][transport [tcp |
rdma | tcp,rdma]] NEW-BRICK...
例如,要创建一个跨越八个存储服务器分布式条带卷:
# glustervolume create test-volume stripe 4 transport tcp server1:/exp1 server2:/exp2
server3:/exp3 server4:/exp4 server5:/exp5server6:/exp6 server7:/exp7 server8:/exp8
Creationof test-volume has been successful
Please startthe volume to access data.
如果未指定传输类型,TCP作为默认值。您还可以设置是否需要额外的选项,例如auth.allow或auth.reject。欲了解更多信息,请参见第7.1节,“调整卷选项”
注意:请确保您启动卷,然后再尝试挂载它们,否则客户端操作后,挂载将挂起,见第5.8节“启动卷”了解详情。
5.5 创建分布式复制卷
卷中的文件会复制到整个brick中。适用场景是对存储扩展和高可靠性有要求。分布式复制卷在大多数环境提供了更好的读取性能。
砖的数量应该是在副本数与分布式的倍数。此外,brick指定的顺序对数据的保护有很大的影响。每个replica_count连续brick在列表中你给将形成一个副本集,所有的副本集组合成卷集。为了确保副本集成员不放在同一个节点上,列出每个服务器上的第一块brick,然后是第二个brick,以相同的顺序在每个服务器上,依此类推.
图5.5 分布式复制卷
要创建一个分布式的复制卷
1. 建立如前面4.1节中描述的可信存储池,”将服务器添加到受信任的存储池”。
2. 创建分布式的复制卷:
# glustervolume create NEW-VOLNAME [replica COUNT] [transport [tcp |rdma | tcp,rdma]]NEW-BRICK...
例如,四个节点的分布式(复制)的卷具有双向镜像:
# glustervolume create test-volume replica 2 transport tcp server1:/exp1 server2:/exp2
server3:/exp3 server4:/exp4
Creationof test-volume has been successful
Pleasestart the volume to access data.
例如,要创建一个六节点分布式(复制)的卷具有双向镜像:
# glustervolume create test-volume replica 2 transport tcp server1:/exp1 server2:/exp2
server3:/exp3 server4:/exp4 server5:/exp5server6:/exp6
Creationof test-volume has been successful
Please startthe volume to access data.
如果未指定传输类型,TCP作为默认值。您还可以设置是否需要额外的选项,例如auth.allow或auth.reject。欲了解更多信息,请参见第7.1节,“调整卷选项”
请确保您启动卷,然后再尝试挂载它们,否则客户端操作后,挂载将挂起,见第5.8节“启动卷”了解详情。
5.6 创建分布式条带复制卷
分布式条带复制卷复制brick集群中的条带分布数据。适用于高并发环境下的非常大的文件和性能的并行访问。在此版本中,仅支持Map Reduce workloads。
注意:brick的数目应该是条带数和副本数的乘积。
要创建条带化分布的复制卷
1. 建立如前面4.1节中描述的可信存储池“将服务器添加到受信任的存储池”。
使用以下命令创建分布式条带复制卷:
# glustervolume create NEW-VOLNAME [stripe COUNT] [replica COUNT][transport [tcp | rdma| tcp,rdma]] NEW-BRICK...
使用以下命令创建分布式条带复制卷
# glustervolume create test-volume stripe 2 replica 2 transport tcp server1:/exp1
server2:/exp2server3:/exp3 server4:/exp4 server5:/exp5 server6:/exp6 server7:/exp7
server8:/exp8
Creationof test-volume has been successful
Please startthe volume to access data.
如果未指定传输类型,TCP作为默认值。您还可以设置是否需要额外的选项,例如auth.allow或auth.reject。欲了解更多信息,请参见第7.1节,“调整卷选项”
注意:请确保您启动卷,然后再尝试挂载它们,否则客户端操作后,挂载将挂起,见第5.8
节“启动卷”了解详情。
5.7 创建条带卷复制
在集群中以等量复制brick条带数据。为了获得最佳结果,适用场景为高并发环境下有非常大的文件和性能的并行访问。在此版本中,仅支持Map Reduce workloads。
注意:brick的数量应该是副本数和条带数复制乘积。
图5.6 条带复制卷
创建条带复制卷
1. 建立如前面4.1节中描述的可信存储池“将服务器添加到受信任的存储池”。
2.创建一个条带复制卷:
# glustervolume create NEW-VOLNAME [stripe COUNT] [replica COUNT]
[transport[tcp | rdma | tcp,rdma]] NEW-BRICK...
例如,要在四个存储服务器上创建条带复制卷:
# glustervolume create test-volume stripe 2 replica 2 transport tcp server1:/exp1
server2:/exp2 server3:/exp3 server4:/exp4
Creationof test-volume has been successful
Please startthe volume to access data.
要在六个存储服务器创建条带复制卷:
# glustervolume create test-volume stripe 3 replica 2 transport tcp server1:/exp1
server2:/exp2 server3:/exp3 server4:/exp4server5:/exp5 server6:/exp6
Creationof test-volume has been successful
Please startthe volume to access data.
如果未指定传输类型,TCP作为默认值。您还可以设置是否需要额外的选项,例如auth.allow或auth.reject。欲了解更多信息,请参见第7.1节,“调整卷选项”
注意:请确保您启动卷,然后再尝试安装它们,否则客户端操作后,挂载将挂起,见第5.8节“启动卷”了解详情。
5.8 启动卷
你必须启动卷,然后再尝试挂载它们。
启动卷
•启动卷:
# gluster volume start VOLNAME
例如,启动test-volume:
# glustervolume start test-volume
Startingtest-volume has been successful
六、访问数据 – 配置GlusterFS客户端
Gluster的卷可以通过多种方式来访问。人们可以使用Gluster的Native Client的方法,支持高并发,高性能和GNU/ Linux客户端透明故障切换。Gluster的出口使用NFS v3协议。
CIFS也可以通过使用Gluster本地挂载点为samba提供共享。
6.1 Gluster的本机客户端
Gluster的本地客户端是在用户空间运行的fuse-base客户端。如果想使用GlusterFS的所有功能推荐使用Gluster的本机客户端访问卷。
本节介绍了Gluster的本机客户端,并说明如何在机器安装客户端。本节还介绍了如何挂载客户端(包括手动和自动)
6.1.1 安装Gluster的本机客户端
Gluster的本地客户端依赖FUSE模块。为了确保FUSE模块被加载,执行以下命令:
1. 增加可加载的内核模块(LKM)到Linux内核:
# modprobe fuse
2. 验证fuse模块已经被加载
# dmesg |grep -i fuse
fuse init(API version 7.13)
6.1.1.1 在基于RPM版本上安装
在RPM版本的系统上安装Gluster的本地客户端
1. 在客户端上使用以下命令安装:
$ sudo yum -y install fusefuse-libs
2. 在客户端上下载最新版的glusterfs, glusterfs-fuse RPM,glusterfs包含GlusterFS和依赖库。glusterfs-fuse包含了挂载需要用到的fuse插件
注意:如果需要支持RDMA,必需的安装“glusterfs-RDMA'的RPM,。“glusterfs-RDMA'包含了InfiniBand互连RDMA传输模块。
下载地址http://bits.gluster.com/gluster/glusterfs/3.3.0/x86_64/.
3. 在客户端上安装Gluster的本机客户端
$ sudo rpm -i glusterfs-3.3.0-1.x86_64.rpm
$ sudo rpm -i glusterfs-fuse-3.3.0-1.x86_64.rpm
$ sudo rpm -i glusterfs-rdma-3.3.0-1.x86_64.rpm
6.1.1.2 在基于Debian的发行版上安装
在基于Debian的发行版安装Gluster的本机客户端
1. 下载最新的GlusterFS.Deb包
下载地址 http://www.gluster.org/download/.
2。卸载GlusterFSv3.1.x/v3.2.x(或更早版本)使用以下命令客户端:
$ sudo dpkg -r glusterfs
(可选) Run $sudo dpkg -purge glusterfs 删除配置文件
3. 使用以下命令在客户端上安装Gluster的本机客户端:
$ sudo dpkg -i glusterfs-$version.deb
例如:
$ sudo dpkg -i glusterfs-3.3.0.deb
6.1.1.3 通过源码安装
1. 从源代码编译和安装Gluster本地客户端
使用以下命令创建一个新的目录:
# mkdir glusterfs
# cd glusterfs
2. 下载源码
下载地址:http://www.gluster.org/download/.
3. 使用以下命令解压源代码:
# tar -xvzf glusterfs-3.3.0.tar.gz
4. 使用以下命令运行配置程序:
#./configure
...
GlusterFSconfigure summary
===========================
FUSEclient : yes
Infinibandverbs : yes
epoll IOmultiplex : yes
argp-standalone: no
fusermount: no
readline: yes
注意:上面显示的配置为举例,实际可能有所差别
5. 使用以下命令编译Gluster的本地客户端软件:
# make
# make install
6. 使用以下命令验证是否安装了正确版本的Gluster的本地客户端:
# glusterfs –-version
6.1.2 挂载卷
安装Gluster的本机客户端后,您需要挂载Gluster的卷来访问数据。有两种方法可以选择:
第6.1.2.1节,“手动挂载卷”
•6.1.2.2节,“自动挂载卷”
安装一个卷后,您可以使用在描述的过程测试安装的卷 第6.4节“测试已安装的卷”。
创建卷时选择的服务器名称应该是解析在客户机上。您可以使用适当的/ etc / hosts中的条目或DNS服务器来解析服务器名到IP地址。
6.1.2.1 手动挂载卷
手动挂载一个Gluster的卷
•要挂载卷,请使用以下命令:
# mount -t glusterfs HOSTNAME-OR-IPADDRESS:/VOLNAMEMOUNTDIR
例如:
# mount -t glusterfs server1:/test-volume/mnt/glusterfs
在mount命令中指定的服务器只用来获取Gluster的配置文件volfile描述的卷名。随后,该客户端将直接与在volfile提到的服务器(甚至可能没有包括用于安装一个)进行通信。
6.1.2.2 自动挂载卷
自动挂载一个Gluster的卷
•要挂载卷,编辑/ etc/ fstab文件,并添加下面一行:
HOSTNAME-OR-IPADDRESS:/VOLNAME MOUNTDIR glusterfsdefaults,_netdev 0 0
例如:
server1:/test-volume /mnt/glusterfs glusterfsdefaults,_netdev 0 0
挂载选项
您可以使用mount-t glusterfs命令时指定下列选项,需要以逗号分隔所有选项。
backupvolfile-server=server-name
fetch-attempts=N(where N is number of attempts)
log-level=loglevel
log-fi