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,性能好 |