最近在学习分布式存储,用到了开源工具GlusterFS,就写点东西吧。
新手上路,多多指教-
常见术语
Xlator=translator:glusterfs 模块的代名词
Brick :存储目录是Glusterfs的基本存储单元,由可信存储池中服务器上对外
输出的目录表示。存储目录的格式由服务器和目录的绝对路径构成,具体如下:
SERVER:EXPORT.例如:myhostname:/exports/myexportdir/
Volume :卷是存储目录的逻辑组合。大部分gluster 管理操作是在卷上进行的。
Metadata:元数据关于数据的数据,用于描述文件、目录等的相关信息。
FUSE=Filesystem inUserspace: 是一个内核模块,允许用户创建自己的文件系
统无需修改内核代码。
Glusterd : Glusterfs 后台进程,运行在所有Glusterfs 节点上。
DistributeVolume: 分布式卷
ReplicateVolume: 副本卷
StripeVolume: 条带卷
DistributeReplicate Volume: 分布式副本卷
DHT=Distribute HashTable
AFR=Automatic FileReplication
SAN = Storage AreaNetwork: 存储区域网络是一种高速网络或子网络,提供在计算机与存储之间的数据传输。
NAS = Network-attachedstorage:网络附属存储是一种将分布、独立的数据整合为大型、集中化管理的数据中心,以便于对不同主机和应用服务器进行访问的技术。
RPC =Remote ProcedureCall: 远程过程调用
XDR =eXtern DataRepresentation: RPC 传递数据的格式
CLI=Command LineInterface 控制台
argp=Argument Parser
UUID=University UnqiueIdentifier
SVC =service
CLNT =client
MGMT=management
cbks = Call Backs
ctx = context
lk = lock
attr = attribute
txn = transaction
rb = replace brick
worm = write once , readmany
Glusterfs .glusterfs目录
.glusterfs目录大小基本是等于当前brick中的所有文件大小,原因是里面主要存放的是brick中文件的硬链接。
常见卷类型
1. Distributed Glusterfs Volume
分布式卷,只做分布式,无冗余、副本等容灾措施,一旦操作失败,数据将会丢失
2. Replicated Glusterfs Volume
副本卷,做副本,即使某个块brick中文件丢失,还可以通过其他副本找回
复制卷相当于 RAID1,在向 GlusterFS 中存储文件时,GlusterFS 将其拷贝到所有节点,并且是同步的,这会极大降低磁盘性能,并 呈线性降低,但是复制卷随着节点数量增加,起数据冗余能力也在增加,因为每个节点上都有一份数据的完全拷贝,创建复制卷命 令如下
3. Distributed Replicated Glusterfs Volume
分布式副本卷,结合上者的特点,提供分布式冗余存储策略。
4. Striped Glusterfs Volume
条带卷,将大文件拆分到多个bricks中(每个brick都存储文件的部分),调高访问效率,无冗余机制、
5. Distributed Striped Glusterfs Volume
分布式条带卷,提供分布式文件存储,并将文件平均分配到各个bricks。(块数=stripe*n(1,2,3...)
常见指令
1. 启动/关闭/查看glusterd服务
# /etc/init.d/glusterd start
# /etc/init.d/glusterd stop
# /etc/init.d/glusterd status
2. 开机自动启动glusterd服务
# chkconfig glusterd on # Red Hat
# update-rc.d glusterd defaults # Debian
# echo "glusterd" >>/etc/rc.local# Others
3. 查看配置信息
# cat /etc/rc.local
4. 为存储池添加/移除服务器节点
在其中一个节点上操作即可:
# gluster peer probe <SERVER>
# gluster peer detach <SERVER>
注意,移除节点时,需要提前将该节点上的Brick移除。
查看所有节点的基本状态(显示的时候不包括本节点):
# gluster peer status
5. 挂载分区
# mount -t ext4 /dev/sdd1 /mnt/brick1
6. 创建/启动/停止/删除卷
# gluster volume create<NEW-VOLNAME>[stripe <COUNT> | replica <COUNT>] [transport[tcp | rdma | tcp,rdma]] <NEW-BRICK1> <NEW-BRICK2><NEW-BRICK3> <NEW-BRICK4>...
# gluster volume start <VOLNAME>
# gluster volume stop <VOLNAME>
# gluster volume delete <VOLNAME>
注意,删除卷的前提是先停止卷。
7. 客户端以glusterfs方式挂载
# mount -t glusterfs<SERVER>:/<VOLNAME><MOUNTDIR>
对于OpenStack,计算和控制节点都要挂载/var/lib/nova/instances,控制节点还要挂载/var/lib/glance/images。
8. 查看卷信息
列出集群中的所有卷:
# gluster volume list
查看集群中的卷信息:
# gluster volume info [all]
查看集群中的卷状态:
# gluster volume status [all]
# gluster volume status <VOLNAME>[detail| clients | mem | inode | fd]
查看本节点的文件系统信息:
# df -h [<MOUNT-PATH>]
查看本节点的磁盘信息:
# fdisk -l
9. 配置卷
# gluster volume set <VOLNAME><OPTION> <PARAMETER>
10. 扩展卷
# gluster volume add-brick <VOLNAME><NEW-BRICK>
注意,如果是复制卷或者条带卷,则每次添加的Brick数必须是replica或者stripe的整数倍。
11. 收缩卷
先将数据迁移到其它可用的Brick,迁移结束后才将该Brick移除:
# gluster volume remove-brick <VOLNAME><BRICK> start
在执行了start之后,可以使用status命令查看移除进度:
# gluster volume remove-brick<VOLNAME> <BRICK> status
不进行数据迁移,直接删除该Brick:
# gluster volume remove-brick<VOLNAME> <BRICK> commit
注意,如果是复制卷或者条带卷,则每次移除的Brick数必须是replica或者stripe的整数倍。
12. 迁移卷
使用start命令开始进行迁移:
# gluster volume replace-brick<VOLNAME> <BRICK> <NEW-BRICK> start
在数据迁移过程中,可以使用pause命令暂停迁移:
# gluster volume replace-brick<VOLNAME> <BRICK> <NEW-BRICK> pause
在数据迁移过程中,可以使用abort命令终止迁移:
# gluster volume replace-brick<VOLNAME> <BRICK> <NEW-BRICK> abort
在数据迁移过程中,可以使用status命令查看迁移进度:
# gluster volume replace-brick<VOLNAME> <BRICK> <NEW-BRICK> status
在数据迁移结束后,执行commit命令来进行Brick替换:
# gluster volume replace-brick<VOLNAME> <BRICK> <NEW-BRICK> commit
13. 重新均衡卷
不迁移数据:
# gluster volume rebalance <VOLNAME>lay-outstart
# gluster volume rebalance <VOLNAME>start
# gluster volume rebalance <VOLNAME>startforce
# gluster volume rebalance <VOLNAME>status
# gluster volume rebalance <VOLNAME>stop
14. 系统扩展维护
开启/关闭系统配额:
# gluster volume quota <VOLNAME>enable | disable
设置目录配额:
# gluster volume quota <VOLNAME>limit-usage <DIR> <VALUE>
查看配额:
# gluster volume quota <VOLNAME> list[<DIR>]
地域复制(geo-replication):
# gluster volume geo-replication<MASTER> <SLAVE> start | status | stop
IO信息查看:
# gluster volume profile <VOLNAME>start | info | stop
Top监控:
Top命令允许你查看Brick的性能,例如:read,write, file open calls, file read calls, file write calls,directory opencalls, and directory real calls。所有的查看都可以设置 top数,默认100。
查看打开的 fd:
# gluster volume top <VOLNAME>open[brick <BRICK>] [list-cnt <COUNT>]
其中,open可以替换为read,write, opendir, readdir等。
查看每个 Brick 的读性能:
# gluster volume top <VOLNAME>read-perf [bs <BLOCK-SIZE> count <COUNT>] [brick <BRICK>][list-cnt <COUNT>]
其中,read-perf可以替换为write-perf等。
引用:
http://blog.csdn.net/i_chips/article/details/12656527
http://blog.csdn.net/ismr_m/article/details/53391740