技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> 系统架构 --> MogileFS 的设置和管理(MogileFS 系列3)

MogileFS 的设置和管理(MogileFS 系列3)

浏览:2075次  出处信息

    接下来,我们在这次,要讲基本的怎么管理这个分布存储系统,比如第一次使用,要做些什么,有新的设备来了,要怎么做。要扩容要怎么样操作。

在我们管理 MogileFS 前,我们看看管理的存储节点的关系,什么是存储主机,什么是设备。下面讲的内容,基本就是前面提到的二个工具的使用。

MogileFS 中的存储节点

我们先看下面的图

MogileFS 的存储节点

下面多了几个存储节点,他们都是单独的,便宜的,多硬盘的机器。每个机器下面有多个分区,可以用来存放这个存储系统的数据的"device".下面我们来详细讲讲:

存储主机(节点)
这个是 MogileFS 存储文件存放在这些机器上,也是 mogstored 节点,也叫 Storage Server,一台存储主要都要启动一个 mogstored 服务。扩容就是增加这些机器。

设备(device)
一个存储节点,以就是上面的主机,可以有多个 device, 就是用来存放文件的目录(比较挂载的目录),每个设备都有一个设备 id,需要在 mogstored 的配置文件中的 docroot 配置的项目 指定的目录下面创建相应的设备的目录,目录名为 $docroot/dev$id,设备是不能删除的。只能将其设备的状态的值置为dead,当一个设备 dead 之后,就真的 dead了,里面的数据也无法恢复了,且这个dead了的设备的 id 也不能再用.

 

MogileFS 内部的管理关系

从上面我们可以见到,整个 MogileFS 分几个小的部分,所有文件的操作,都是通过 Key 来取的。一个 Key 对应一个 MogileFS 中的文件。在这个中,有几个东西我们需要知道,就是域,和类的作用。

域(domain)
在一个 MogileFS 中,可以有多个域,用来存放不同的文件,比如,不同大小的文件,不同类型的文件。在上图中所有 alive 的"设备"是一个大的整体,形成一个统一的存储空间,里面的数据可以根据 "域" domain 和类 class 来分类管理,属于同一个 domain,即使是属于不同的class,文件的key也必须是唯一的.不同域的 key 才能重复

类(class)
在一个域中,可以有多个类,主要是用来控制复制单元的,类是用来做属性管理的,类是比域 domain 低一个级别,可以定义一个文件存储在不同 device 中的份数。一个文件必须通过 domain,class 和 key 才能找出来。我们可以给不同的重要程度的文件,不同热度的文件,来分别用类来控制份数。

 

MogileFS 的管理

mogstored 程序的启动将使主机本身成为一个存储的节点,mogstored 的启动后,还需要使用 mogadm 来让当前的这个主机加入到 MogileFS 的系统中。这就是一个存储节点。注意存储节点中还需要添加设备,每个设备有一个 uniq 的 ID 号.同样也要使用 mogadm 来加入到 MogileFS 的系统中。

注意,下面的命令中,如果没有配置照我前面 “设置 MogileFS 中的管理工具的接口” 来配置管理接口的地址的话,都要加一个  -trackers=<tracker_ip>:7001 才能正常。

MogileFS 中的存储主机(节点)管理
现在加入“存储节点”到 trackers 中。告诉注册自己到 trackers.相当于为每个主机加入 MogileFS 的存储系统

$ mogadm --trackers=<tracker_ip>:7001 host add <storage_node_name> --ip=127.0.0.1 --port=7500 --status=alive

 注,如果配置了前面的管理工具的地址,就简单多了

$ mogadm  host add <storage_node_name> --ip=127.0.0.1 --port=7500 --status=alive

检查这个主机是否加入到 MogileFS 的系统中.

$ mogadm  host list

 使用 mogadm 来修改 MogileFS 中主机的信息,修改的时候,一定要加上状态  -status=alive,不然不能修改

 

#mogadm host modify storage_node_name --ip=123.xxx.xxx.70 --status=alive

 

 

MogileFS 中的存储设备管理
建一个目录给这个"设备"使用,我们这的例子是使用 dev1在主机中建一个目录,建目录使用 dev + ID 这种格式,记的所有系统中 ID 不能重复。也必须和配置文件中的路径一样。
如下:

$ mkdir -p /var/mogile_data/dev1

然后在给相对应用的块设备 mount 到这个点,软链也行。

"设备"加入”存储的节点当中,相当于为每个设备加入 MogileFS 的存储系统

$ mogadm  device add <storage_node_name> ID

 检查我们加入的"设备"信息,这样就能见到上面这个设备了。还能显示加入的大小。

$ mogadm  device list

 标记失效的设备当硬盘坏了,设备有问题时,这时会自动在一个域内复制到最小设置的保存份数。恢复上面一样在一次 add 设备就好了

$ mogadm device mark <storage_node_name> <storage_node_name> ID dead

 

MogileFS 中域,类的管理
当上面的准备好了,MogileFS 是运行中时,接下来我们要建一个我们自己的’名字空间’和加入文件到存储当中.
我们使用 mogadm 的工具来能创建一个"域"和"类"。也可以使用这个来增加文件到"类"中

建"域"

$ mogadm domain add <domain_name>

检查"域",显示存在的域

$ mogadm  domain list

在"域"中建"类",并加入最小保存份数

$ mogadm  class add <domain_name> <class_name> --mindevcount=2

检查"类"

$ mogadm class list

 检查整个系统

$ mogadm check

 

MogileFS 中文件管理
我们可以简单的使用 mogtool 来加入文件,当然也可以用 Client 的 API 来管理。
加入文件,到 MogileFS 中

$mogtool inject <file_name> <key_name>  --domain=<domain_name>

取出文件

$mogtool extract <key_name> <file_name> --domain=<domain_name>

 大文件管理( >64M ),这时,mogtool 会给文件切成 64M 一全的大小

$mogtool inject --bigfile <file_name> <key_name>  --domain=<domain_name> 
$mogtool extract --bigfile <key_name> <file_name> --domain=<domain_name>

建议继续学习:

  1. 分布式缓存系统 Memcached 入门    (阅读:14788)
  2. Zookeeper工作原理    (阅读:10513)
  3. GFS, HDFS, Blob File System架构对比    (阅读:9444)
  4. Zookeeper研究和应用    (阅读:8576)
  5. 分布式日志系统scribe使用手记    (阅读:8097)
  6. 一致性哈希算法及其在分布式系统中的应用    (阅读:7994)
  7. 分布式哈希和一致性哈希    (阅读:7729)
  8. HBase技术介绍    (阅读:6824)
  9. 分布式系统的事务处理    (阅读:6101)
  10. Memcache分布式部署方案    (阅读:5507)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1