1文件系统
文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于NAND Flash的固态硬盘)或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。文件系统由三部分组成:文件系统的接口,对对象操纵和管理的软件集合,对象及属性。从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,当用户不再使用时撤销文件等。
2文件系统的分类
2.1本地文件系统
linux的ext3,ext4 windows的FAT32 NTFS ..如下是window下格式化硬盘时可以选择的文件系统。注意下其中有个参数分配单元大小,稍后讨论。
2.2分布式文件系统
利用分布式技术将标准X86服务器的本地HDD、SSD等存储介质组织成一个大规模存储资源池,同时,对上层的应用和虚拟机提供工业界标准的SCSI、iSCSI和对象访问接口,进而打造一个虚拟的文件存储系统。
3 文件的存储
1.块级概念:
块级是指以扇区为基础,一个或我连续的扇区组成一个块,也叫物理块。它是在文件系统与块设备(例如:磁盘驱动器)之间。
2.文件级概念:
文件级是指文件系统,单个文件可能由于一个或多个逻辑块组成,且逻辑块之间是不连续分布。逻辑块大于或等于物理块整数倍,
3.物理块与文件系统之间的关系图:
映射关系:扇区→物理块→逻辑块→文件系统
文件级备份:文件级备份是指在指定某些文件进行备份时,首先会查找每个文件逻辑块,其次物理块,由于逻辑块是分散在物理块上,而物理块也是分散在不同扇区上。需要一层一 层往下查找,最后才完成整个文件复制。文件级备份时比较费时间,效率不高,实时性不强,备份时间长,且增量备份时,单文件某一小部份修改,不会只备份修改 部份,而整个文件都备份。
块级备份:块级备份是指物理块复制,效率高,实时性强,备份时间短,且增量备份时,只备份修改过的物理块。
对象存储: 也就是通常意义的键值存储,其接口就是简单的GET、PUT、DEL和其他扩展,如七牛、又拍、Swift、S3
块存储: 这种接口通常以QEMU Driver或者Kernel Module的方式存在,这种接口需要实现Linux的Block Device的接口或者QEMU提供的Block Driver接口,如Sheepdog,AWS的EBS,青云的云硬盘和阿里云的盘古系统,还有Ceph的RBD(RBD是Ceph面向块存储的接口)
文件存储: 通常意义是支持POSIX接口,它跟传统的文件系统如Ext4是一个类型的,但区别在于分布式存储提供了并行化的能力,如Ceph的CephFS(CephFS是Ceph面向文件存储的接口),但是有时候又会把GFS,HDFS这种非POSIX接口的类文件存储接口归入此类。
6常见分布式文件系统整体对比
开源协议说明
GPL:不允许修改后和衍生的代码做为闭源的商业软件发布和销售,修改后该软件产品必须也采用GPL协议;
GPL V2:修改文本的整体就必须按照GPL流通,不仅该修改文本的源码必须向社 会公开,而且对于这种修改文本的流通不准许附加修改者自己作出的限制;
GPL V3:要求用户公布修改的源代码,还要求公布相关硬件;
LGPL:更宽松的GPL
对比说明 |
TFS |
FastDFS |
MogileFS |
MooseFS |
GlusterFS |
HDFS |
Ceph |
开发语言 |
C++ |
C |
Perl |
C |
C |
Java |
C++ |
开源协议 |
GPL V2 |
GPL V3 |
GPL |
GPL V3 |
GPL V3 |
LGPL |
|
数据存储方式 |
块 |
文件 |
文件 |
块 |
文件 |
块 |
文件/块 |
集群节点通信协议 |
私有协议(TCP) |
私有协议(TCP) |
HTTP |
私有协议(TCP) |
私有协议(TCP)/ RDAM(远程直接访问内存) |
私有协议(TCP) |
|
Metadata server |
NS是TFS集群的中心管理节点,TFS通过主备HA的方式来解决单点问题 |
多个Tracker server和Storage server均不存在单点问题 |
可以配置HA结构 |
单个MDS。存在单点故障和 瓶颈。解决办法:Metalogger Server和 heartbeat+drbd+moosefs |
无,不存在单点故障。靠运行在各个节点上的动态算法来代替MDS,不需同步元数据,无硬盘I/O瓶颈。 |
单个MDS。存在单点故障和 瓶颈。 ZooKeeper配合解决 |
多个MDS,不存在单点故障和瓶颈。MDS可以扩展,不存在瓶颈。 |
FUSE |
支持 |
支持 |
支持 |
||||
专用元数据存储点 |
占用NS |
无 |
占用DB |
占用MFS |
无 |
占用 |
占用MDS |
在线扩容 |
支持 |
支持 |
支持 |
支持 |
支持 |
支持 |
支持 |
冗余备份 |
支持 |
支持 |
- |
支持 |
支持 |
支持 |
支持 |
单点故障 |
存在 |
不存在 |
存在 |
存在 |
不存在 |
不存在 |
不存在 |
易用性 |
安装复杂,官方文档少 |
安装简单,社区相对活跃 |
安装简单,官方文档多 |
安装简单,官方文档专业化 |
安装简单,官方文档专业化 |
安装简单,官方文档专业化 |
|
适用场景 |
跨集群的小文件,存储图片文件等 |
单集群的中小文件 国人在mogileFS的基础上进行改进的key-value型文件系统 |
- |
单集群的大中小文件 用于存储图片 |
跨集群云存储 |
大文件 |
单集群的大中小文件 彻底的分布式,没有单点依赖 |
性能 |
高 |
低 |
高 |
稍低 |
性能慢 |
高 |
|
取舍 |
存在单点故障,安装复杂不宜用,不支持fuse |
主要是不支持fuse |
安装维护复杂,性能不高,不支持fuse |
存在单点故障,占用内存,性能高,支持fuse |
支持fuse,无单点故障,性能稍低,客户端占用相当的CPU和内存 |
存在单点故障,性能慢,不支持fuse适合大文件操作 |
安装简单,无单点依赖,支持fuse,性能好 |