VOB是什么?

2019-01-21 17:59

问题补充:
uatv5
uatv5 ·
0 0

VOB概述

  vob文件用来保存所有MPEG-2格式的音频和视频数据,这些数据不仅包含影片本身,而且还有供菜单和按钮用的画面以及多种字幕的子画面流。.ifo文件用于控制VOB文件的播放,在这个文件中可以找到如何控制.vob文件中数据播放的信息。由于.ifo文件对光盘能否正常播放至关重要,因此将所有的.ifo文件都保存了一份副本,即同名的.bup文件。在每个DVD光盘中都有视频管理器(VMG),它存放在VIDEO_TS.ifo文件中,保存了光盘的全局信息,如光盘可以在哪个地区播放等。同时,光盘还将用于显示菜单的数据保存在VIDEO_TS.vob文件中,当光盘插入到光驱中时播放器会首先显示这个菜单,大多数菜单可让观众指定场景、选择语言字幕等。

VOB 定义

  Rational ClearCase提供了一个开放的体系结构用来进行软件配置管理(Software Configuration Management,SCM)。ClearCase可以管理软件项目开发的过程中产生的源程序及各种文档的系统。从更广的意义上来说,任何一种项目的智力资产,只要可以被记录为数字形式都可以用ClearCase进行管理。

  ClearCase不仅提供了对这些智力资产存取的功能,而且记录了对这些资产每次修改的所有版本。ClearCase将中所有的版本存储在Versioned Object Base (VOB) 中。VOB中还保留了一些其它与项目和配置有关的信息,所以VOB可以看作是整个ClearCase SCM系统的中心数据库。

VOB结构

  正如前面所说,我们可以把VOB看作一个数据库系统。一个数据库系统的逻辑和物理的结构是截然不同的,比如一个关系型数据库,逻辑上可以看到的是:表,字段,视图,存储过程,用户,和权限等;物理上可能是一系列文件或磁盘分区。了解数据库的逻辑结构可以帮助我们更好的使用它,而了解数据库的物理结构是为了更好地对它进行管理。因为本文主要阐述的是管理方面的问题,下面我们将简单介绍一下ClearCase VOB的逻辑结构,然后着重描述它的物理结构。

  VOB中的数据主要有两种:简单数据(文件和目录及其各个版本)、复杂数据(分支、标签、事件记录、等等)。这些数据的结构和格式被VOB的Schema所决定。VOB的Schema是可以改变的。一个VOB增加了一定属性可以具有特殊用途,比如:管理VOB, 统一变更管理(Unified change management,UCM)VOB,和项目VOB(PVOB)。另外VOB提供的功能还与它的特性层次(Feature level)有关,某些功能的使用,要求改变VOB的特性层次。

  有关一个VOB的物理文件都是存储在一个目录(VOB Storage directory)中的。了解这个目录中的每个文件,有助于我们更好地管理VOB。我需要在这里着重指出一点就是:请勿用非ClearCase的工具对此目录或里面的文件进行任何操作,包括修改文件或目录的内容及其读写权限。这样做很可能会导致VOB无法访问。因为虽然它们看起来像普通的文件和目录,但是ClearCase赋予了它们很多附加属性,而一般的工具很难识别并保存这些属性。当然如果您不幸犯了这样的错误导致VOB无法访问,ClearCase提供的一系列工具仍然可以帮助您修复。这在本文的后部将有所介绍。

  当用操作系统的列目录命令(ls,dir等)查看VOB存储目录时,您将会看到以下内容:

  .pid 单行文本文件,记录了vob_server的进程号。

  admin 一个目录,包含VOB使用的磁盘空间 。

  vob_oid 单行文本文件,记录VOB的对象标识号,用UUID的方式表示。可以在ClearCase多复本(MultiSite)环境中用来表示一个VOB家族。一个VOB家族通常包含一个原始VOB和若干个它的克隆VOB。

  replica_uuid 单行文本文件,记录了该VOB复本UUID,用于区分在一个VOB家族中的不同复本VOB。

  .identity 一个目录,在UNIX系统中,记录了VOB的所有者和所有者组的信息,用于访问权限控制。

  identity.sd 一个二进制文件,在Windows系统中,记录了VOB存储目录用户的安全描述符。

  groups.sd 一个二进制文件,在Windows系统中,记录了VOB存储目录次要用户组的安全描述符。

  s 一个目录,用来存储文件或目录的所有版本。

  c 一个目录,暂时存储一个文件或目录的某个版本,用来作为s的缓冲池。这个缓冲区会经常进行刷新,在ClearCase中被叫做Scrub。在[CC Admin]中有专门的章节介绍Scrubbing操作。

  d 一个目录,用来存储派生对象。当您编译VOB中的源文件时所产生的目标文件在ClearCase中可以作为一个派生对象(Derived Object, DO)。共享这些DO就可以使不同视图使用相同的二进制目标文件,从而减少冗余,更加快了编译的速度。ClearCase中把一个DO的次产生叫做wink in。这个目录也会被系统定期Scrub。

  db 一个目录,包含VOB使用的一个内嵌数据库系统(Raima Database)。除了文件和目录版本实际拷贝以外的其他数据都存储在这个数据库中。当您进行了reformatvob命令之后,这个目录的旧版本将会以重命名的方式保留下来,以防万一。

  vob_server.conf 一个文本文件,用于配置vob_server启动时的一些信息。

  .hostname 一个文本文件,记录了VOB服务器的名字。

  .msadm_acls 记录ClearCase多复本环境中管理服务器的访问控制列表。

  在此还有必要介绍一下内嵌数据库(目录d)的物理结构:

  vob_db.dbd 一个编译好的数据库Schema,描述了数据库的结构。

  vob_db_schema_version 一个Schema版本文件,数据库用它来比对编译好的数据库Schema。

  vob_db.d0n, vobdb.k0n 数据库的内容。

  vista.* 数据库的控制文件和交易日志

  db_dumper 一个系统可执行db_dumper的备份。reformatvob将会调用此备份,如果系统目录下的版本不可用,以确保数据库导出的成功。

  vob_db.str_file 数据库字符串文件,用来存储长字符串。

  从以上的结构中可以看出,ClearCase是一个复杂而功能强大的系统。它包含了一个内嵌的数据库和若干个自制的存储池。它们之间的相互协作不仅可以提供简单的版本管理,更可以实现分布式开发,并行编译等其他系统不具备的功能。因此对VOB的任何操作必须是十分小心和有计划地进行。但是在具体应用中往往会发生一些人为和不可避免的错误,下面就这些问题进行一些探讨。所有列举的ClearCase的命令仅供参考。