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 in ‘seq ‘; do dd if =/ dev / urandom of=
dd1G_$i .bin bs =1M count =; done
[...]
root@client :/ mnt / mfs / dataX # cd ../ dataY
root@client :/ mnt / mfs / dataY # for i in ‘seq ‘; do dd if =/ dev / urandom of=
dd1G_$i .bin bs =1M count =; done
[...]
root@client :/ mnt / mfs / dataY #

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

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

[moosefs] storage class的更多相关文章

  1. Ceph,TFS,FastDFS,MogileFS,MooseFS,GlusterFS 对比

    系统整体对比 对比说明 /文件系统 TFS FastDFS MogileFS MooseFS GlusterFS Ceph 开发语言 C++ C Perl C C C++ 开源协议 GPL V2 GP ...

  2. Centos下MooseFS(MFS)分布式存储共享环境部署记录

    分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连,分布式文件系统的实际基于客户机/服务器模式.目前 ...

  3. Centos 安装 Moosefs文件系统

    一.环境介绍Moosefs master:192.168.55.148Moosefs Metalogger:192.168.55.149Moosefs Chunk-01:192.168.55.150M ...

  4. Azure Queue Storage 基本用法 -- Azure Storage 之 Queue

    Azure Storage 是微软 Azure 云提供的云端存储解决方案,当前支持的存储类型有 Blob.Queue.File 和 Table. 笔者在<Azure File Storage 基 ...

  5. Azure File Storage 基本用法 -- Azure Storage 之 File

    Azure Storage 是微软 Azure 云提供的云端存储解决方案,当前支持的存储类型有 Blob.Queue.File 和 Table. 笔者在<Azure Blob Storage 基 ...

  6. HTML5_06之拖放API、Worker线程、Storage存储

    1.拖放API中源对象与目标对象事件间的数据传递: ①创建全局变量--污染全局对象:  var 全局变量=null;  src.ondragstart=function(){   全局变量=数据值;  ...

  7. HTML5权威指南--Web Storage,本地数据库,本地缓存API,Web Sockets API,Geolocation API(简要学习笔记二)

    1.Web Storage HTML5除了Canvas元素之外,还有一个非常重要的功能那就是客户端本地保存数据的Web Storage功能. 以前都是用cookies保存用户名等简单信息.   但是c ...

  8. MySQL报错:Got error 28 from storage engine

    今天碰到数据库出错: Got error 28 from storage engine 查了一下,数据库文件所在的盘应该没事,应该是数据库用的临时目录空间不够 问题原因: 磁盘临时空间不够导致. 解决 ...

  9. Html 5 Web Storage

    HTML5 中使用Web Storage 技术进行本地存储,能够在Web 客户端进行数据存储.WebStorage 曾今属于HTML5的规范,目前已经被独立出来形成单独的规范体系.简单来说使用Web本 ...

随机推荐

  1. .net3.5 支持tuple

    添加下面引用即可: https://github.com/SaladLab/NetLegacySupport

  2. Java -- 内部类(一)

    什么是内部类 将一个类的定义放在另一个类的定义内部,这就是内部类.在Java中内部类主要分为成员内部类.局部内部类.匿名内部类.静态内部类.举个栗子: public class A { public ...

  3. Java笔记(十八)同步和协作工具类

    同步和协作工具类 一.读写锁ReentrantReadWriteLock ReadWriteLock接口的定义为: public interface ReadWriteLock { Lock read ...

  4. java反射机制基础

    java反射机制: JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意方法和 属性:这种动态获取信息以及动态调用对象方法的功能称为j ...

  5. 基于Systick系统时钟延时的LED闪烁灯

    1.回顾我们的51 单片机编程,当我们需要做系统延迟的时候,最常采用的一种方式就是使用for 循环的空语句等待来实现. 当然,在STM32 里面也可以这么实现.但是在STM32 的Cortex 内核里 ...

  6. pymysql 使用twisted异步插入数据库:基于crawlspider爬取内容保存到本地mysql数据库

    本文的前提是实现了整站内容的抓取,然后把抓取的内容保存到数据库. 可以参考另一篇已经实现整站抓取的文章:Scrapy 使用CrawlSpider整站抓取文章内容实现 本文也是基于这篇文章代码基础上实现 ...

  7. 老毛桃UEFI版u盘启动盘

    使用老毛桃制作UEFI启动盘 下载UEFI版本启动盘制作工具,打开官方网站http://www.laomaotao.org,当前显示页面右下下载UEFI版本.文章写作时最新版本为9.3. 使用教程见: ...

  8. 3ds max学习笔记(八)-- 实例操作(直行楼梯)

    1.选择要复制的物体,执行[工具]/[阵列]命令,弹出对话框: 2.参数说明: 应用: 1.[自定义]/[单位设置],将单位改为mm 在顶视图中,创建长方体,长1600,宽300,高度150 2.在前 ...

  9. react-navigation 中的多tabs嵌套时内部tabs无法正常切换问题

    原因 问题应该是当用户滑动或切换时,无法判断是哪个tabs应该进行滑动切换和展示切换动画. 解决 swipeEnabled - 是否允许在标签之间进行滑动 animationEnabled - 是否在 ...

  10. C# 实现Remoting双向通信

    本篇文章主要介绍了C# 实现Remoting双向通信,.Net Remoting 是由客户端通过Remoting,访问通道以获得服务端对象,再通过代理解析为客户端对象来实现通信的 闲来无事想玩玩双向通 ...