开展网站建设服务,网站内页优化,建设网站分析报告,网页设计教程清华大学出版社目录
1、提高磁盘I/O速度的途径
#xff08;1#xff09;磁盘高速缓存(Disk Cache)
1.1 - 数据交付(Data Delivery)方式
1.2 - 置换算法
1.3 - 周期性地写回磁盘
#xff08;2#xff09;提高磁盘I/O速度的其它方法
2.1 - 提前读
2.2 - 延迟写
2.3 - 优化物理块的…目录
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速度的途径 文件系统的性能可表现在多个方面其中至关重要的一个方面是对文件的访问速度为了提高对文件的访问速度可从三方面着手:
改进文件的目录结构以及检索目录的方法来减少对目录的查找时间。选取好的文件存储结构以提高对文件的访问速度。提高磁盘的 I/O 速度能将文件中的数据快速地从磁盘传送到内存中。 目前磁盘的 I/O 速度远低于对内存的访问速度通常要低上 4 ~ 6 个数量级。因此磁盘的 I/O 已成为计算机系统的瓶颈。
1磁盘高速缓存(Disk Cache) 磁盘高速缓存是指在内存中为磁盘盘块设置的一个缓冲区在缓冲区中保存了某些盘块的副本。 在设计磁盘高速缓存时需要考虑的问题有
如何将磁盘高速缓存中的数据传送给请求进程。//数据交付采用什么样的置换策略。已修的盘块数据在何时被写回磁盘。
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) 思想如果使用一个组件对性能的改进受到了很大的限制那么可通过使用多个相同的组件来获得性能的大幅度提高。//如单处理机系统 - 多处理机系统分布式系统 廉价磁盘冗余阵列(RedundantArray of Inexpensive DiskRAID)是由多个小磁盘组成的一个大容量的磁盘存储器。 RAID 不仅是大幅度地增加了磁盘的容量而且也极大地提高了磁盘的 I/O 速度和整个磁盘系统的可靠性。 并行交叉存取在一个系统中有多台磁盘驱动器系统将每一盘块中的数据分为若干个子盘块数据再把每一个子盘块的数据分别存储到各个不同磁盘中的相同位置上。以后当要将一个盘块的数据传送到内存时采取并行传输方式将各个盘块中的子盘块数据同时向内存中传输从而使传输时间大大减少。//多个磁盘并行传输 2、提高磁盘可靠性的技术 容错技术是通过在系统中设置冗余部件的办法来提高系统可靠性的一种技术。磁盘容错技术则是通过增加冗余的磁盘驱动器、磁盘控制器等方法来提高磁盘系统可靠性的一种技术。即当磁盘系统的某部分出现缺陷或故障时磁盘仍能正常工作且不致造成数据的丢失或错误。//部件冗余 磁盘容错技术往往也被人们称为系统容错技术 SFT。可把它分成三个级别第一级是低级磁盘容错技术第二级是中级磁盘容错技术第三级是系统容错技术它基于集群技术实现容错。
1第一级容错技术 SFT-I 第一级容错技术(SFT-I)主要用于防止因磁盘表面缺陷所造成的数据丢失它包含双份目录、双份文件分配表及写后读校验等措施。
1.1 - 双份目录和双份文件分配表 在磁盘上存放的文件目录和文件分配表 FAT是文件管理所用的重要数据结构。为了防止这些表格被破坏可在不同的磁盘上或在磁盘的不同区域中分别建立(双份)目录表和 FAT。其中一份为主目录及主 FAT另一份为备份目录及备份 FAT。//文件备份 一旦由于磁盘表面缺陷而造成主文件目录或主 FAT 的损坏时系统便自动启用备份文件目录及备份 FAT从而可以保证磁盘上的数据仍是可访问的。
1.2 - 热修复重定向和写后读校验 由于磁盘价格昂贵在磁盘表面有少量缺陷的情况下则可采取某种补救措施后继续使用。一般主要采取以下两个补救措施
热修复重定向系统将磁盘容量的很小一部分(例如2%~3%)作为热修复重定向区用于存放当发现磁盘有缺陷时的待写数据并对写入该区的所有数据进行登记以便于以后对数据进行访问。//分配一块专门的区域承载缺陷数据写后读校验方式为保证所有写入磁盘的数据都能写入到完好的盘块中应该在每次向磁盘中写入一个数据块后又立即将它读出并送至另一缓冲区中再将该缓冲区内容与内存缓冲区中在写后仍保留的数据进行比较若两者一致便认为此次写入成功。否则再重写。若重写后两者仍不一致则认为该盘块有缺陷此时便将应写入该盘块的数据写入到热修复重定向区中。//写完后读取出来进行对比校验
2第二级容错技术 SFT-II 第二级容错技术主要用于防止由磁盘驱动器和磁盘控制器故障所导致的系统不能正常工作它具体又可分为磁盘镜像与磁盘双工。
2.1 - 磁盘镜像(Disk Mirroring) 为了避免磁盘驱动器发生故障而丢失数据便增设了磁盘镜像功能。为实现该功能须在同一磁盘控制器下再增设一个完全相同的磁盘驱动器。//冗余部件磁盘驱动器 当采用磁盘镜像方式时在每次向主磁盘写入数据后都需要将数据再写到备份磁盘上使两个磁盘上具有完全相同的位像图。把备份磁盘看作是主磁盘的一面镜子。当主磁盘驱动器发生故障时由于有备份磁盘的存在在进行切换后使主机仍能正常工作。 磁盘镜像虽然实现了容错功能却使磁盘的利用率降至 50%也未能使服务器的磁盘 I/O 速度得到提高。//慎重考虑
2.2 - 磁盘双工(Disk Duplexing) 如果控制这两台磁盘驱动器的磁盘控制器发生故障或主机到磁盘控制器之间的通道发生故障磁盘镜像功能便起不到数据保护的作用。因此在第二级容错技术中又增加了磁盘双工功能即将两台磁盘驱动器分别接到两个磁盘控制器上同样使这两台磁盘机镜像成对。 在磁盘双工时文件服务器同时将数据写到两个处于不同控制器下的磁盘上使两者有完全相同的位像图。如果某个通道或控制器发生故障时另一通道上的磁盘仍能正常工作不会造成数据的丢失。在磁盘双工时由于每一个磁盘都有自己的独立通道故可同时(并行)地将数据写入磁盘或读出数据。
3基于集群技术的容错功能 所谓集群是指由一组互连的自主计算机组成统一的计算机系统给人们的感觉是它们是一台机器。利用集群系统不仅可提高系统的并行处理能力还可用于提高系统的可用性它们是当前使用最广泛的一类具有容错功能的集群系统。其主要工作模式有三种热备份模式、互为备份模式和公用磁盘模式。
3.1 - 双机热备份模式 在这种模式的系统中备有两台服务器两者的处理能力通常是完全相同的一台作为主服务器另一台作为备份服务器。平时主服务器运行备份服务器则时刻监视着主服务器的运行一旦主服务器出现故障备份服务器便立即接替主服务器的工作而成为系统中的主服务器修复后的服务器再作为备份服务器。//主从服务器 3.2 - 双机互为备份模式 在双机互为备份模式中平时两台服务器均为在线服务器它们各自完成自己的任务例如一台作为数据库服务器另一台作为电子邮件服务器。 在互为备份的模式中最好在每台服务器内都配置两台硬盘一个用于装载系统程序和应用程序另一个用于接收由另一台服务器发来的备份数据作为该服务器的镜像盘。在正常运行时镜像盘对本地用户是锁死的这样就较易于保证在镜像盘中数据的正确性。如果仅有一个硬盘则可用建立虚拟盘的方式或分区方式来分别存放系统程序和应用程序以及另一台服务器的备份数据。 如果通过专线链接检查到某台服务器发生了故障此时再通过路由器去验证这台服务器是否真的发生了故障。如果故障被证实则由正常服务器向故障服务器的客户机发出广播信息表明要进行切换。在切换成功后客户机无须重新登录便可继续使用网络提供的服务和访问服务器上的数据。而对于连接在非故障服务器上的客户机则只会感觉到网络服务稍有减慢而已不会有任何影响。当故障服务器修复并重新连到网上后已被迁移到无故障服务器上的服务功能将被返回恢复正常工作。//故障替换以及故障修复 这种模式的优点是两台服务器都可用于处理任务因而系统效率较高现在已将这种模式从两台机器扩大到 4 台、8 台、16 台甚至更多。系统中所有的机器都可用于处理任务当其中一台发生故障时系统可指定另一台机器来接替它的工作。//现代集群采用的方式
3.3 - 公用磁盘模式 为了减少信息复制的开销可以将多台计算机连接到一台公共的磁盘系统上去。该公共磁盘被划分为若干个卷。每台计算机使用一个卷。如果某台计算机发生故障此时系统将重新进行配置根据某种调度策略来选择另一台替代机器后者对发生故障的机器的卷拥有所有权从而可接替故障计算机所承担的任务。这种模式的优点是消除了信息的复制时间因而减少了网络和服务器的开销。
4后备系统 在一个完整的系统中是必须配置后备系统的。这一方面是因为磁盘系统不够大不可能将系统在运行过程中的所有数据都装在磁盘中应当把暂时不需要但仍然有用的数据存放在后备系统中保存起来。另一方面是为了防止系统发生故障或病毒的感染把系统中的数据弄错或丢失也需要将比较重要的数据存放在后备系统中。目前常用做后备系统的设备有磁带机、磁盘机、硬盘和光盘机。//即一些持久化设备用来对数据进行物理存储和备份
3、数据一致性控制 在实际应用中经常会在多个文件中都含有同一个数据。所谓数据一致性问题是指保存在多个文件中的同一数据在任何情况下都必需能保证相同。例如当我们发现某种商品的进价有错时我们必须同时修改流水账付费账、分类账及总账等一系列文件中的该商品的价格方能保证数据的一致性。但如果在修改进行到中途时系统突然发生故障就会造成各个账目中该数据的不一致性进而使多个账目不一致。为了保证数据的一致性在现代 OS 中都配置了能保证数据一致性的软件。
1事务
1.1 - 事务的定义 一个事务在对一批数据执行修改操作时要么全部完成并用修改后的数据去代替原来的数据要么一个也不修改。事务操作所具有的这种特性即事务的原子性(Atomic)。 作为单个程序单元执行的一系列操作并不是都可以成为事务也就是说如果定义其为事务则必须同时满足四个属性即事务属性 ACID。除了上述的原子性外事务还应具备的属性是
一致性(Consistent)即事务在完成时必须使所有的数据都保持一致状态隔离性(Isolated)即对一个事务对数据所作的修改必须与任何其它与之并发事务相隔离换言之一个事务查看数据时数据所处的状态要么是另一并发事务修改它之前的状态要么是另一事务修改它之后的状态而不会是任何中间状态的数据持久性(Durable)即事务完成之后它对于系统的影响是永久性的。
1.2 - 事务记录(Transaction Record) 为了实现事务的原子修改通常须借助于称为事务记录的数据结构来实现。这些数据结构被放在一个非常可靠的存储器中用来记录在事务运行时数据项修改的全部信息故又称为运行记录(Log)。该记录中包括有下列字段//这是一种非常普适的指导思想很重要
事务名用于标识该事务的唯一名字。数据项名它是被修改数据项的唯一名字。旧值修改前数据项的值。新值修改后数据项将具有的值。 在事务记录表中的每一记录描述了在事务运行中的重要事务操作如修改操作、开始事务、托付事务或失败事务等。//记录事务
1.3 - 恢复算法 由于一组被事务 T 修改的数据以及它们被修改前和修改后的值都能在事务记录表中找到因此利用事务记录表系统能处理任何故障而不致使故障造成非易失性存储器中信息的丢失。恢复算法可利用以下两个过程//数据库的通用方式
undo(T)。该过程把所有被事务 T 修改过的数据恢复为修改前的值。redo(T)。该过程能把所有被事务 T 修过的数据设置为新值。 如果系统发生故障系统应对以前所发生的事务进行清理。通过查找事务记录表可以把尚未清理的事务分成两类。//undo 和 redo日志 一类是其所包含的各类操作都已完成的事务。确定为这一类事务的依据是在事务记录表中既包含了 T(开始) 记录又包含了 T(托付) 记录此时系统利用 redo(T) 过程把所有已被修改的数据设置成新值。 另一类是其所包含的各个操作并未全部完成的事务。对于事务T如果在 Log 表中只有 T(开始) 记录而无 T(托付) 记录则此 T 便属于这类事务。此时系统便利用 undo(T) 过程将所有已被修改的数据恢复为修改前的值。
2检查点 检查点(Check Points)的作用 由于在系统中可能存在着许多并发执行的事务因而在事务记录表中就会有许多事务执行操作的记录。随着时间的推移记录的数据也会愈来愈多。因此一旦系统发生故障在事务记录表中的记录清理起来就非常费时。 引入检查点的主要目的是使对事务记录表中事务记录的清理工作经常化即每隔一定时间便做一次下述工作
首先是将驻留在易失性存储器(内存)中的当前事务记录表中的所有记录输出到稳定存储器中其次是将驻留在易失性存储器中的所有已修改数据输出到稳定存储器中然后是将事务记录表中的检查点记录输出到稳定存储器中最后是每当出现一个(检查点)记录时系统便执行一次恢复操作即利用 redo 和 undo 过程实现恢复功能。 如果一个事务 T 在检查点前就做了托付(提交)则在事务记录表中便会出现一个在检查点记录前的 T(托付) 记录。在这种情况下所有被 T 修改过的数据或者是在检查点前已写入稳定存储器或者是作为检查点记录自身的一部分写入稳定存储器中。因此以后在系统出现故障时就不必再执行 redo 操作了。//提前保存已提交事务的数据 在引入检查点后可以大大减少恢复处理的开销。因为在发生故障后并不需要对事务记录表中的所有事务记录进行处理而只需对最后一个检查点之后的事务记录进行处理。 因此恢复例程首先查找事务记录表确定在最近检查点以前开始执行的最后的事务 T。在找到这样的事务后再返回去搜索事务记录表便可找到第一个检查点记录恢复例程便从该检查点开始返回搜索各个事务的记录并利用 redo 和 undo 过程对它们进行处理。//分段处理数据
3并发控制 由于事务具有原子性这使各个事务的执行必然是按某种次序依次进行的只有在一个事务执行完后才允许另一事务执行即各事务对数据项的修改是互斥的。人们把这种特性称为顺序性而把用于实现事务顺序性的技术称为并发控制。//对同一数据的事务需要互斥 数据库中常用的并发控制技术互斥锁和共享锁。//也就是读写锁
4重复数据的数据一致性问题 为了保证数据的安全性最常用的做法是把关键文件或数据结构复制多份分别存储在不同的地方当主文件(数据结构)失效时还有备份文件(数据结构)可以使用不会造成数据丢失也不会影响系统工作。显然主文件(数据结构)中的数据应与各备份文件中的对应数据相一致。此外还有些数据结构(如空闲盘块表)在系统运行过程中总是不断地对它进行修改因此同样应保证不同处的同一数据结构中数据的一致性。//集群中最常见的问题 //对于这个问题分布式系统有对应的方案和算法此处不再详细描述如有兴趣可关注后续的文章。