一、架构图
Linux存储架构体系可以分为多个层次,从底层的硬件到顶层的应用程序,每一层都有其特定的功能和作用
二、 介质层(Media Layer)
介质层是存储架构的最底层,直接与物理存储设备交互。常见的存储介质包括:
- HDD(Hard Disk Drive,硬盘驱动器):传统的机械硬盘。
- SDD(Solid State Drive,固态硬盘):基于闪存的高速存储设备。
- CD(Compact Disc,光盘) :用于数据存储的光介质。
- U-disk(USB Flash Drive,优盘):便携式闪存设备。
这些设备通过接口协议与系统通信。
三、接口协议层(Interface Protocol Layer)
接口协议层负责定义存储设备与主机之间的通信协议。常见的协议包括:
- NVMe(Non-Volatile Memory Express) :一种用于固态硬盘的高速协议,支持PCIe接口。
- SATA(Serial Advanced Technology Attachment) :一种较早的硬盘接口标准。
- SCSI(Small Computer System Interface) :小型计算机系统接口,支持多种存储设备。
- RDMA(Remote Direct Memory Access) :允许远程直接访问内存,提高数据传输效率。
三、驱动层(Driver Layer)
驱动层负责实现操作系统与硬件之间的交互。每个设备通常都有对应的驱动程序,例如:
- SCSI驱动:处理SCSI设备的命令和数据传输。
- NVMe驱动:管理NVMe设备的读写操作。
驱动层将复杂的硬件操作抽象为简单的API调用,使得上层模块无需关心底层细节。
四、文件系统层(File System Layer)
文件系统层负责组织和管理存储设备上的数据。Linux支持多种文件系统,包括:
- EXT4(Fourth Extended Filesystem):Linux中最常用的文件系统,具有高性能和稳定性。
- XFS(Extended Filesystem) :高性能的日志文件系统,适合大文件和高并发场景。
- Btrfs(B-Tree Filesystem) :支持快照、克隆和高效复制的现代文件系统。
- procfs(Process Filesystem) :虚拟文件系统,提供进程信息。
- vfat:与windows系统兼容的Linux文件系统,可作为windows分区的交换文件。
- gfs2(Global File System2):全局文件系统2,是一种对称集群文件系统,专为高可用性和多节点共享存储设计。
五、系统调用层(System Call Layer)
系统调用层是用户空间与内核空间之间的桥梁,通过系统调用实现对文件系统的操作。例如:
- VFS(Virtual File System) :提供统一的文件系统接口,屏蔽底层差异。
- POSIX API:标准的文件操作接口,如
open、read、write等。 - IO_uring:异步I/O接口,用于提高I/O性能。
六、应用层(Application Layer)
应用层是用户直接使用的部分,包括各种存储相关的应用程序和服务。例如:
- FastDFS:分布式文件系统,用于存储和分发多媒体文件。
- Samba:实现SMB协议的文件共享服务。
- Ceph:分布式存储系统,支持对象、块和文件存储。
- TiDB:分布式数据库,用于大规模数据存储和管理。
- MySQL:关系型数据库管理系统。
七、各层关系
各层之间的关系如下:
- 应用层通过系统调用层访问文件系统层的功能。
- 文件系统层通过VFS抽象出统一的接口,使得应用层无需关心底层文件系统的差异。
- 驱动层负责将文件系统的操作转化为硬件设备能够理解的命令。
- 接口协议层定义了设备与主机之间的通信方式。
- 介质层提供了实际的存储介质。