引言¶
CPU 只负责运算,硬盘用于长期存储大量数据,内存用于临时存储程序运行中正在处理的数据,而缓存则用于存储经常访问的数据和指令,以提高程序运行效率。
在程序运行时,数据会从硬盘中被一段段读取到内存中,供 CPU 计算使用,缓存可以看作 CPU 的一部分,从内存加载数据给 CPU 提供高速的数据读取,从而显著提升程序的执行效率,减少对较慢的内存的依赖。
但是 CPU 运行速度远高于内存读写速度,所以有些对性能有要求的数据被存储在一级或二级缓存中,然而对于那些频繁读写的数据,使用缓存仍然不够快,于是这些数据便存储在 CPU 自带的寄存器中。
寄存器不依靠地址而是通过名称查找数据,x86 CPU有 8 个寄存器,每个寄存器都有自己的名称和不同的用途。
虽然寄存器很快,但是只能存储少量的数据,数据主要还是放在内存中。
最早的存储形式是穿孔纸带
按存储介质分类¶
- 磁介质:软盘、软驱(FDD)、机械硬盘(HDD)、磁带等
- 光介质:光驱、光盘(CD->VCD->DVD->BD)
- 半导体介质(闪存技术):RAM、ROM、固态硬盘(SSD)、U盘等
无论什么介质,都是利用二进制存储数据,也就是说,它们只是以不同的方式模拟 0 和 1。
按可保存性分类¶
- 内存(易失性存储器),断电后数据会丢失,比如:Cache、RAM
- 外存(非易失性),断电后数据不丢失,比如:硬盘、ROM
按读写功能分类¶
- SAM(Sequential Access Memory),只能按存储单元位置顺序地挨个进行存取,比如磁带
- RAM(Random Access Memory),随机访问存储器,也叫主存,是与 CPU 直接交换数据的内部存储器,可随机读取和写入,速度快,断电后不保存数据
- ROM(Read-Only Memory),只读存储器,通常制造时在脱机情况下由厂家写入信息后,只能随机读取,不能写入新信息
按组织形式分类¶
块存储¶
最古老的数据存储形式,性能好,吞吐量高,延迟低。数据都储存在固定长度的一个或多个块(Block)中,想要读写访问数据,就必须使用与存储相匹配的协议(SCSI、SATA、SAS、FCP、FCoE、iSCSI……)来进行。
文件存储¶
文件系统使用文件和树形目录的抽象逻辑概念代替了硬盘和光盘等物理设备使用数据块的概念,用户使用文件系统来保存数据不必关心数据实际保存在硬盘的地址为多少的数据块上,只需要记住这个文件的所属目录和文件名。在写入新数据之前,用户不必关心硬盘上的那个块地址没有被使用,硬盘上的存储空间管理(分配和释放)功能由文件系统自动完成,用户只需要记住数据被写入到了哪个文件中。
绝大多数传统的文件存储都是基于块存储之上去实现的。
人们把定义文件分配表(FAT,专门组织块结构来构成文件的分配表)应该如何实现、储存哪些信息、提供什么功能的标准称为文件系统(File System)
常见的文件系统有
- Linux
- XFS
- ext2 GNU/Linux系统中标准的文件系统
- ext3 ext2文件系统的日志版本,更安全,兼容性更好
- ext4 更佳的性能和可靠性,功能更丰富
- reiserFS Linux环境下的日志文件系统之一
- Windows
- NTFS
- FAT32
- exFAT
- ReFS
- Mac:
- HFS+
- APFS 苹果设备下的系统
- 多平台:
- FAT32 广泛支持,包括Windows、macOS和多种Linux发行版
- exFAT 用于USB闪存驱动器和SD卡,支持Windows和macOS
- VFAT 可以作为Windows和Linux交换文件的分区,因为它兼容这俩系统
对象存储¶
是一种随着云数据中心的兴起而发展起来的存储,天生的分布式特性,以及极其低廉的扩展成本,使它很适合于 CDN 一类的应用,拿来存放图片、音视频等媒体内容,以及网页、脚本等静态资源。