微软 HTML5 wordpress php Python Ubuntu apache shell linux命令 Firefox google mysql Android linux centos Windows 开源 java 程序员 nginx

简述GFS文件系统和在RedHat Linux下的配置

关于GFS文件系统的概念

GFS的全称是Google file System,为了满足Google迅速增长的数据处理要求,Google设计并实现的Google文件系统(GFS)。Google文件系统是一个可扩展的分布式文件系统,用于大型的、分布式的、对大量数据进行访问的应用。它运行于廉价的普通硬件上,但可以提供容错功能。它可以给大量的用户提供总体性能较高的服务,也可以提供容错功能。

谷歌“三宝”是“Google文件系统”,“BigTable大表”,“MapReduce算法”。至今除了谷歌,在数据中心维护上还没有谁自己开发文件系统这种十分底层的技术,有了自己的文件系统,谷歌就可以有效的组织庞大的数据,服务器和存储,并用它们工作。作为谷歌“三宝”的其中之一,GFS的技术优势不言而喻。

GFS在很多方面上与之前出现过的分布式文件系统有着许多相似的地方,比如性能、可扩展性、可靠性和可用性。但是,它的设计更多地基于我们对于我们的应用的特性的观察和技术环境,包括现在的和将来可能出现的,因此也与之前的文件系统设计有着显著的不同。Google仔细地考察过传统的取舍,并且在设计空间中对各种不同方案做了深入的研究。

关于GFS文件系统结构功能

GFS文件系统为分布式结构,它是一个高度容错网络文件系统,主要chunkserver由一个master(主)和众多chunkserver(大块设备)构成的,体系结构如下图:

GFS文件系统的工作过程:

  1. 客户端使用固定大小的块将应用程序指定的文件名和字节偏移转换成文件的一个块索引,向master(主)发送包含文件名和块索引的请求;
  2. master收到客户端发来的请求,master向块服务器发出指示,同时时刻监控众多chunkserver的状态。Chunkserver缓存master从客户端收到的文件名和块索引等信息。
  3. master通过和chunkserver的交互,向客户端发送chunk-handle和副本位置。其中文件被分成若干个块,而每个块都是由一个不变的,全局唯一的64位的chunk-handle标识。Handle是由master在块创建时分配的。而出于安全性考虑,每一个文件块都要被复制到多个chunkserver上,一般默认3个副本;
  4. 客户端向其中的一个副本发出请求,请求指定了chunk handle(chunkserver以chunk handle标识chunk)和块内的一个字节区间。
  5. 客户端从chunkserver获得块数据,任务完成。

Red Hat 企业版 GFS 文件系统配置

前提在安装OS的时候记得选择集群和集群存储省得实际配置时缺少必要的包和程序,负责server的主机需要把gnome桌面安装上。

一:环境 三台普通PC电脑,或虚拟机,ip和主机名如下

  • gfs01 192.168.3.38(作为server)
  • gfs02 192.168.3.37
  • gfs03 192.168.3.36

二:修改相应主机的hosts 和network 示例如下

# vi /etc/hosts
192.168.3.38 gfs01
192.168.3.37 gfs02
192.168.3.36 gfs03
# vi /etc/sysconfig/network IP对应的主机名

三:使用system-config-cluster 产生cluster.conf(gfs01-server)可以利用GUI工具配置。步骤如下:

  1. 添加三个节点: A.gfs01 B.gfs02 B.gfs03
  2. 将生成的cluster.conf 文件分别添加到各个节点,重启电脑。

四:启动服务(三台主机)

# service cman start
# service clvmd start
# service gfs start
# service rgmanager start

启动上面cman需要注意点如果启动失败,提示”cman not started: two_node set but there are more than 2 nodes” 错误可以先service cman stop 再启动。

五:export 分区(gfs01 “server”)

# sbin/gnbd_serv -v -n
# gnbd_export -d /dev/sdb1 -e gfsTest -c

-d指定设备,-e指定集群名称,-c创建 客户端gnbd_import 时用到

检查export结果:

# gnbd_export -v -l

六:节点import gfs01 的分区(gfs02,gfs03)

# modprobe gnbd
# gnbd_import -v -i gfs0

将产生/dev/gnbd/gfsTest, gfsTest 为gfs01 export 时的名称。

检查import 结果:

# gnbd_import -v -l

七:在客户端节点上建立gfs文件系统并挂载(gfs02,gfs03)

# modprobe gfs
# gfs_mkfs -p lock_dlm -t gfsCluster:gfs -j 2 /dev/gnbd/gfsTest

其中gfsCluster为集群的名称,gfs为文件系统的类型,lock-dlm为锁协议。

八:节点挂载gfs文件系统(gfs02,gfs03)

# mkdir /gfsTest
# mount -t gfs /dev/gnbd/gfsTest /gfsTest

延伸阅读

评论

  1. 误导群众 红帽是 global file system 谷歌是 google file system引用 ” GFS 简要说明,它有两种:1. Google文件系统:GFS是GOOGLE实现的是一个可扩展的分布式文件系统,用于大型的、分布式的、对大量数据进行访问的应用。它运行于廉价的普通硬件上,但可以提供容错功能。它可以给大量的用户提供总体性能较高的服务。欲了解更多,可以访问:http://www.codechina.org/doc/google/gfs-paper/introduction.html2. Redhat 的GFS(Global File System)GFS(Global File System)自己以本地文件系统的形式出现。多个Linux机器通过网络共享存储设备,每一台机器都可以将网络共享磁盘看作是本地磁盘,如果某台机器对某个文件执行了写操作,则后来访问此文件的机器就会读到写以后的结果。可以根据对性能或是可扩展性,或者以经济性多个原则进行不同方案的部署。”