基于开源系统构建分布式并行文件系统
来源:互联网 发布:贝叶斯算法 知乎 编辑:程序博客网 时间:2024/06/10 21:42
话说目前市面上绝大部分的集群文件系统都是从Linux上开发出来的,所以有一天我突然想到那些所谓企业化的套件,其实我们也是可以山寨出一个,然后自己出个发行版,比如效仿glusterFS或mooseFS那种做法,于是写下此文。
分布式文件系统可以分为两大类。一种是以单台元数据服务器(MDS,MDC)和多台IO节点服务器组成的的架构,典型的比如Stornext和Lustre;
另一种是没有独立的元数据服务器,而把元数据分散到各个IO节点中的架构,比如Ibrix和GlusterFS等。这两种结构也各有其优缺点。
如今绝大部分的分布式文件系统都是基于*nix平台的,并且Linux下的居多,只有个别的除外(微软的DFS)。所以我灵光一闪,何不用各种开源的包和工具自己山寨出一个呢?
底层的存储部分无论DAS或者SAN,我们均可以用Linux的LVM拼接出一个大卷;或者不使用MBR,而直接改用GPT来引导。这样,可以突破2TB容量的限制。利用device mapper来实现存储部分的linear,mirror,stripe等策略,以及multi-path机制。
文件系统部分,我们可以先挂载ext3,然后用FUSE来实现用户层文件系统跨服务器的拼接。让一个单一的命名空间跨越多台IO节点服务器。FUSE通过RPC服务实现IO节点服务器和元数据服务器之间的通信。
集群和高可用性可以这样设置,来达到容错的效果。各台IO节点服务器之间通过CVS来做集群;而元数据服务器可以设主备共两台,通过heartbeat来实现HA切换,active-standby模式。各个IO节点服务器安装DRBD,来实现file raid的功能,即每次写入一文件,会写两份,同时分散到2个节点服务器所抓的卷中。
对于用户层,各台IO节点可以使用samba,nfs等手段进行共享,并且用户看到的应该是一个单一命名空间,这个空间跨越了所有的节点服务器。如果条件允许的话,甚至可以用python或perl配合apache或tomcat开发一个GUI,类似webmin那样的以简化用户的操作。
剩下的便是那些附加的功能了。使用LDAP,或者winbind走NIS域与windows AD连接来达到对用户的账号控制;使用ACL和quota来达到对用户的权限和配额控制,等等。
总体的框架如上,不过具体实施起来应该会碰到很多问题,撇开脚本和python先不说,光协调好如此多的系统服务,已经很难了......- 基于开源系统构建分布式并行文件系统
- 分布式文件系统/集群文件系统/并行文件系统
- 基于CCM构建SOC分布式系统
- 开源分布式文件系统&文件系统
- 开源分布式文件系统
- 开源分布式文件系统
- 开源分布式文件系统
- 开源分布式文件系统
- 基于HLA的分布式卫星通信仿真系统的构建
- 基于Scala构建分布式调度ETL系统Akkaflow
- 如何区分分布式/集群/并行文件系统?
- 如何区分分布式/集群/并行文件系统?
- 如何区分分布式/集群/并行文件系统?
- 分布式文件系统,NoSQL数据库,并行计算框架
- 如何区分分布式/集群/并行文件系统?
- 如何区分分布式/集群/并行文件系统?
- 如何区分分布式/集群/并行文件系统?
- 如何区分分布式-集群-并行文件系统
- vs2008下directshow的配置
- Minifilter中Swapping buffers(交换缓冲)
- ORA-01589: must use RESETLOGS or NORESETLOGS option for database open
- Android 的属性系统(翻译)
- Hadoop从业者炙手可热 技能需求苛刻
- 基于开源系统构建分布式并行文件系统
- 如何查找Python第三方功能模块
- Xen环境下的内存与CPU分配
- Linux scp 使用详解
- 软件企业营销策略分析
- Linux摄像头编程小结
- Linux下汉字编码的转换(gbk转换为utf8)
- c++输入流错误码
- RSYNC安装使用详解