存储管理

数据存储、组织和维护的一种计算机系统

存储管理

存储管理(Storage Management),是计算机系统中负责规划、设计、实施和维护数据存储系统的核心组成部分,确保数据的安全性、可靠性和高效访问。[1][4]其关键技术包括内存分配与回收、页面置换算法、RAID技术、存储虚拟化等,[2][3]共同实现数据存储的合理规划和维护,优化系统性能和数据安全性。[1][3]存储管理的进化与计算机技术的发展息息相关。在20世纪初,数据的存储从打孔卡片和纸带发展为磁鼓和磁带。[5][6]1956年,IBM推出了世界上第一台磁盘存储系统RAMAC,标志着现代存储管理技术的开始。[7][6]20世纪70年代,埃德加·科德(Edgar Frank Codd)提出的关系模型为数据库设计和理论奠定了基础,数据库管理系统形成。[5]1987年,RAID技术的出现极大提升了存储的可靠性。[2]20世纪90年代中期,网络附加存储(NAS)和存储区域网络(SAN)的商业化,简化了文件共享并加速了数据传输。[5][8]21世纪,存储管理发生革命性的变化,云存储服务(如AWS S3)提供远程数据存储能力,大数据技术(如Apache Hadoop和Apache Spark)支持海量数据的管理和分析。[5][6]随后,软件定义存储(SDS)和3D XPoint技术的出现,提高了存储配置的灵活性和性能,开源存储系统因其成本效益受到青睐。2020年后,人工智能(AI)和机器学习(ML)技术优化了存储性能和资源管理,实现了更为智能化的存储管理。[2]

存储管理(Storage Management),是计算机系统中负责规划、设计、实施和维护数据存储系统的核心组成部分,确保数据的安全性、可靠性和高效访问。[2][5]其关键技术包括内存分配与回收、页面置换算法、RAID技术、存储虚拟化等,[3][4]共同实现数据存储的合理规划和维护,优化系统性能和数据安全性。[2][4]

存储管理的进化与计算机技术的发展息息相关。在20世纪初,数据的存储从打孔卡片和纸带发展为磁鼓磁带[6][7]1956年,IBM推出了世界上第一台磁盘存储系统RAMAC,标志着现代存储管理技术的开始。[8][7]20世纪70年代,埃德加·科德(Edgar Frank Codd)提出的关系模型为数据库设计和理论奠定了基础,数据库管理系统形成。[6]1987年,RAID技术的出现极大提升了存储的可靠性。[3]20世纪90年代中期,网络附加存储(NAS)和存储区域网络(SAN)的商业化,简化了文件共享并加速了数据传输。[6][9]21世纪,存储管理发生革命性的变化,云存储服务(如AWS S3)提供远程数据存储能力,大数据技术(如Apache Hadoop和Apache Spark)支持海量数据的管理和分析。[6][7]随后,软件定义存储(SDS)和3D XPoint技术的出现,提高了存储配置的灵活性和性能,开源存储系统因其成本效益受到青睐。2020年后,人工智能(AI)和机器学习(ML)技术优化了存储性能和资源管理,实现了更为智能化的存储管理。[3]

存储管理分为连续分配和离散分配两种管理方式,涵盖从单一连续存储到段页式存储管理的多种策略,[2][4]系统采用层次化结构,包括内存分配、地址变换、程序装入与链接、资源共享与保护,以及动态链接等功能,共同提升提升系统性能及数据安全性。[10]存储介质类型包括硬盘驱动器(HDD)、固态硬盘(SSD)等存储介质,[11][12]协议和接口方面涉及iSCSI、光纤通道、FCoE、NFS等,支持不同网络环境下的数据传输和访问,[13]并应用于数据仓库[14]、移动设备[15]、嵌入式系统[16]等领域。

概述

存储管理是对主存中的用户区进行管理,其目的是尽可能地方便用户和提高主存空间的利用率,使主存在成本、速度和规模之间获得较好的平衡。其主要涉及的是内存的管理,故也称为内存管理,是操作系统的主要功能之一。[2]该功能指对数据存储系统的规划、设计、实施和维护的过程,旨在确保数据的安全性、可靠性和高效访问。随着信息技术的发展,存储管理已经从简单的物理存储扩展到了更为复杂的网络存储环境,如存储区域网(SAN)和网络附加存储(NAS)。[5]这些技术的发展使得存储管理不仅需要处理物理存储设备的分配和回收,还要实现地址转换、内存空间共享与保护,以及在多任务环境中实现内存的有效利用,[2]从而在成本、速度和规模之间达到一个较好的平衡。[17][5]

计算机系统存储器
计算机系统存储器

早期阶段

20世纪初,早期的计算机存储管理主要依赖于机械式设备,如打孔卡片和纸带,如工厂处理工资单时,会使用打孔卡片;所有工人信息的卡片集合被称为文件,类似于纸质记录。随后,发展为使用磁鼓作为计算机内部存储器,以降低成本,并支持了如Univac文件[注1]计算机和美国航空公司的交互式商务系统(如Magnetronic Reservisor)。20世纪50年代,磁带作为数据存储介质开始普及。[6][7]

数字存储伊始

1956年,IBM推出了世界上第一台磁盘存储系统RAMAC,这标志着现代存储技术的开始。[8][7]随后,面对磁盘驱动器的挑战和管理信息系统(MIS)项目的需求,数据库管理系统(DBMS)的早期形态开始形成。IBM的信息系统(IMS)和查理士·巴赫曼(Charles Bachman)开发的集成数据存储(IDS)作为最初的DBMS系统[注2],简化了数据存储和检索。[6]

20世纪70年代,数据库理论显著发展,埃德加·科德(Edgar Frank Codd)提出的关系模型成为主导范式。20世纪80-90年代,个人计算机的普及推动了对小型化、成本效益高的存储解决方案的需求,分布式数据库系统提供了处理大规模和地理分散数据的新方法。[6]

虚拟存储的出现

20世纪80年代末至90年代初,存储虚拟化技术出现,并随着IBM、EMC等公司的发展而广泛应用,使多个物理存储设备表现为单一逻辑存储单元,提高了存储管理的灵活性和效率。[6][7]

20世纪90年代中期,随着NFS和SMB协议[注3]的普及,网络附加存储(NAS)开始商业化,NetApp公司在1995年推出了其NAS产品,标志着该技术的重要发展。NAS作为文件级存储解决方案,简化了文件共享,允许用户通过网络访问数据,并提供文件共享、备份和恢复功能。[6]

1987年,RAID[注4]技术由兰迪·卡茨(Randy H. Katz)、大卫·帕特森(David Patterson)和加思·吉布森(Garth Gibson)提出,极大提升了存储可靠性。随着计算机和互联网技术的发展,云存储技术因其成本效益和便利性迅速发展并广泛应用。[3]

1997年,光纤通道(Fibre Channel)技术推动了存储区域网络(SAN)的发展,SAN允许服务器直接连接存储设备,实现高速数据传输和低延迟访问,支持复杂的存储管理和数据保护策略,令其成为90年代末至21世纪初的企业级存储主流选择。[6][9]

云存储和大数据的推进

进入21世纪后,得益于云存储和大数据技术的兴起和发展,存储管理经历了革命性的变化。云存储服务为用户提供了通过互联网远程存储数据的能力。例如,亚马逊网络服务(AWS)在2006年推出了其简单存储服务(S3),大数据技术开始在21世纪中期迅速发展。Apache Hadoop[注5]在2006年成为Apache软件基金会的项目,它的分布式处理能力为大数据分析提供了基础。[6][7]

2007年,苹果公司在其MacBook Air中首次使用了SSD[注6],推动了SSD技术的普及。[3]随后,Apache Spark[注7]在2009年作为伯克利大学的AMPLab研究项目启动,该项目于2010年开源,推动了大规模数据集的高效处理和分析。2010年后,机器学习和人工智能开始与数据分析产生联系,初步影响到存储管理的优化等问题。[6][9]

多面发展

2014年,存储管理随着软件定义存储(SDS)的兴起而发生转变,SDS通过将存储控制和管理功能从硬件中抽象出来,由软件实现,提高了配置和管理存储资源的灵活性。2015年,3D XPoint[注8]技术推出,提供了比传统NAND闪存更高的性能和更低的延迟,推进了存储管理介质的进步。2016年,存储管理进一步发展,开源存储技术如Ceph[注9]GlusterFS[注10]等分布式存储系统具有高度的可扩展性、灵活性和成本效益,在大规模存储部署中受到欢迎。[3]

2020年后,人工智能(AI)和机器学习(ML)技术开始在存储管理中发挥作用。随着AI技术的进步,存储系统开始集成智能算法来优化性能和资源管理。例如,AI可以用于预测存储需求、自动调整存储资源分配、检测和预防性能瓶颈,甚至在某些情况下实现自我修复,进一步提高了存储系统的效率,并增强了其可靠性和可维护性。[3]

存储管理方式

存储管理方式决定了操作系统如何分配和使用内存资源,包括连续分配(如单一连续存储管理、固定分区存储管理、可变分区存储管理)和离散分配(如页式存储管理、段式存储管理、段页式存储管理)两种基本方式。连续分配要求程序和数据在内存中连续存放,而离散分配允许它们分散在内存的不同区域。[2][4]

连续分配单一连续存储管理:单一连续存储管理要求程序必须一次性装入连续的内存空间。这种管理方式适用于单用户单任务的操作系统环境,因为它简单且易于实现。然而,随着程序数量的增加,寻找足够大的连续内存空间变得更加困难,这可能导致内存利用率降低。[4]固定分区存储管理:固定分区存储管理是将内存划分为固定大小的分区,每个分区装载一个作业。这种方式适用于多道程序设计系统,因为它允许多个程序并发执行。但是,固定分区可能导致内存碎片,即小的未用内存区域太小而无法被有效利用。[4]可变分区存储管理:可变分区存储管理根据作业需求动态变化内存分区的大小,这提高了内存的灵活性和利用率。与固定分区相比,可变分区可以更有效地利用内存,减少内存碎片。但是,它需要更复杂的内存管理算法来跟踪内存使用情况和进行内存分配。[4]离散分配页式存储管理:页式存储管理将内存划分为固定大小的页面,这些页面可以分散存储在内存中。通过页表进行地址转换,页式存储管理有效解决了内存碎片问题。每个页面都有一个唯一的页号,操作系统通过页表将虚拟地址映射到物理地址。页式存储管理提高了内存利用率,并且支持虚拟内存技术。[4]段式存储管理:段式存储管理按程序的逻辑结构划分为段,每个段可以独立分配和保护。这种方式便于信息共享和保护,因为每个段可以有不同的访问权限。段式存储管理提供了更灵活的内存分配,允许程序和数据以逻辑相关的方式组织,而不是严格的物理连续性。[4]段页式存储管理:段页式存储管理结合了段式和页式存储管理的优点。在这种管理方式中,程序被分为多个段,每个段又被划分为多个页面。这样,程序的地址空间是二维的(段号和页号),而物理内存空间是一维的。段页式存储管理提供了灵活的内存分配和更有效的地址转换,同时支持信息共享和保护。[4]

请求分段式存储管理系统的地址变换过程
请求分段式存储管理系统的地址变换过程

存储层次结构

存储系统的构建关注于如何提高存储系统的访问速度、解决容量瓶颈问题以及降低整体价格。构建高性能的存储系统需要解决Cache容量配置、主存容量适中以及辅存容量增大的问题。存储系统一般采用六个层次来构建,这六个层次由内到外,依次是通用寄存器堆、指令和数据缓冲栈、高速缓冲存储器、主存储器、联机外部存储器、脱机外部存储器,这种层次化结构有助于提升存储系统的整体性能。[10]

通用寄存器堆:通用寄存器堆的设计原理是将通用寄存器组与寄存器堆栈体结合起来。这种设计允许对不同字长的数据进行自适应存储,并通过缓冲寄存器和相应的硬件控制来有效解决存储问题,并且可以提高栈顶数据的访问效率。[18]指令和数据缓冲栈:是指是超标量处理器前端的关键组件,用于存储并重新组装指令,以提高指令获取带宽并解决x86处理器中由于分支指令和跨行指令导致的性能问题。[19]高速缓冲存储器:现代计算机结构中的一个重要部件,其容量大于寄存器,访问速度快于主存。高速缓存用于存放主存中一些经常访问的信息,减少访问主存的次数,提高程序执行速度。CPU访问信息时首先检查高速缓存,如果信息已存在,则直接从中取出使用;否则,从主存中读取信息,并可能同时将信息复制到高速缓存中。[2]

主存储器:简称内存或主存,是计算机系统中的一个主要部件,用于保存进程运行时的程序和数据。主存的容量一般为数十MB到数GB,且容量还在不断增加。CPU的控制部件只能从主存中取得指令和数据,数据能够从主存读取并将它们装入到寄存器中,或者从寄存器存入到主存中。[2]联机外部存储器:是指与计算机系统直接连接并且可被系统实时访问的外部存储设备。这类存储器通常包括硬盘驱动器、固态驱动器(SSD)、USB闪存驱动器等。联机外部存储器的主要特点是能够提供较高的数据传输速率,支持高速的数据读写操作,因此非常适合用于需要快速访问大量数据的应用场景,如数据库管理、大型文件的存储和检索等。[20]脱机外部存储器:是指不直接与计算机系统连接或者连接方式较为复杂,不能被系统实时访问的外部存储设备。这类存储器通常包括光盘、磁带库、远程网络存储等。脱机外部存储器的主要特点是成本相对较低,但数据传输速率较低,不适合需要高速数据访问的应用场景。然而,由于其成本效益高,脱机外部存储器常用于长期数据备份、归档以及大容量数据的存储和共享。[21]

主机层面

存储虚拟化是一种先进的技术,它允许将物理存储资源抽象化并统一管理,以便于更高效地使用这些资源。在主机层面,存储虚拟化通过在操作系统和存储设备之间增加一个虚拟化层,将具体的存储设备或存储系统与服务器操作系统分隔开来。这样,为用户提供了一个统一的虚拟存储池,这个虚拟存储池展示了一个逻辑视图,同时将应用程序和用户所需的数据存储操作与具体的存储控制分离。这种抽象和虚拟化的过程极大地方便了用户对存储资源的使用,减小了存储系统管理开销,优化了存储系统性能,提高了存储资源利用效率。[22]

网络层面

在网络层面,存储虚拟化通过构建一个统一的虚拟存储网络,将所有的存储资源整合起来,提供统一的资源共享服务。这种整合不仅涉及到技术层面的融合,比如NAS(网络附加存储)和SAN(存储区域网络)的融合,还包括了不同存储网络的有效整合,如IP存储、InfiniBand等新兴技术。通过统一虚拟存储体系结构,网络存储的资源可以被更灵活、更高效地管理和使用,实现了存储资源的高度集中和统一管理。[22]

设备层面

在设备层面,存储虚拟化通过将分散在网络中的存储设备统一起来,使用户感觉和操作起来像一个普通的存储设备,而无需关心设备的供应商或具体位置。基于SAN的存储虚拟化是当前的主流,它通常采用一个专用的元数据服务器作为虚拟化层,这台专用的服务器称为元数据服务器或元数据控制器。存储虚拟化的目标是屏蔽所有存储设备的物理特性,使存储系统中所有存储设备对用户透明,用户通过虚拟化层提供的接口对虚拟存储池进行I/O访问。[22]

虚拟内存技术

虚拟内存技术使计算机系统能够使用超出物理内存容量的地址空间,基于程序访问的局部性原理,通过将内存分页或分段并映射到物理内存,实现对内存的高效利用。当进程需要更多内存时,操作系统可以将不常用的页交换到磁盘,为新页腾出空间,尽管这可能因磁盘I/O速度较慢而影响性能。[4]

内存分配与回收

内存分配是操作系统为进程提供所需内存的过程,可以是静态的,在程序启动时完成,适用于固定大小的程序;也可以是动态的,根据程序运行时的需求进行分配,适用于大小可变的程序。内存回收则是在进程不再需要内存时,操作系统回收这些内存以供其他进程使用,可能涉及合并空闲内存块以减少碎片化,但不当的回收策略也可能导致内存碎片。[4]

地址重定位

地址重定位是内存管理的关键技术,确保程序的逻辑地址能正确映射到物理地址。静态地址重定位在程序加载时完成所有地址转换,简化了加载过程但限制了灵活性。动态地址重定位则在程序执行中实时转换地址,提供了更大的灵活性,允许程序在内存中不同位置运行,但需要额外硬件支持并增加了执行开销。这些技术共同支持了有效的存储管理,允许多个进程共享内存资源,同时保持各自的地址空间独立性。[4]

存储管理功能

存储管理是操作系统中至关重要的组成部分,它通过高效的内存资源管理策略,确保了程序的顺利执行和系统的稳定运行。本综述将探讨存储管理的多个方面,包括资源利用率优化、主存管理、程序装入与执行、资源共享,以及动态链接等,以展示存储管理如何提升系统性能和数据安全性。[2][4]

资源利用率优化

资源利用率的优化是存储管理的另一重要方面。存储管理允许多个进程在内存中并发执行,通过共享内存区域提升内存资源的共享和重用,设置内存保护机制(如页表或段表中的保护位)防止了进程间的错误影响,利用页面置换策略(如LRU算法)减少了页面置换的频率以提升了存储管理的效率。[2][4]

主存管理

存储管理通过对主存中的用户区进行有效管理,实现多个作业或进程对内存的共享,有助于多道程序设计,从而提高了系统的资源利用率。例如,可变分区存储管理通过动态地为进程分配所需的内存空间,并允许进程在运行过程中申请附加的内存空间,从而提高内存的利用率。[4]存储管理支持多道程序设计,允许多个进程同时装入内存,通过进程的并发执行来提高CPU的利用率。存储管理通过内存分配与回收、地址变换等任务,使得多个进程能够共享内存资源,实现高效的并发执行。通过地址转换功能将用户程序中的逻辑地址转换为CPU可以识别的物理地址。在多道程序环境下,用户程序使用的是逻辑地址,而CPU按物理地址访问主存,存储管理必须配合硬件进行地址映射工作,确保程序的正确执行。[4]

程序装入与执行

程序的装入与链接是存储管理的重要组成部分。编译后的程序需要通过链接程序将目标模块及所需的库函数链接在一起,形成一个完整的可装入模块。装入程序将这个模块装入内存,完成地址转换,使得程序能够正确执行。存储管理提供了静态链接、装入时动态链接和运行时动态链接等不同的链接方式。[4]

资源共享

在多道程序设计环境下,内存中的许多用户程序或系统程序和数据段可供不同的用户进程共享,这种资源共享将提高内存的利用率。存储管理通过设置内存信息保护方法,如上下界保护法、保护键法等,确保资源共享的同时,各进程只能在自己的存储区活动,保护内存中的程序和数据段不受干扰和破坏。[4]

动态链接

动态链接是程序在执行过程中需要某一段时,再将该段从外存调入内存,并把它与有关的段链接在一起。这样,凡是在程序执行过程中不会用到的段都不会调入内存,也不会链接到装入模块上,从而加快了程序的装入过程并节省了大量的内存空间。动态链接在段式存储管理中易于实现,因为每个段是独立的程序模块,又有各自的段名,可以动态分配内存空间。[4]

抖动现象

抖动现象是由于页面置换算法效率低下导致的频繁页面置换,即页面被置换出后不久又需重新加载。这会严重影响系统性能。为减少抖动,可采用LRU(最近最少使用)算法,该算法根据页面的访问历史保留最近被访问的页面,以减少缺页中断并提高效率。近似LRU算法如时钟置换算法,通过更新页面访问标记来模拟LRU效果。此外,操作系统可动态调整工作集大小,根据当前内存状况优化页面置换,以提升内存使用效率。[2]

碎片问题

存储系统中,不当的内存分配和回收可能造成内存碎片或泄漏,影响系统性能,其优化策略包括:伙伴系统,即采用2的幂次方大小的块进行内存分割,这些块可以进一步细分,以高效地管理内存分配和回收;在释放内存时,系统会合并相邻且大小相同的空闲块,减少碎片;操作系统定期内存整理,通过移动页面将分散的空闲空间合并,形成更大的连续空间;在分配内存时,优先考虑使用较大的空闲块,减少碎片产生;利用数据结构(如Linux内核中free_area数组[注11]和mem_map链[注12]),精确控制内存的分配与回收,保证内存使用的连续性和高效性。[2]

缺页中断

缺页中断是程序访问未在物理内存中的页面时触发的中断。为了减少这种情况的发生,可以采取策略包括:提升程序执行效率的核心的局部性增强,包括优化数据结构布局和调整循环结构和执行流程;改变二维数组初始化的循环顺序等程序编制技巧减少缺页中断次数,更有效地利用空间局部性;选择合适的页面调度算法对于最小化缺页中断率和避免系统抖动,理想的算法能够预测并调出未来最不常用或最长时间后才需要的页面,从而提升系统性能。[2]

缺页中断的处理过程
缺页中断的处理过程

页表机制与共享保护

页表是页式存储管理中的核心组件,它将虚拟地址映射到物理地址。每个页表项记录了页面状态、物理地址和访问权限,保障内存访问的安全性和效率。面对大型系统的挑战,单级页表可能变得过于庞大。多级页表机制可以减少页表占用的内存,并通过动态加载页表项,提升了内存使用效率和地址转换速度。页表和段表中的访问控制信息允许系统精确控制进程对内存的访问权限,通过设置只读、只写或可读写属性来确保正确性。段页式存储管理结合了段式和页式存储的优点,它允许用户以分段方式组织作业,并将每段细分为页面,这样既提供了逻辑上的清晰性,也便于操作系统进行高效的内存管理,并通过段表中的访问控制信息保护共享内存的安全性。[2]

段页式管理的地址变换过程
段页式管理的地址变换过程

虚拟内存配置与性能监控优化

虚拟内存可以用来扩展操作系统的物理内存,配置虚拟内存时,需综合考虑系统资源、物理内存容量、磁盘空间、多任务处理能力和用户程序的内存需求。选择合适的页面调度算法,如最近最少使用(LRU)、先进先出(FIFO)或时钟(Clock)算法,对降低磁盘I/O和提升系统响应速度具有显著影响。操作系统通过性能监控,实时跟踪内存使用情况和性能指标,动态调整页面置换算法和内存分配策略。例如,当检测到高缺页中断率时,系统可能自动更换页面调度算法或增加特定进程的物理内存分配,以降低内存访问延迟,提升系统效率。[2]

数据存储模式

解决好数据存储问题,保证数据的完整性和安全性显得格外重要。目前存储主流方案有:直连存储、网络区域存储和网络附加存储。[23]

直连存储

直连存储(Direct Attached Storage,DAS)是一种传统的存储模式,它将存储设备直接连接到服务器或客户端。DAS以服务器为中心,存储设备完全依赖于服务器或客户端的扩展接口。这种存储方式的特点在于它简单、易于安装和维护,对于局域网和个人计算机而言,是一种经济实惠的选择。然而,DAS的扩展性有限,当需要增加存储容量时,可能会对现有网络造成压力,且可能需要中断服务。此外,DAS缺乏独立的存储操作系统,依赖于服务器或客户端的资源,这可能会影响整体性能。[23]

网络区域存储

网络区域存储(Storage Area Network,SAN)是一种高性能的存储解决方案,它通过专用网络连接多个存储设备,实现了存储资源的集中管理和高速数据传输。SAN的结构包括存储设备、互连设备和接口,通常使用光纤通道作为连接介质,提供了极高的数据传输速率和可扩展性。SAN的优势在于其集中化的管理,能够降低管理成本和复杂性,同时提高存储性能。但是,SAN的部署需要较多的硬件和软件投资,包括专用的设备、管理和监控软件,这使得其初始成本较高。[23]

网络附加存储

网络附加存储(Network Attached Storage,NAS)是一种以数据为中心的存储模式,它通过标准网络协议(如TCP/IP)提供跨平台的文件共享功能。NAS设备独立于服务器,拥有自己的文件系统和管理软件,能够实现集中管理数据,有效释放带宽,提高网络整体性能。NAS的安装简便快捷,即插即用,支持多种操作系统,易于部署和管理。NAS的可扩展性也非常高,可以轻松增加存储容量而无需中断服务。不过,NAS的性能可能会受到网络传输速率的限制,尤其是在大量数据传输时。NAS还提供了本地备份解决方案,包括数据保护、磁带备份能力等,使得数据恢复更为迅速和可靠。[23]

存储性能

存储系统性能管理是确保存储系统能够满足日益增长的应用需求的关键。随着数据量的增加和应用对性能要求的提升,存储系统的性能管理变得尤为重要,不仅涉及到系统的性能管理,还包括性能保证、性能建模及性能调优等。[24]

性能管理

性能管理作为存储系统管理的重要组成部分,涵盖了服务质量保证、系统配置管理、性能问题诊断、性能建模、容量规划和性能调优等方面。性能管理问题的研究对于发展存储系统性能分析理论以及指导存储系统的设计与实现、管理、应用等工程实践均具有重要意义。[24]

性能保证

性能保证是指确保存储系统提供的服务质量能够满足特定的性能要求,采用基于权重的完全公平排队,在多个前端并发应用之间分配底层存储资源,从而实现各个应用负载的性能保证。[24]

性能建模

性能建模是获取存储系统性能模型的过程,关系到系统设计、管理和性能评价。例如通过监测负载特征和系统性能,利用多元回归理论,分析得到负载特征与系统性能之间的映射关系,从而提取出系统的性能模型。[24]

性能调优

性能保证主要关注于如何为不同的应用提供可预测的性能,确保服务质量。调度是存储系统性能保证的重要手段,存储管理系统基于权重的公平排队调度算法,实现性能隔离并保证各应用负载的吞吐量和响应时间等指标;通过方差分析和响应面分析找到最佳参数组合等方法,优化存储系统的配置来提高系统性能。[24]

数据安全特性

在存储层的设计中,系统综合运用了多种策略来全面保障数据的完整性、一致性和可用性:此前,系统利用SHA-1安全散列算法对用户上传的文件进行二进制流的消息摘要,确保了数据的完整性,避免了重复存储相同内容的文件,后因SHA-1的抗碰撞性已受到实际攻击的破坏,目前转而推荐使用SHA-2[注13](特别是SHA-256)和SHA-3[注14]等更加安全的散列函数;[25][26]存储管理系统采用分布式存储技术,这有助于提高数据的可用性和容错性,即使某个节点发生故障,数据仍然可以从其他节点恢复;存储管理系统中,同一个数据在分布式系统中设置多个副本。通过这些措施实提高数据的可用性和可靠性。[25]

内存保护机制

操作系统通过内存保护机制,如设置内存保护键或界限寄存器[注15],在软件层面防止进程间的干扰和数据破坏。这些机制确保了进程只能访问自己的存储区,从而保护了内存中的程序和数据段。[4]如IOMMUs(输入输出内存管理单元)[注16]、防火墙和查找表等用于硬件级别的内存隔离,提供了内存翻译和保护功能,但这也带来了新的挑战,即如何在不牺牲性能的情况下实现细粒度的内存访问控制。[27]此外,针对持久性内存的安全存储系统需要考虑介质特性上的差异,开发出适应其特性的安全防护措施。[28]

存储层安全措施

存储层安全措施包括但不限于数据加密、冗余备份、访问控制和数据完整性校验等。例如,通过在磁盘上加密数据并存储校验和来检测故障数据,这种方法结合了加密和完整性检查,降低了未检测到的故障数据的概率。[27]

系统冗余和故障恢复

为了提高系统的可靠性和可用性,可以多种冗余和故障恢复策略。例如,通过构建RAID6扩展的存储系统,允许多个磁盘失败而不影响数据的可用性,并通过存储校验和来检测故障数据。[27]

性能与安全的平衡

在设计存储管理系统时,需要在安全性与性能之间找到一个平衡点。一些研究表明,采用加密和其他安全措施不会显著影响系统的性能。[29]

存储介质类型

名称介绍示图
硬盘驱动器(HDD)是一种基于磁性材料的存储设备,它通过旋转磁盘来存储数据[11]
固态硬盘(Solid State Disk,SSD一种使用半导体存储器来存储数据的设备,与HDD相比具有不产生噪音、能耗更低,且具有防震抗摔的特性等多项优势[12]
光盘光盘存储利用光学原理来记录和检索数据。它包括可写光盘和只读光盘两种类型,可写光盘可以多次记录数据,而只读光盘则通常用于一次性的数据存储[30]
闪存一种非易失性存储设备,广泛应用于移动设备中。它不需要外部电源即可保持数据,不同于传统的硬盘驱动器,闪存提供了更快的数据访问速度[31]
磁光存储介质结合了磁性和光学存储的特点,可以在不同的状态下读写数据,这使得它们在某些特定应用中非常有用[32]

存储协议

协议名称协议介绍
iSCSI协议(Internet Small Computer System Interface建立在TCP/IP网络之上的传输层协议,提供对存储设备的块级访问,它允许通过局域网(LAN)、广域网(WAN)或互联网传输SCSI命令,使得IT部门能够构建共享存储网络,如存储区域网络(SAN)[13]
光纤通道(Fibre Channel)一种高速网络技术,专为SAN设计,提供无损、有序的块数据传输,能够提供高达128Gbps的数据传输速率,并且当使用光纤时,可以支持远达10公里的设备连接[13]
FCoE协议(Fibre Channel over Ethernet)允许光纤通道通信在以太网上直接运行,通过将FC帧封装在以太网帧中,使用以太网布线[13]
NFS(Network File System)一种分布式文件系统和网络协议,允许在同一局域网上的设备之间访问和共享文件,主要用于Linux环境,但也受到Windows支持[13]
SMB/CIFS协议(Server Message Block/Common Internet File System)一种客户端-服务器通信协议,允许用户和应用程序访问远程服务器上的存储和其他网络资源,CIFS是由微软引入的一个SMB的早期版本[13]
HTTP(Hypertext Transfer Protocol)通过 RESTful API 和标准 HTTP/HTTPS 请求支持访问云存储服务[13]
NVMe-oF(Non-volatile memory over fabrics)一种基于 NVMe 规范的高速存储协议,通过以太网光纤通道和 InfiniBand 等网络布线访问固态存储,能够更好地利用闪存驱动器的固有速度,这些速度通常受到更传统协议和接口的限制[13]

存储接口

接口名称接口介绍接口示图
SCSI(Small Computer System Interface一种历史悠久的存储接口,以其高性能和高可靠性而闻名,支持多种存储设备,包括硬盘、磁带机和光学驱动器[33][34]
SATA(Serial ATA)一种面向消费市场的串行接口,广泛用于连接硬盘和固态硬盘,以其低成本、简单性和广泛的兼容性而受到欢迎[33]
SAS(Serial Attached SCSI)SCSI的串行版本,专为需要高性能和高可靠性的企业级应用设计,支持热插拔功能,并向下兼容SATA[33][34]
FC(Fibre Channel)一种高速串行接口,主要应用于SAN(存储区域网络)环境,支持长距离传输,并且以其高性能、高可靠性和可扩展性而受到青睐[33]
IEEE 1394(又称Fire Wire)Apple公司开发的高速串行接口,它支持热插拔即插即用功能。这种接口最初用于连接数字视频设备,但后来也被广泛应用于连接各种存储设备。[33]目前,FireWire在现代计算机上的可用性较低,大多数现代计算机不再内置FireWire端口[35]
USB(Universal Serial Bus)一种通用串行接口,广泛用于连接各种外围设备,包括存储设备,支持热插拔,易于连接和断开,并有多个版本,如USB 2.0、USB 3.0、USB 3.1等[33][34]
雷电接口(Thunderbolt)一种高速接口技术,由Intel和Apple联合开发。它支持数据、视频和电源传输,常用于连接高性能存储设备。Thunderbolt以其高数据传输速率和多功能性而受到专业用户的青睐[33]

数据仓库

数据仓库的设计和实现旨在优化数据的存储结构,提高查询效率,实现数据的分区和索引,以及管理数据的归档和备份。成功构建数据仓库的关键在于理解用户需求,并围绕这些需求进行数据的搜集和存储。[14]数据仓库技术的发展使得管理信息系统能更好地支持企业经营中的决策过程。[36]如Oracle Exadata,提供了大规模的数据存储和处理能力,支持混合负载工作(OLTP和OLAP),优化了数据压缩和查询性能。[37][38]

ORACLE数据库
ORACLE数据库

移动设备

在智能手机和平板电脑等移动设备上,存储管理技术的应用至关重要,它不仅关乎数据的安全性和可访问性,还直接影响到用户的使用体验。存储管理技术通过数据分类与优化存储功能对移动设备的数据进行分类存储;定期清理不再需要的缓存和临时文件;用云存储、云服务提供了额外的存储空间等,极大地提升了用户的使用体验。[15]

嵌入式系统

嵌入式系统广泛应用于各种设备,如汽车、家电和工业控制系统。在这些系统中,存储管理扮演着确保系统可靠性和稳定性的重要角色。这涉及到错误检测和纠正机制的支持,实时数据处理的需求满足,以及通过内存分配和回收策略优化性能。适应不同的存储介质,如闪存和EEPROM,也是嵌入式系统存储管理的一个重要方面。[16]

云计算服务

云计算服务提供了按需访问计算资源的能力,其中存储管理至关重要。这包括实现大规模数据的有效存储和快速访问,以及保证数据的安全性和可靠性。云计算环境下的存储管理需要考虑如何高效地利用云存储资源,同时确保数据的可访问性和安全性。例如,面临用户数据的爆炸式增长,一种针对电信运营商设计的HugeTable系统[注17]被提出,它通过优化索引和存储引擎来提高查询性能,满足现网服务系统的性能需求。[39]

元数据管理

元数据一般被定义为“关于数据库(特别是关系型数据库)模式的描述信息”,在不同领域,元数据管理的侧重点也不同:技术性元数据管理关注信息系统的开发、管理和维护;商业性元数据管理倾向于提供数据的商业语义描述,帮助用户更好地理解企业信息环境。[40]

云存储管理系统

云存储管理系统是一种先进的技术解决方案,它利用云计算的概念,通过虚拟化技术整合分散的存储资源,实现集中化管理。这种系统不仅提供了数据存储的高可用性和持久性,还通过多租户架构支持不同用户或组织的数据隔离。此外,云存储服务提供商遵循行业标准和法规,确保数据的合规性和安全性,同时支持数据访问和操作的审计,以满足企业和监管机构的要求。[41][42]

参考资料 42

  1. Storage management STMG — SFIA
  2. 参考 2
  3. 参考 3
  4. 参考 4
  5. 参考 5
  6. 参考 6
  7. http://www.caict.ac.cn/kxyj/qwfb/ztbg/202107/P020210709629615877668.pdf
  8. 参考 8
  9. 参考 9
  10. 参考 10
  11. 参考 11
  12. 参考 12
  13. Comparing 7 storage network protocols — Techtarget
  14. 参考 14
  15. 参考 15
  16. 参考 16
  17. 参考 17
  18. 参考 18
  19. 参考 19
  20. 参考 20
  21. 参考 21
  22. 参考 22
  23. 参考 23
  24. 参考 24
  25. 参考 25
  26. 参考 26
  27. 参考 27
  28. 参考 28
  29. 参考 29
  30. 参考 30
  31. 参考 31
  32. 参考 32
  33. 参考 33
  34. 参考 34
  35. What Is FireWire and How Does it Work? — FireWire
  36. 参考 36
  37. Oracle Exadata
  38. 参考 38
  39. 参考 39
  40. 参考 40
  41. 参考 41
  42. 参考 42

注释

  1. Univac文件:指与Universal Automatic Computer(通用自动计算机,简称UNIVAC)相关的文件。Univac是早期商业计算机的代表之一。
  2. DBMS系统:全称Database Management System,即数据库管理系统,是一种用于创建和管理数据库的软件。
  3. NFS和SMB协议:即NFS(Network File System)和SMB(Server Message Block)协议,用于实现网络文件共享的协议,允许用户通过网络访问远程文件系统,各自有着不同的特点和应用场景。
  4. RAID:全程Redundant Arrays of Inexpensive Disks,一种使用多个成本较低、可靠性相对较低的小磁盘驱动器来实现更高存储可靠性的技术。
  5. Apache Hadoop:一个由Apache软件基金会开发的大数据处理框架,它基于MapReduce编程模型,用于在分布式计算环境中进行数据存储和处理。
  6. SSD:全称Solid State Drive,即固态硬盘,是一种使用闪存技术来存储数据的存储设备。
  7. Apache Spark:一个用于大规模数据处理的快速、通用的计算引擎,支持多种编程语言,并且可以访问多种数据源和存储系统,能比Apache Hadoop更快地处理数据。
  8. 3D XPoint:一种由Intel和Micron Technology共同开发的非易失性存储技术。
  9. Ceph:一个开源的分布式存储系统,由Inktank(后被Red Hat收购)开发。它提供了一个统一的存储集群,可以用于对象存储、块存储和文件系统。
  10. GlusterFS:一个开源的分布式文件系统,由Gluster公司开发(后被Red Hat收购)。它允许多个服务器共享存储资源,形成一个统一的文件系统,提供高性能和可扩展性。
  11. free_area数组:由NR_MEM_LISTS个free_area_struct结构体组成的数组,每个元素代表一个空闲内存链表的头部,用于管理系统中的空闲内存页。
  12. mem_map链:是一个struct page的数组,包含系统中所有物理内存页面的描述,用于统一管理和访问物理内存。
  13. SHA-2:安全哈希算法(Secure Hash Algorithm)的第二代版本。
  14. SHA-2:安全哈希算法(Secure Hash Algorithm)的第三代版本。
  15. 界限寄存器:又称界地址寄存器,是一种用于存储保护的硬件结构,通常在CPU中设置一对,即下限寄存器和上限寄存器。
  16. IOMMU:全称Input and Output Memory Management Unit,一种硬件设备,它在计算机系统中扮演着类似于CPU的内存管理单元(MMU)的角色,但IOMMU专门用于管理输入/输出(I/O)设备的内存访问。
  17. HugeTable系统:一种针对电信运营商在线服务的云计算系统数据仓库,是为了满足电信运营商等大规模数据处理需求而设计。该系统能够提供实时响应能力,基于云计算技术,允许用户按需付费,从而降低使用门槛并节省开销。
广告位:底部(ad-bottom)—— 请到中台「公共区块」编辑此内容