MFS文件系统的组成 ◆ 元数据服务器。 在整个体系中负责管理管理文件系统,目前MFS只支持一个元数据服务器master,这是一个单点故障,需要一个性能稳定的服务器来充当。 希望今后MFS能支持多个master服务器,进一步提高系统的可靠性。 ◆ 数据存储服务器chunkserver。真正存储用户数据的服务器。 存储文件时,首先把文件分成块,然后这些块在数据服务器chunkserver之间复制(复制份数可以手工指定,建议设置副本数为3)。 数据服务器可以是多个,并且数量越多,可使用的“磁盘空间”越大,可靠性也越高。 ◆ 客户端。使用MFS文件系统来存储和访问的主机称为MFS的客户端,成功挂接MFS文件系统以后,就可以像以前使用NFS一样共享这个虚拟性的存储了。 元数据服务器安装和配置 元数据服务器可以是linux,也可以是unix,你可以根据自己的使用习惯选择操作系统,GNU源码,在各种类unix平台的安装都基本一致。 (一)安装元数据服务 1、下载GNU源码 wget http://www.moosefs.com/files/mfs-1.5.12.tar.gz 2、解包 tar zxvf mfs-1.5.12.tar.gz 3、切换目录 cd mfs-1.5.12 4、创建用户 useradd mfs –s /sbin/nologin 5、配置 ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs 6、编译安装 make ; make install (二)配置元数据服务 元数据服务器的配置文件是mfsmaster.cfg, 文件的位置在/usr/local/mfs/etc/mfsmaster.cfg 打开这个配置文件,看看都有哪些内容: #WORKING_USER = mfs #WORKING_GROUP = mfs #LOCK_FILE = /var/run/mfs/mfsmaster.pid #DATA_PATH = /usr/local/mfs/var/mfs #SYSLOG_IDENT = mfsmaster #BACK_LOGS = 50 #REPLICATIONS_DELAY_INIT = 300 #REPLICATIONS_DELAY_DISCONNECT = 3600 #MATOCS_LISTEN_HOST = * #MATOCS_LISTEN_PORT = 9420 #MATOCU_LISTEN_HOST = * #MATOCU_LISTEN_PORT = 9421 #CHUNKS_LOOP_TIME = 300 #CHUNKS_DEL_LIMIT = 100 #CHUNKS_REP_LIMIT = 15
尽管每行都被注释掉了,但它们却是配置文件的默认值,要改变这些值,需要取消注释,然后明确指定其取值。 接下来说明一下其中一些项目的含义。 LOCK_FILE = /var/run/mfs/mfsmaster.pid 文件锁所在的位置,它的功能是避免启动多次启动同一个守护进程。 由于系统中本来不存在目录 /var/run/mfs, 因此需要手动创建 mkdir /var/run/mfs, 然后更改其属主 chown –R mfs:mfs /var/run/mfs 这样MFS 服务就能对这个目录有创建/写入 mfsmaster.pid 文件的权限了。 DATA_PATH = /usr/local/mfs/var/mfs 数据存放路径,只元数据的存放路径。 那么这些数据都包括哪些呢?进目录看看,大致分3种类型的文件: changelog.7.mfs changelog.8.mfs changelog.9.mfs metadata.mfs.back stats.mfs 这些文件也同样要存储在其他数据存储服务器的相关目录。 MATOCS_LISTEN_PORT = 9420 即元数据服务器使用9420这个监听端口来接受数据存储服务器chunkserver端的连接。 MATOCU_LISTEN_PORT = 9421 元数据服务器在9421端口监听,用以接受客户端对MFS进行远程挂接(客户端以mfsmount挂接MFS) 其他部分看字面意思都不难理解。还有几个与时间有关的数值,其单位是秒。 这个配置文件,不必做修改就能工作了。
(三)元数据服务器master启动 元数据服务器可以单独启动,即使没有任何数据存储服务器(chunkserver)也是能正常工作的,因此当我们安装配置完MFS后,即可启动它。 执行命令 /usr/local/mfs/sbin/mfsmaster start 如果没有意外,元数据库服务器就应该作为一个守护进程运行起来。 现在我们可以通过3个方面来检查一下MFS master的运行状况: 1、检查进程 #ps aux|grep mfsmaster | grep -v grep 2、检查网络状态 # netstat -an 3、检查系统日志 # tail -f /var/log/messages MFS 的日志会直接写入系统日志。 当我们增加数据存储服务器(chunkserver) 或 数据存储服务器(chunkserver) 发生故障时,都能在系统日志找到这些记录。 注意:这个日志跟元数据变化日志不是一回事情。
(四)、关闭元数据服务器 关闭元数据服务器,务必使用 /usr/local/mfs/sbin/mfsmaster –s 这种方式,如果直接使用kill杀死进程,将导致下次启动时出现找不到相关文件,而不能正常启动服务器。 这个一定要谨慎。 当然,如果发生了这个事情,还是可以通过 mfsmetastore 来恢复的。
/////////////////////////////////////////////////////////////////////////////////// 数据存储chunkserver服务器的安装配置 数据存储服务器chunkserver也是可以运行在各种类unix平台的,因此不再多说。 一个MFS环境到底能集群多少服务器,作者的说法是上PB容量,个人建议,最好3台以上; 并且专门用来做存储,不要把它跟master搞到一个机器(理论上没问题,实现也是可以的,但这不是一个好策略)。 因为每个数据存储服务器的安装和配置都是相同的,所以只需按照一个服务器的操作就可以了。 (一)、安装数据存储服务器 chunkserver 1、下载GNU源码 wget http://www.moosefs.com/files/mfs-1.5.12.tar.gz 2、解包 tar zxvf mfs-1.5.12.tar.gz 3、切换目录 cd mfs-1.5.12 4、创建用户 useradd mfs –s /sbin/nologin 5、配置 ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs 6、编译安装 make ; make install (二)配置数据存储服务器chunkserver 数据存储服务器有2个配置服务器需要修改,一个是主配置文件 mfschunkserver.cfg ,另一个配置文件是 mfshdd.cfg。 每个服务器用来分配给 MFS使用的空间最好是一个单独的硬盘或者一个raid卷,最低要求是一个分区。 作者举的例子是创建一个大文件,然后挂接在本地,这不好,只能用来做实验了。 1、修改配置文件 /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 这个监听端口用于与其它数据存储服务器间的连接,通常是数据复制。 ◆ HDD_CONF_FILENAME = /usr/local/mfs/etc/mfshdd.cfg 分配给MFS使用的磁盘空间配置文件的位置。 2、修改配置文件/usr/local/mfs/etc/mfshdd.cfg。 在我的服务器上,只有一个1T的SATA硬盘,分了一个800G容量的分区来做为MFS存储服务的组成部分。 为了使mfs拥有写目录的权限,需要修改目录的属主。 我的服务器的分区挂接点是 /data , 用 chown –R mfs:mfs /data 把属主改变。 因为我的每个服务器只需贡献一个分区做为MFS,因此配置文件只需要如下一行内容就可以了: /data 这个文件默认有好几行,最好把他们删除,因为常规情况用注释符号“#”好象不起作用。 (三)启动数据存储服务器chunkserver 在数据存储服务器 执行 /usr/local/mfs/sbin/mfschunkserver start 启动数据存储守护进程。 通过以下几种方式检查运行状态 1、查看进程 ps aux|grep mfschunkserver 2、查看网络状态,正常情况下应该能看见9422 端口处于监听状态,如果有其他数据存储服务器chunkserver 在同一元数据服务器master 管理下运行的话, 应该能看见其他chunkserver 跟本机的连接情况: #netstat -an|grep 9422|grep EST 3、查看元数据服务器的系统日志,可以看见新增的数据存储服务器 chunkserver 被加入。 #tail -f /var/log/messages (四)关闭数据存储服务器 跟元数据服务器master相似,执行命令 /usr/local/mfs/sbin/mfschunkserver –s , chunkserver服务就停下来了。 为了使系统重启过程能自动启动chunkserver 服务,可以通过在/etc/rc.local文件追加行 /usr/local/mfs/sbin/mfschunkserver start 来达到这个目的(master的自动重启处理也可同样处理)。
///////////////////////////////////////////////////////////////////////////////////////////////////// MFS客户端的安装及配置 安装环境 centos5.2 Mfsmount需要依赖FUSE,因此需要先安装好fuse,这里我选用 fuse-2.7.4.tar.gz。 1、解包 tar zxvf fuse-2.7.4.tar.gz 2、切换目录 cd fuse-2.7.4. 3、配置 ./configure 4、编译安装 make;make install (一)安装MFS客户端程序 1、修改环境变量文件/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客户端程序。 2、tar zxvf mfs-1.5.12.tar.gz 3、cd mfs-1.5.12 4、useradd mfs -s /sbin/nologin 5、./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --enable-mfsmount 6、make;make install 检查MFS客户端安装结果 # ll /usr/local/mfs/bin/ (二) 挂接和使用MFS文件系统 1、创建挂接点 mkdir /mnt/mfs 2、挂接MFS /usr/local/mfs/bin/mfsmount -h 192.168.0.19 注意,所有的MFS都是挂接同一个元数据服务器master,而不是其他数据存储服务器chunkserver 3、通过查看磁盘使用情况来检查是否被挂接成功。 4、进入目录 /mnt/mfs 上传一个文件,看是否正常?再手动用 touch 创建一个文件,然后再删除他们,看是否可以正常操作。 5、设置文件副本数量,建立设3份为佳。 mfsrsetgoal 3 /mnt/mfs 查看设置 mfsgetgoal /mnt/mfs/serydir/zsy.tar.gz /mnt/mfs/serydir/zsy.tar.gz:3 6、设置删除文件后空间回收时间,默认回收时间为7天(604800秒) 修改回收时间为10分钟 mfsrsettrashtime 600 /mnt/mfs 7、把挂家命令追加到文件 /etc/rc.local 可实现开机自动挂接MFS
//////////////////////////////////////////////////////////////////////////////////////// 破坏性测试 一、测试数据存储服务器 我用5个服务器组成了MFS的存储平台,其中一个是master,其余四个服务器是chunkserver. 先停止一个chunkserver服务,然后在某个MFS客户端往挂接点的目录(/mnt/mfs)里复制数据或者创建目录/文件、或者读取文件、或者删除文件,观察操作是否能正常进行。 再停止第2个chunkserver,重复执行上述操作; 然后再停止第3个服务器,执行类似的文件读些操作。 减少chunkserver试验后,我们再来逐步增加chunkserver服务器,然后对MFS执行读写等相关访问操作,检验其正确性。
请您注册登录超级码客,加载全部码客文章内容... |
|