提高磁盘 I/O 速度的途径
1. 磁盘高速缓存(Disk Cache)
采用磁盘高速缓存是目前提高磁盘 I/O 速度的主要技术。
1.1. 数据交付(Data Delivery)方式
数据交付是指将磁盘高速缓存中的数据传送给请求者进程,主要有两种方式
- 数据交付:直接将高速缓存中的数据传送到请求者进程的内存工作区
- 指针交付:只将指向高速缓存中某区域的指针交付给请求者进程
1.2. 置换算法
与请求调页类似,较常用的是最近最久未使用算法(LRU)、最近未使用算法(NRU)和最少使用算法(LFU)。除最近最久未使用原则外,还需考虑访问频率、可预见性和数据一致性(会严重影响数据一致性的盘块数据优先写回磁盘)。
1.3. 周期性写回磁盘
OS 系统会等时间间隔(例如30s)强制将所有高速缓存中已修改的盘块数据写回。
2. 提高磁盘 I/O 速度的其他途径
- 提前读:对于采用顺序访问方式访问文件,可提前将下一盘块的数据读入高速缓存。
- 延迟写:将可能会被其他进程访问的数据挂到空闲缓冲队列的末尾,而不是写回磁盘。
- 优化物理块的分布:将一个文件尽量存储在相邻的盘块上,以减少磁头切换磁道。
- 虚拟盘:用内存空间去仿真磁盘,虚拟盘的内容可由用户控制,缺点是断电数据会丢失。
3. 廉价磁盘冗余列阵(RAID)
廉价磁盘冗余列阵利用一台磁盘列阵控制器来统一管理和控制一组磁盘驱动器,组成一个大型磁盘系统,大幅增加了磁盘容量,并大幅提高磁盘 I/O 速度和磁盘可靠性。
3.1. 并行交叉存取
系统将每一盘块中的数据分为若干个子盘块数据,再把每一个子盘块的数据分别存储到各个不同磁盘中的相同位置上,当需要将磁盘的数据传送到内存时,可并行传输。
3.2. RAID 分级
- RAID 0 级:仅提供并行交叉存取
- RAID 1 级:具有磁盘镜像功能
- RAID 3 级:具有并行传输功能的磁盘列阵,只利用一台奇偶校验盘来完成数据的校验功能
- RAID 5 级:具有独立传送功能的磁盘列阵,每个驱动器都有自己独立的数据通路,独立读写,且无专门的校验盘,校验信息以螺旋(Spiral)方式散步 在所有数据盘上
- RAID 6、7 级:在 RAID 6级列阵中,设置了一个专用的。可快速访问的异步校验盘。
4. ChangeLog
2018.09.24 初稿