分布式文件系统MFS(moosefs)实现存储共享(第二版)
因为用户数量的不断攀升,我对访问量大的应用实现了可扩展、高可靠的集群部署(即lvs+keepalived的方式),但仍然有用户反馈访问慢的问题。经过排查个服务器的状况,发现问题的根源在于共享存储服务器NFS。在我这个网络环境里,N个服务器经过nfs方式共享一个服务器的存储空间,使得NFS服务器不堪重负。察看系统日志,全是nfs服务超时之类的报错。通常状况下,当nfs客户端数目较小的时候,NFS性能不会出现问题;一旦NFS服务器数目过多,而且是那种读写都比较频繁的操做,所获得的结果就不是咱们所期待的。下面是某个集群使用nfs共享的示意图:
这种架构除了性能问题而外,还存在单点故障,一旦这个NFS服务器发生故障,全部靠共享提供数据的应用就再也不可用,尽管用rsync方式同步数据到另一个服务器上作nfs服务的备份,但这对提升整个系统的性能毫无帮助。基于这样一种需求,咱们须要对nfs服务器进行优化或采起别的解决方案,然而优化并不能对应对日益增多的客户端的性能要求,所以惟一的选择只能是采起别的解决方案了;经过调研,分布式文件系统是一个比较合适的选择。采用分布式文件系统后,服务器之间的数据访问再也不是一对多的关系(1个NFS服务器,多个NFS客户端),而是多对多的关系,这样一来,性能大幅提高毫无问题。
到目前为止,有数十种以上的分布式文件系统解决方案可供选择,如lustre,hadoop,Pnfs等等。我尝试了PVFS,hadoop,moosefs这三种应用,参看了lustre、KFS等诸多技术实施方法,最后我选择了moosefs(如下简称MFS)这种分布式文件系统来做为个人共享存储服务器。为何要选它呢?我来讲说个人一些见解:
一、 实施起来简单。MFS的安装、部署、配置相对于其余几种工具来讲,要简单和容易得多。看看lustre 700多页的pdf文档,让人头昏吧。
二、 不停服务扩容。MFS框架作好后,随时增长服务器扩充容量;扩充和减小容量皆不会影响现有的服务。注:hadoop也实现了这个功能。
三、 恢复服务容易。除了MFS自己具有高可用特性外,手动恢复服务也是很是快捷的,缘由参照第1条。
四、 我在实验过程当中获得做者的帮助,这让我非常感激。
MFS
特性(根据官方网站翻译)
★ 高可靠性(数据能被分红几个副本存储在不一样的计算机里)
★ 经过增长计算机或增长新的硬盘动态扩充可用磁盘空间
★ 能够设置删除文件的空间回收时间
[root@mysql-bk serydir]# mfsgettrashtime bind-9.4.0.tar.gz
bind-9.4.0.tar.gz: 600
|
文件被删除10分钟后(600秒),才真正删除文件,回收磁盘空间。
★ 为文件建立快照
MFS
文件系统的组成
一、 元数据服务器。在整个体系中负责管理管理文件系统,目前MFS只支持一个元数据服务器master,这是一个单点故障,须要一个性能稳定的服务器来充当。但愿从此MFS能支持多个master服务器,进一步提升系统的可靠性。
二、 元数据日志服务器。备份master服务器的变化日志文件,文件类型为changelog_ml.*.mfs。当元数据服务器数据丢失或者损毁,可从日志服务器取得文件进行恢复。
三、 数据存储服务器chunkserver。真正存储用户数据的服务器。存储文件时,首先把文件分红块,而后这些块在数据服务器chunkserver之间复制(复制份数能够手工指定,建议设置副本数为3)。数据服务器能够是多个,而且数量越多,可以使用的“磁盘空间”越大,可靠性也越高。
四、 客户端。使用MFS文件系统来存储和访问的主机称为MFS的客户端,成功挂接MFS文件系统之后,就能够像之前使用NFS同样共享这个虚拟性的存储了。
元数据服务器安装和配置
元数据服务器能够是linux,也能够是unix,你能够根据本身的使用习惯选择操做系统,在个人环境里,我是用freebsd作为MFS元数据的运行平台。GNU源码,在各类类unix平台的安装都基本一致。
(一) 安装元数据服务
一、下载GNU源码
wget http://ncu.dl.sourceforge.net/project/moosefs/moosefs/1.6.11/mfs-1.6.11.tar.gz
二、解包 tar zxvf mfs-1.6.11.tar.gz
三、切换目录 cd mfs-1.6.11
四、建立用户 useradd mfs –s /sbin/nologin
五、配置 ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs
六、编译安装 make ; make install
(二) 配置元数据服务
元数据服务器的配置文件被放置于安装目录/usr/local/mfs/etc。与mfs-1.5.12版本不一样的是:mfs-1.6.x版安装完成只有模版文件,其后缀形如mfsmaster.cfg.dist。为了使mfs master正常工做,须要两个配置文件mfsmaster.cfg及mfsexports.cfg,前者为主配置文件,后者为权限控制文件(mfs客户端挂接时使用)。
(1)主配置文件mfsmaster.cfg,可直接从模版文件拷贝而来,打开这个配置文件/usr/local/mfs/etc/mfsmaster.cfg,看看都有哪些内容:
# WORKING_USER = mfs
# WORKING_GROUP = mfs
# SYSLOG_IDENT = mfsmaster
# LOCK_MEMORY = 0
# NICE_LEVEL = -19
# EXPORTS_FILENAME = /usr/local/mfs/etc/mfsexports.cfg
# DATA_PATH = /usr/local/mfs/var/mfs
# BACK_LOGS = 50
# REPLICATIONS_DELAY_INIT = 300
# REPLICATIONS_DELAY_DISCONNECT = 3600
# MATOML_LISTEN_HOST = *
# MATOML_LISTEN_PORT = 9419
# MATOCS_LISTEN_HOST = *
# MATOCS_LISTEN_PORT = 9420
# MATOCU_LISTEN_HOST = *
# MATOCU_LISTEN_PORT = 9421
# CHUNKS_LOOP_TIME = 300
# CHUNKS_DEL_LIMIT = 100
# CHUNKS_WRITE_REP_LIMIT = 1
# CHUNKS_READ_REP_LIMIT = 5
# REJECT_OLD_CLIENTS = 0
# deprecated, to be removed in MooseFS 1.7
# LOCK_FILE = /var/run/mfs/mfsmaster.lock
|
尽管每行都被注释掉了,但它们倒是配置文件的默认值,要改变这些值,须要取消注释,而后明确指定其取值。接下来讲明一下其中一些项目的含义。
◆ EXPORTS_FILENAME = /usr/local/mfs/etc/mfsexports.cfg 权限控制文件的存放位置。
◆ DATA_PATH = /usr/local/mfs/var/mfs 数据存放路径,只元数据的存放路径。那么这些数据都包括哪些呢?进目录看看,大体分3种类型的文件:
这些文件也一样要存储在其余数据存储服务器的相关目录。
◆ MATOCS_LISTEN_PORT = 9420 MATOCS--master to chunkserver,即元数据服务器使用9420这个监听端口来接受数据存储服务器chunkserver端的链接。
◆ MATOML_LISTEN_PORT = 9419 MATOML---master to metalogger,用于备份元数据服务器的变化日志。注:Mfs-1.5.12之前的版本没有这个项目。
◆ MATOCU_LISTEN_PORT = 9421 元数据服务器在9421端口监听,用以接受客户端对MFS进行远程挂接(客户端以mfsmount挂接MFS)
◆ 其余部分看字面意思都不难理解。还有几个与时间有关的数值,其单位是秒。
这个配置文件,没必要作修改就能工做了。
(2)配置文件/usr/local/mfs/etc/mfsexports.cfg,也可直接从模版文件复制而来。这个文件的内容,十分相似NFS服务器的exports文件.实际配置时,可参照这个文件的默认行来修改以知足本身的应用需求.个人mfsexports.cfg文件的内容为:
(3)复制文件
cp /usr/local/mfs/var/mfs/metadata.mfs.empty /usr/local/mfs/var/mfs/metadata.mfs
这是一个8字节的文件,为mfs-1.6.x新增项目。
(三) 元数据服务器master启动
元数据服务器能够单独启动,即便没有任何数据存储服务器(chunkserver)也是能正常工做的,所以当咱们安装配置完MFS后,便可启动它。执行命令 /usr/local/mfs/sbin/mfsmaster start ,若是没有意外,元数据库服务器就应该做为一个守护进程运行起来。如今咱们能够经过3个方面来检查一下MFS master的运行情况:
一、 检查进程
二、 检查网络状态
三、 检查系统日志
MFS的日志会直接写入系统日志。当咱们增长数据存储服务器(chunkserver)或数据存储服务器(chunkserver)处故障时,都能在系统日志找到这些记录。注意,这个日志跟元数据变化日志不是一回事情。
(四)、关闭元数据服务器
关闭元数据服务器,务必使用 /usr/local/mfs/sbin/mfsmaster –s 这种方式,若是直接使用kill杀死进程,将致使下次启动时出现找不到相关文件,而不能正常启动服务器。这个必定要谨慎。固然,若是发生了这个事情,仍是能够经过 mfsmetastore 来恢复的。
元数据日志服务器安装和配置
元数据日志服务为mfs 1.6之后版本新增的服务,便可以把元数据日志保留在元数据服务器,也能够单独存储。为保证其可靠性,最好单独放置。须要注意的是,源数据日志守护进程跟元数据服务器(master)在同一个服务器上,备份元数据日志的服务器做为它的客户端,从元数据服务器取得日志文件进行备份。
(一)安装元数据日志服务器metalogger
一、下载GNU源码
wget http://ncu.dl.sourceforge.net/project/moosefs/moosefs/1.6.11/mfs-1.6.11.tar.gz
二、解包 tar zxvf mfs-1.6.11.tar.gz
三、切换目录 cd mfs-1.6.11
四、建立用户 useradd mfs –s /sbin/nologin
五、配置 ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs
六、编译安装 make ; make install
(二)元数据日志服务(metalogger)配置
该服务仅须要一个配置文件,这里咱们只须要从模板文件复制一个,而后稍微加以修改便可,下面是个人某个metalogger 的配置文件:
[root@hynfs-2 etc]# more mfsmetalogger.cfg
# WORKING_USER = mfs
# WORKING_GROUP = mfs
# SYSLOG_IDENT = mfsmetalogger
# LOCK_MEMORY = 0
# NICE_LEVEL = -19
# DATA_PATH = /usr/local/mfs/var/mfs
# BACK_LOGS = 50
# META_DOWNLOAD_FREQ = 24
# MASTER_RECONNECTION_DELAY = 5
MASTER_HOST = 192.168.93.18
MASTER_PORT = 9419
# MASTER_TIMEOUT = 60
# deprecated, to be removed in MooseFS 1.7
# LOCK_FILE = /var/run/mfs/mfsmetalogger.lock
|
这个配置文件,惟一须要修改的地方就是MASTER_HOST,它的值必须是元数据服务器的主机名或者ip地址。另外,为方便你们进一步理解,我把配置文件里其余几个项目简单的说明一下:
(1)SYSLOG_IDENT = mfsmetalogger 元数据日志服务运行时,在系统日志输出的标识,下面给出一段系统日志:
(2)DATA_PATH = /usr/local/mfs/var/mfs 从元数据服务器(master)抓回文件,而后进行存放的路径。
(3)BACK_LOGS = 50 存放备份日志的总个数为50,超出50则轮转。在作元数据恢复时,仅仅须要最近的那个日志文件备份,所以默认的日志个数就足够了,这也保证了日志备份不会写满整个分区。
(4)META_DOWNLOAD_FREQ = 24 元数据备份文件下载请求频率。默认为24小时,即每隔一天从元数据服务器(MASTER)下载一个metadata.mfs.back文件。当元数据服务器关闭或者出故障时,matedata.mfs.back文件将消失,那么要恢复整个mfs,则需从metalogger服务器取得该文件。请特别注意这个文件,它与日志文件一块儿,才可以恢复整个被损坏的分布式文件系统。
(三)元数据日志服务(metalogger)运行及关闭
1、启动过程为:
/usr/local/mfs/sbin/mfsmetalogger start
working directory: /usr/local/mfs/var/mfs
lockfile created and locked
initializing mfsmetalogger modules ...
mfsmetalogger daemon initialized properly
|
启动过程若是不能跟元数据服务器进行通讯的话,系统会给出错误信息。
2、关闭服务,执行命令
/usr/local/mfs/sbin/mfsmetalogger
stop
3、检查服务的运行情况。从两个方面看,一个是元数据服务器,另外一个是自己的数据生成状况。
◆察看元数据服务器网络链接,能够看见日志服务器链接到元数据服务器的tcp 9419端口。
◆查看日志服务器的工做目录,正常状况应该看见已经有文件生成了(从元数据服务器获取过来的)。能够手动从元数据服务器复制一个日志文件过来比较文件的内容。
数据存储
chunkserver
服务器的安装配置
数据存储服务器chunkserver也是能够运行在各类类unix平台的,所以再也不多说。一个MFS环境到底能集群多少服务器,做者的说法是上PB容量,我的建议,最好3台以上;而且专门用来作存储,不要把它跟master搞到一个机器(理论上没问题,实现也是能够的,但这不是一个好策略)。由于每一个数据存储服务器的安装和配置都是相同的,因此只需按照一个服务器的操做就能够了。
(一)、安装数据存储服务器 chunkserver
一、下载GNU源码
wget http://ncu.dl.sourceforge.net/project/moosefs/moosefs/1.6.11/mfs-1.6.11.tar.gz
二、解包 tar zxvf mfs-1.6.11.tar.gz
三、切换目录 cd mfs-1.6.11
四、建立用户 useradd mfs –s /sbin/nologin
五、配置 ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs
六、编译安装 make ; make install
(二)配置数据存储服务器chunkserver
数据存储服务器有2个配置服务器须要修改,一个是主配置文件 mfschunkserver.cfg ,另外一个配置文件是 mfshdd.cfg。每一个服务器用来分配给 MFS使用的空间最好是一个单独的硬盘或者一个raid卷,最低要求是一个分区。做者举的例子是建立一个大文件,而后挂接在本地,这不是个好主意,只能用来作实验了。
一、修改配置文件 /usr/local/mfs/etc/mfschunkserver.cfg。下面是修改了的配置文件:
#WORKING_USER = mfs
#WORKING_GROUP = mfs
# DATA_PATH = /usr/local/mfs/var/mfs
# LOCK_FILE = /var/run/mfs/mfschunkserver.pid
# SYSLOG_IDENT = mfschunkserver
# BACK_LOGS = 50
# MASTER_RECONNECTION_DELAY = 30
MASTER_HOST = 192.168.0.19
MASTER_PORT = 9420
# MASTER_TIMEOUT = 60
# CSSERV_LISTEN_HOST = *
# CSSERV_LISTEN_PORT = 9422
# CSSERV_TIMEOUT = 60
# CSTOCS_TIMEOUT = 60
# HDD_CONF_FILENAME = /usr/local/mfs/etc/mfshdd.cfg
|
这个配置文件里,没有注释符号“#”就是被修改过的项了,接下来是里面某些项的含义说明:
◆ MASTER_HOST = 192.168.0.19 元数据服务器的名称或地址,能够是主机名,也能够是ip地址,只要数据存储服务器能访问到元数据服务器就行。
◆ LOCK_FILE = /var/run/mfs/mfschunkserver.pid 与元数据服务器master的处理彻底相同.
◆ CSSERV_LISTEN_PORT = 9422 CSSERV—chunkserver,这个监听端口用于与其它数据存储服务器间的链接,一般是数据复制。
二、修改配置文件/usr/local/mfs/etc/mfshdd.cfg。在个人服务器上,只有一个1T的SATA硬盘,分了一个800G容量的分区来作为MFS存储服务的组成部分。为了使mfs拥有写目录的权限,须要修改目录的属主。个人服务器的分区挂接点是 /data , 用 chown –R mfs:mfs /data 把属主改变。由于个人每一个服务器只需贡献一个分区作为MFS,所以配置文件只须要以下一行内容就能够了:
这个文件默认状况下有好几行,咱们最好把它删掉,由于按常规状况用注释符号“#”好像不起做用。
(三)启动数据存储服务器chunkserver
在数据存储服务器chunkserver执行命令 /usr/local/mfs/sbin/mfschunkserver start 启动数据存储守护进程.经过如下几种方式来检查chunkserver的运行状态.
一、 查看进程 ps aux | grep mfschunkserver
二、 查看网络状态,正常状况下应该看见9422处于监听状态,若是有其余数据存储服务器chunkserver在同一个元数据服务器master管理下运行的话,应该能看见其余chunkserver跟本机的链接状况:
三、 查看
元数据服务器的系统日志,能够看见新增的数据存储服务器chunkserver被加入。
tail -f /var/log/messages
Mar 27 14:28:00 mfs-ctrl mfsmaster[29647]: server 3 (192.168.0.71): usedspace: 65827913728 (61 GB), totalspace: 879283101696 (818 GB), usage: 7.49%
|
(四) 关闭数据存储服务器
跟元数据服务器master类似,执行命令 /usr/local/mfs/sbin/mfschunkserver –s , chunkserver服务就停下来了。为了使系统重启过程能自动启动chunkserver 服务,能够经过在/etc/rc.local文件追加行 /usr/local/mfs/sbin/mfschunkserver start 来达到这个目的(master的自动重启处理也可一样处理)。
MFS
客户端的安装及配置
个人生产环境,只有centos和freebsd两种环境,所以下面的描述,只有centos及freebsd挂接MFS文件系统的情形,其余类型的unix系统,待往后尝试。对比前面的操做过程,客户端挂接后使用MFS集群文件系统才是最费时的事情。
1、centos做为MFS的客户端。
(一) 安装MFS客户端
◆Mfsmount须要依赖FUSE,所以须要先安装好fuse,这里我选用 fuse-2.7.4.tar.gz。
一、解包 tar zxvf fuse-2.7.4.tar.gz
二、切换目录 cd fuse-2.7.4.
三、配置 ./configure
四、编译安装 make;make install
若是系统已经安装了fuse,则跳过这个步骤。
◆安装MFS客户端程序
一、修改环境变量文件/etc/profile ,追加下面的行,而后再执行命令source /etc/profile使修改生效。
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
|
若是不执行这个操做,在后面安装MFS的过程当中,执行命令
./configure --enable-mfsmount时可能出现"checking for FUSE... no configure: error: mfsmount build was forced, but fuse development package is not installed"这样的错误,而不能正确安装MFS客户端程序。
二、解包 tar zxvf mfs-1.6.11.tar.gz
三、切换目录 cd mfs-1.6.11
四、建立用户 useradd mfs –s /sbin/nologin
五、配置 ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --enable-mfsmount
六、编译安装 make ; make install
◆检查MFS客户端安装的结果。经过查看目录/usr/local/mfs/bin目录的文件,应该发现以下文件:
(二)挂接和使用MFS文件系统
一、建立挂接点 mkdir /mnt/mfs
二、挂接MFS /usr/local/mfs/bin/mfsmount /mnt/mfs –H 192.168.0.19 .注意,全部的MFS都是挂接同一个元数据服务器master,而不是其余数据存储服务器chunkserver !
三、经过查看磁盘使用状况来检查是否被挂接成功。
[root@mysql-bk ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/hda1 19G 2.7G 16G 15% /
/dev/hda7 51G 180M 48G 1% /backup
/dev/hdc1 145G 6.4G 131G 5% /data
/dev/hda5 19G 173M 18G 1% /home
/dev/hda3 24G 217M 23G 1% /var
/dev/hda2 29G 1.6G 26G 6% /usr
tmpfs 1.7G 0 1.7G 0% /dev/shm
mfs#192.168.0.19:9421 2.5T 256G 2.2T 11% /mnt/mfs
|
四、 进入目录/mnt/mfs,上传一个文件,看是否正常?接着在手动用touch 建立一个文件,而后再删除它们,看是否能够正常操做。
五、 设置文件副本数量,建议以3份为佳。
设置副本数目
mfsrsetgoal 3 /mnt/mfs
查看设置是否如我所愿
mfsgetgoal /mnt/mfs/serydir/bind-9.4.0.tar.gz
/mnt/mfs/serydir/bind-9.4.0.tar.gz: 3
|
六、设置删除文件后空间回收时间。默认的回收时间为7天(604800秒)
修改回收时间为10分钟
mfsrsettrashtime 600 /mnt/mfs
|
六、 把挂接命令追加到文件/etc/rc.local,可实现开机自动启动挂接MFS.
2、freebsd做为MFS客户端
Freebsd安装和挂接MFS集群文件系统,比centos操做起来要复杂一些.mfsmount须要依赖fuse,而且须要在内核中加载fusefs模块。
(一)安装fuse
一、解包 tar zxvf fuse-2.7.4.tar.gz
二、切换目录 cd fuse-2.7.4.
三、配置 ./configure
四、编译安装 make;make install
若是系统已经安装了fuse,则跳过这个步骤。
(二) 安装内核模块fusefs-kmod
一、执行系统命令sysinstall
二、光标选定Configure,进入下一步。
三、选择“Packages”,进入下一步。
四、选择“FTP”做为安装源,进入下一步。
五、选择“kld”后,回车执行默认动做“[OK]”,进入下一步选软件包。
六、选择“fusefs-kmod-0.3.9.p1_2”,按[OK]返回到第“4”步出现的那个操做界面。这时咱们用“Tab”键选中底部右边的“Install”,完成安装后,会出现一个安装成功的提示,而后瞬间消失。
◆ 加载fusefs模块 kldload /usr/local/modules/fuse.ko .若是加载不成功,请检查是否存在模块文件fuse.ko.
◆ 检查fusefs模块是否被加载到内核:
若是没有相似上面馆的输出,就代表fusefs模块没有加载成功。
(三)安装包 pkg-config:
一、cd /usr/ports/devel/pkg-config
二、make install clean
(四)安装MFS客户端
一、解包 tar zxvf mfs-1.6.11.tar.gz
二、切换目录 cd mfs-1.6.11
三、建立用户 pw useradd mfs –s /sbin/nologin
四、配置 ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --enable-mfsmount
五、编译安装 make ; make install
◆检查MFS客户端安装的结果。经过查看目录/usr/local/mfs/bin目录的文件,应该发现以下文件:
(五)挂接和使用MFS文件系统
一、建立挂接点 mkdir /mnt/mfs
二、挂接MFS /usr/local/mfs/bin/mfsmount /mnt/mfs –H 192.168.0.19 .注意,全部的MFS都是挂接同一个元数据服务器master,而不是其余数据存储服务器chunkserver !
三、经过查看磁盘使用状况来检查是否被挂接成功。
[root@mysql-bk ~]# df -h
Filesystem Size Used Avail Capacity Mounted on
/dev/ad4s1a 26G 570M 24G 2% /
devfs 1.0K 1.0K 0B 100% /dev
/dev/ad4s1g 356G 157G 170G 48% /data
/dev/ad4s1f 17G 215M 15G 1% /home
/dev/ad4s1d 28G 1.1G 25G 4% /usr
/dev/ad4s1e 24G 362M 21G 2% /var
/dev/fuse0 2.5T 256G 2.2T 11% /mnt/mfs
|
五、 进入目录/mnt/mfs,咱们能够看见前面步骤用centos 上传到分布式文件系统MFS里的文件。
六、 设置文件副本数量,建议以3份为佳。
设置副本数目
mfsrsetgoal 3 /mnt/mfs
查看设置是否如我所愿
mfsgetgoal /mnt/mfs/serydir/bind-9.4.0.tar.gz
/mnt/mfs/serydir/bind-9.4.0.tar.gz: 3
|
六、设置删除文件后空间回收时间。默认的回收时间为7天(604800秒)
修改回收时间为10分钟
mfsrsettrashtime 600 /mnt/mfs
|
(六)自动挂接MFS
建立文件/etc/rc.local,加入以下内容:.
#!/bin/sh
/sbin/kldload /usr/local/modules/fuse.ko
/usr/local/mfs/bin/mfsmount -h 192.168.0.19
|
就能实现开机或重启系统自动挂接MFS文件系统。
破坏性测试
一、测试数据存储服务器
我用5个服务器组成了MFS的存储平台,其中一个是master,其他四个服务器是chunkserver.先中止一个chunkserver服务,而后在某个MFS客户端往挂接点的目录(/mnt/mfs)里复制数据或者建立目录/文件、或者读取文件、或者删除文件,观察操做是否能正常进行。再中止第2个chunkserver,重复执行上述操做;而后再中止第3个服务器,执行相似的文件读些操做。减小chunkserver试验后,咱们再来逐步增长chunkserver服务器,而后对MFS执行读写等相关访问操做,检验其正确性。
经过增减chunkserver服务器的测试,服务的可靠性确实不错,哪怕只剩下最后一个服务器,也能正常提供存储访问服务。
2、测试元数据服务器
元数据服务器最重要的文件在目录 /usr/local/mfs/var/mfs ,MFS每个数据的变化,都被记录在这个目录的文件里,咱们能够经过备份这个目录的所有文件,来保障整个MFS文件系统的可靠性.在正常状况下,元数据服务器的改变日志文件(changelogs) 实时地、自动地复制到全部的数据存储服务器,而且以changelog_csback.*.mfs的形式命名。换句换说,即便元数据服务器报废了,也能再部署一个元数据服务器,而后从数据存储服务器chunkserver取得恢复所须要的文件。
(一)本地测试
一、中止元数据服务 /usr/local/mfs/sbin/mfsmaster
二、备份元数据服务器数据 cd /usr/local/mfs/var; tar czvf mfs.tgz mfs
三、删除目录 mv mfs mfs.bk 或 rm –rf mfs
四、启动元数据服务 ../sbin/mfsmaster start 启动失败,提示不能初始化数据。
五、解包 tar zxvf mfs.tgz
六、执行恢复操做 .. /sbin/mfsmetarestore –a
七、启动元数据服务 ../sbin/mfsmaster start
八、在MFS客户端检查MFS存储的数据是否跟恢复前一致?可否正常访问等等。
(二) 迁移测试
一、 安装新的MFS元数据服务器。
二、 从当前的元数据服器(master)或日志备份服务器(mfsmetalogger)复制备份文件 metadata.mfs.back/metadate_ml.mfs.back到新的元服务器目录(metadata.mfs.back须要定时用crontab备份).
三、 从当前的元数据服器(master)或日志备份服务器(mfsmetalogger)复制元数据服务器数据目录(/usr/local/mfs/var/mfs)到这个新的元数据服务器。
四、 中止原先的那个元数据服务器(关闭计算机或中止它的网络服务)。
五、 更改新的元数据服务器的ip为原来那个服务器的ip.
六、 执行数据恢复操做,其命令为:mfsmetarestore -m metadata.mfs.back -o metadata.mfs changelog_ml.*.mfs 恢复成功后再执行启动新的元数据服务操做。
七、 启动新的元数据服务 /usr/local/mfs/sbin/mfsmaster start
八、 在MFS客户端检查MFS存储的数据是否跟恢复前一致?可否正常访问等等。
感谢Pawel Kalinowski (mfs做者)提供帮助!
2010/1/11
附软件做者来信:
Hi!
Thank you very much for promoting MooseFS in Chinese language! Please feel
free to use our images of architecture I sent you before. If you need any
help please tell us.
Kind regards
Michał Borychowski
本文出自 “sery” 博客,请务必保留此出处http://sery.blog.51cto.com/10037/263515mysql