MogileFS的分布式文件系统的实现

MogileFS:是一套分布式文件存储的解决方案,它不需要特殊的核心组件、无单点失败、自动的文件复制、比RAID好多了、传输中立,无特殊协议(客户端可以通过NFS或HTTP来和MogileFS通信)、简单的命名空间、不用共享任何东西、不需要RAID、不会碰到文件系统本身的不可知情况 等等优点。

server端由mogilefsd和mogstored两个程序组成,mogilefsd既tracker,用来存数全局元数据放在数据库中,mogstored既存储节点。

实验目的:

实现mogilefs分布式文件系统的实现

实验环境:

node1: 172.16.18.1   程序:mogstord

node2: 172.16.18.2   程序:mogstord

node3: 172.16.18.3   程序:mysql , mogilefsd(tracker)

实验模型:模型一

实验内容:

1.1 配置Tracker

安装MySQL,yum安装

安装Mogilefs

[[email protected] mogilefs]# yum install MogileFS-Server-* perl-Perlbal-1.78-1.el6.noarch.rpm

Dependency Installed:

perl-BSD-Resource.x86_64 0:1.29.03-3.el6

perl-Danga-Socket.noarch 0:1.61-5.el6

perl-Sys-Syscall.noarch 0:0.23-1.el6

perl-Time-HiRes.x86_64 4:1.9721-136.el6

perl-Net-Netmask.noarch 0:1.9015-8.el6

Complete!

1.2:在数据库创建用户

mysql> GRANT ALL ON mogilefs.* TO ‘mogile‘@‘172.16.%.%‘ IDENTIFIED BY ‘mogile‘;

Query OK, 0 rows affected (0.02 sec)

查看mogilefs的帮助

[[email protected] ~]# mogdbsetup --help    
Usage: mogdbsetup [opts]    
Options:    
Default Description    
============ ===========================================    
--verbose <off> Be verbose about what‘s happening.    
--dbhost= localhost hostname or IP to database server.    
--dbport= dbd default port number to database server.    
--dbname= mogilefs database name to create/upgrade.    
--dbrootuser= root Database administrator username. Only needed for initial setup, not subsequent upgrades.    
--dbrootpass= <blank> Database administrator password. Only needed for initial setup, not subsequent upgrades.    
--dbuser= mogile Regular database user to create and/or use for MogileFS database. This is what the mogilefsd trackers connect as.    
--dbpass= <blank> You should change this, especially if your database servers are accessible to other users on the network. But they shouldn‘t be if you‘re running MogileFS, because MogileFS assumes your network is closed.    
--type= MySQL Which MogileFS::Store implementation to use. Available: MySQL, Postgres    
--yes Run without questions.

如果默认的参数和自己设定的参数一样的话就不需要指定了。

2.1尝试连接

[[email protected] ~]# mogdbsetup --dbhost=172.16.18.3 --dbpass=mogile    
This will attempt to setup or upgrade your MogileFS database.    
It won‘t destroy existing data.    
Run with --help for more information. Run with --yes to shut up these prompts.    
Continue? [N/y]: y    
Create/Upgrade database name ‘mogilefs‘? [Y/n]: y    
Grant all privileges to user ‘mogile‘, connecting from anywhere, to the mogilefs database ‘mogilefs‘? [Y/n]: y    
Failed to connect to database as regular user, even after creating it and setting up permissions as the root user. at /usr/share/perl5/vendor_perl/MogileFS/Store.pm line 108, <STDIN> line 3.

报错,我们数据库的root用户没有设定允许远程连接,那我们来授权一个root用户的远程连接

mysql> GRANT ALL ON *.* TO [email protected]‘172.16.%.%‘ IDENTIFIED BY ‘aolens‘;

Query OK, 0 rows affected (0.00 sec)

[[email protected] ~]# mogdbsetup --dbhost=172.16.18.3 --dbpass=mogile --dbrootuser=root --dbrootpass=aolens;    
This will attempt to setup or upgrade your MogileFS database.    
It won‘t destroy existing data.    
Run with --help for more information. Run with --yes to shut up these prompts.    
Continue? [N/y]: y    
Failed to connect to DBI:mysql:mysql;host=172.16.18.3;port=3306 as specified root user (root): Access denied for user ‘root‘@‘node3.aolens.com‘ (using password: YES)

又报出错误,解析用的是node3.aolens.com

mysql> GRANT ALL ON mogilefs.* TO ‘mogile‘@‘node3.aolens.com‘ IDENTIFIED BY ‘mogile‘;

Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

[[email protected] ~]# mogdbsetup --dbhost=172.16.18.3 --dbpass=mogile --dbrootuser=root --dbrootpass=aolens;    
This will attempt to setup or upgrade your MogileFS database.    
It won‘t destroy existing data.    
Run with --help for more information. Run with --yes to shut up these prompts.    
Continue? [N/y]: y

OK.连接成功

查看数据库中生成的数据

mysql> show tables;

有生成数据即可

我们是yum安装的MySQL,version:5.1.71的,

mysql> show tables status\G    查看存储引擎是不是innodb,若是则OK

2.2,编辑MogileFS的配置文件,配置一下参数。

[[email protected] ~]# vim /etc/mogilefs/mogilefsd.conf

db_dsn = DBI:mysql:mogilefs:host=172.16.18.3  #如果使用的数据库不是mogilefs,则修改mogilefs为自己定义的数据库
db_user = mogilef
db_pass = mogile
listen = 172.16.18.3:7001                                    #监听的地址和端口

2.3 尝试启动mogilefs

[[email protected] ~]# service mogilefsd start    
Starting mogilefsd                                                 [FAILED]

无法启动?我们尝试连接数据库看能否连接

[[email protected] ~]# mysql -uroot -h172.16.18.3 -p    Enter password:    ERROR 1045 (28000): Access denied for user ‘root‘@‘node3.aolens.com‘ (using password: YES)
数据库连接出错,解析用的是主机名。创建下边用户
mysql> GRANT ALL ON *.* TO [email protected]‘node3.aolens.com‘ IDENTIFIED BY ‘aolens‘;
Query OK, 0 rows affected (0.06 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

再次启动

[[email protected] ~]# service mogilefsd restart    
Starting mogilefsd                                                     [ OK ]

启动成功了。

3.1下来我们来配置mogstord

首先来安装需要的程序包

perl-IO-AIO.x86_64 0:3.71-2.el6

MogileFS-Server-2.46-2.el6.noarch

MogileFS-Server-mogilefsd-2.46-2.el6.noarch

MogileFS-Server-mogstored-2.46-2.el6.noarch

perl-Net-Netmask-1.9015-8.el6.noarch

perl-Perlbal-1.78-1.el6.noarch

3.2第二步来配置mogstored.conf ,在node1 ,node2上同时配置。

[[email protected] mogilefs]# vim /etc/mogilefs/mogstored.conf    
maxconns = 10000                                         #最大连接并发数    
httplisten = 0.0.0.0:7500    
mgmtlisten = 0.0.0.0:7501    
docroot = /mogilefs/data

3.3,创建需要的数据目录

[[email protected] ~]# mkdir /mogilefs/data    
[[email protected] ~]# chown -R mogilefs.mogilefs /mogilefs/

3.4 启动mogstored

[[email protected] mogilefs]# service mogstored start    
Starting mogstored [ OK ]

[[email protected] mogilefs]# ss -tnl

LISTEN 0 128 *:7500 *:*

LISTEN 0 128 *:7501 *:*

3.5 要实现对此节点的控制需要在node1:tracker上安装

MogileFS-Utils-2.19-1.el6.noarch.rpm

perl-MogileFS-Client-1.14-1.el6.noarch.rpm

4.1下来我们来为tracker添加主机

[[email protected] mogilefs]# mogadm --trackers=172.16.18.3:7001 host add node1 --ip=172.16.18.1 --status=alive    
[[email protected] mogilefs]# mogadm --trackers=172.16.18.3:7001 host add node2 --ip=172.16.18.2 --status=alive    
查看添加的主机:

[[email protected] mogilefs]# mogadm --trackers=172.16.18.3:7001 host list    
node1 [1]: alive    
IP: 172.16.18.1:7500    
node2 [2]: alive    
IP: 172.16.18.2:7500

可以标记那个节点软下线

mogadm --trackers=172.16.18.3:7001 host mask node1 down

4.2添加设备

查看设备。可以看到有两个节点,但是上边什么设备都没有

[[email protected] mogilefs]# mogadm --trackers=172.16.18.3:7001 device list    
node1 [1]: alive    
used(G) free(G) total(G) weight(%)    
node2 [2]: alive    
used(G) free(G) total(G) weight(%)

添加设备的语法

mogadm device add <hostname> <devid> [opts]   Add a device to a host.

<devid> Numeric devid. Never reuse these.

<hostname> Hostname to add a device

--status=s One of ‘alive‘ or ‘down‘. Defaults to ‘alive‘.

添加设备并查询

[[email protected] mogilefs]# mogadm --trackers=172.16.18.3:7001 device add node1 1 --status=alive    
[[email protected] mogilefs]# mogadm --trackers=172.16.18.3:7001 device add node2 2 --status=alive    
[[email protected] mogilefs]# mogadm --trackers=172.16.18.3:7001 device list    
node1 [1]: alive    
used(G) free(G) total(G) weight(%)    
dev1: alive 0.000 0.000 0.000 100    
node2 [2]: alive    
used(G) free(G) total(G) weight(%)    
dev2: alive 0.000 0.000 0.000 100

设备添加进来了,可是设备的大小都为0

[[email protected] mogilefs]# mogadm --trackers=172.16.18.3:7001 device summary    
Hostname HostID Status used(G) free(G) total(G) %Used    
node1 [ 1]: alive 0.000 0.000 0.000    
node2 [ 2]: alive 0.000 0.000 0.000

那么在node1创建/mogilefs/data/dev1 并修改权限

在node2创建/mogilefs/data/dev2        同上

[[email protected] ~]# chown -R mogilefs.mogilefs /mogilefs/

[[email protected] data]# chown -R mogilefs.mogilefs /mogilefs/

[[email protected] mogilefs]# mogadm --trackers=172.16.18.3:7001 device summary    
Hostname HostID Status used(G) free(G) total(G) %Used    
node1 [ 1]: alive 0.536 18.149 18.686 2.87    
node2 [ 2]: alive 0.537 18.148 18.686 2.87

存储大小出来了

4.3 添加domain名称空间

[[email protected] mogilefs]# mogadm --trackers=172.16.18.3:7001 domain add file    
[[email protected] mogilefs]# mogadm --trackers=172.16.18.3:7001 domain list    
domain     class      mindevcount     replpolicy         hashtype    
-------------------- -------------------- ------------- ------------ -------    
file     default                       2            MultipleHosts()     NONE

其中的2是复制时保存几份副本。在class中定义

4.4 上传数据,mogupload

[[email protected] mogilefs]# mogupload --trackers=172.16.18.3:7001 --domain=file --key=‘/fstab‘ --file=‘/etc/fstab‘

4.5 查询上传数据文件mogfileinfo

[[email protected] mogilefs]# mogfileinfo --trackers=172.16.18.3:7001 --domain=file --key=‘/fstab‘    
- file: /fstab    
class: default    
devcount: 2    
domain: file    
fid: 2    
key: /fstab    
length: 805    
- http://172.16.18.2:7500/dev2/0/000/000/0000000002.fid    
- http://172.16.18.1:7500/dev1/0/000/000/0000000002.fid

在浏览器上输入路径,查看内容

再来上传一个图片

[[email protected] mogilefs]# mogupload --trackers=172.16.18.3:7001 --domain=images --key=‘/images‘ --file=‘/usr/share/backgrounds/default.png‘    
[[email protected] mogilefs]# mogfileinfo --trackers=172.16.18.3:7001 --domain=images --key=‘/images‘    
- file: /images    
class: default    
devcount: 2    
domain: images    
fid: 3    
key: /images    
length: 1470177    
- http://172.16.18.2:7500/dev2/0/000/000/0000000003.fid    
- http://172.16.18.1:7500/dev1/0/000/000/0000000003.fid

4.6 下载命令语法

[[email protected] mogilefs]# mogfetch --help    
Usage: /usr/bin/mogfetch --trackers=host --domain=foo --key=‘/hello.jpg‘ --file=‘./output‘

4.7 重命名语法

[[email protected] mogilefs]# mogrename --help    
Usage: /usr/bin/mogrename --trackers=host --domain=foo --class=bar --old_key=‘/hello.jpg‘ --new_key=‘/bye.jpg‘

4.8 列出所有的KEY

[[email protected] mogilefs]# mogrename --help    
Usage: /usr/bin/mogrename --trackers=host --domain=foo --class=bar --old_key=‘/hello.jpg‘ --new_key=‘/bye.jpg‘    
[[email protected] mogilefs]# moglistkeys --help    
Usage: /usr/bin/moglistkeys --trackers=host --domain=foo --key_prefix=‘bar/‘

模型二:

这种模型既可以实现tracker的高可用

但是此时访问存储的数据太过复杂,那么我们又该如何部署使得访问变得简单,不用直接面对设备中的fid数据文件呢?

nginx这个程序具有第三方模块mogilefs就可以实现将url转为存储设备中的fid文件,也可以将fid数据转为url.所以我们只需要基于http协议在浏览器上直接访问数据的url就可以直观的查看到数据文件了。

nginx需要支持第三方模块的话需要自己编译nginx将第三方模块添加进来。

为node1,node2安装tracker.

5.1 编译安装nginx以及第三方模块nginx_mogilefs_module-1.0.4.tar.gz

解压nginx源码包和模块

进入nginx解压包

# ./configure   --prefix=/usr   --sbin-path=/usr/sbin/nginx   --conf-path=/etc/nginx/nginx.conf   --error-log-path=/var/log/nginx/error.log   --http-log-path=/var/log/nginx/access.log   --pid-path=/var/run/nginx/nginx.pid   --lock-path=/var/lock/nginx.lock   --user=nginx   --group=nginx   --with-http_ssl_module   --with-http_flv_module   --with-http_stub_status_module   --with-http_gzip_static_module   --http-client-body-temp-path=/var/tmp/nginx/client/   --http-proxy-temp-path=/var/tmp/nginx/proxy/   --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/   --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi   --http-scgi-temp-path=/var/tmp/nginx/scgi   --with-pcre   --with-debug   --add-module= ../nginx_mogilefs_module-1.0.4/                #第三方模块的位置

检测有问题,缺少依赖关系

yum install pcre-devel

# make && make install

3、为nginx提供SysV init脚本:

新建文件/etc/rc.d/init.d/nginx,内容如下:

#!/bin/sh
#
# nginx - this script starts and stops the nginx daemon
#
# chkconfig: - 85 15
# description: Nginx is an HTTP(S) server, HTTP(S) reverse # proxy and IMAP/POP3 proxy server
# processname: nginx
# config: /etc/nginx/nginx.conf
# config: /etc/sysconfig/nginx
# pidfile: /var/run/nginx.pid
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0
nginx="/usr/sbin/nginx"
prog=$(basename $nginx)
NGINX_CONF_FILE="/etc/nginx/nginx.conf"
[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
lockfile=/var/lock/subsys/nginx
make_dirs() {
   # make required directories
   user=`nginx -V 2>&1 | grep "configure arguments:" | sed ‘s/[^*]*--user=\([^ ]*\).*/\1/g‘ -`
   options=`$nginx -V 2>&1 | grep ‘configure arguments:‘`
   for opt in $options; do
       if [ `echo $opt | grep ‘.*-temp-path‘` ]; then
           value=`echo $opt | cut -d "=" -f 2`
           if [ ! -d "$value" ]; then
               # echo "creating" $value
               mkdir -p $value && chown -R $user $value
           fi
       fi
   done
}
start() {
    [ -x $nginx ] || exit 5
    [ -f $NGINX_CONF_FILE ] || exit 6
    make_dirs
    echo -n $"Starting $prog: "
    daemon $nginx -c $NGINX_CONF_FILE
    retval=$?
    echo
    [ $retval -eq 0 ] && touch $lockfile
    return $retval
}
stop() {
    echo -n $"Stopping $prog: "
    killproc $prog -QUIT
    retval=$?
    echo
    [ $retval -eq 0 ] && rm -f $lockfile
    return $retval
}
restart() {
    configtest || return $?
    stop
    sleep 1
    start
}
reload() {
    configtest || return $?
    echo -n $"Reloading $prog: "
    killproc $nginx -HUP
    RETVAL=$?
    echo
}
force_reload() {
    restart
}
configtest() {
  $nginx -t -c $NGINX_CONF_FILE
}
rh_status() {
    status $prog
}
rh_status_q() {
    rh_status >/dev/null 2>&1
}
case "$1" in
    start)
        rh_status_q && exit 0
        $1
        ;;
    stop)
        rh_status_q || exit 0
        $1
        ;;
    restart|configtest)
        $1
        ;;
    reload)
        rh_status_q || exit 7
        $1
        ;;
    force-reload)
        force_reload
        ;;
    status)
        rh_status
        ;;
    condrestart|try-restart)
        rh_status_q || exit 0
            ;;
    *)
        echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
        exit 2
esac

而后为此脚本赋予执行权限:

[[email protected] ~]# chmod +x /etc/rc.d/init.d/nginx

添加至服务管理列表,并让其开机自动启动:

[[email protected] ~]# chkconfig --add nginx

[[email protected] ~]# chkconfig nginx off

[[email protected] ~]# service nginx start

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok 
nginx: configuration file /etc/nginx/nginx.conf test is successful

Starting nginx:                                                [ OK ]

启动成功,下边我们来配置nginx的配置文件,让他可以代理tracker,并转换fid格式为url

首先备份一份配置文件,再来编辑

[[email protected] ~]# vim /etc/nginx/nginx.conf
http {
    include mime.types;
    default_type application/octet-stream;
    sendfile on;
    keepalive_timeout 65;
    server {
        listen 80;
        server_name localhost;
        location /file {
            mogilefs_tracker 172.16.18.3:7001;
            mogilefs_domain file;
            mogilefs_pass {
            proxy_pass $mogilefs_path;
            proxy_hide_header Content-Type;
            proxy_buffering off;
            }
        }
        location /images {
            mogilefs_tracker 172.16.18.3:7001;
            mogilefs_domain images;
            mogilefs_pass {
            proxy_pass $mogilefs_path;
            proxy_hide_header Content-Type;
            proxy_buffering off;
            }
        }
        }
}

重启一下nginx

[email protected] nginx-1.6.1]# service nginx restart    
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok    
nginx: configuration file /etc/nginx/nginx.conf test is successful    
Stopping nginx:                                                [ OK ]    
Starting nginx:                                                  [ OK ]

访问http://172.16.18.3/file/fstab,可是没有打开,直接下载了?这是为什么呢?

查看一下上传的file中的fstab没有加后缀,可能网页无法识别

再次上传文件,这次给加上后缀.html

[[email protected] ~]# mogupload --trackers=172.16.18.3:7001 --domain=file --key=‘/passwd.html‘ --file=‘/etc/passwd‘

访问没有问题。也重新上传一个图片

[[email protected] ~]# mogupload --trackers=172.16.18.3:7001 --domain=images --key=‘/image.png‘ --file=‘/usr/share/backgrounds/wallpaper-six-2048x1536.png‘

此时基于GET方法的请求文件打开就没有问题了。

mogilefs模块的put方法无法再nginx1.0以上的版本上运行,此处不做介绍。

实现到此结束

时间: 2024-10-24 22:39:22

MogileFS的分布式文件系统的实现的相关文章

基于mogileFS搭建分布式文件系统--海量小文件的存储利器

一.分布式文件系统    1.简介 分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连.分布式文件系统的设计基于客户机/服务器模式.一个典型的网络可能包括多个供多用户访问的服务器.另外,对等特性允许一些系统扮演客户机和服务器的双重角色.例如,用户可以"发表"一个允许其他客户机访问的目录,一旦被访问,这个目录对客户机来说就像使用本地驱动器一样. 当下我们处在一个互联网飞速发展的信息社会,在

基于mogileFS搭建分布式文件系统 适用于海量小文件的存储

一.分布式文件系统 1.简介 分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连.分布式文件系统的设计基于客户机/服务器模式.一个典型的网络可能包括多个供多用户访问的服务器.另外,对等特性允许一些系统扮演客户机和服务器的双重角色.例如,用户可以"发表"一个允许其他客户机访问的目录,一旦被访问,这个目录对客户机来说就像使用本地驱动器一样. 当下我们处在一个互联网飞速发展的信息社会,在海量并

分布式文件系统之&mdash;&mdash;mogilefs

本节我们将来认识下分布式文件系统,不过我主要讲的是关于其中的一个比较流行的mogilefs进行介绍,好了其他的不多说了,下面我们就开始吧. 什么是分布式文件系统? 什么是分布式文件系统(Distributed File System)?顾名思义,就是分布式+文件系统.它包含了2方面,从文件系统的客户端的角度来看,他就是一个标准的文件系统,提供了API,由此可以进行文件的创建.删除.读写等操作:从内部来看的话,分布式文件系统则与普通的文件系统不同,它不在是本地的磁盘中,它的内容和目录都不是存储在本

CentOS 6.5 分布式文件系统之MogileFS工作原理及实现过程

   MogileFS是一套高效的文件自动备份组件,由Six Apart开发,广泛应用在包括LiveJournal等web2.0站点上.MogileFS由3个部分组成:    第1个部分:是server端,包括mogilefsd和mogstored两个程序.前者即是mogilefsd的tracker,它将一些全局信息保存在数据库里,例如站点domain,class,host等.后者即是存储节点(store node),它其实是个HTTP Daemon,默认侦听在7500端口,接受客户端的文件备份

Nginx+MogileFS分布式文件系统部署实验

实验要求 1.  部署mogilefs分布式文件系统 2.  nginx代理 实验环境 1.拓扑 2.网络地址规划 node1:172.16.76.10 nginx (centos6.8) node2:172.16.76.20 Trackers .storage Node   (centos7.2) node3:172.16.76.30 storage Node                   (centos7.2) node4:172.16.76.40 storage Node  (Mar

Mogilefs分布式文件系统-Keepalived+Nginx双主模型实现图片分布式存储、访问

一.分布式文件系统: 分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连.计算机通过文件系统管理.存储数据,单纯通过增加硬盘个数来扩展计算机文件系统的存储容量的方式,在容量大小.容量增长速度.数据备份.数据安全等方面的表现都差强人意. 分布式文件系统可以有效解决数据的存储和管理难题:将固定于某个地点的某个文件系统,扩展到任意多个地点/多个文件系统,众多的节点组成一个文件系统网络.每个节点可以分布在

MogileFS分布式文件系统

内容概述 1.分布式文件系统介绍 2.CAP理论 3.常见分布式文件系统介绍 4.MogileFS详细介绍 4.1MogileFS组成 4.2MogileFS特性 5.MogileFS实现 5.1 node1配置Mariadb(过程略) 5.2 node1配置tracker 5.3 node2配置storage 5.4  node3配置storage 5.5 配置分布式集群 5.5.1 添加主机 5.5.2 添加设备 5.5.3 定义domain和class 5.6  验证分布式集群 6.Mog

共享存储之分布式文件系统应用及MogileFS基础应用

 **什么是分布式存储:    分布式存储系统,是将数据分散存储在多台独立的设备上.传统的网络存储系统采用集中的存储服务器存放所有数据,存储服务器成为系统性能的瓶颈,也是可靠性和安全性的焦点,不能满足大规模存储应用的需要.分布式网络存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,它不但提高了系统的可靠性.可用性和存取效率,还易于扩展. 分布式文件系统设计目标: ** 访问透明** 位置透明** 并发透明** 失效透明** 硬件透明** 可扩展性** 复制

深入浅出分布式文件系统MogileFS集群

    一,简介    MogileFS是一款开源的分布式文件存储系统,由LiveJournal旗下的Danga Interactive公司开发.Danga团队开发了包括 Memcached.MogileFS.Perlbal 等多个知名的开源项目.目前MogileFS的日益成熟使用此解决方法的公司越来越多,例如日本的又拍.digg.中国的豆瓣.1号店.大众点评.搜狗和安居客等,分别为所在的组织或公司管理着海量的图片.和传统网络存储不一样的是分布式文件系统是将数据分散存储至多台服务器上,而网络文件