存储和I/O系统
存储和I/O系统将处理器和内存连接到外部世界和持久数据,包括总线和互连、磁盘和闪存存储、用于可靠性的冗余,以及在设备和内存之间高效移动数据的机制。
Definition
存储和I/O系统是计算机用于与外围设备进行数据传输并持久存储数据的硬件和架构机制,包括所涉及的互连、控制器、存储介质以及可靠性和虚拟化技术。
Scope
该领域涵盖计算机如何与外围设备通信并持久存储数据:I/O架构和总线、中断驱动和DMA驱动传输、辅助存储设备(磁性磁盘和固态硬盘)、通过RAID等冗余实现的存储可靠性,以及I/O虚拟化。它处理输入/输出和持久性的硬件和架构机制。它不包括文件系统软件抽象(操作系统)以及片上缓存和主内存(内存层次结构和缓存),尽管它与两者都密切相关。
Sub-topics
Core questions
- 设备如何通过总线和互连连接到处理器和内存?
- 如何使用中断和直接内存访问而不是忙轮询来高效传输数据?
- 磁性存储和固态存储的性能和可靠性特征是什么?
- RAID等冗余技术如何权衡容量、可靠性和性能?
- I/O如何在虚拟机和进程之间安全地虚拟化和共享?
Key concepts
- I/O总线和互连
- 中断驱动I/O
- 直接内存访问 (DMA)
- 磁性磁盘和SSD
- 设备控制器
- RAID和冗余
- 存储可靠性和MTTF
- I/O虚拟化
- 吞吐量和延迟
- 内存映射I/O
Key theories
- 廉价磁盘冗余阵列 (RAID)
- 将多个商用磁盘与数据条带化、奇偶校验或镜像结合,可以获得比单个磁盘更大、更快、更可靠的存储;RAID级别正式确定了容量、性能和容错之间的权衡。
- 解耦I/O传输
- 直接内存访问和中断驱动I/O允许设备在没有处理器持续参与的情况下,将数据传输到内存或从内存传输数据,从而使I/O与计算重叠,并大大提高整体系统吞吐量。
Mechanisms
外围设备通过总线和控制器连接到系统,并通过中断向处理器发出信号。大容量数据通过直接内存访问(DMA)移动,DMA在设备和内存之间传输数据块,无需处理器逐字参与。辅助存储器将数据持久存储在磁性磁盘或闪存上,设备阵列使用条带化、镜像和奇偶校验(RAID)来提高性能并容忍故障。虚拟化层在客户机之间多路复用这些设备。
Clinical relevance
存储和I/O通常决定端到端系统性能和持久性:数据库、文件服务器和数据密集型应用程序的瓶颈常常是存储吞吐量和延迟,而非计算。RAID和相关的冗余方案可防止数据中心设备故障,而高效的I/O虚拟化对于云计算至关重要,因为在云计算中,许多租户共享物理硬件。
History
早期机器使用程序化I/O和专用通道;中断驱动I/O和直接内存访问的出现使得I/O与计算可以重叠进行。磁性磁盘在辅助存储领域占据主导地位数十年,Patterson、Gibson和Katz于1988年提出的RAID方案确立了冗余作为一种标准的可靠性技术。后来,基于闪存的固态硬盘重塑了存储层次结构,随着云计算的兴起,I/O虚拟化变得至关重要。
Debates
- 分离式存储与本地存储
- 关于存储是应该本地连接到计算单元还是通过高速网络分离存在持续的讨论;分离式存储提高了数据中心的利用率和灵活性,但增加了延迟并依赖于高性能互连。
Key figures
- David A. Patterson
- Garth Gibson
- Randy H. Katz
- John L. Hennessy
Related topics
Seminal works
- hennessy2019
- patterson1988raid
- silberschatz2018
Frequently asked questions
- 什么是直接内存访问,它为什么有用?
- 直接内存访问(DMA)允许设备在没有处理器逐字复制的情况下,将数据块传输到主内存或从主内存传输数据。这使得处理器在传输过程中可以执行其他工作,从而使I/O与计算重叠,并大大提高大容量数据移动的吞吐量。
- RAID能保证我的数据安全吗?
- 不能。RAID通过存储冗余信息来提高可用性并容忍某些设备故障,但它不是备份:它不能防止意外删除、数据损坏、超出其容忍范围的多设备故障或站点级灾难,因此单独的备份仍然是必要的。