VSAM: Virtual storage access method 虚拟存储访问方法是IBM的磁盘文件存储访问方法, 首先使用在0S/VS2操作系统中,然后使用在多虚拟存储架构,然后在z/OS。 作为一个面向记录的文件系统,VSAM由四个数据集组成。关键字顺序数据集KSDS, 关联记录数据集RRDS, 实体顺序数据集ESDS和线性数据集LDS。 KSDS,RRDS和ESDS由记录组成, 而LDS只包含无固定记录结构的字节流。

虚拟存储技术的发展,为文件管理系统开拓了新的方向,而基于虚拟存储概念而研制发展的虚拟存取方法,在IBM系列的机器中也已经普遍地使用。

VSAM(Virtual Storage Access Method)是一种虚拟存取方法,它是为了与直接存取存储设备DASD(Direct Access Storage Device--能够在文件上直接地存取任何记录的设备)一起使用而研制的文件管理系统。

VSAM 存取文件记录的方法将不依赖于存放记录的外部设备类型,而是通过这个记录对文件开始点的相对位移(相对位移以字节为单位计算)来访问记录。相对位移值就称之为相对字节地址RBA(Relative Byte Address)。文件开始点地址定为0。

VSAM方法允许使用三种不同的数据组织,每一种数据组织均可采用不同的处理方法。包括了对在DASD上文件的自动空间分配、产生替换索引等功能。

VSAM方法还有一组服务性的程序--------存取方法服务AMS(Access Method Service)。这组服务性程序可以定义和维护VSAM文件,把记录输入到VSAM文件中、为文件建立一个或多个替换索引、复制和打印文件、产生文件的副本、恢复失效的数据、把顺序存取方法( SAM)文件和索引顺序存取方法(ISAM)文件转换成VSAM格式、并且能对已转换成VSAM格式的ISAM文件进行处理。

VSAM特征

1.自动的数据空间分配

VSAM的数据空间全是通过独立的目录来管理的。该目录描述了在系统中的全部VSAM文件的逻辑属性和物理属性。用于 VSAM 的数据空间是动态的,如需要则可增加更多的空间。

2.数据保护

VSAM方法利用它本身的设计和存取控制参数,可以对数据进行保护。VSAM的设计允许用户仅通过指定正确的目录信息来存取数据,目录本身指向数据,在目录中所存储的信息都受到VSAM所限制。

3.设备独立性

VSAM方法允许在不同类型的磁盘设备上处理,而不必重新进行程序设计。事实上,在逻辑上 VSAM文件被设计成连续的区域,唯一的限制是:VSAM文件必须全部存储在同样的设备类型的卷中。

4.数据移植性

VSAM方法提供了在不同操作系统下VSAM文件互换的可能性。

VSAM的数据组织

所谓的文件组织形式,是指数据记录在文件中的排列方式。而文件的存取方法是指从文件找到数据记录的方法。VSAM 所使用的数据,均具有一定的组织结构以及存取方法,用户可以选择三种类型的数据组织及其相应的存取方法:

1.键顺序数据组织(Indexed Sequential Organization)

2.进入顺序数据组织(Sequential Organization)

3.相对记录数据组织(Relative Organization)

这三种数据组织

所对应的数据集就分别称为:

1.键顺序数据集KSDS(Key Squenced Data Set)

2.进入顺序数据集ESDS(Entry Squenced DataSet)

3.相对记录数据集RRDS(Relative Record Data Set)

数据条带技术基本要素

要弄明白数据条带的优点,就有必要了解一下这种技术的原理。VSAM在控制区(CA)里按顺序摆放了I/O基础单元--控制间隔(CIs)诸如CA1,CA2等等控制区,它们包含了很多磁道,这些磁道呈直线安放在直接存取存储器(DASD)上。如果集群扩展到其它卷,VSAM仍遵循同一规则在控制区里有序安放控制间隔。

条带式排列提高了按序处理效率,因为系统可以同时发起针对多卷的并行I/O访问动作。条带化帮助关键访问比如在线应用能够实现即时访问一个卷的数据,而无需等待I/O结束对另一个数据卷的访问。

VSAM还支持“层级”理念。IBM把该理念定义为将会包含在“I/O包”中的数据卷。实际上,一层代表了一个数据组扩展区,它们共享相同的数据记录。当一个数据组扩展时,扩展区可能延伸到不同的数据卷上。VSAM可能会得到进一步优化,识别出每个层分别属于哪个数据卷。

用户可以对除AIXs(辅助索引)之外几乎所有类型的VSAM集群进行条带化。IBM也可以把条带化限制在一个集群的数据组件上。

IBM提醒VSAM要支持多达16条带。这意味着控制区可能伸展至16个磁道而非传统的15个磁道,并且包含更多的控制间隔。对于(KSDS)关键性排序数据组,这就意味着指向数据模块(索引序列组)的索引控制间隔可能没有足够空间引用控制区的控制间隔。这就表明其本身是控制区末端不使用的控制间隔,或者说是某种空间浪费。为了充分利用这部分空间,存储管理员一定要用较大的控制间隔来覆盖默认的索引控制间隔。