zoukankan      html  css  js  c++  java
  • [moosefs] storage class

    chapter 1 moosefs 3.1 storage class 功能的介绍

    1.1 什么是storage class

    在moosefs中,storage class允许指定文件的chunks存放在哪些chunkservers上。

    storage class使用label进行表达。

    为了与早起的版本的goal功能兼容,moosefs 3.0以上会自动在系统中建立1~9 storage class。goal工具将默认在对应的storage class下进行工作。

    1.2 什么是label

    label是可以被分配给chunkserver的字母(a~z,26个字母可选),每个chunkserver可以被打上多个标签(即标记上多个字母,但最多可以打26个label)

    完整的label表达式可以由多个子表达式构成,每个子标签之间用逗号分隔。每个子表达式特指文件副本的一种存储模式。子表达式可以为星号*或一个label schema。

    label schema可以是一个label或由加法、乘法和括号构成的复杂表达式。

    加法是逻辑“或”的含义,即文件的副本可以被存放在任意含有加法元素label的chunkserver上。例如,一个文件的storage class是a+b+c,那么任何含有a、b或c标签的chunkserver都可以用来存储该文件的副本。

    乘法是逻辑“与”的含义,即文件的副本仅可以存放在包含所有label的chunkserver上。例如,一个文件的storage class是abc,那么只有当一台chunkserver同时含有abc三个标签时,它才能用于存放该文件的副本。

    相同的子表达式可以通过在表达式前加数字的方式来表示,而不用重复显示声明多次。

    chapter 2 如何使用storage class

    2.1 机器配置

    在本文的示例中,将在11台机器上安装moosefs:

    ts02, ts03 为master servers

    ts04 .. ts12 为chunkservers

    前提假设:

    已有一些初始化数据存放在示例的moosefs文件系统中,并且goal为2(storage class 2)

    2.2 不设置storage class情况下moosefs的安装方法

    如果chunkserver上没有设置任何的label,则moosefs 3.0系统中数据的分布将于2.0版本时相同,如下图所示

    2.3 为chunkservers加上label

    若要给chunkserver打label,则需要修改相应chunkserver的配置文件 /etc/mfs/mfschunkserver.cfg

    编辑该配置文件,将LABELS = A前面的注释符号去掉,并设置上你想要的标签

    设置好后,需要通知chunkserver进程配置文件已更新,使用如下两个命令均可

    service moosefs-pro-chunkserver reload

    mfschunkserver reload

    再为ts04..ts07设上A标签,ts08..ts12设上B标签后,从cgi页面看到chunkserver的信息如下:

    若想为chunkserver设置多个标签,则如下三种方式都可以:

    LABELS = XYZ

    or

    LABELS = X Y Z

    or

    LABELS = X, Y, Z

    设好标签后的集群如下:

    2.4 创建storage class

    使用mfsscadmin工具可以在moosefs系统中创建storage class。

     ps:在chapter 3有mfsscadmin工具完整的使用介绍

    此处仅简单给出使用示例

    首先,mount一个mfs卷

    mount -t moosefs mfsmaster.test.lan: /mnt/mfs

    然后,进入到mount点的目录下

    cd /mnt/mfs

    假设我们希望将文件的2个副本存放在带有label A的chunkserver上,则可以创建storage class如下:

    mfsscadmin create 2A sclass1

    上面这条命令的含义为:每一个属于sclass1的文件,将会拥有2个副本,其中每个副本将存放在带有标签A的chunkserver上。

    类似的,可以创建另一个storage class,让文件再生成2个副本存放在带有标签B的chunkserver上。

    mfsscadmin create 2B sclass2

    此外,不一定要cd到mount的目录中进行storage class的创建,也可以通过显示指定目录的方式来给文件创建storage class,例如:

    mfsscadmin /mnt/mfs create 2B sclass2

    2.5 展示storage class

    mfsscadmin list

    该指令将列出某个mfs目录拥有的storage class列表,例如

    root@client :/ mnt / mfs # mfsscadmin list

    list ; 1

    1

    2

    3

    4

    5

    6

    7

    8

    9

    sclass1

    sclass2

    root@client :/ mnt / mfs #

    也可以通过加上-l参数来获取相信的信息

    2.6 将storage class配置到文件或目录上

    有很多个工具都可以为文件或目录配置storage class:

    mfsgetsclass, mfssetsclass, mfscopyclass, mfsxchgsclass, mfslistclass

    在chapter 3.2可以查看这些指令的详细介绍,或者使用man指令,如:man mfssclass

    现在,可以将一些数据存入mfs中了。创建两个目录dataX dataY:

    cd /mnt/mfs

    mkdir {dataX,dataY}

    为dataX目录添加sclass1这个storage class:

    mfssetsclass sclass1 dataX

    执行该指令后,dataX及其子目录中所有的目录和文件将自动根据sclass1策略来存储文件。

    同样的,为dataY分配sclass2这一storage class:

    mfssetsclass sclass2 dataY

    2.6.1 创建文件

    现在可以往dataX和dataY分别创建文件并写入数据了:

    root@client :/ mnt / mfs # cd dataX
    root@client :/ mnt / mfs / dataX # for i inseq 1 35 ‘; do dd if =/ dev / urandom of=
    dd1G_$i .bin bs =1M count =1024; done
    [...]
    root@client :/ mnt / mfs / dataX # cd ../ dataY
    root@client :/ mnt / mfs / dataY # for i inseq 1 10 ‘; do dd if =/ dev / urandom of=
    dd1G_$i .bin bs =1M count =1024; done
    [...]
    root@client :/ mnt / mfs / dataY #

    2.6.2 文件系统根据storage class的设定进行数据分配

    与此同时,“resource”tab下的inodes信息也更新了:

  • 相关阅读:
    eBay商家五大市场调研工具
    最新Android ADT, SDK, SDK_tool等官方下载说明
    Android——关于ListView控件的使用方法
    Auto CAD的相关问题·绘图单位
    淘宝数据分析之数据分析工具的三个需求层次
    电阻器阻值标识的相关知识
    Android软件开发之ListView 详解
    解决android模拟器划动手势时自动输入字母“c” 的问题
    争辩:关于输出大电流的移动电源给小电流的手机充电的问题
    关于C51的中断函数要注意的几个问题
  • 原文地址:https://www.cnblogs.com/elaron/p/9734440.html
Copyright © 2011-2022 走看看