您的位置:首页 > 其它

大机学习之具体技术-文件系统及数据集概览

2007-08-12 21:35 585 查看
《大机学习之具体技术-文件系统及数据集》
在Andrew S.Tanenbaum的《现代操作系统》中文件系统这一章的最前面的一段话说到:
“所有的计算机应用程序都需要存储和检索信息。并且很容易理解的是许多信息需要长期存储,长期存储信息有三个基本要求:
1:能够储存大量信息
2:使用信息的进程终止时,信息仍旧存在。
3:必须能使多个进程并发存取有关信息。
解决所有这些问题的通常做法就是把信息以一种单元的形式,也就是所谓的文件,存储在磁盘或者其它介质上。文件是受操作系统管理的。有关文件的构造,命名,存取,使用,保护和实现方法都是操作系统设计的主要内容。从总体上看,操作系统中处理文件的部分称为文件系统。
从用户的角度来看,文件系统中最重要的是它在用户眼中的表现形式,也就是文件是由什么组成的,怎样创建文件,怎样给文件命名,怎样保护文件以及可以对文件进行哪些操作等。至于用链表还是用位图来记录空闲存储区以及在一个逻辑块中有多少个扇区等细节并不是用户所关心的,当然对文件系统的设计者来说这些内容是非常重要的。”

上面他说了进程与文件,用户与文件的关系,以及文件自身需要一个组织方式。可是在大机中,我们似乎没有了进程这一概念,而换之为JOB,然后也不再有文件这一概念,而换之为数据集(Data Set)。JOB分为批处理以及在线处理,当然这是个大概念,没有进程那么底层,但是我现在知道的只有这么多,至于一个JOB在系统内核中是一个什么样子我还不知道。应该也有进程线程吧,毕竟这是科学论证的最优选项。然后数据集这个东西呢-我对它实在是没有任何感性或者理性上的认识,所以急需了解相关概念。接着看资料,看了一部分马上就认识到,不管主机的存储系统如何地复杂,都是被操作系统所屏蔽了的,我们只需将它理解为一个简单的存储设备就可以了,比如就是一块普通硬盘吧,然后,操作系统把这个设备上面的空间进行了分卷,我想这其实跟WINDOWS对硬盘的分区是一个性质吧,每个卷被系统分配了一个VOLUME SERIAL NUMBER,然后我们就可以进行数据集的分配了,前提是要指定分配在哪个卷上(有时甚至可以分配于多个磁盘卷上,这我就不明白了有什么意义),这样既方便了用户处理,也方便了OS的管理。然后就是数据集的定义,作者的原话是:
z/OS 数据集是存储在一个磁盘卷或者多个磁盘卷上,逻辑相关的数据记录的集合。例如, 一个数据集可以是一个源程序、一个宏库或一个能够被应用程序使用的数据记录文件。用户可以在终端上打印或显示数据集。逻辑记录是应用程序使用的基本单元。
数据可以存储在直接访问存储设备上(DASD),磁带卷或光媒体上。正如前面提到的, DASD适用于磁盘或与磁盘类似的设备。所有类型的数据集都可以存储在DASD上,但是只有顺序数据集能够存储在磁带上。将在后面讨论数据集的类型。
呵呵,紧接着有一节,基本把我所有的疑惑都解决了:
数据集的类型
z/OS系统支持许多类型的数据集,并且使用不同的方法来管理它们,本节讨论三种类型的数据集:
(1)顺序数据集   顺序数据集中的记录按照物理顺序存放,新记录在数据集的尾部增加(不一定吧,那我岂不是不能在数据集中间插入记录了?),用户可以在扩展格式中指定一个连续数据集。
 (2)分区数据集(PDS)和扩展的分区数据集(PDSE)
PDS是顺序数据集的集合,在PDS中,这些顺序数据集被称为成员,每个成员都有一个名字。PDS中还包含目录,用来在分区数据集中对成员定位。目录是由包含目录入口的记录组 成的,每个成员都有一个目录入口。 通常分区数据集被看作一个库。
扩展的分区数据集包括一个索引的连续组织成员的扩展的目录,每一个成员可能包括一 个程序或数据。用户可以用PDSE来代替PDS,使用PDSE代替PDS的主要好处是PDSE能够在数据 集中自动的重用空间。
(3)VSAM数据集
一种以访问方式命名的数据集,可以高效的进行数据集的管理。
数据集的存储方式
z/OS系统中的磁盘数据集被组织在磁盘卷上,称为直接访问存储设备(DASD)。在同一 个卷上数据集的名字必须是唯一的。数据集可以根据设备类型(???)、卷序列号和数据集名来定位。这与UNIX系统的文件树是不一样的,基本的z/OS系统的文件结构是不分等级的,z/OS的数据集没有与路径名类似的等价物。
zSeries的硬件和软件的数据集特性与UNIX系统、PC系统都不同。本章涵盖了z/OS用来存储和读取数据的访问方法,和在磁带上存储数据。本章还包括一般的I/O子系统设计原则, 并讨论了一些设备,如下:
 (1)直接访问存储设备(DASD),是磁盘驱动器的另外一个名字。
 (2)磁盘驱动器也称为磁盘卷,磁盘包, 或一个头磁盘集合(HDA)。在本文中,当讨论设备的物理特性时,我们使用术语-卷(VOLUME)。
 (3)磁盘驱动器包含柱面(cylinders)。
 (4)柱面包含轨道(Tracks)。
 (5)轨道包含数据记录,为CKD(Count Key Data)格式。
 (6)数据块是磁盘上记录的组织单位。
数据集的分区(extents
一个磁盘数据集的空间是在分区中分配的。 一个分区就是一个磁盘驱动器轨道(或柱面) 的相邻空间,也就是一段连续的磁盘空间。数据集能够通过增加分区而追加存储空间。旧类 型的数据集在同一个卷里可以有不超过16个的分区。较新类型的数据集可以有128或255个分区。
在z/OS中,一个基于分区的数据集组织设计的目的是用来使硬盘性能最优化,读或写磁盘上邻近的轨道将比分散的轨道更快速。
记录定位
传统的z/OS数据集是面向记录的。 正常使用下,它没有PC系统和UNIX系统中所有的字节流文件。(z/OS UNIX有位字节流文件,并且字节流函数也存在于其他特定的区域中。这些不是传统的数据集。)
在 z/OS 中,没有新的行(NL)或回车以及行填充字符来指示记录的结束。在一个给定
的数据集里,记录可以是定长或变长的。例如,当用 ISPF 编辑数据集时,每一行都是一个 记录。(那么假如我的记录为定长,然而一行显示不下一个记录时,一行也还叫一个记录吗?)
磁带数据集
在主机中,最重要和最常用的数据集是磁盘数据集,但是大型机的应用程序也可能根据 许多不同的目的而使用磁带数据集。大型机磁带驱动器允许有变长记录(块)。常规程序方法 的块最大可以是65K字节,专用程序可能产生更长的块,目前已经有许多不同特性的磁带驱动器了。
数据集记录格式
传统的z/OS数据集可以有五种记录格式,如下图所示。



首先我们说明“块”和“记录”之间的区别。块是逻辑记录的组合,是读取的单位;而记录则是一个逻辑实体。
数据集记录格式说明如下:
 (1)定长不组块记录格式(F–Fixed),是指磁盘上的一个物理块就是一个逻辑记录,并且所有的块/记录的大小相同。
 (2)定长组块记录格式(FB - Fixed Blocked)是指一些逻辑记录被组合成一个物理块。这能提供有效的空间利用和操作。该格式通常适用于定长记录。
 (3)变长不组块记录格式(V- Variable)是指一个逻辑记录就作为一个物理块,因为记录 是变长的,要求应用程序在记录的开始插入一个4字节的记录描述字(RDW)。物理块的长度包含记录的长度和4字节的RDW,该格式很少被使用。
 (4)变长组块记录格式(VB –Variable Blocked),是指一个物理块由若干条逻辑记录组成,每条记录都有RDW描述,物理块中还有BDW描述为4个字节。
 (5)无定义格式(U – Undefined)该格式是由没有预定义结构的、变长的物理记录/块组成的。虽然这种格式可能对许多特殊的应用程序来说很有吸引力,但是它通常只被用于可执行的模块。
 下面给出一些常用的专业术语的解释:
 (1)块大小 (BLKSIZE-Block Size) 是针对F和FB记录的写在磁盘上的物理块大小。 对于V,VB和U记录格式,数据集可以使用最大物理块大小。
 (2)逻辑记录大小 (LRECL-Logical Record Length) 是逻辑记录的大小(F,FB) 或允许的最大的逻辑记录大小(V,VB)。 格式U记录没有LRECL。
 (3)记录格式(RECFM-Record Format)有F,FB,V,VB或U,正如前面介绍的。
这些术语是都是数据控制块(DCB-Data Control Block)特性,这是根据它们在汇编语言程序中定义的控制块来命名的。创建一个新数据集时,用户应该给这些参数指定值。(现在终于理解了在创建数据集时那些参数倒底是什么了,还有为什么要求其中的块大小必须是记录大小的整数倍了)
Z/OS对数据集的管理
在z/OS操作系统中,数据集的管理包括分配,安置,监控,迁移,备份,召回,恢复和删 除。这些数据集的管理操作可以手动完成或通过使用自动程序来完成。当数据集管理是自动 完成时,系统决定对象的安置, 并且自动地管理对象的备份,移动,空间和安全。 典型的z/OS 生产系统包括指南和管理数据集的自动化程序。
一个用户或程序能够直接地控制数据集使用的许多方面,这取决 z/OS 系统和它的存储 设备是如何配置的,而且在早期操作系统中, 也要求用户这么做。然而, 逐渐地, z/OS 的安 装对于数据和资源管理来说慢慢的依赖于特定的安装设置和额外的存储管理产品,例如DFSMS,来自动完成对数据集的管理。
DFSMS概述(数据设施存储管理子系统(Data Facility Storage Management Subsystem
z/OS系统中数据集存储管理的主要方法是通过DFSMS组件。DFSMS 执行必要的数据、存储、程序和系统的设备管理功能。DFSMS 是一组产品, 其中之一的DFSMSdfp,是运行z/OS 所必需的。在z/OS环境中,DFSMS连同硬件产品和特定安装设定一起为数据和资源管理提供了系统存储的管理。
DFSMS的核心是存储管理子系统(SMS-Storage Management Subsystem),z/OS系统程序员或存储管理员可以用SMS定义自动管理存储和硬件设备的方案。这些方案描述了数据分配特性、性能和可用性目标、备份和保持需求和系统的储存需求。SMS管理这些系统方案,交互存储管理工具(ISMF)提供定义和维护方案的用户接口。
DFSMS使用一组构件和用户接口,允许存储管理员更好的处理管理系统的数据集(使用 DFSMS产品)。DFSMS组件包括DFSMSdfp,DFSMShsm 和 DFSMSdss。
DFSMS环境也被称为SMS环境,z/OS系统程序员或存储管理员可以用DFSMS定义性能目标和数据可用性需求,为典型数据集创建模块数据定义,并自动备份数据。DFSMS可以根据安装方案,在创建数据集时自动为它们分配服务和数据定义属性。IBM的相关存储管理产品决定了数据的存放、管理数据备份控制空间的使用,并保证数据安全。
数据的访问和存储:
z/OS 操作系统支持多种数据的访问方式,下面我们介绍最常用的两种。
1:VSAM  虚拟存储访问方法(VSAM)是一种能比其他磁盘访问方法提供更多复杂函数(函数?功能吧)的访问方法。VSAM 以一种唯一的,而其他访问方法不理解的格式来保存磁盘记录的。VSAM 能够以多种方法组织其数据:
(1)索引顺序数据集(KSDS-Key Sequence Data Set),这是VSAM最常见的应用格式。每个记录有一个或多个索引,记录可以通过索引值读取(或插入)。KSDS提供对数据的随机访问。记录可是定长也可以是变长的。
(2)进入顺序数据集(ESDS-Entry Sequence Data Set),这种形式的VSAM现在很少使用。它按记录的写入顺序保存记录(对于这种类型的数据,QSAM比ESDS更常用)。
(3)相对记录数据集(RRDS-Relative Record Data Set ),这种文件格式与Relative File相类似,它将整个存储体分成许多固定长度的Slot,并分别加以编号,即所谓的相对资料记录编号RRN(Relative Record Number),通过RRN来读取数据记录,提供随机读取和顺序读取。
(4)线性数据集(LDS-Linear Data Set),实际上,这是一个字节流的数据集,它是传统MVS中唯一的字节流数据集格式。许多z/OS的系统函数使用这种格式,但是它很少被应用程序使用。
在VSAM中还有许多其他的访问数据的方法,这里没有全部列出来。大多数 VSAM 的使用是面向索引数据的。VSAM 主要是面向应用的,它不为源程序、JCL 或是可执行模块使用。VSAM文件不能按常规用 ISPF显示或编辑(!!!!!)。AMS 是用来定义 VSAM 的结构的,例如文件和索引。
2:库
分区数据集(PDS 或PDSE)通常被称为库,PDS 是包含成员的数据集。库是用来存储源程序、系统和应用程序控制参数、JCL和可执行模块的。大多数的系统数据集都是库,每当更新或增加一个成员时,较老的库格式(PDS)都会丢失空间,所以有必要通过压缩 PDS 来恢复PDS 的空间(这个看不懂哦!)。
每个库的第一个部分都是一个目录,目录包含成员名和成员指针。目录中的成员名是按字母顺序排列的,但是成员本身可以在库里以任何顺序出现。
数据的查找:
z/OS 系统中有许多组件可以帮助查找数据集,包括 VTOCs和编目(catalog),下面我们
对 VTOCs 和编目进行简单的介绍。
VTOC :
VTOC(Volume Table Of Contents )是一个单个Extent的顺序的数据集,并且存放在磁盘的0柱面0磁道之后,65535磁道之前。它记录了存储设备上所有数据集的属性,如数据集名,定位信息,长度,记录格式,使用情况,建立日期等。VTOC 由DSCB(Data Set Control Block)组成,它对应于一个数据集,或者驻留于该卷上的VSAM数据集的定位信息,或者未分配的磁道。对应于数据集的DSCB和反映VSAM数据集在该卷上的空间占用情况的DSCB描述了数据集的特性,而描述未分配空间的DSCB则指出了未分配磁道的位置。一个磁盘VTOC区中DSCB的个数基本确定了可以存在这个磁盘上的数据集的个数。
VTOC 要求一种特定的磁盘格式,如图 5-2 所示。



在第一个柱面的第一个的记录上提供了卷的标签,它是一个 6 字符长的卷序列号(volser)和一个 VTOC 的指针,该指针可以定位在磁盘的任何地方。VTOC 包含了硬盘卷上所有的数据集的名字和这些数据集的指针。一个标准的 z/OS 应用程序 ICKDSF 可以用来创建标签和 VTOC。
当一个磁盘卷用 ICKDSF来初始化时,其所有者可以指定 VTOC的位置和大小。大小是可变的,可以从几个磁道到 100 个磁道,这取决于需要用到的卷。在 VTOC 中大部分数据集需要较大的空间。VTOC 上也有磁盘卷上所有自由空间(空闲空间)的入口,为数据集分配空间会导致系统程序检查并更新自由空间记录,并且创建一个新的 VTOC入口。
主编目(catalog)和用户编目:
每个磁盘卷都有 VTOC,但是 VTOC 只能管理本磁盘卷,不能管理整个磁盘数据,在 z/OS系统中,系统使用编目机制来管理整个系统中的数据集。编目是根据数据集名来存储信息的,这意味着数据集名必须是唯一的。磁盘和磁带的数据集都可以被编目。为了定位一个特定的数据集,z/OS 必须知道三个细节:数据集名,卷名和设备单元(卷设备的类型,如 3390 磁盘或3590 磁带)。用户可以通过 ISPF 程序或者 JCL语句指定这这些参数。一般是创建数据集的时候指定这些参数,当引用数据集的时候,通过编目机制,用户只需提供数据集名即可定位数据集,而无需其它的参数。
在 z/OS 系统中,通常至少有一个编目。如果 z/OS 系统只有一个简单编目,那么这个 编目就是主编目(Master Catalog),并且所有数据集的入口位置都将在这里保存。但是,一个简单编目既不够高效,又不够灵活,所以一个典型的 z/OS 系统都会使用一个主编目和许多与之相连的用户编目(User Catalog),如图 5-3 所示:



用户编目用来存储用户数据集的名字和位置的。通常主编目只存储系统数据集的地址, 数据集 HLQ(这个概念在最后一节数据集的命名中会讲到)和用户编目的名字,而用户编目就包含所有以 HLQ 开头的数据集名,HLQ被称为别名。在图5-3中,主编目的数据集名是SYSTEM.MASTER.CATALOG。该主编目存储了数据集的全名和所有以SYS1开头的数据集的位置,如SYS.A1。主编目中定义了两个HLQ(别名)的入口, IBMUSER和USER。定义IBMUSER的声明包括用户编目的数据集名,这些用户编目包括所有具有完全权限的IBMUSER数据集和它们各自的位置。
当请求SYS.A1时,主编目向请求者返回位置信息、卷名(WRK001)和设备单元(3390)。
当请求IBMUSER.A1时,主编目重新向USERCAT.IBM递交请求,然后USERCAT.IBM向请求者返回数据集IBMUSER.A1的位置信息。
作为一般规则,z/OS中的所有数据集都是被编目的。一般来说,系统中很少需要没有编目的数据集,没有编目的数据集一般只用于与恢复问题或安装新软件相关的方面。通过ISPF创建的数据集都是自动编目的(估计是编到用户名下面吧)。
z/OS UNIX文件系统:
z/OS 系统的UNIX 系统服务(z/OS UNIX)允许 z/OS访问 UNIX 的文件,UNIX应用程序也 可以访问 z/OS 的数据集。用户可以使用分级文件系统(zFS)、z/OS 网络文件系统(z/OS NFS)、zSeries 文件系统和临时文件系统(TFS)。 z/OS UNIX 文件系统是分级的,并且是面向字节的。在文件系统中查找文件是通过查找目录来完成的(见图 5-4),z/OS 的目录并不是直接指向文件的。



一个路径名字可以确定一个文件,它包含目录名和一个文件名。一个有完全资格的文件名可以有1023个字节长,它通常是由每一个路径中的目录名加上这个文件本身组成的。分级文件系统允许文件名是混合的。路径名字是由独立的目录名和一个由“/”符分隔开的文件名组成,例如:/dir1/dir2/dir3/myfile
z/OS UNIX和UNIX有点相像,是对文件名和目录名敏感的。例如,在同样的目录下,文
件MYFILE和myfile是不同的。
分级文件系统中的文件是顺序文件,并且可以通过字节流来访问。除了应用程序定义的
结构之外,这些文件中并不存在记录的概念。
分级文件系统(HFS)的数据集包括垂直文件系统,它是一个z/OS数据集类型。
HFS数据集和z/OS数据集可以存放在同一个DASD卷上。
HFS文件系统和现有的z/OS文件系统的管理服务的综合提供了自动化的文件系统管理能力,但这也许不能在其他UNIX平台上使用。这种综合可以使文件所有者在整个文件系统的备份和存储等任务上花更少的时间。
z/OS 的数据集与文件系统中的文件
UNIX 系统和z/OS 开放系统的许多原理是相似的。例如,在文件系统中,一个用户编目的集合就与文件系统中的用户目录(directory)(/u/ibmuser)是相似的。
在 z/OS 系统中,用户给 z/OS 数据集分配的前缀指向了一个用户编目。用户拥有所有的名字以其用户前缀开头的数据集。例如,属于 TSO/E 用户 ID 为 IBMUSER 的数据集都是以IBMUSER 开头的。这些数据集名可以是 IBMUSER.C 和IBMUSER.C(PGMA)。
在 UNIX 文件系统中,IBMUSER 可以有一个指定的用户目录 /U/IBMUSER 。在该目录下,可以有个指定的子目录/u/ibmuser/c,u/ibmuser/c/pgma 将指向文件 pgma(如图 5-5 所示)。
在 z/OS 数据集的所有类型中,分区数据集(PDS)和文件系统中的用户目录相似。在诸如IBMUSER.C 的数据集中,可能有 PGMA,PGMB 等成员。例如,IBMUSER.C(PGMA)和
IBMUSER.C(PGMB)。一个诸如/u/ibmuser/c 的子目录可以存放许多文件,如 PGMA、PGMB 等。
   呵呵,这么大一篇文章,学完了很有收获,下一篇我们就可以高屋建瓴的进入ISPF中进行数据集的具体操作秀了哈。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: