为什么 Gluster 卷仅安装一半容量

为什么 Gluster 卷仅安装一半容量

问题:分布式复制 Gluster 卷仅有一半的容量。

我将 AWS EC2 实例设置为 Gluster 卷,并将第三个 EC2 实例设置为安装 Gluster 卷。

两台 Gluster 服务器各有两块 2G 的砖块。Gluster 卷的复制因子设置为 2,目的是让两台服务器保存 4G 相同的数据。以下是查询其中一台 Gluster 服务器的输出:

ubuntu@ip-172-31-10-167:~$ sudo gluster volume info

Volume Name: swarm
Type: Distributed-Replicate
Volume ID: 142a9406-f3c9-49c8-a38f-f55e85185d1a
Status: Started
Snapshot Count: 0
Number of Bricks: 2 x 2 = 4
Transport-type: tcp
Bricks:
Brick1: ip-172-31-10-167.eu-west-1.compute.internal:/data/gluster/swarm/brick0
Brick2: ip-172-31-28-55.eu-west-1.compute.internal:/data/gluster/swarm/brick0
Brick3: ip-172-31-10-167.eu-west-1.compute.internal:/data/gluster/swarm/brick1
Brick4: ip-172-31-28-55.eu-west-1.compute.internal:/data/gluster/swarm/brick1
Options Reconfigured:
auth.allow: *
transport.address-family: inet
nfs.disable: on
performance.client-io-threads: off
ubuntu@ip-172-31-10-167:~$ sudo gluster volume status
Status of volume: swarm
Gluster process                             TCP Port  RDMA Port  Online  Pid
------------------------------------------------------------------------------
Brick ip-172-31-10-167.eu-west-1.compute.in
ternal:/data/gluster/swarm/brick0           49152     0          Y       15345
Brick ip-172-31-28-55.eu-west-1.compute.int
ernal:/data/gluster/swarm/brick0            49152     0          Y       14176
Brick ip-172-31-10-167.eu-west-1.compute.in
ternal:/data/gluster/swarm/brick1           49153     0          Y       15366
Brick ip-172-31-28-55.eu-west-1.compute.int
ernal:/data/gluster/swarm/brick1            49153     0          Y       14197
Self-heal Daemon on localhost               N/A       N/A        Y       15388
Self-heal Daemon on ip-172-31-28-55.eu-west
-1.compute.internal                         N/A       N/A        Y       14219

Task Status of Volume swarm
------------------------------------------------------------------------------
There are no active volume tasks

ubuntu@ip-172-31-10-167:~$ sudo gluster volume status swarm detail
Status of volume: swarm
------------------------------------------------------------------------------
Brick                : Brick ip-172-31-10-167.eu-west-1.compute.internal:/data/gluster/swarm/brick0
TCP Port             : 49152               
RDMA Port            : 0                   
Online               : Y                   
Pid                  : 15345               
File System          : xfs                 
Device               : /dev/xvdb           
Mount Options        : rw,relatime,attr2,inode64,noquota
Inode Size           : 512                 
Disk Space Free      : 2.0GB               
Total Disk Space     : 2.0GB               
Inode Count          : 1048576             
Free Inodes          : 1048533             
------------------------------------------------------------------------------
Brick                : Brick ip-172-31-28-55.eu-west-1.compute.internal:/data/gluster/swarm/brick0
TCP Port             : 49152               
RDMA Port            : 0                   
Online               : Y                   
Pid                  : 14176               
File System          : xfs                 
Device               : /dev/xvdb           
Mount Options        : rw,relatime,attr2,inode64,noquota
Inode Size           : 512                 
Disk Space Free      : 2.0GB               
Total Disk Space     : 2.0GB               
Inode Count          : 1048576             
Free Inodes          : 1048533             
------------------------------------------------------------------------------
Brick                : Brick ip-172-31-10-167.eu-west-1.compute.internal:/data/gluster/swarm/brick1
TCP Port             : 49153               
RDMA Port            : 0                   
Online               : Y                   
Pid                  : 15366               
File System          : xfs                 
Device               : /dev/xvdb           
Mount Options        : rw,relatime,attr2,inode64,noquota
Inode Size           : 512                 
Disk Space Free      : 2.0GB               
Total Disk Space     : 2.0GB               
Inode Count          : 1048576             
Free Inodes          : 1048533             
------------------------------------------------------------------------------
Brick                : Brick ip-172-31-28-55.eu-west-1.compute.internal:/data/gluster/swarm/brick1
TCP Port             : 49153               
RDMA Port            : 0                   
Online               : Y                   
Pid                  : 14197               
File System          : xfs                 
Device               : /dev/xvdb           
Mount Options        : rw,relatime,attr2,inode64,noquota
Inode Size           : 512                 
Disk Space Free      : 2.0GB               
Total Disk Space     : 2.0GB               
Inode Count          : 1048576             
Free Inodes          : 1048533             

因此,从上面看来一切似乎都很好。但是当我在第三台服务器上安装该卷时,该卷显示其容量只有 2G,而不是 4G:

ubuntu@ip-172-31-13-169:~$ mount
ip-172-31-10-167.eu-west-1.compute.internal:/swarm on /swarm/volumes/mytest type fuse.glusterfs (rw,relatime,user_id=0,group_id=0,default_permissions,allow_other,max_read=131072,_netdev)

ubuntu@ip-172-31-13-169:~$ df -h
Filesystem                                          Size  Used Avail Use% Mounted on
ip-172-31-10-167.eu-west-1.compute.internal:/swarm  2.0G   53M  2.0G   3% /swarm/volumes/mytest
ubuntu@ip-172-31-13-169:~$ 

果然,如果我写入 2G,该卷就会被填满。

如果我一次创建一堆小文件,我可以看到它们分布在brick0和之间brick1

所有 AWS EC2 实例均运行 Ubuntu LTS 16.04 AMD64 HVM EBS。尝试的 Gluster 版本为 3.12.7 和 4.0.1。

我错过了什么?

答案1

所有砖块都位于同一个“物理”磁盘设备上/dev/xvdb。你的目标是2 x 复制。在每台服务器上,同一台服务器上的两个砖块都位于同一设备上。因为如果一台服务器上的磁盘/dev/xvdb发生故障,全部该服务器上的砖块将发生故障。如果复制数为 2,则总卷大小将是您预期的一半。如果您希望卷大小为 4G,请在每台服务器上制作一个 4G 砖块。或者您可以将两个不同的 EBS 块设备分别附加到您的 EC2 实例。(例如 /dev/xvdb 和 /dev/xbdc)

题外话:此设置的另一个问题是,需要第三个服务器作为仲裁者,以防止裂脑。 例如薄弱的仲裁者可以在安装卷的第三个 EC2 实例上运行,并在出现问题时帮助防止脑裂。

答案2

当您执行 gluster 卷创建时,您是否列出了类似 server.167/brick0 server.167/brick1 server.55/brick0 server.55/brick1 的砖块

如果是第一种情况,副本集位于同一台服务器上,我敢打赌服务器上的存储空间会减少一半,而不是池中的存储空间,因为服务器无法复制超过 2GB 的数据。

如果是这样,重建卷但列出像 server.167/brick0 server.55/brick0 server.167/brick1 server.55/brick1 这样的砖块

相关内容