分类: LINUX
2011-03-14 16:53:10
作者:feiyang 联系qq:979835161
关于MooseFS
MooseFS是容错,网络分布式文件系统。 它遍及数项是可见的,作为一个资源用户的物理服务器上的数据。 对于标准的文件操作MooseFS作为其他Unix相似的文件系统:
一个层次结构(目录树)
商店POSIX文件属性(权限,最后访问和修改时间)
支持特殊文件(块设备和字符设备,管道和套接字)
符号链接(指向目标文件名的文件,不一定MooseFS)和(文件不同的名字是指以相同的数据上MooseFS)硬链接
访问文件系统可以限制基于IP地址和/或密码
MooseFS特色的特点是:
高可靠性(数据的多个副本可以存储在不同的电脑上)
动态扩展能力是通过附加新电脑/磁盘
删除的文件保留的时间配置的时期内(文件系统层次“垃圾桶”)
相干快照的文件,即使该文件被写入/访问
MooseFS由四部分组成:
管理服务器( 主服务器 ) -一台机器上管理整个文件系统,存储设备的所有文件和元数据(信息的大小,属性和文件位置(S)和管道的所有信息,包括关于非正规文件,即目录,插座, )。
数据服务器( 块服务器 ) -的话)的副本数量商用服务器存储文件的数据,并同步它们之间的(如果一个特定的文件应该存在于多个。
元数据备份服务器(县)( metalogger服务器 ) -任何服务器的数量,所有这些存储元数据变更记录,并定期下载主元数据文件,从而促进这些服务器管理服务器中的作用时,第一主停止工作。
客户端计算机访问(安装)的MooseFS文件-使用任何机器数 mfsmount 服务器通信的过程与管理(接收和修改文件元数据)chunkservers和(实际的文件交换数据)。
mfsmount 是基于 (文件系统在用户空间),因此可在每MooseFS等)作业系统执行工作保险丝(Linux操作系统,FreeBSD的,MacOS X系统,
元数据是存储在服务器内存的管理,并同时保存到磁盘(作为一个定期更新的二进制文件,并立即更新增量日志)。 主要的二进制文件以及日志同步到metaloggers(如果存在)。
文件数据分成一个最大的64MiB每个碎片(块)。 每块本身就是对数据服务器(chunkservers)选定的磁盘文件。
高可靠性是由许多不同的数据服务器,适当配置,实现“目标”值(副本保留数)达到设置指定的文件。
系统如何工作
客户端计算机上安装的所有文件已MooseFS操作是完全一样的,因为他们将与其他文件系统。 操作系统的内核把所有的文件操作到保险丝模块,它与mfsmount进程通信。 通过网络mfsmount进程通信随后与管理服务器和数据服务器(块服务器)。 这整个过程是完全透明的用户。
mfsmount 与管理服务器通信所需的时间每一个操作元数据文件是:
创建文件
删除文件
阅读目录
阅读和不断变化的属性
改变文件大小
在读或写数据的开始
MFSMETA上的任何特殊文件访问
mfsmount 使用一个文件的直接连接到数据服务器(块服务器)大块物料相关的。 当写一个文件,完成后写入进程管理服务器收到信息 mfsmount 更新文件的长度和最后修改的时间。此外,数据服务器(块服务器)相互通信的数据复制,以达到不同的机器上的一个文件的副本适当的名额。
管理命令允许系统管理员指定的“目标”,或在每个目录或者每个文件级别的,应予以保留副本,号码。 设定目标之一,并拥有超过一个以上的数据服务器提供容错能力。 当文件数据存储在许多副本(在多台数据服务器),该系统可耐故障或一个单一的数据网络服务器暂时中断。
这当然不是指的“目标”设定为1,文件在这种情况下文件将只存在于一个单一的数据服务器,无论服务器的许多数据是如何在系统中部署。
特别重要的文件可能有他们的目标设定为一个数字大于二,这将让这些文件可以抵抗超过一台服务器一次故障。
在一般的份数可用的设置应该是一个比预期的数量多出人迹罕至或序服务器。
在情况下,一个单一的数据从网络服务器遇到故障或断线,在认为至少有两个副本中存储的文件,将继续从其他数据服务器的访问。的数据,现在为'根据其目标'将被复制到另一个服务器,再次访问的数据提供所需的份数。
应当指出,如果可用的服务器数量比“目标”为一个给定的文件中设置较低,所需的份数不能保存。 同样,如果有,作为当前设置的目标服务器相同的数目,如果一个数据服务器已经达到其容量的100%,这将是无法开始举行的文件的阈值低于其目标现在由于另一份数据服务器进入脱机状态。 在这种情况下,新的数据服务器应尽快连接到系统,以维持该文件所需的份数。
一个新的数据服务器可以连接到在任何时间系统。 新的能力将立即成为可用于存储新文件或从服务器持有其他数据文件复制副本。
行政事业存在在文件查询系统中的文件的状态,以确定是否任何文件均低于目标(套份数)目前。 此实用工具也可以用来改变目标设定的要求。
碎片的数据存储在块是版本管理,所以重新连接旧的数据(例如,如果已经下了一段时间离线)复制一个数据服务器,将不会导致文件变得语无伦次。 数据服务器将同步自己持有的块,其中过时的块将被删除,自由空间将被重新分配给持有新块的当前版本。
一个客户机(即运行mfsmount过程)失败将会对文件系统的连贯性或对其他客户的业务没有影响。 在最坏的情况下,还没有从失败的客户端计算机发送的数据可能会丢失。
mfs组成
1、 元数据服务器。在整个体系中负责管理管理文件系统,目前MFS只支持一个元数据服务器 master,这是一个单点故障,需要一个性能稳定的服务器来充当。希望今后MFS能支持多个master服务器,进一步提高系统的可靠性。
2、 数据存储服务器chunkserver。真正存储用户数据的服务器。存储文件时,首先把文件分成块,然后这些块在数据服务器chunkserver之间复制(复制份数可以手工指定,建议设置副本数为3)。数据服务器可以是多个,并且数量越多,可使用的“磁盘空间”越大,可靠性也越高。
3、 客户端。使用MFS文件系统来存储和访问的主机称为MFS的客户端,成功挂接MFS文件系统以后,就可以像以前使用NFS一样共享这个虚拟性的存储了。
环境介绍:
主服务端:192.168.1.219 mfsmaster
备份端:192.168.1.220
存储服务(chunkserver)端:192.168.1.222
客户端:192.168.1.218 、192.168.1.222(主要为了测试,没那么多机器智能将就下)
主服务端219安装:
下载软件:
最新的 MooseFS 稳定发行版本可以从
1、添加 mfs 组
#groupadd mfs
2、新增系统用户 mfs 或(useradd mfs –s /sbin/nologin )
#useradd -g mfs mfs
3、切换目录
#cd /usr/src
4、解包归档文件
#tar -zxvf mfs-1.6.20-2
5、进入安装目录
#cd mfs-1.6.20-2
6、配置
mfs-1.6.20-2]#./configure --prefix=/usr/local/mfs --sysconfdir=/usr/local/mfs/etc --localstatedir=/usr/local/mfs/var --with-default-user=mfs --with-default-group=mfs --disable-mfschunkserver --disable-mfsmount
7、编译并安装
#make
#make install
启动
/usr/local/mfs/sbin/mfsmaster start
关闭元数据服务器,务必使用 /usr/local/mfs/sbin/mfsmaster –s 这种方式,如果直接使用kill杀死进程,将导致下次启动时出现找不到相关文件,而不能正常启动服务器。这个一定要谨慎。当然,如果发生了这个事情,还是可以通过 mfsmetastore 来恢复的。
启动报错
can't open metadata file
if this is new instalation then rename /usr/local/mfs/var/mfs/metadata.mfs.empty as /usr/local/mfs/var/mfs/metadata.mfs
init: file system manager failed !!!
解决cp /opt/mfs/mfs-1.6.20-2/mfsdata/metadata.mfs ./
查看
日志
Mar 11 02:49:00 gfs1 mfsmaster[28368]: chunkservers status:
Mar 11 02:49:00 gfs1 mfsmaster[28368]: total: usedspace: 0 (0.00 GiB), totalspace: 0 (0.00 GiB), usage: 0.00%
Mar 11 02:49:00 gfs1 mfsmaster[28368]: no meta loggers connected !!!
Mar 11 02:49:04 gfs1 gfs_controld[3470]: connect to ccs error -111, ch
修改hosts文件
192.168.1.219 mfsmaster
vi mf***ports.cfg
取消注释
mapped as users with uid:gid = 999:999.
192.168.1.0/24 / rw #ip自己定义那些可以访问
Vi mfsmaster.cfg
取消所有注释,并修改data信息DATA_PATH = /usr/local/mfs/var/mfs
mkdir /usr/local/mfs/var
chown mfs:mfs /usr/local/mfs/var/ -R
/usr/local/mfs/sbin/mfscgiserv
starting simple cgi server (host: any , port: 9425 , rootpath: /usr/share/mfscgi)
浏览器查看
存储服务器安装222
1、添加 mfs 组
#groupadd mfs
2、新增系统用户 mfs 或(useradd mfs –s /sbin/nologin )
#useradd -g mfs mfs
3、切换目录
#cd /usr/src
4、解包归档文件
#tar -zxvf mfs-1.6.20-2
5、进入安装目录
#cd mfs-1.6.20-2
6、配置
#]./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --sysconfdir=/usr/local/mfs/etc --localstatedir=/usr/local/mfs/var
Make && make install
创建文件
cp mfsdata/mfschunkserver.cfg /usr/local/mfs/etc/
mkdir /usr/local/mfs/var
chown mfs:mfs /usr/local/mfs/var/ -R
添加设备
vi mfshdd.cfg
/add
add 是我的一个分区,此用来共享存储服务
配置hosts
vi /etc/hosts
192.168.1.219 mfsmaster
查看
netstat -anlutp | grep mfs
tcp 0 0 0.0.0.0:9422 0.0.0.0:* LISTEN 7852/mfschunkserver
tcp 0 0 192.168.1.222:43417 192.168.1.219:9420 ESTABLISHED 7852/mfschunkserver
查看日志
[root@gfs3 sbin]# tail -f /var/log/messages
Mar 14 19:09:37 gfs3 smartd[7012]: Monitoring 0 ATA and 0 SCSI devices
Mar 14 19:09:37 gfs3 smartd[7030]: smartd has fork()ed into background mode. New PID=7030.
Mar 14 19:19:26 gfs3 mfschunkserver[7852]: set gid to 500
Mar 14 19:19:26 gfs3 mfschunkserver[7852]: set uid to 500
Mar 14 19:19:26 gfs3 mfschunkserver[7852]: main server module: listen on *:9422
Mar 14 19:19:26 gfs3 mfschunkserver[7852]: connecting ...
Mar 14 19:19:26 gfs3 mfschunkserver[7852]: no charts data file - initializing empty charts
Mar 14 19:19:26 gfs3 mfschunkserver[7852]: open files limit: 10000
Mar 14 19:19:26 gfs3 mfschunkserver[7852]: connected to Master
启动
/usr/local/mfs/sbin/mfschunkserver start
在浏览器上观察
能看到多出一个设备222 说明正确
备份服务端220
1、添加 mfs 组
#groupadd mfs
2、新增系统用户 mfs 或(useradd mfs –s /sbin/nologin )
#useradd -g mfs mfs
3、切换目录
#cd /usr/src
4、解包归档文件
#tar -zxvf mfs-1.6.20-2
5、进入安装目录
#cd mfs-1.6.20-2
6、配置
./configure --prefix=/usr/local/mfs --sysconfdir=/usr/local/mfs/etc --localstatedir=/usr/local/mfs/var --with-default-user=mfs --with-default-group=mfs --disable-mfschunkserver --disable-mfsmount
Make && make install
创建文件
cp mfsmetalogger.cfg.dist mfsmetalogger.cfg
修改
vi mfsmetalogger.cfg
取消注释并修改如下
MASTER_HOST = 192.168.1.219 #主机名或ip都可
配置hosts
vi /etc/hosts
192.168.1.219 mfsmaster
启动
/usr/local/mfs/sbin/mfsmetalogger start
客户端222和218
1、添加 mfs 组
#groupadd mfs
2、新增系统用户 mfs 或(useradd mfs –s /sbin/nologin )
#useradd -g mfs mfs
3、切换目录
#cd /usr/src
4、解包归档文件
#tar -zxvf mfs-1.6.20-2
5、进入安装目录
#cd mfs-1.6.20-2
6、配置
Yum install –y fuse* #这个软件必须安装
编译安装
./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/www/lib --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster --disable-mfschunkserver
Make && make install
创建挂在目录
mkdir /mnt/mfs
挂载
mfsmount /mnt/mfs -H mfsmaster
mfsmaster accepted connection with parameters: read-write,restricted_ip ; root mapped to root:root
查看信息
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
5.1G 4.3G 572M 89% /
/dev/hda1 99M 16M 79M 17% /boot
tmpfs 125M 0 125M 0% /dev/shm
mfs#mfsmaster:9421 3.4G 0 3.4G 0% /mnt/mfs #说明正确
测试
将客户端222和218 都已经成功挂载,在222、218相互创建文件,均可正常访问。
关闭222 网卡,218 挂载的mfs也能正常读写访问。(这比gfs强很多)
参考:老田翻译和mfs原英文文档