Welcome to jaever.com/diary

[转载]mogilefs分布式文件系统

MogileFS是一套高效的文件自动备份组件,由Six Apart开发,广泛应用在包括LiveJournal等web2.0站点上。

MogileFS由3个部分组成:
第1个部分是server端,包括mogilefsd和mogstored两个程序。前者即是mogilefsd的tracker,它将一些全局信息保存 在数据库里,例如站点domain,class,host等。后者即是存储节点(store node),它其实是个HTTP Daemon,默认侦听在7500端口,接受客户端的文件备份请求。在安装完后,要运行mogadm工具将所有的store node注册到mogilefsd的数据库里,mogilefsd会对这些节点进行管理和监控。
第2个部分是utils(工具集),主要是MogileFS的一些管理工具,例如mogadm等。
第3个部分是客户端API,目前只有Perl API(MogileFS.pm),用这个模块可以编写客户端程序,实现文件的备份管理功能。☆
提供MogileFS.pm

CONTINUE
INFO: 3 days ago | purpen | digg | link

[转载]mogileFS的工作方式(译)

原文地址: mogileFS HighLevel Overview

下面简要阐述 MogileFS 是怎么工作的.

mogileFS由如下一些部分构成:

  • Application: 想要 保存/加载 文件的应用
  • Tracker (the mogilefsd process): 基于事件的(event-based) 父 进程/消息 总线来管理所有来之于客户端应用的交互(requesting operations to be performed), 包括将请求负载平衡到 “query workers” 中,让mogilefsd的子进程去处理. 你可以在不同的机器上运行两个Tracker, 为了高可用性, 或使用更多的Tracker为了负载平衡(你需要运行多于两个的Tracker). mogilefsd的子进程有:
    • Replication — 个机器间复制文件
    • Deletion — 从命名空间删除是立即的,从文件系统删除是异步的
    • Query — 响应客户端的请求
    • Reaper — 在磁盘失败后将文件复制请求重新放到队列中
    • Monitor — 监测主机和设配的健康度和状态
  • Database — 数据库用来存放MogileFS的元数据 (命名空间, 和文件在哪里). 这应该设置一个高可用性(HA)的环境以防止单点失败.
  • Storage Nodes — 实际文件存放的地方. 存储节点是一个HTTP服务器,用来做 删除,存放等事情,任何WebDAV服务器都可以, 不过推荐使用 mogstored 。 mogilefsd 可以配置到两个机器上使用不同端口… mogstored 为所有 DAV 操作 (和流量监测), 并且你自己选择的快速的HTTP服务器用来做 GET 操作(给客户端提供文件). 典型的用户没一个加载点有一个大容量的 SATA 磁盘,他们被加载到 /var/mogdata/devNN.

High-level 流程:

  • 应用程序请求打开一个文件 (通过RPC 通知到 tracker, 找到一个可用的机器). 做一个 “create_open” 请求.
  • tracker 做一些负载均衡(load balancing)处理,决定应该去哪儿,然后给应用程序一些可能用的位置。
  • 应用程序写到其中的一个位置去 (如果写失败,他会重新尝试并写到另外一个位置去).
  • 应用程序 (client) 通过”create_close” 告诉tracker文件写到哪里去了.
  • tracker 将该名称和域命的名空间关联 (通过数据库来做的)
  • tracker, 在后台, 开始复制文件,知道他满足该文件类别设定的复制规则
  • 然后,应用程序通过 “get_paths” 请求 domain+key (key == “filename”) 文件, tracker基于每一位置的I/O繁忙情况回复(在内部经过 database/memcache/etc 等的一些抉择处理), 该文件可用的完整 URLs地址列表.
  • 应用程序然后按顺序尝试这些URL地址. (tracker’持续监测主机和设备的状态,因此不会返回死连接,默认情况下他对返回列表中的第一个元素做双重检查,除非你不要他这么做..)
CONTINUE
INFO: 3 days ago | purpen | digg | link

[转载]mogileFS体系结构分析-数据库表

前面对mogileFS做了一下简单介绍,这儿开始对他进行剖析。
首先剖析他用来做文件西信息track的表结构。
使用到的数据表

  • server_settings
  • 服务器的一些配置信息,采用key=>value的记录方式保存。

  • domain
  • 域定义

  • hosts
  • 主机定义,主机的ip,存储节点服务所开的端口等信息。

  • device
  • 主机上的可用设备定义,包括设备可用空间,使用的权重等信息,由存储服务定时更新设备的情况。

  • class
  • 文件分类定义

  • file
  • 记录文件的基本信息,属于什么类别,他的key和文件大小等信息

  • tmpfile
  • 复制的临时文件信息?

  • file_to_delete
  • 记录要做删除的文件

  • file_to_delete_later
  • 要延迟删除的文件

  • file_on
  • 记录什么设备上有什么文件,一个文件在不同设备上的存储各有一条记录。

  • file_on_corrupt
  • 损坏的文件,哪一个文件在什么设备上损坏了。

  • file_to_replicate
  • 要做分发的文件,记录来源设备,失败次数和下次重试的时间等信息。

  • fsck_log
  • 文件检查日志

  • unreachable_fids
  • 不可到达的文件列表

mogileFS是一个依赖数据库做数据信息交换的系统,为了减少DB的操作次数,使用了memcached做一些查询结果的缓冲。

CONTINUE
INFO: 3 days ago | purpen | digg | link

Copyright © 2008 Jaever. All rights reserved.

This Site looks and works best when viewed using browsers enabled with JavaScript 1.5 and CSS, such as Firefox 1+ or Safari 3+.