linux存储架构体系

132 阅读3分钟

一、架构图

Linux存储架构体系可以分为多个层次,从底层的硬件到顶层的应用程序,每一层都有其特定的功能和作用 image.png

二、 介质层(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:标准的文件操作接口,如openreadwrite等。
  • IO_uring:异步I/O接口,用于提高I/O性能。

六、应用层(Application Layer)

应用层是用户直接使用的部分,包括各种存储相关的应用程序和服务。例如:
  • FastDFS:分布式文件系统,用于存储和分发多媒体文件。
  • Samba:实现SMB协议的文件共享服务。
  • Ceph:分布式存储系统,支持对象、块和文件存储。
  • TiDB:分布式数据库,用于大规模数据存储和管理。
  • MySQL:关系型数据库管理系统。

七、各层关系

各层之间的关系如下:

  • 应用层通过系统调用层访问文件系统层的功能。
  • 文件系统层通过VFS抽象出统一的接口,使得应用层无需关心底层文件系统的差异。
  • 驱动层负责将文件系统的操作转化为硬件设备能够理解的命令。
  • 接口协议层定义了设备与主机之间的通信方式。
  • 介质层提供了实际的存储介质。