操作系统18:磁盘I/O速度、磁盘可靠性、数据一致性

文章探讨了提高磁盘I/O速度的多种方法,包括磁盘高速缓存、提前读、延迟写和RAID技术,并介绍了不同级别的磁盘容错技术如SFT-I和SFT-II,以增强磁盘系统的可靠性。同时,讨论了数据一致性控制,涉及事务处理、检查点和并发控制,确保在多事务环境中数据的一致性。

目录

1、提高磁盘I/O速度的途径

(1)磁盘高速缓存(Disk Cache)

1.1 - 数据交付(Data Delivery)方式

1.2 - 置换算法

1.3 - 周期性地写回磁盘

(2)提高磁盘I/O速度的其它方法

2.1 - 提前读

2.2 - 延迟写

2.3 - 优化物理块的分布

2.4 - 虚拟盘

(3)廉价磁盘元余阵列(RAID)

2、提高磁盘可靠性的技术

(1)第一级容错技术 SFT-I

1.1 - 双份目录和双份文件分配表

1.2 - 热修复重定向和写后读校验

(2)第二级容错技术 SFT-II

2.1 - 磁盘镜像(Disk Mirroring)

2.2 - 磁盘双工(Disk Duplexing)

(3)基于集群技术的容错功能

3.1 - 双机热备份模式

3.2 - 双机互为备份模式

3.3 - 公用磁盘模式

(4)后备系统

3、数据一致性控制

(1)事务

1.1 - 事务的定义

1.2 - 事务记录(Transaction Record)

1.3 - 恢复算法

(2)检查点

(3)并发控制

(4)重复数据的数据一致性问题


1、提高磁盘I/O速度的途径

        文件系统的性能可表现在多个方面,其中至关重要的一个方面是对文件的访问速度为了提高对文件的访问速度,可从三方面着手:

  1. 改进文件的目录结构以及检索目录的方法来减少对目录的查找时间。
  2. 选取好的文件存储结构,以提高对文件的访问速度。
  3. 提高磁盘的 I/O 速度,能将文件中的数据快速地从磁盘传送到内存中。

        目前,磁盘的 I/O 速度远低于对内存的访问速度,通常要低上 4 ~ 6 个数量级。因此磁盘的 I/O 已成为计算机系统的瓶颈。

(1)磁盘高速缓存(Disk Cache)

        磁盘高速缓存,是指在内存中为磁盘盘块设置的一个缓冲区,在缓冲区中保存了某些盘块的副本。

        在设计磁盘高速缓存时需要考虑的问题有:

  1. 如何将磁盘高速缓存中的数据传送给请求进程。//数据交付
  2. 采用什么样的置换策略。
  3. 已修的盘块数据在何时被写回磁盘。
1.1 - 数据交付(Data Delivery)方式

        所谓的数据交付就是指将磁盘高速缓存中的数据传送给请求者进程。系统可以采取两种方式将数据交付给请求进程:

  • 数据交付:这是直接将高速缓存中的数据传送到请求者进程的内存工作区中。//直接给数据
  • 指针交付:只将指向高速缓存中某区域的指针交付给请求者进程

        指针交付方式由于所传送的数据量少,因而节省了数据从磁盘高速缓存存储空间到进程的内存工作区的时间。

1.2 - 置换算法

        常用的置换算法有最近最久未使用算法 LRU最近未使用算法 NRU最少使用算法 LFU 等。

        系统在设计高速缓存的置换算法时,除了考虑到最近最久未使用这一原则外,还需要考虑以下几点://LRU数据链

  • 访问频率。通常,联想存储器的访问频率基本上与指令执行的频率相当。而对磁盘高速缓存的访问频率,则与磁盘 I/O 的频率相当。所以,对联想存储器的访问频率远远高于对磁盘高速缓存的访问频率。
  • 可预见性。哪些数据可能在较长时间内不会再被访问,有哪些数据可能很快就再被访问,会有相当一部分是可预知的。
  • 数据的一致性。存放在缓存中的数据如果已被修改,但尚未拷回磁盘,当系统发生故障后,可能造成数据的不一致性。
1.3 - 周期性地写回磁盘

        根据LRU算法,有些经常要被访问的盘块数据可能会一直保留在高速缓存中,长期不会被写回磁盘。因为链中任一元素在被访问之后,又会被挂到链尾而不被写回磁盘,只有一直未被访问的元素才有可能移到链首,而被写回磁盘。//置换时,写回磁盘从链首开始

        为了解决这一问题,在 UNIX 系统中专门增设了一个修改(update)程序,使之在后台运行,该程序周期性地调用一个系统调用 SYNC。其主要功能是强制性地将所有在高速缓存中已修改的盘块数据写回磁盘。一般是把两次调用 SYNC 的时间间隔定为 30s。这样,因系统故障所造成的工作损失不会超过 30s 的工作量。//定期写回,但是不能确保数据不丢失

(2)提高磁盘I/O速度的其它方法

2.1 - 提前读

        如果是采用顺序访问方式对文件进行访问,便可以预知下一次要读的盘块。此时可采取预先读方式,即在读当前块的同时,还要求将下一个盘块(提前读的块)中的数据也读入缓冲区,从而大大减少了读数据的时间。

2.2 - 延迟写

        延迟写是指把本应立即写回磁盘的缓冲区数据,改为将它挂在空闲缓冲区队列的末尾,直到把该缓冲区作为空闲缓冲区分配出去,才进行写回。

        缓冲区数据驻留内存的好处是任何访问该数据的进程,都可直接读出其中的数据而不必访问磁盘。这样,又可进一步减少磁盘的IO时间。

2.3 - 优化物理块的分布

        思想:将两个数据块安排在属于同一条磁道的两个盘块上,由于消除了磁头在磁道间的移动,而大大提高对这两个盘块的访问速度。//顺序写,减少磁头的平均移动距离。

2.4 - 虚拟盘

        所谓虚拟盘就是利用内存空间去仿真磁盘,又称为 RAM 盘。

        虚拟盘的主要问题是:它是易失性存储器,故一旦系统或电源发生故障,或系统再启动时,原来保存在虚拟盘中的数据将会丢失。因此,虚拟盘通常用于存放临时文件,如编译程序所产生的目标程序等。

        虚拟盘与磁盘高速缓存的主要区别在于:虚拟盘中的内容完全由用户控制,而磁盘高速缓存中的内容则是由 OS 控制的。例如,RAM 盘在开始时是空的,仅当用户(程序)在 RAM 盘中创建了文件后,RAM 盘中才有内容。//了解即可

(3)廉价磁盘元余阵列(RAID)

        思想:如果使用一个组件对性能的改进受到了很大的限制,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

swadian2008

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值