创建Glusterfs分布式RAID10卷

Glusterfs3.2.4/5支持五种Volume,即Distribute卷、Stripe卷、Replica卷、Distribute stripe卷和Distribute replica卷,这五种卷可以满足不同应用对高性能、高可用的需求。
(1)distribute volume:分布式卷,文件通过hash算法分布到brick server上,这种卷是glusterfs的基础和最大特点;
(2)stripe volume:条带卷,类似RAID0,条带数=brick server数量,文件分成数据块以Round Robin方式分布到brick server上,并发粒度是数据块,大文件性能高;
(3)replica volume:镜像卷,类似RAID1,镜像数=brick server数量,所以brick server上文件数据相同,构成n-way镜像,可用性高;
(4)distribute stripe volume:分布式条带卷,brick server数量是条带数的倍数,兼具distribute和stripe卷的特点;
(5)distribute replica volume:分布式镜像卷,brick server数量是镜像数的倍数,兼具distribute和replica卷的特点; Stripe volume和replica volume分别相当于RAID0和RAID1,前者可以获得更高的并发性和性能,后者可以获得更高的可用性。如果能够同时获得高性能和高可用性,类似RAID10/RAID01,应该是更加完美。Glusterfs采用堆栈式技术架构,基于distribute, stripe, replica卷可以采用堆积木的方式构建复合卷,因此构建RAID10/RAID01是完全可能的。可惜的是,目前Glusterfs3.2.4/3.2.5管理工具gluster还不支持创建stripe replica volume和distribute stripe replica volume。最近发布的3.2.5管理手册说支持,但管理工具没有同步支持。3.3beta管理工具支持,但是使用起来有问题,多次创建均没有成功。

实际上,我们可以通过修改glusterfs卷配置文件来实现分布式RAID10,即distribute stripe replica volume。Stripe replica volume是一种特殊分布式RAID10卷,即stripe count * replica count = birck server数量。这种方式绕过Glusterd/mgmt来管理,能够实现功能,但是修改起来不方便,建议谨慎使用。简单操作步骤如下:
(1)使用gluster工具创建distribute stripe卷;
(2)停止所有相关brick server上的glusterd服务,/etc/init.d/glusterd stop;
(3)在一个brick server上手工修改相应的卷配置信息,然后同步至所有相关brick server;
(4)重启所有相关brick server上的glusterd服务,/etc/init.d/glusterd start。
下面我们举个实际的例子,这里为了简化在一台服务器上操作。

(1)创建distribute stripe卷

  1. gluster volume create raid10 stripe 2 192.168.75.129:/opt/raid10-1 192.168.75.129:/opt/raid10-2 192.168.75.129:/opt/raid10-3 192.168.75.129:/opt/raid10-4   
  2.  192.168.75.129:/opt/raid10-5 192.168.75.129:/opt/raid10-6 192.168.75.129:/opt/raid10-7 192.168.75.129:/opt/raid10-8  
得到的/etc/glusterd/vols/raid10/raid10-fuse.vol配置文件内容如下:
  1. volume raid10-client-0  
  2.     type protocol/client  
  3.     option remote-host 192.168.75.129  
  4.     option remote-subvolume /opt/raid10-1  
  5.     option transport-type tcp  
  6. end-volume  
  7.   
  8. volume raid10-client-1  
  9.     type protocol/client  
  10.     option remote-host 192.168.75.129  
  11.     option remote-subvolume /opt/raid10-2  
  12.     option transport-type tcp  
  13. end-volume  
  14.   
  15. volume raid10-client-2  
  16.     type protocol/client  
  17.     option remote-host 192.168.75.129  
  18.     option remote-subvolume /opt/raid10-3  
  19.     option transport-type tcp  
  20. end-volume  
  21.   
  22. volume raid10-client-3  
  23.     type protocol/client  
  24.     option remote-host 192.168.75.129  
  25.     option remote-subvolume /opt/raid10-4  
  26.     option transport-type tcp  
  27. end-volume  
  28.   
  29. volume raid10-client-4  
  30.     type protocol/client  
  31.     option remote-host 192.168.75.129  
  32.     option remote-subvolume /opt/raid10-5  
  33.     option transport-type tcp  
  34. end-volume  
  35.   
  36. volume raid10-client-5  
  37.     type protocol/client  
  38.     option remote-host 192.168.75.129  
  39.     option remote-subvolume /opt/raid10-6  
  40.     option transport-type tcp  
  41. end-volume  
  42.   
  43. volume raid10-client-6  
  44.     type protocol/client  
  45.     option remote-host 192.168.75.129  
  46.     option remote-subvolume /opt/raid10-7  
  47.     option transport-type tcp  
  48. end-volume  
  49.   
  50. volume raid10-client-7  
  51.     type protocol/client  
  52.     option remote-host 192.168.75.129  
  53.     option remote-subvolume /opt/raid10-8  
  54.     option transport-type tcp  
  55. end-volume  
  56.   
  57. volume raid10-stripe-0  
  58.     type cluster/stripe  
  59.     subvolumes raid10-client-0 raid10-client-1  
  60. end-volume  
  61.   
  62. volume raid10-stripe-1  
  63.     type cluster/stripe  
  64.     subvolumes raid10-client-2 raid10-client-3  
  65. end-volume  
  66.   
  67. volume raid10-stripe-2  
  68.     type cluster/stripe  
  69.     subvolumes raid10-client-4 raid10-client-5  
  70. end-volume  
  71.   
  72. volume raid10-stripe-3  
  73.     type cluster/stripe  
  74.     subvolumes raid10-client-6 raid10-client-7  
  75. end-volume  
  76.   
  77. volume raid10-dht  
  78.     type cluster/distribute  
  79.     subvolumes raid10-stripe-0 raid10-stripe-1 raid10-stripe-2 raid10-stripe-3  
  80. end-volume  
  81.   
  82. volume raid10-write-behind  
  83.     type performance/write-behind  
  84.     subvolumes raid10-dht  
  85. end-volume  
  86.   
  87. volume raid10-read-ahead  
  88.     type performance/read-ahead  
  89.     subvolumes raid10-write-behind  
  90. end-volume  
  91.   
  92. volume raid10-io-cache  
  93.     type performance/io-cache  
  94.     subvolumes raid10-read-ahead  
  95. end-volume  
  96.   
  97. volume raid10-quick-read  
  98.     type performance/quick-read  
  99.     subvolumes raid10-io-cache  
  100. end-volume  
  101.   
  102. volume raid10-stat-prefetch  
  103.     type performance/stat-prefetch  
  104.     subvolumes raid10-quick-read  
  105. end-volume  
  106.   
  107. volume raid10  
  108.     type debug/io-stats  
  109.     option latency-measurement off  
  110.     option count-fop-hits off  
  111.     subvolumes raid10-stat-prefetch  
  112. end-volume  
(2) service glusterd stop

相关推荐