远程储存及其用途
在网络广为普及的今天,远程储存早已不是专家或高手才能使用的专利了。广义地说,电子邮件、网络硬盘、WEB页面、程序文件的下载和上传都是远程储存的典型例子。但由于工作性质和环境的不同,特别是管理方式不同,故本文所介绍的远程储存不是广义性的.它具有以下特定含义:
win2000系列的操作系统可以支持远程储存,本质是一种将远端的可利用磁盘空间扩充为本地磁盘空间的方法。具体说,用户总是将那些频繁访问的数据或文件放在本地计算机的一个卷或某个特定位置,目的是尽量减少数据文件的存取时间。在实现远程储存时,必须有操作系统的支持,以求得最高的工作效率。当然,这不是严格的技术性的论述,只是比较直观的表达。为了叙述上的方便,我们将操作系统中负责远程储存功能的部分,取一个专用的名称叫做:Remote Storage。
Remote Storage可以将那些符合条件的数据文件自动地拷贝到本地计算机的储存介质上并建立相应的卷来进行管理。然后,Remote Storage就时刻监视本地计算机(所建立卷)的可用的磁盘空间。如果本地的可用磁盘空间降低至运行所需要的下限,Remote Storage将会自动将卷中的文件移动到远端的磁盘上一些,腾出一些空间以满足本地计算机运行的需要。相反,如果本地计算机要访问的数据在远端,Remote Storage也负责将这些数据由远端传送到本地。上述的这一切,都被纳入操作系统的管理范围。
可以看出,实际应用中,这种双向的传送会消耗很多本地计算机的系统资源,降低本地计算机运行速度。为了减少这种消耗,网络的远端,有专门配套的服务器,专门负责储存系统的管理。这种服务器支持多种储存介质,例如:硬盘、磁带机等等,数据量很大而对速度要求不高的存取一般就使用磁带机,这样可以降低存储成本,如果要求速度较高,当然要使用硬盘设备。还可以对两种速度不同的介质划分级别,根据文件数据接受访问的级别或频率,先将磁带机上的数据暂时储存在硬盘上以利于提高速度;也可将硬盘上那些不急用的数据储存到磁带上以扩充硬盘的可用空间。不论采用哪一种,外界访问都可以先被服务器接受,然后由服务器查找到对应的内容。这很像我们在VCD上点播歌曲的情形。
广义的远程储存,不同功能都需要相应的服务程序,例如我们建立的个人主页,要用FTP上传后才能使用、收发电子邮件必须用Outlook之类的邮件程序等等。而Remote Storage则是win 2000系统中已经存在的功能,无须再用别的管理程序。
远程储存诊断程序(Rsdiag.exe)
对于建立在win2000系统的远程储存功能,也有一个基于命令行的诊断工具Rsdiag.exe。用这个工具,可以进行诊断查询,也有诸如取消某个作业之类的执行功能。其完整的语法如下:
rsdiag [/c jobname] [/d filetype fullpath&filename] [/e errorcode] [/i] [/j [jobname]] [/m] [/r [/f]] [/s] [/t] [/v [driveletter]] [/x queuedrecall] [/w fullpath&filename]
rsdiag是命令名称,这无须多说。其后面跟随很多参数,实现功能不同,所用的参数不同。参数以及含义分别介绍如下,这也是我们需主要掌握的部分:
/c jobname
用/C来取消指定的作业,jobname 是要取消的作业的名称。至于如何得到作业的名称,请参考下面相应的介绍。
/d filetype fullpath&filename
作用:将数据库诊断信息转换到一个文本文件中,远程储存服务器在管理数据文件的时候,采用了数据库技术。
filetype :指定输出到文本格式中的源文件的种类,必须是下面的某一个:
e 数据库引擎
f 文件系统代理数据库
a 文件系统代理集合
n 引擎集合
s 子系统集合
fullpath&filename :必须是文本文件的完整路径名称和完整的文件名称。
/e errorcode
显示错误代码, errorcode 可以采用十进制或十六进制的代码表示一个错误信息。
/i
显示文件的版本信息。
/j [jobname]
如果没有指定作业,则显示所有的作业信息,包括作业的名称。利用这一点,在想取消某个作业而不知道这个作业是否正在进行时,可以用这个参数进行查看。如果在参数之后指定作业名称,则显示这个作业的所有信息。[jobname]是作业名称。
/m
显示符合处理条件的卷。
/r [/f]
将远程服务器检索队列之内的位于当前检索队列内的信息显示出来,显示的信息有:列出每一个检索到的文件名称和逻辑顺序。如果用[/f]选项,还可以显示包含文件状态在内的检索结果的扩展信息,以及初始检索的值和文件在储存介质上的偏移量信息。
/s
显示关于储存介质的物理信息。
/t
再装入的(供检索的)轨迹文件,因为对所有的存取服务过程来说,都必须读取轨迹文件中的注册设置信息。
/v [driveletter]
这是一个外部参数,显示卷信息。
如果使用附加的参数 driveletter, 可以显示指定卷的扩展信息。
/x queuedrecall
在远程储存服务器的检索队列中,取消指定的检索作业,用/r开关,可以列出检索。
/w fullpath&filename
显示指定文件所在的储存介质的名称,这里指的是物理介质名称,必须在参数中提供文件的完整路径和详细的文件名称。
关于诊断中显示的管理数据库输出信息的含义
远程储存管理利用了数据库技术,这些信息被保存到一个文本文件中,这个文本文件相当于一个储存情况的快照。要显示这些信息,可以使用命令:rsdiag /d数据库输出含义如下:
Engine database(数据库引擎)数据库引擎包含三个表.分别是:
1.Segment Table(分段表):这个表中的信息是数据文件在次一级储存介质上的位置标志符,设分段表的目的是映射BAG表示符和数据片断在次级储存介质的详细位置。
2. Media Table(媒体介质表):这个表用来映射外部媒体介质的名称的标识符号,这个表需要用外部的媒体介质名称与个内部的标识关联,并用这些来管理媒体子系统。
3.BAG Information Table(BAG信息表):包含每一个BAG的全局信息
分段表
各个信息项目的含义如下:
项目简略名称项目完整名称作用描述BagId
BAG ID
BAG的ID标识号,具有唯一性StartLoc
BAG Segment Start Location
描述BAG段起始位置SegLen
Bag Segment Length
BAG段的长度LocType
Location Type
位置类型,用来表示文件数据在介质上的位置或在别处找到这些数据的索引信息PrimPos
Primary Location Position Specifier
表示指定的主储存位置,对于介质储存,指定的是储存位置。对于逻辑定向,这是BAG标识号。SecPos
Secondary Location Position Specifier
表示指定的次一级的储存位置。对于介质储存,指定的是储存位置。对于逻辑定向,这是BAG标识号。IDB SeqNum
数据库序列号。数据库最初附加的序号。
表中是各个字段的意义,下面给出一个实际的分段表各项的具体数值:
BagId = {b010419f-fb1b-11d1-a1ba-00a0c9190447}, StartLoc = 3072, SegLen = 52224, LocType = 0, PrimPos = {b0104199-fb1b-11d1-a1ba-00a0c9190447}, SecPos = 0 (IDB SeqNum = 1)
这里面的每一项都与上表中介绍的相对应。
媒体信息表
各个信息项目的含义如下:
项目简略名称项目完整名称作用描述Id
Media ID
储存媒体的ID标识,具有唯一性NtmsId
储存媒体的标识的句柄,是一个可移动储存媒体的管理标识号。StoragePoolId
Storage Pool ID
储存池标识的ID号,具有唯一性IDB SeqNum
数据库序列号。数据库最初附加的序号。
下面是媒体信息表实际内容的一个例子:
id = {b0104199-fb1b-11d1-a1ba-00a0c9190447}
ntmsId = {da96022d-fb19-11d1-a1ba-00a0c9190447}
StoragePoolId = {e5390a42-fb19-11d1-a1ba-00a0c9190447}
(IDB SeqNum = 1)
BAG信息表
各个信息项目的含义如下:
项目简略名称项目完整名称作用描述Type
记录的类型BagId
BAG ID
供图形式用户界面使用的ID号BirthDate
BAG Birthdate
BAG创建时的数据与时间Len
Original BAG Length
BAG建立时候的实际长度Type
BAG Type
普通情况下不用VolId
Volume ID
卷标识IDDeletedAmount
Deleted BAG amount
删除总量RemoteDataSet
Remote Data Set Number
远程数据设置序号IDB SeqNum
数据库序列号。数据库最初附加的序号。
下面是BAG信息表实际内容的一个例子:
Type = 2 BagId = {b010419f-fb1b-11d1-a1ba-00a0c9190447}, BirthDate = 06/03/1998 20:42:20, Len = 47051200, Type = 0, VolId = {9db6f302-fb1b-11d1-a1ba-00a0c9190447}, DeletedAmount = 0, RemoteDataSet = 1 (IDB SeqNum = 1)
文件代理系统所使用的数据库表:
这个表是文件转移之前的状态列表。
项目简略名称作用描述AccessTime
最后访问文件的时间BagID
ID,包含这个文件移动的数据标识BagOffset
文件位置偏移量FileId
用于标识文件的ID号Waiting for Close
一般不使用Offset
一般不使用Path
文件路径,这个信息可能是被压缩的形式Size
转移之前的数据总量RecallTime
最后尝试调用的时间File USN
该文件的更新次序号
下面是文件代理数据库表的一个例子:
AccessTime = 03/30/1998 20:52:46 BagId = {b01043e7-fb1b-11d1-a1ba-00a0c9190447}, BagOffset = 56320, FileId = 1000000 Waiting for close = FALSE, Offset = 0, Path = \dir0\test1.tst, Size = 1000000 RecallTime = 01/01/1601 00:00:00, File USN = 589408
关于作业项目信息的含义:
上面介绍过使用特定参数可以显示全部的系统作业名称,命令形式是:rsdiag /j jobname
所显示的信息有如下的格式,具体含义是:
项目简略名称作用描述Name
作业名称RunID
正在运行的作业的ID号IsActive
逻辑标志,正在运行的作业为true,否则为falseIsUsers
用户建立的作业为OK,自动建立的作业为falseDone
作业已经完成为OK,否则为falseDoneOK
如果作业已经完成且无错误条件为OK,否则为falseMaxSess
该数值总是1
作业项目显示的一个例子,这实际是执行rsdiag /j命令之后显示的结果:请注意,后两项的名称太长,对应的值只好下移一行。
Name RunId IsActive IsUsers Done DoneOk MaxSess
Manage 00000002 False False Ok Ok 0000001
RemoteStorageJob_H_ QuickUnmanage
00000001 False Ok Ok Ok 0000001
RemoteStorageJob_G_ CopyFiles
00000001 False Ok Ok Ok 0000001
一个作业是运行在一个或多个资源上的,对每个活动资源来说,执行一个作业需要一个或多个阶段,每阶段又可以执行多个动作,尽管多个阶段和多个动作可能被赋予一个有代表性的名称。例如:作业管理程序将扫描所有被管理的作业设备和转移之前的有效文件。当作业管理程序利用命令来执行转储时,对每一个资源都显示所发现的、相应的两个阶段和两个动作.第一个阶段是扫描的阶段,接着的动作也调用扫描。然后的阶段是数据传送阶段,同时取得数据传送之前的信息。
执行rsdiag /j jobname 命令,可以得到每个作业中包含的设备资源、阶段和动作信息。详情见下表:
项目简略名称作用描述Name
作业名称Identifier
这个作业唯一的标识号Hsm Identifier
远程储存服务器标识号Run Identifier
运行的作业标识号MaxSess
这个数值总是1Is User Defined
用户建立的作业为OK,自动建立的作业为falseIs Active
逻辑标志,正在运行的作业为true,否则为falseDid Finish
作业已经完成为OK,否则为falseDid Finish Ok
如果作业已经完成且无错误条件为OK,否则为false
下面是关于一个设备资源描述的项目解释:
项目简略名称作用描述Resource Name
运行作业时设备资源的名称 作业的当前态,有效的状态是:State
活动已经取消正在取消完成失败空闲已中止正在中止恢复跳过开始Starting Path
作业启动的路径Current Path
当前作业执行的路径Start Time
启动时间Stop Time
停止时间Sub-Run Id
子作业的运行标识
下面是一个阶段中每个状态的描述信息:
项目简略名称作用描述Phase Name
运行作业时阶段的名称,可用的有:
All – 包含阶段中所有可用的项目
Scan – 扫描阶段
File Update - RSFSA 更新文件
Data Transfer – 数据库引擎正在传送文件 作业的当前态,有效的状态是:State
活动已经取消正在取消完成失败空闲已中止正在中止恢复跳过开始Media State
以下是在执行作业时媒体可能的状态:空闲当前不可用装配就绪传送中传送完毕、结束Priority
作业的优先权Start Time
作业开始时间Stop Time
作业停止时间Elapsed Time
从作业开始到停止持续的时间Items
项目号Size
这个阶段的中所有动作完成的字节数Skipped Items
这个阶段需要跳过的项目号Skipped Size
这个阶段跳过的项目的总量
每个阶段中各个动作描述项目的信息:
项目简略名称作用描述Action Name
该阶段动作名称Items
动作项目号Size
本动作完成的数据总量Skipped Items
需要跳过的项目号Skipped Size
该工作中需要跳过的数据总量
资源显示的命令示例:
rsdiag可以用来显示资源状态的情况,但用途不同,使用的切换开关不同:
命令rsdiag/m,显示服务器所管理的卷;命令rsdiag /v显示所有的资源;命令rsdiag /v driveletter显示详细的资源。
对普通信息,例如设备的逻辑名称和自由空间的描述,包括一个或的多个规则和自动截取信息,规则由包含文件的相关信息组成。一个规则包含一些标准和这个动作内包含的文件描述信息。
这个表中列出的是对设备资源描述的项