一、大容量存储器结构简介
概述次级和三级存储器设备的物理结构
1、磁盘
大容量外存。
传输速率:驱动器和计算机之间的数据传输速率。
定位时间:随机访问时间,由寻道时间(移动磁臂到所要柱面所需时间)和旋转等待时间(等待所要的扇区旋转到磁臂下所需时间)组成。
磁盘驱动器通过一组称为I/O总线(IO bus)的线与计算机相连。有多种总线,如EIDE、ATA、SATA、USB、FC和SCSI。
由称为控制器的特殊处理器执行总线上的数据传输。分为主机控制器和磁盘控制器。主机控制器在计算机上,总线末端;磁盘控制器在磁盘内。计算机通过内存映射端口向主机控制器发送一个命令,主机控制器接着通过消息将命令传送给磁盘控制器,最后由磁盘控制器操纵磁盘驱动器硬件以执行命令。磁盘控制器通常有内置缓存。
2、磁带
二、磁盘结构
可以看做一个一维的逻辑块数组。逻辑块是最小的传输单位,通常为512B。可以通过低级格式化来设置逻辑块大小。
一维逻辑块数组按顺序映射到磁盘的扇区。扇区0是最外面柱面的第一个磁道的第一个扇区,如此由外到内排列。这样理论上能将逻辑块号转换为柱面号+磁道号+扇区号组成的老式磁盘地址。但这种转换实属不易,因为磁盘会有缺陷扇区,映射时必须用其他空闲扇区来顶替;其次是有些磁盘,每个磁道的扇区数并不是一样的。原因是离心远的磁道比较长,扇区数更多。为保持磁盘读写数据速率恒定,有两种方法:1是磁道位密度均匀,读写外磁道时,转速要比相对靠内的磁道快,此为常量线性速度(CLV);2是转速不变,但外磁道密度降低,此为恒定圆角速度(CAV)。
三、磁盘附属
计算机访问磁盘存储有两种方式,一是通过IO端口或主机附属存储,二是通过分布式文件系统的远程主机, 称为网络附属存储。
1、主机附属存储
通过本地IO端口访问。有多种技术:IDE、ATA、SATA、SCSI或FC。后2种常用在高端工作站和服务器。SCSI是个总线结构;FC是高速串行结构。
有多种存储设备可用于主机附属存储,包括硬盘、RAID阵列、CD、DVD和磁带。
2、网络附属存储
数据网络总远程访问的专用存储系统。客户机通过远程进程调用接口来访问NAS。远程进程调用(RPC)可通过IP网络的TCP或UDP来进行。存储单元通常用带有RPC接口软件的RAID阵列。
网络附加存储为局域网(靠,那云计算是咋回事?)上所有计算机提供了一个共享存储的方便方法。但效率及性能不如主机附加存储。
iSCSI是一种新的网络附加存储协议,使用IP网络协议来实现SCSI协议。
3、存储区域网络
存储区域网络(SAN)是服务器与存储单元之间的私有网络,采用存储协议而不是网络协议。优势在于灵活性,多个主机和存储阵列可以附加在同一SAN上,存储动态分配给主机。SAN能够让服务器集群共享同一存储,或者让存储阵列与多个主机直连。与存储阵列相比,SAN端口更多更低成本。
FC是一种最常见的SAN互联。而Infiniband是一种新兴的专门总线架构,在服务器和存储单元之间提供高速互联网络硬件和软件支持。
四、磁盘调度
访问磁盘的时间包括两个主要部分:寻道时间和旋转延迟。寻道时间是磁臂将磁头移动到包含目标扇区的柱面的时间,旋转延迟是磁盘需要将目标扇区转动到磁头下的时间。磁盘带宽是传输速率。可以通过调整访问顺序来调度磁盘IO,提高速度和带宽。
每当一个进程需要进行磁盘IO,就向操作系统发出一个系统调用。如果磁盘和控制器空闲,那么请求会马上处理,否则会到磁盘请求队列排队。这就牵涉到磁盘调度算法。
1、FCFS调度
先来先服务(FCFS)。公平,但不是最快的。因为磁头可能会疲于奔命,而无法顺路处理。
2、SSTF调度
最短寻道时间优先算法。磁头移动过程中,沿路处理请求。该算法可能导致一些请求永远得不到处理,因为请求源源不断涌来,远处的只能傻傻的等待。
3、SCAN调度
磁臂从一端向另一端移动,沿路处理请求。当到达另一端时,往回走,沿路处理,如此循环往复。又称为电梯算法。
4、C-SCAN调度
SCAN的变种。从磁头移到另一端时,沿路处理请求。到达另一端时,往回走,但并不处理,而是回到原先起点后再开始。
5、LOOK调度
SCAN和C-SCAN其实并不是从一端跑到另一端的终点,而是只移动到一个方向的最远请求点就往回走了。返回时也如是。称为LOOK和C-LOOK。
6、磁盘调度算法的选择
算法多多,如何选择?
磁盘服务请求很大程度上受文件分配方法影响。连续分配的文件请求点位置相近,而链接或索引文件物理分散,大量的磁头移动。
另外,磁盘调度不仅仅由磁盘控制器决定,也受操作系统控制。
五、磁盘管理
1、磁盘格式化
分为低级格式化和格式化。
低级格式化又称为物理格式化,作用是将新磁盘分成扇区以便磁盘控制器能读和写。每个扇区有相应的数据结构,会有扇区号码和纠错代码。如何划分扇区的大小是个问题。通常磁盘出厂时已被低格处理。
而我们自己进行的格式化,相应地称为逻辑格式化。是操作系统将文件系统写到磁盘上。在此之前,还应该进行分区,将磁盘分为一个或多个柱面组成的分区。
有的操作系统或数据库软件直接将某个分区不经过逻辑分区就使用,此为生磁盘,上面没有任务文件系统数据结构,只作为一个大顺序数组。
为了提高效率,大多数操作系统将块集中到一大块,称为簇。磁盘IO通过块完成,但文件系统IO通过簇完成。
2、引导块
计算机开机或重启时,需要运行一个初始化程序。它初始化系统的各个方面,从CPU寄存器到设备控制器和内存,接着启动操作系统。对大多数计算机而言,自举程序保存在主板的ROM中,但这只是自举程序的小部分,其作用是进一步从磁盘上调入更完整的自举程序。这部分完整程序保存在磁盘的启动块上,启动块位于磁盘的固定位置。拥有启动分区的磁盘称为启动磁盘或系统磁盘。
3、坏块
每个磁盘或多或少存在坏块。对这些块有多种处理方式。比如IDE控制器,逻辑格式化的时候,会在FAT条目中写上标记表示其不可用;SCSI磁盘维护一个坏块链表,使用过程中不断更新。控制器会用备用块来逻辑替代坏块。坏块链表和备用块在低格时就已存在。
六、交换空间管理
交换指内容在磁盘和内存间的移动。当物理内存不够,进程将从内存移到磁盘以释放内存空间。当然,交换与虚拟内存技术和交换页结合,不必对整个进程进行交换。
因为虚拟内存使用磁盘作为内存的扩充,而磁盘比内存要慢得多,所以交换空间会严重影响性能。而交换空间管理是操作系统的一个底层任务,目的正是为虚拟内存提供最佳吞吐量。
1、交换空间的使用
不同操作系统使用方式不同。有的将交换空间用于保存整个进程映像,包括代码段和数据段;也有的用以存储换出的内存页。
2、交换空间位置
可以在普通文件系统上创建,或者在一个独立的磁盘分区上进行;或者干脆使用生磁盘。普通文件系统需要遍历目录结构和磁盘分配数据,效率较低;生磁盘则效率较好。
3、交换空间管理
七、RAID结构
RAID,磁盘冗余阵列。
过去,RAID由许多小的、便宜的磁盘组成,作为大而昂贵磁盘的替代品;现如今,RAID还在使用,是因为其高可靠性和高传输率。
1、通过冗余改善可靠性
如镜像
2、通过并行处理改善性能
如条带化
3、RAID级别
如RAID0,RAID1,RAID5等
八、稳定存储实现
系统为每个逻辑块维护两个物理副本。输出操作按如下方式执行:
1、将信息写到第一块物理块上
2、当第一次写成功完成时,再将同样信息写到第二块物理块上
3、只有在第二次写成功完成时,才声明写操作成功完成
从差错中恢复时,每对物理块都要检查。两块无错且内容相同,万事大吉;一块有错,则用另一块替换;两块无错但内容不同,则用第二块内容替代第一块。
由于等待磁盘写(同步IO)操作的完成相当费时,许多存储阵列增加了NVRAM(非易失)作为缓存。
九、三级存储结构
指可移动存储设备。
1、三级存储设备
1)可移动磁盘
可移动磁盘,光盘等
2)磁带
3)未来技术
2、操作系统支持
操作系统的两个主要任务是管理硬件和为应用程序提供一个虚拟机器的抽象。对于磁盘,操作系统提供了两种抽象,一是生设备,一种是文件系统。那么,当存储介质是可移动时,操作系统如何处理?
1)应用接口
像处理固定盘一样处理可移动磁盘。而打开整个磁带以作为生设备。
2)文件命名
另一个问题是如何命名可移动介质上的文件。因为不固定,所以不能像固定磁盘那样,通过盘符+路径之类的名字来区分。现代操作系统通常是对可移动介质的命名空间问题不加处理,而由应用系统和用户来决定。
3)层次存储管理
可移动存储通常用来做备份。
3、性能
三级存储器最重要的三个性能指标为速度、可靠性和价格。