数据存储
常见存储类型
随着业务需求和场景不同,需要使用不同类型的存储。常见的三大存储类型:块存储、文件存储、对象存储。 三种存储的自然单位不同,块存储的是数据块,文件存储的是文件,对象存储的是对象。
块存储
块存储是直接访问存储数据的硬件介质。块存储直接通过块设备寻址访问物理上的存储块。块存储只负责数据的读写,性能很高。
文件存储
文件存储是面向自然人使用的。 另一类是通过网络系统访问其他服务器或设备上的文件存储系统,称为 NFS(Networking File System)。
对象存储
对象存储是应用层的存储,以对象的形式存储。 对象存储将对象的元数据和数据块分开存储。元数据包含了数据的全部属性,只要能够检索到元数据,就能找到所有的数据块并同时读取所有数据块,大大提升存储效率。 对象存储背后分成两个组件,元数据服务器/控制节点(MDS)和数据存储服务器(OSD)。 元数据服务器 MDS 的功能:
- 对象存储访问:MDS构造、管理描述每个文件分布的视图,允许Client直 接访问对象。MDS为Client提供访问该文件所含对象的能力,OSD在接收到每个请求时将先验证该能力,然后才可以访问。
- 文件和目录访问管理:MDS在存储系统上构建一个文件结构,包括限额控制、目录和文件的创建和删除、访问控制等。
- Client Cache一致性:为了提高Client性能,在对象存储系统设计时通常支持Client方的Cache。由于引入Client方的Cache,带来了Cache一致性问题,MDS支持基于Client的文件Cache,当Cache的文件发生改变时,将通知Client刷新Cache,从而防止Cache不一致引发的问题。
对象存储设备 OSD 的功能:
- 数据存储:OSD管理对象数据,并将它们放置在标准的磁盘系统上,OSD 不提供块接口访问方式,Client 请求数据时用对象 ID、偏移进行数据读写。
- 智能分布:OSD 用其自身的CPU和内存优化数据分布,并支持数据的预取。
- 对象元数据管理:OSD管理存储在其上对象的元数据,该元数据与传统的inode 元数据相似,通常包括对象的数据块和对象的长度。
存储性能
存储性能指标
IOPS
带宽(网络存储)
冷热存储
热存储:SSD 全闪盘 热存储:SSD + HDD 混合 温存储:HDD 冷存储:相对廉价的高密硬盘存储
FUSE(用户态文件系统)
文件系统是通用操作系统的重要组成部分,而传统上操作系统在内核层面对文件系统提供支持,这让文件系统难以调试开发和维护升级。 **FUSE(Filesystem in Userspace)**是指用户态文件系统,完全在用户态实现的文件系统。FUSE 是 Linux 支持用户态文件系统的内核模块,但也用于特指 Linux 下的用户态文件系统。
- 优势:用户空间下实现文件系统能够大幅开发效率,开发调试都相对方便快速,减少了操作系统的维护文件系统的成本。
- 劣势:用户态文件系统会引入内核态和用户态间切换的开销。