设置 glusterfs volumn

volume 是 bricks 的逻辑集合,其中每个 bricks 都是可信存储池中服务器上的导出目录。 要在存储环境中创建新volume ,需要指定组成该卷的bricks 。 创建新卷后,必须先启动它,然后再尝试挂载它。

Volume 类型

可以在你的存储环境中创建以下类型的卷:

  • Distributed - 又称哈希卷,近似于raid0,文件没有分片,文件根据hash算法分布在各个bricks 中, 你可以使用分布式卷来扩展存储,优点是容量大,缺点是没冗余。 冗余由其他硬件/软件层提供。
  • Replicated – 相当于raid1, 文件可以在各个服务器中的bricks中复制存储, 可以在对高可用性和高可靠性至关重要的环境中使用复制卷。
  • Distributed Replicated - 相当于raid10,Distributed replicated 卷会将文件hash 后分布在复制bricks中 ,可以在要求扩展存储且高可靠性至关重要的环境中使用分布式复制卷。 在大多数环境中,分布式复制卷还可以提高读取性能。
  • Dispersed - 近似于raid5,文件分片存储在各个硬盘上,但有部分硬盘用于冗余用途,数量可以指定。 它将原始文件的编码片段存储到每个brick 块中,其方式是只需要片段的一个子集即可恢复原始文件。管理员在卷创建的时候,可以指定不丢失数据的情况下可以丢失的bricks 数量。
  • Distributed Dispersed - 文件分散到各个分散的子卷中。 这具有Distributed Replicated的相同优点,但是使用分散子卷而不是复制子卷。
  • Striped [过时] – 条带卷将数据跨的bricks 的卷中条带化。 为了获得最佳结果,在访问大文件的高并发环境中使用条带卷。.
  • Distributed Striped [过时] - 分布式条带卷在群集中的两个或更多节点上对数据进行条带化。 如果环境中要求扩展存储,并且在高并发环境中访问非常大且至关重要的文件,你应该使用分布式条带卷。
  • Distributed Striped Replicated [过时] – 分布式条带复制卷将数据条带化后hash分布在集群中的所有复制bricks 之间。 为了获得最佳结果,你应该在高并发,并行访问超大文件,并且性能非常重要的的环境中使用分布式条带复制卷。 在此版本中,仅Map Reduce workloads支持此卷类型的配置。
  • Striped Replicated [过时] – 条带复制卷在集群中复制的bricks 划分数据。 为了获得最佳结果,你应该在并行访问非常大的文件且性能至关重要的高并发环境中使用条带复制卷。 在此版本中,仅Map Reduce workloads支持此卷类型的配置。

创建一个新卷

  • 创建一个新卷:

    # gluster volume create [stripe | replica | disperse] [transport tcp | rdma | tcp,rdma]
    

    例如,创建一个名为test-volume的卷,该卷由 server3:/exp3 和 server4:/exp4 组成:

    # gluster volume create test-volume server3:/exp3 server4:/exp4
    Creation of test-volume has been successful
    Please start the volume to access data.
    

创建一个Distributed 卷

在Distributed 卷中,文件随机分布在卷中的各个 bricks 之间。 当你在需要自由扩展存储,冗余并不重要或由其他硬件/软件层提供的地方使用分布式卷。

Note: Distributed 卷中的磁盘/服务器故障可能会导致严重的数据丢失,因为文件目录随机分布在卷中的各个bricks 之间。

Distributed_volume.png
创建一个Distributed 卷
  1. 创建一个可信存储池(TSP)

  2. 怎么创建Distributed 卷

    # gluster volume create [transport tcp | rdma | tcp,rdma]
    

    例如,使用tcp创建具有四个存储服务器的Distributed 卷:

    # gluster volume create test-volume server1:/exp1 server2:/exp2 server3:/exp3 server4:/exp4
    Creation of test-volume has been successful
    Please start the volume to access data.
    

    (可选)你可以展示volume信息:

    # gluster volume info
    Volume Name: test-volume
    Type: Distribute
    Status: Created
    Number of Bricks: 4
    Transport-type: tcp
    Bricks:
    Brick1: server1:/exp1
    Brick2: server2:/exp2
    Brick3: server3:/exp3
    Brick4: server4:/exp4
    

    例如,要在InfiniBand 网络上创建具有四个存储服务器的Distributed卷,请执行以下操作:

    # gluster volume create test-volume transport rdma server1:/exp1 server2:/exp2 server3:/exp3 server4:/exp4
    Creation of test-volume has been successful
    Please start the volume to access data.
    

    如果未指定transport类型,则tcp用作默认值。 如果需要,还可以设置其他选项,例如auth.allow或auth.reject。

    Note: 确保在使用挂载卷之前启动卷,否则挂起后客户端操作将停止。

创建一个Replicated卷

Replicated卷在多个 bricks 中创建文件副本。 在对高可用性和高可靠性至关重要的环境中使用Replicated卷。

Note: bricks 的数量应等于Replicated卷的副本数。 为了防止服务器和磁盘故障,建议该卷的bricks 来自不同的服务器。

Replicated_Volumes.png
创建一个Replicated卷
  1. 创建一个可信存储池(TSP)

  2. 怎么创建Distributed 卷

    # gluster volume create [replica ] [transport tcp | rdma | tcp,rdma]
    

    例如,要创建具有两个存储服务器的复制卷:

    # gluster volume create test-volume replica 2 transport tcp server1:/exp1 server2:/exp2
    Creation of test-volume has been successful
    Please start the volume to access data.
    

    如果未指定transport类型,则tcp用作默认值。 如果需要,还可以设置其他选项,例如auth.allow或auth.reject。

    Note:

    • 确保在使用挂载卷之前启动卷,否则挂起后客户端操作将停止。

    • 如果同一peer(服务器)上存在多个副本集的brick ,则GlusterFS将无法创建复制卷。 例如。 一个四节点复制卷,其中同一peer上存在一个副本集的多个 brick 。

      # gluster volume create <volname> replica 4 server1:/brick1 server1:/brick2 server2:/brick3 server4:/brick4
      volume create: <volname>: failed: Multiple bricks of a replicate volume are present on the same server. This setup is not optimal. Use 'force' at the end of the command if you want to override this behavior.
      

      如果仍要使用此配置创建卷,请在命令末尾使用 force 选项。

副本卷的仲裁器配置

如果是副本为3的仲裁器卷,其中第三个brick 充当仲裁器brick。 该配置具有防止发生裂脑的机制。

你可以使用下面的命令创建它:

# gluster volume create  <VOLNAME>  replica 3 arbiter 1 host1:brick1 host2:brick2 host3:brick3`

有关此配置的更多信息,请参见 : afr-arbiter-volumes

请注意,副本为3的仲裁器配置也可以用于创建distributed-replicate卷。

创建一个Striped卷

条带卷将数据条带化后存储不同的 brick上。 为了获得最佳结果,仅应在访问大文件的高并发环境中使用Striped卷。

Note: brick的数量应等于Striped卷的条带数量。

Striped_Volumes.png
创建一个Striped卷
  1. 创建一个可信存储池(TSP)

  2. 怎么创建Striped卷

    # gluster volume create [stripe ] [transport tcp | rdma | tcp,rdma]
    

    例如,要创建具有两个存储服务器的Striped卷:

    # gluster volume create test-volume stripe 2 transport tcp server1:/exp1 server2:/exp2
    Creation of test-volume has been successful
    Please start the volume to access data.
    

    如果未指定transport类型,则tcp用作默认值。 如果需要,还可以设置其他选项,例如auth.allow或auth.reject。

    Note: 确保在使用挂载卷之前启动卷,否则挂起后客户端操作将停止。

创建一个Distributed Striped卷

分布式条带卷在群集中的两个或更多节点上对数据进行条带化。 如果环境中要求扩展存储,并且在高并发环境中访问非常大且至关重要的文件,你应该使用分布式条带卷。

Note: 对于Distributed Striped卷,brick的数量应为条带数量的倍数。

Distributed_Striped_Volumes.png
创建一个Distributed Striped卷
  1. 创建一个可信存储池(TSP)

  2. 怎么创建Distributed Striped卷

    # gluster volume create [stripe ] [transport tcp | rdma | tcp,rdma]
    

    例如,要在八台存储服务器上创建Distributed Striped卷:

    # gluster volume create test-volume stripe 4 transport tcp server1:/exp1 server2:/exp2 server3:/exp3 server4:/exp4 server5:/exp5 server6:/exp6 server7:/exp7 server8:/exp8
    Creation of test-volume has been successful
    Please start the volume to access data.
    

    如果未指定transport类型,则tcp用作默认值。 如果需要,还可以设置其他选项,例如auth.allow或auth.reject。

    Note: 确保在使用挂载卷之前启动卷,否则挂起后客户端操作将停止。

创建一个Distributed Replicated卷

在volume中的不同的复制bricks之间分布文件。 可以在对扩展存储有要求且高可靠性重要的环境中使用Distributed Replicated卷。 在大多数环境中,Distributed Replicated复制卷还可以提高读取性能。

Note: Distributed Replicated卷的bricks数量应该是副本数的倍数. 同样,指定块的顺序对数据保护也有很大的影响。提供的列表中的每replica_count个连续的bricks都将组成一个副本集, 所有副本集都组合成一个卷范围的分发集。 要确保副本集成员没有放置在同一节点上,请以相同顺序列出每个服务器上的第一个brick ,然后列出每个服务器上的第二个brick ,依此类推。

Distributed_Replicated_Volumes.png
创建一个Distributed Replicated卷
  1. 创建一个可信存储池(TSP)

  2. 怎么创建Distributed Replicated卷

    # gluster volume create [replica ] [transport tcp | rdma | tcp,rdma]
    

    例如,带有两个镜像的四节点分布式(复制)卷:

    # gluster volume create test-volume replica 2 transport tcp server1:/exp1 server2:/exp2 server3:/exp3 server4:/exp4
    Creation of test-volume has been successful
    Please start the volume to access data.
    

    例如,要创建一个带有两个镜像的六节点分布式(复制)卷:

    # gluster volume create test-volume replica 2 transport tcp server1:/exp1 server2:/exp2 server3:/exp3 server4:/exp4 server5:/exp5 server6:/exp6
    Creation of test-volume has been successful
    Please start the volume to access data.
    

    如果未指定transport类型,则tcp用作默认值。 如果需要,还可以设置其他选项,例如auth.allow或auth.reject。

    Note:

    • 确保在使用挂载卷之前启动卷,否则挂起后客户端操作将停止。

    • 如果同一peer(服务器)上存在多个副本集的brick ,则GlusterFS将无法创建分布式复制卷。 例如。 一个四节点分布式复制卷,其中同一peer上存在一个副本集的多个 brick 。

      # gluster volume create <volname> replica 2 server1:/brick1 server1:/brick2 server2:/brick3 server4:/brick4
      volume create: <volname>: failed: Multiple bricks of a replicate volume are present on the same server. This setup is not optimal. Use 'force' at the end of the command if you want to override this behavior.
      

      如果仍要使用此配置创建卷,请在命令末尾使用 force 选项。

创建一个Distributed Striped Replicated卷

分布式条带复制卷将数据hash分布在集群中的所有复制 bricks之间然后条带化存储。 为了获得最佳结果,应该在高并发的环境中使用分布式条带复制卷,在这些环境中,并行访问超大文件和性能至关重要。 在此版本中,仅Map Reduce workloads 支持此卷类型的配置。

Note: 对于Distributed Striped Replicated卷,brick的数量应为条带数量和副本数的倍数。

怎样创建一个 distributed striped replicated
  1. 创建一个可信存储池(TSP)

  2. 使用下面的命令创建一个 distributed striped replicated 卷

    # gluster volume create [stripe ] [replica ] [transport tcp | rdma | tcp,rdma]
    

    例如,要在八台存储服务器上创建分布式复制条带卷:

    # gluster volume create test-volume stripe 2 replica 2 transport tcp server1:/exp1 server2:/exp2 server3:/exp3 server4:/exp4 server5:/exp5 server6:/exp6 server7:/exp7 server8:/exp8
    Creation of test-volume has been successful
    Please start the volume to access data.
    

    如果未指定transport类型,则tcp用作默认值。 如果需要,还可以设置其他选项,例如auth.allow或auth.reject。

    Note:

    • 确保在使用挂载卷之前启动卷,否则挂起后客户端操作将停止。

    • 如果同一peer(服务器)上存在多个副本集的brick ,则GlusterFS将无法创建分布式复制卷。 例如。 一个四节点分布式复制卷,其中同一peer上存在一个副本集的多个 brick 。

      # gluster volume create <volname> stripe 2 replica 2 server1:/brick1 server1:/brick2 server2:/brick3 server4:/brick4
      volume create: <volname>: failed: Multiple bricks of a replicate volume are present on the same server. This setup is not optimal. Use 'force' at the end of the command if you want to override this behavior.
      

      如果仍要使用此配置创建卷,请在命令末尾使用 force 选项。

创建一个Striped Replicated 卷

条带复制卷在集群中跨复制的bricks划分数据。 为了获得最佳结果,应该在并行访问非常大的文件且性能至关重要的高并发环境中使用条带复制卷。 在此版本中,仅Map Reduce workloads支持此卷类型的配置。

Note: 对于条带复制卷,bricks数应为复制数和条带数的倍数。

Striped_Replicated.png

创建一个striped replicated 卷
  1. 创建一个可信存储池(TSP)

  2. 怎样创建一个 striped replicated 卷

    # gluster volume create [stripe ] [replica ] [transport tcp | rdma | tcp,rdma]
    

    例如,在四台存储服务器上创建条带复制卷:

    # gluster volume create test-volume stripe 2 replica 2 transport tcp server1:/exp1 server2:/exp2 server3:/exp3 server4:/exp4
    Creation of test-volume has been successful
    Please start the volume to access data.
    

    在六台存储服务器上创建条带复制卷:

    # gluster volume create test-volume stripe 3 replica 2 transport tcp server1:/exp1 server2:/exp2 server3:/exp3 server4:/exp4 server5:/exp5 server6:/exp6
    Creation of test-volume has been successful
    Please start the volume to access data.
    

    如果未指定transport类型,则tcp用作默认值。 如果需要,还可以设置其他选项,例如auth.allow或auth.reject。

    Note:

    • 确保在使用挂载卷之前启动卷,否则挂起后客户端操作将停止。

    • 如果同一peer(服务器)上存在多个副本集的brick ,则GlusterFS将无法创建分布式复制卷。 例如。 一个四节点分布式复制卷,其中同一peer上存在一个副本集的多个 brick 。

      # gluster volume create <volname> stripe 2 replica 2 server1:/brick1 server1:/brick2 server2:/brick3 server4:/brick4
      volume create: <volname>: failed: Multiple bricks of a replicate volume are present on the same server. This setup is not optimal. Use `force` at the end of the command if you want to override this behavior.
      

      如果仍要使用此配置创建卷,请在命令末尾使用 force 选项。

创建Dispersed Volumes

Dispersed volumes基于纠删码技术。 它对多个bricks的文件进行编码,并添加了一些冗余。 可以使用Dispersed volumes以最低的空间浪费获得可靠性。

冗余

创建Dispersed volume时会设置一个冗余值。 该值确定在不中断volume操作的情况下可以丢失多少bricks。 它还使用以下公式确定卷的可用空间量:

<Usable size> = <Brick size> * (#Bricks - Redundancy)

分散集的所有bricks应具有相同的容量,否则,当最小的brick装满时,分散集将不允许存储额外数据。

需要注意的是,具有3个bricks和冗余1的配置将具有较少的可用空间(占总物理空间的66.7%)与具有10个bricks和冗余1的配置(90%)相比。 但是,第一个配置将比第二个配置更安全(第二个配置因故障率失败的可能性大约为第一个配置的4.5倍)。

例如,由6个4TB的bricks和冗余为2组成的Dispersed卷,即使坏掉了两个bricks, 也可以正常可用。 但是,第三个brick如果无法访问的话,那么volume 的容量将会降低, 该volume的可用空间将等于16TB。

GlusterFS中纠删码的实现将冗余限制为小于 #Bricks / 2 的值(或者说,冗余* 2 < #Bricks )。 如果 redundancy * 2 = #Bricks ,将几乎等同于副本为2的卷,并且在这种情况下,复制卷的性能可能更好。

Optimal volumes

就性能而言,纠删码技术表现最糟糕的事情之一是RMW(读-修改-写)周期。 纠删码技术以固定大小的块工作,而不能与较小的块一起工作。 这意味着,如果用户部分写操作因为不能填充满整个块,则需要从文件的当前内容中读取剩余部分,合并它们,计算更新编码块,最后 ,写入结果数据。

这会增加延迟,从而降低性能。 某些GlusterFS性能xlators可以帮助workloads减少甚至消除此问题,但是在使用Dispersed卷时应考虑到这一问题。

Dispersed卷的块大小取决于bricks数和冗余数:512 * (#Bricks - redundancy) bytes 。 此值也称为条带大小。

使用 #Bricks/redundancy 的组合计算出条带大小为2的幂,将使Dispersed卷在大多数workloads 中表现更好,因为将数据写入两个或更多的块中更为常见(例如,数据库,虚拟机和许多应用程序)。

这被认为是最佳的组合。

例如,具有6个bricks 和冗余为2的配置的条带大小为512 * (6 - 2) = 2048 bytes,因此被认为是最佳的。 具有7个bricks 和2个冗余的配置的条带大小为2560字节,需要RMW周期进行多次写入(当然,这取决于具体用例)。

怎样创建一个dispersed 卷
  1. 创建一个可信存储池(TSP)

  2. 创建一个dispersed 卷

    # gluster volume create [disperse [<count>]] [redundancy <count>] [transport tcp | rdma | tcp,rdma]
    

    创建dispersed卷可以指定分散集中的bricks数量,或者指定冗余bricks数量,或者两者指定。

    如果未指定disperse或缺少<count>,则将整个volume视为由命令行中列举的所有bricks组成的单个分散集。

    如果redundancy未指定,则会自动将其计算为最佳值。 如果此值不存在,则假定为'1',并显示警告消息:

    # gluster volume create test-volume disperse 4 server{1..4}:/bricks/test-volume
    There isn't an optimal redundancy value for this configuration. Do you want to create the volume with redundancy 1 ? (y/n)
    

    在所有自动计算 redundancy 且不等于 '1' 的情况下,都会显示警告消息:

    # gluster volume create test-volume disperse 6 server{1..6}:/bricks/test-volume
    The optimal redundancy for this configuration is 2. Do you want to create the volume with this value ? (y/n)
    

    redundancy 必须大于0,并且bricks的总数必须大于2 *redundancy 。 这意味着dispersed卷必须至少包含3个bricks。

    如果未指定transport类型,则tcp用作默认值。 如果需要,还可以设置其他选项,就像其他卷类型一样。

    Note:

    • 确保在使用挂载卷之前启动卷,否则挂起后客户端操作将停止。

    • 如果同一peer(服务器)上存在多个分散集的brick ,则GlusterFS将无法创建dispersed卷。

      # gluster volume create <volname> disperse 3 server1:/brick{1..3}
      volume create: <volname>: failed: Multiple bricks of a replicate volume are present on the same server. This setup is not optimal.
      Do you still want to continue creating the volume? (y/n)
      

      如果仍要使用此配置创建卷,请在命令末尾使用 force 选项。

创建Distributed Dispersed 卷

分布式分散卷等效于分布式复制卷,但是使用分散子卷而不是复制子卷。

怎样创建distributed dispersed 卷
  1. 创建一个可信存储池(TSP)

  2. 怎样创建 distributed dispersed 卷

    # gluster volume create disperse <count> [redundancy <count>] [transport tcp | rdma | tcp,rdma]
    

    要创建分布式分散卷,必须使用 disperse 关键字和<count>,并且在命令行中指定的 bricks 数必须是 disperse 的倍数。

    redundancy 与Dispersed 卷中的redundancy 完全相同。

    如果未指定transport类型,则tcp用作默认值。 如果需要,还可以设置其他选项,就像其他卷类型一样。

    Note:

    • 确保在使用挂载卷之前启动卷,否则挂起后客户端操作将停止。

    • 如果同一peer(服务器)上存在多个分散集的brick ,则GlusterFS将无法创建dispersed卷。

      # gluster volume create <volname> disperse 3 server1:/brick{1..6}
      volume create: <volname>: failed: Multiple bricks of a replicate volume are present on the same server. This setup is not optimal.
      Do you still want to continue creating the volume? (y/n)
      

      如果仍要使用此配置创建卷,请在命令末尾使用 force 选项。

启动Volumes

在使用挂载卷之前必须启动卷

怎样启动 volume
  • 启动volume

    # gluster volume start
    

    比如启动一个名为 test-volume 的卷:

    # gluster volume start test-volume
    Starting test-volume has been successful
    
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,527评论 5 470
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,314评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,535评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,006评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,961评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,220评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,664评论 3 392
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,351评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,481评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,397评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,443评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,123评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,713评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,801评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,010评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,494评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,075评论 2 341

推荐阅读更多精彩内容