内容


在不同网络环境中 ClearCase 的管理

Comments

1. 概述

Rational ClearCase作为一款出色的软件配制管理工具,越来越多的使用者,包括开发人员,软件配制管理员,甚至是项目经理,他们都希望深入了解有关ClearCase的配制与使用,从而能够通过ClearCase最大化地提高软件开发过程的效率和质量。此篇文章主要针对在不同网络环境下搭建与配制Rational ClearCase的操作进行了详细的讲解。我们知道在现实工作环境中ClearCase的使用很少是在单机上实现的,通常我们是在网络环境中部署ClearCase,使之发挥其最优的效用。我们这里所谓的网络环境分为两种,一种是指单一操作平台,即在工作网络中全部是Windows或Unix的平台,且ClearCase在相同操作系统间允许相互访问;另一种则是指混合操作平台,即网络中即有Windows平台,又有Unix平台,并且ClearCase允许跨不同操作系统访问。通过这片文章,读者可以了解在单一操作平台环境下与在混合操作平台环境下,ClearCase间是如何能够相互访问的。

在单一操作平台的网络环境中,对ClearCase的配制操作相对简单,因为它并不涉及到不同文件操作系统间一些规则的转换,例如文件的大小写规则,识别文件路径的规则等等。对于在操作系统不同的混合平台中配制ClearCase的操作,需要涉及到"互操作"这个概念,那么何谓互操作(Interoperability)呢?互操作就是在有混合操作平台的网络中,一种操作系统平台的ClearCase客户端可以访问另一种操作系统平台的VOB,用户通过对SAMBA的配置或使用CCFS机制使VOB中的数据共享,从而在Windows与UNIX之间可以对VOB相互访问。我们在后边的文章中会对互操作的配制过程有更详细的解释说明。

那么,谁将会对ClearCase在网络中的配制操作感兴趣呢?首先是企业中的ClearCase配制管理员,他们需要明确在网络环境中如何利用资源有效部署与配置ClearCase;其次是ClearCase管理员,他们需要对VOB进行定期的维护,通常他们通过ClearCase客户端访问某台VOB服务器上的VOB;最后,利用ClearCase开发的程序员也需要了解如何在远程VOB中工作,例如:如何在本地创建视图从而将远程的VOB装载到本地等等。

在这篇文章中,我们会首先了解在单一Windows网络环境中,利用Windows本身具备的SMB机制来进行ClearCase相互间访问的配置;其次,既然在Windows平台上ClearCase能够相互访问,那么我们会考虑到在UNIX平台利用本身操作系统带有的NFS机制使ClearCase间能够相互访问;这仅仅是初步了解了ClearCase在网络中的基本配置过程。接下来的章节中,我们会涉及到互操作的配置,由于VOB所创建的操作系统不同,我们会分别了解当VOB创建在Windows上时,应当如何在UNIX端配置并访问Windows上的VOB; 反之,当VOB创建在UNIX上时,应当如何在Windows端配置并访问UNIX上的VOB。在此篇文章中,为了方便起见,我们以Linux为例。

2. 从Widows平台访问Windows上VOB的操作

首先我们看一下在操作最一目了然的单一Windows平台环境下应该如何搭建和配置ClearCase?当前的网络环境构造是这样的:在网络中我们有一个ClearCase VOB server, 它安装在Windows平台上,同时它也作为注册服务器(Registry Server);一台License Server;还有多个ClearCase客户端,他们也都安装在Windows平台上。我们希望能够通过从一个Windows ClearCase的客户端访问在Windows ClearCase VOB服务器上的VOB。

首先,我们在任何一种网络环境中配置ClearCase时,非常关键的一步是要在ClearCase VOB服务器端和ClearCase客户端创建用户,并且保证创建的用户所属组的名称要相同。那么这里不免有人要问,为什么我要在VOB服务器端创建一个用户,他所属的组要跟客户端用户所属的组名称相同呢?这里关系到一个VOB owner和装载 VOB(mount)权限的问题。我们知道,我们需要在ClearCase VOB服务器上创建VOB,那么创建VOB的人即是VOB Owner,且VOB Owner属于一个组。我们同时需要在ClearCase客户端装载这个VOB,而只有VOB Owner和与VOB Owner同组的成员才有权限装载这个VOB。因此为了使ClearCase客户端能够装载(mount)ClearCase VOB服务器端的VOB,并能够访问其中的内容,我们必须保证ClearCase VOB服务器端与ClearCase客户端登陆的用户所属的组的名称一致。

还有一点值得一提的是,ClearCase在网络中是根据主机名来识别ClearCase VOB服务器并访问服务器上的VOB的,而不是IP地址,因此,ClearCase客户端需要能够解析VOB服务器的主机名,假若不能识别VOB服务器的主机名,那么,我们需要在客户端把VOB服务器端的IP地址和主机名写入域名解析配置文件hosts中。在Windows平台上,该配制文件在C:\WINDOWS\system32\drivers\etc目录下。最简单的一种检验是否能够访问一台机器的主机名的方法是通过用在命令行运行ping <主机名>命令来检测。

接下来,我们在ClearCase VOB 服务器上创建几个VOB: Start -> Run -> clearvobtool这时创建VOB的窗口显示出来,如图:

Fig1.1 创建VOB向导
Fig1.1 创建VOB向导
Fig1.1 创建VOB向导

我们键入VOB的名称和一些注释,可能大家已经注意到在图中创建VOB对话框上有两个副选框,一个是指明当前所建的VOB包含UCM组件(This VOB will contain UCM components),显然如果将这个副选框选中,我们所建的VOB将会是一个需要在UCM项目中创建的Component VOB(CVOB),该VOB会关联一个Project VOB(PVOB),并主要用来存储和管理VOB中的各个元素和元素版本等信息,例如文本文件等这样的元素;另一个副选框指明当前所建的VOB是个Project VOB(Create as a UCM project VOB),Project VOB(PVOB)又名为管理VOB(Administrative VOB),该管理VOB将会存储所有关于一个项目(project)中所有的UCM的组件,例如活动(Activity)等等。由于该文章不涉及UCM的任何操作,因此我们在创建VOB时不选种任何副选框,这表明我们将要创建的VOB是一个最基本的存储文档等基本元素的VOB。

在选择了将要创建的VOB的类型后,我们需要给这个VOB指定一个存储空间(Storage Location),如图。注意,这个存储空间必须是可以被网络访问得到的,即共享的一个存储路径。

Fig1.2 VOB的存储路径
Fig1.2 VOB的存储路径
Fig1.2 VOB的存储路径

最后一步我们不需要将此VOB关联任何的管理VOB(PVOB),因为它并不需要任何有关UCM流程的操作。你也许注意到有一个副选框标明是否将当前VOB变成公有VOB,即Public VOB,如图。因为VOB在最初创建时默认为私有的,即Private VOB,对于私有VOB只有该VOB的创建者和与VOB创建者属于同组的用户才能够对该VOB进行管理和操作。如果你希望当前所建的VOB变为公有的,那么需要输入一个该VOB所在的网络区域的管理密码,这个密码可以通过在Registry服务器上以管理员身份执行rgy_passwd来设定,这个密码将以加密的方式存储在Registry服务器上。当一个VOB为公有的时候,这个VOB可以被在Registry服务器上所有Region上工作的用户访问。点击"完成"后,VOB就创建成功了。我们可以在VOB server上创建多个VOB,若想查看VOB的状态,可以用命令行运行cleartool lsvob。

Fig1.3 完成创建VOB
Fig1.3 完成创建VOB
Fig1.3 完成创建VOB

此时我们在服务器端(ClearCase VOB server)的配制就告一段落了。以下是在ClearCase客户端的配制,客户端需要访问服务器端的VOB。

在客户端,我们希望能够访问在ClearCase VOB服务器端创建的VOB。首先,我们需要在客户端将Registry Server(注册服务器)指向ClearCase VOB服务器,如图。我们在前文已经提过,把当前ClearCase VOB服务器同时也设定为Registry Server,因此所有VOB和View的创建信息都注册在ClearCase 注册服务器上。注意,Registry Server可以跟ClearCase VOB Server是同一台机器,也可以不同,Registry Server的作用就是注册并记录当前创建的VOB和View的标示信息,即tag信息。指定Registry Server后,客户端的工作区域(Region)需要和VOB服务器端同步,使他们在同一Region内工作,如图,此时都为interop。注意,在指定Registry Server后,务必要在ClearCase属性面板中重新起动ALBD服务,如图。

Fig1.4 指向Registry Server并同步Region信息
Fig1.4 指向Registry Server并同步Region信息
Fig1.4 指向Registry Server并同步Region信息
Fig1.5 重新启动ClearCase服务
Fig1.5 重新启动ClearCase服务
Fig1.5 重新启动ClearCase服务

此时,我们运行以下几条命令,用来查看是否已经可以在客户端看到服务器端的VOB等相关信息
cleartool lsvob -> 显示在ClearCase VOB Server端创建的VOB。
cleartool lsregion -> 显示当前工作区域的名称,注意,这里显示的是已经在注册服务器上注册过的Region的信息。对于没有在Registry Server上注册过的Region,我们需要在Registry Server上运行cleartool mkregion来注册Region的信息。在后面的文章中,我们会有进一步的讲解。

在能够与ClearCase VOB服务器通信后,我们就可以在客户端装载(mount)服务器上的VOB并开始工作了。首先,我们需要在客户端创建自己的工作视图,即view。我们可以把view想象成一个放大镜,开发人员只有通过这个放大镜才能看到VOB内的相关信息,创建view的过程如图所示:

第一步:Start -> Run -> clearviewtool这时创建view的窗口显示出来,如图

Fig1.6 创建视图向导
Fig1.6 创建视图向导
Fig1.6 创建视图向导

第二步:选择需要创建的视图的类型,是创建动态还是静态视图,如图。这里说明一下动态视图与静态视图的区别。动态视图(Dynamic View)允许通过网络动态访问VOB中的元素,并且可以实时刷新VOB内元素的信息,即当元素被更改后,开发人员可以通过动态视图及时看到元素被更新后的状态。与之相反的静态视图(Snapshot View)是在脱机状态下利用本地主机的文件系统先对一系列元素进行编辑更改等操作,随后在网络环境中连接到VOB服务器端,开发人员再手动操作在服务器端的VOB中同步更新这些元素。

Fig1.7 选择创建视图的类型
Fig1.7 选择创建视图的类型
Fig1.7 选择创建视图的类型

第三步:为所创建视图起名并选择试图的存储区域,该区域需要被共享。若创建动态视图,需要指定一个连接该动态视图的动态硬盘。如图:

Fig1.8 选择视图的存储区域
Fig1.8 选择视图的存储区域
Fig1.8 选择视图的存储区域

第四步:完成视图的创建,并编辑Config Spec。简单而言,Config Spec起到一个过滤器的作用,它决定了通过View能够看到的VOB中不同版本的元素的信息,例如,当前所建的动态视图,我只想通过该视图能够看到VOB中所有版本号是2的元素,那么在Config Spec中可以这样写:

element * CHECKOUT element * /main/2
Fig1.9 查看视图的Config Spec
Fig1.9 查看视图的Config Spec
Fig1.9 查看视图的Config Spec

视图创建完了,下面,我们需要装载VOB,并通过该视图能够看到并能够操作VOB中的内容。打开ClearCase Explorer:Start -> Run -> clearexplorer,我们可以看到刚创建的View已经显示出来。在View图标上点右键 -> 选择Mount VOB...选项,就可以看到列表中列出的已经在ClearCase VOB服务器端创建好的VOB,选择欲装载的VOB,并点击"Mount",如图。

Fig1.10 装载VOB
Fig1.10 装载VOB
Fig1.10 装载VOB

注意,如果ClearCase VOB服务器端与ClearCase客户端所安装的ClearCase的版本不一致,那么就有可能导致在不同版本的ClearCase上所支持的VOB的Feature Level不同,此时在装载VOB时就会导致VOB不能正常使用。因此,我们必须要保证在ClearCase VOB服务器端与ClearCase客户端所安装的ClearCase软件的版本是一致的,欲查看VOB的Feature Level,运行Cleartool desc -long vob:<vob tag>,如图:

Fig 1.11 查看VOB的Feature Level
Fig 1.11 查看VOB的Feature Level
Fig 1.11 查看VOB的Feature Level

VOB装载完毕后,就可以对VOB中的不同元素进行操作和版本管理了。

3. 从UNIX平台访问UNIX上VOB的操作

我们已经学会了如何在单一Windows平台的环境下配置ClearCase,那么在单一UNIX平台环境下配置ClearCase就得心应手得多了。下面的文章中我们就详细讲解一下在UNIX平台上ClearCase间是如何配置使其能够相互访问的。当前的网络环境构造是这样的:在网络中我们有一个ClearCase VOB server, 它安装在Linux平台上,同时它也作为注册服务器(Registry Server);一台License Server;还有多个ClearCase客户端,他们也都安装在Linux平台上。我们希望通过从一个ClearCase的客户端来访问在ClearCase VOB服务器上的VOB。

首先,我们应该明确,若想使ClearCase 客户端能够访问ClearCase VOB服务器端的VOB,那么 ClearCase VOB服务器和客户端应当指向同一个注册服务器(Registry Server)。在Windows上,我们知道通过在控制面板中的ClearCase设置面板来更改Windows指向的注册服务器,在更改后重起一系列ClearCase服务。在Linux上,通过更改/var/adm/atria/rgy目录下的配置文件rgy_hosts.conf来指定注册服务器的地址,当然在指定后也需要重新启动ClearCase服务,在/usr/atria/etc目录下运行./clearcase stop,然后./clearcase start命令。注意,此工作只可由root用户来完成。

这时我们在客户端运行命令cleartool lsregion,我们发现只有ClearCase VOB服务器的Region显示出来,这是因为我们把ClearCase VOB服务器同时作为Registry Server,因此服务器上的Region信息已经记录在Registry Server上了,而ClearCase客户端的Region还未记录,因此,需要在Registry Server上创建ClearCase客户端的Region,我们用该命令来完成:cleartool mkregion -tag <client_region_name>。创建后,我们在Registry Server上再运行cleartool lsregion命令时,就可以同时看到ClearCase VOB服务器和ClearCase客户端的Region了。

接下来我们需要解决ClearCase的用户权限问题。例如,是否在客户端的用户可以有权限装载服务器端的VOB等。我们要确定VOB服务器端和客户端的用户所属的Primary Group的名称是相同的。最好的解决方案就是在ClearCase VOB服务器端和ClearCase客户端分别创建用户,并且创建的用户所属的组的名称也相同。关于如何在Linux上创建用户和组的操作并不属于此文章所讲的范畴内,在这里就不详细讲解了。

接下来我们就可以在VOB服务器端创建VOB了。我们通过cleartool mkvob命令创建VOB:$cleartool mkvob -nc -tag /home/ccinst/vob/vob1 /home/ccinst/vob/vob1.vbs

Fig2.1 在VOB服务器端创建VOB
Fig2.1 在VOB服务器端创建VOB
Fig2.1 在VOB服务器端创建VOB

我们在创建好VOB后,需要把VOB的存储路径共享出来,原因是为了将来客户端在装载VOB的时候需要访问服务器上的VOB存储路径。如果不将VOB存储路径共享,那么在ClearCase客户端就找不到在VOB服务器端创建的VOB的存储路径。这时我们需要通过在Linux VOB服务器端配置NFS的方法,将VOB的存储路径共享出来。在这里我们介绍两种配置NFS的方法,第一种是通过Linux的图形界面配置NFS,打开Application -> System Settings -> Server Settings -> NFS,添加一个NFS共享,配置过程如下图所示。其中Directory表示你希望将哪个目录共享出来,Host(s)表示你希望哪台主机上的用户可以访问该共享目录,并且有读写的权限。如果你希望任何一台主机都能够有权限访问该共享目录,那么,在Host(s)一项中可以添"*"。

Fig2.2 应用图形界面配置NFS
Fig2.2 应用图形界面配置NFS
Fig2.2 应用图形界面配置NFS

另一种方式配置NFS,是通过命令行的形式。编辑/etc/exports文件,在文件中加入一行: /home/ccinst/vob *(rw,no_root_squash,sync) "*"代表这个共享目录可以被任何主机访问,如果你只想让唯一一台主机端访问该共享目录的话,这行可以改写成:/home/ccinst/vob 9.181.64.211(rw,no_root_squash,sync),保存该文件,并运行exportfs -a命令来实现共享。

到此为止,在VOB服务器端的配置就基本完成了。我们已经把VOB存储路径共享出来,那么在ClearCase客户端需要mount该共享路径,使其上的用户可以直接访问该路径。我们用命令行的方式mount VOB的存储路径:mount -t nfs IP:/share_path /mount_point。在将VOB存储路径mount后,我们用showmount -e 命令来查看mount的共享路径的状态。若我们想在每次开机时使VOB存储路径都能自动装载的话,我们需要在/etc/fstab文件中加入一行:VOB_server_hostname:/share_path /mount_point nfs defaults 0 0。

我们试图运行cleartool lsvob,但是没有任何VOB信息列出在当前客户端的Region上,因此,我们需要在当前客户端所在的Region上创建VOB tag,注意,我们需要用-region参数指明ClearCase客户端的Region信息。在VOB tag创建后,我们就可以运行cleartool lsvob命令看到当前的VOB信息了。创建VOB tag的过程如图所示:

Fig2.3 在当前客户端所在Region上创建VOB tag
Fig2.3 在当前客户端所在Region上创建VOB tag
Fig2.3 在当前客户端所在Region上创建VOB tag

接下来,我们希望在客户端能装载VOB,首先根据VOB tag的路径创建一个VOB的装载点(mount point),然后即可装载该VOB,运行cleartool mount <vob_tag>命令装载VOB。

我们需要在客户端创建一个视图(view)来查看VOB中的内容,可以用cleartool mkview命令创建视图,如图。创建完视图只有在激活视图后才可以看到VOB中的内容。在创建完视图后用cleartool setview <view_tag>命令激活视图。这时,我们进入刚创建的VOB的装载点所在路径,我们可以看到装载点所在文件夹下生成一个叫lost+found的文件夹,这时,我们就可以对VOB中的不同元素进行操作和版本管理了。

Fig2.4 在当前客户端创建视图并激活
Fig2.4 在当前客户端创建视图并激活
Fig2.4 在当前客户端创建视图并激活

4. 从Windows平台访问UNIX上VOB的互操作

在前面的介绍中,我们了解了如何在单一网络环境中配置ClearCase的操作。但是在现实工作环境中,ClearCase的操作在很大程度上是通过跨平台来完成的,也就是说ClearCase VOB server和ClearCase Client有可能被分别安装在不同种类的操作系统上,这种交互式的操作也被称为互操作(Interop)。例如ClearCase VOB server可能被安装在UNIX系统上,而ClearCase的客户端的操作系统是Windows操作系统,这个时候使用ClearCase客户端的开发人员如何能够访问在UNIX上创建的VOB呢?下面,我们以Linux平台作为ClearCase VOB服务器和Windows平台作为ClearCase 客户端为例,来为大家解析互操作是如何实现的。当前的网络环境构造是这样的:在网络中我们有一个ClearCase VOB server, 它安装在Linux平台上,同时它也作为注册服务器(Registry Server);一台License Server;还有多个ClearCase客户端,他们都安装在Windows平台上。我们希望从一个Windows ClearCase的客户端来访问在Linux ClearCase VOB服务器上的VOB。

首先,我们需要在VOB服务器端和客户端分别安装ClearCase。注意在安装过程中务必将防火墙关闭。在Linux上以root身份安装ClearCase VOB服务器端;在Window上以有安装权限的域用户身份安装ClearCase客户端。毋庸质疑,在安装完毕后,我们最先需要解决ClearCase用户权限的问题。这里Windows ClearCase客户端用的域用户名为ccinst,且ccinst用户属于administrators组,在Linux VOB服务器端,创建一个用户和一个名为administrators的组,并把用户加入到Administrators这个组中。以新创建的用户登陆Linux VOB服务器并创建几个VOB,在Linux平台上创建VOB的过程我们在前面的文章中已经提及,在此就没有重述的必要了。

接下来,我们将Linux作为Registry Server,那么Windows客户端需要指向Registry Server,这样才可以看到在Registry Server上注册过的VOB的信息。与我们前面在单一网络环境中ClearCase的操作中讲过的一样,我们在Windows的控制面板中指定Registry Server并重新启动ALBD服务。这时在Windows客户端运行cleartool lsregion,可以看到Registry Server上存在的Region的信息。

也许你已经发现,如果像以前一样在ClearCase客户端运行cleartool lsvob,显示出的内容为空,那么为什么在Registry Server上已注册的VOB的信息不能显示呢?这是因为由于Linux和Windows操作系统不同,他们的Region需要进行同步后,才可以显示在当前region下,在Registry Server上注册过的VOB信息。下面我们需要同步Linux和Windows上的Regions。

点击:开始>所有程序>Rational Software>Rational ClearCase>Administration>Region Synchronizer,这时你需要选择在Linux上Region的名称,并选择"Save Configuration"副选框(由于Linux上当前只存在一个Region),这样以后就不用重复选择Linux上Region的名称了,如图。注意,此时我们可以从图片中看到,Windows的region是显示出来的,但是,我们通过运行cleartool lsregion发现,只有Linux的region是在Registry Server上注册过了,而Windows客户端所在的Region并未注册。因此我们需要把Windows的Region也要在Registry Server上注册才可以使在Windows和Linux上的Regions同步。我们在Registry Server上运行: cleartool mkregion -tag <Windows Region>,这时我们再从Windows客户端上运行cleartool lsregion时,就可以看到Windows和Linux的Region都已经在Registry Server上注册过了。

Fig4.1 Region Synchronizer
Fig4.1 Region Synchronizer
Fig4.1 Region Synchronizer

选择完Linux上的Region的名称后,通过在Import Type中点VOB Tags,可以看到在Registry Server上注册的VOB标识(tag)名称;通过选择"Show full storage directory paths"副选框,可以看到注册的VOB的全局路径(Global Path),如图。

Fig4.2 同步Windows和UNIX的Region,并显示VOB的全局路径
Fig4.2 同步Windows和UNIX的Region,并显示VOB的全局路径
Fig4.2 同步Windows和UNIX的Region,并显示VOB的全局路径

接下来需要在VOB服务器(Linux)上配制SAMBA,使VOB的全局路径共享,并可以被Windows访问。在Linux系统上配制SAMBA相对简单,主要分为三步:

第一步,开启SAMBA服务,默认情况下Linux的SAMBA服务是关闭的,注意要用root用户开启服务。
¥/etc/init.d/smb start
第二步,用图形界面配制SAMBA服务端。
Applications -> System Settings -> Server Settings -> Samba,出现SAMBA配制界面,选择Preference -> Samba Users添加Samba User,如图。

Fig4.3 添加Samba用户
Fig4.3 添加Samba用户
Fig4.3 添加Samba用户

第三步,添加Samba共享。
在SAMBA配制界面中选择添加一个SAMBA共享,选择需要共享的路径和共享名称,并指定该共享路径为可读且可写。在访问权限中指定刚才创建的SAMBA用户有访问该共享目录的权限,如图。此时我们可以通过从Windows一端网络访问刚创建的共享路径是否成功来判断SAMBA是否已经配制好。

Fig4.4 添加Samba共享
Fig4.4 添加Samba共享
Fig4.4 添加Samba共享

SAMBA配制好之后,我们就可以在Windows端装载VOB了。还是先打开Region Synchronizer,我们可以看到已注册过的在Linux VOB服务器端创建的VOB tag。选中需要引入(import)的VOB,例如vob1,点击"Import"出现创建VOB标签的对话框,此时的VOB标签是创建在Windows端的,在对话框中我们需要填写VOB标签名称,VOB所在的全局路径等,如图。在引入完毕后,引入的VOB名在Region Synchronizer中就消失了,这时我们可以关闭Region Synchronizer对话框。

Fig4.5 在Windows ClearCase客户端引入VOB
Fig4.5 在Windows ClearCase客户端引入VOB
Fig4.5 在Windows ClearCase客户端引入VOB

VOB已经被引入,这时我们可以在客户端装载VOB并利用VOB进行文件的版本管理了。在装载VOB前,同往常一样,我们要在客户端创建视图(view),步骤同在单一Windows网络环境中配制ClearCase视图的过程一样。创建好试图后,打开ClearCase浏览器,我们可以看到刚刚创建的视图,前面已经讲过如何装载VOB,此时同理。我们装载刚刚引进的VOB,进入VOB,我们希望在VOB中对文件进行管理,现在我们创建一个文本文件,此时出现异常,如图所示。此时正如我们在第二节中讲过的一样,由于Windows不能解吸Linux的机器名,因此我们需要更改host文件。在C:\WINDOWS\system32\drivers\etc\host目录下,将Linux机器的IP和机器名加入到host文件列表中即可。

Fig4.6 ClearCase操作异常
Fig4.6 ClearCase操作异常
Fig4.6 ClearCase操作异常

5. 从UNIX平台访问Windows上VOB的互操作

在了解了以上所讲的网络环境中ClearCase互操作的配制后,也许你会有这样的疑问,如果反过来,让Windows做ClearCase VOB服务器端,而Linux做客户端,那样该如何配制使Linux客户端访问Windows上创建的VOB呢?我们在以上章节中介绍的三种情况在现实生活中应用的比较多,接下来将要介绍的情况在现实中尽管应用得相对比较少,但还是有此种可能性的,下面就来介绍一下这种环境究竟应当如何实现。在配置此种环境时,有两个难点需要解决。其一,如何创建VOB tag,使在Windows上的VOB可以在Linux中显示出来;其二,如何装载VOB,使之可以正常使用。只要解决了以上两个问题,我们就可以很顺利的搭建起此种互操作的环境了。当前的网络环境构造是这样的:在网络中我们有一个ClearCase VOB server, 它安装在Windows平台上,同时它也作为注册服务器(Registry Server);一台License Server;还有多个ClearCase客户端,他们都安装在Linux平台上。我们希望从一个Linux ClearCase的客户端来访问在Windows ClearCase VOB服务器上的VOB。

首先,同前面所有的操作一样,我们将ClearCase VOB服务器和ClearCase客户端指向同一个注册服务器(Registry Server)。关于在Linux平台上指定Registry Server的操作我们在前面的文章中已经详细讲解过了。

接下来,我们需要在Windows VOB服务器上激活CCFS。CCFS的英文全称叫ClearCase File Service,它是ClearCase提供的一种文件传输机制。通过激活该服务,使我们在一种操作系统上创建的静态视图(snapshot view)或网络视图(web view)能够访问另一种操作系统上的VOB。通常情况下,在安装了ClearCase后,CCFS是默认被激活的。如图在ClearCase配置面板中激活CCFS。同时我们也需要在面板中选择VOB服务器所在的域,如图。我们通过域来匹配在Linux上的用户和组的名称。

Fig5.1 激活CCFS服务并选择Windows所属域
Fig5.1 激活CCFS服务并选择Windows所属域
Fig5.1 激活CCFS服务并选择Windows所属域

在注册服务器上,我们需要分别明确指定Windows VOB服务器和peer Linux客户端的Regions。由于我们的注册服务器与VOB服务器同在Windows上,如果在注册服务器上未显示Linux的Region时,我们需要用cleartool mkregion命令在注册服务器上创建跟Linux上Region同名的Region。

Fig5.2 指明Peer Linux客户端的Region
Fig5.2 指明Peer Linux客户端的Region
Fig5.2 指明Peer Linux客户端的Region

接下来的一步在互操作中非常关键,就是要解决VOB服务器端和客户端用户权限一致的问题,也就是说,在服务器端创建VOB的用户以及它所属组的名称和在客户端要装载该VOB的用户以及它所属组的名称信息要一致。如何在Windows及Linux创建用户和组的过程在该文档中并不做介绍,但在这里我们介绍一种验证方法来检查是否在Windows上和Linux上创建的用户和组的信息是匹配的。我们用credmap命令来检验。首先从Windows服务器端的C:\Program Files\Rational\ClearCase\etc\utils目录下运行credmap <linux_host>命令,输出如下图。

Fig5.3 用credmap命令在Windows VOB服务器端查看用户和组的信息
Fig5.3 用credmap命令在Windows VOB服务器端查看用户和组的信息
Fig5.3 用credmap命令在Windows VOB服务器端查看用户和组的信息

在Windows上运行完后,我们再在Linux上运行credmap <vob server>这个命令。通过运行结果查看是否在Windows上和在Linux上的用户和所属组的信息是匹配的。如果最后的GROUP返回值是-2或NOBODY,那么表示匹配是不成功的。

在前期环境配置工作准备好后,我们需要在Windows VOB服务器端创建几个VOB,创建VOB的具体过程就不在这里敖述了,前面都已有所介绍。关键的一步是在创建完VOB后,我们需要在Linux Region上创建VOB tag。我们必须在Windows VOB服务器上创建VOB tag,并同过-region参数存储该VOB tag在Linux Region上。并且这个VOB tag的名称必须是Linux可以解析的,也就是以"/"开头,最后很重要的是,我们在创建VOB tag的过程中要用-ngpath这个参数,而不是-gpath,值得注意的是-ngpath这个参数后边跟的路径是一个本地路径。这也就是为什么我们在一开始要激活CCFS的原因。创建的过程如图所示:

Fig5.4 在Windows VOB服务器上创建VOB tag
Fig5.4 在Windows VOB服务器上创建VOB tag
Fig5.4 在Windows VOB服务器上创建VOB tag

在Linux Region中创建好VOB tag后,我们可以在Linux上通过cleartool lsvob命令看到该VOB tag和该VOB的存储路径。若想使用此VOB,我们需要在Linux客户端创建视图(view)并装载该VOB。在创建视图的时候要注意,我们只能创建静态试图(snapshot view),因为当从Linux ClearCase客户端访问Windows ClearCase VOB服务器上的VOB时,只支持通过静态视图的形式访问,并且必须通过指定-tmode参数使用strip_cr的文本模式。任何一个视图都有一个互操作文本模式,这个模式是通过在创建视图的时候指定-tmode参数来改变的,这个参数决定了在一个视图中文本文件所使用路径的规则,例如在Windows中,我们用"\"指定文件的路径,而在Linux中,我们用"/"来指定文件所在路径。具体创建视图的过程如下图所示:

Fig5.5 创建Linux客户端静态视图
Fig5.5 创建Linux客户端静态视图
Fig5.5 创建Linux客户端静态视图

试图创建完毕后,我们就可以装载VOB了。在装载过程中,由于我们使用了静态视图,因此要通过更改视图的config spec中的规则(rule)来装载VOB。我们先进入创建的试图所在的路径,然后通过cleartool edcs命令来更改config spec中的规则。运行完cleartool edcs后,我们编辑config spec文件如下例所示:
element * CHECKEDOUT
element * /main/LATEST
load /unixvob
编辑完文件保存,我们可以看到以下运行结果,如图:

Fig5.6 编写静态视图的Config Spec并装载VOB
Fig5.6 编写静态视图的Config Spec并装载VOB
Fig5.6 编写静态视图的Config Spec并装载VOB

这时,我们再查看当前目录就可以看到VOB已经被装载上了,同时在当前目录下还有一个叫update的日志文件,我们进入VOB,就可以正常在VOB中操作文件了。

6. 小结

我们在本文中讲解了四种不同类型的在网络环境中配置ClearCase的方法。其中包括了在单一操作系统平台上,即全部是Windows或Linux平台的环境下,ClearCase客户端访问ClearCase VOB服务器端的情况;还包括了在混合操作系统平台的环境中,从Windows ClearCase客户端访问Linux VOB服务器上的VOB和从Linux ClearCase客户端访问Windows VOB服务器上的VOB的这两种互操作的情况。

在这四种类型的配置操作中,有共性的地方,也有不同的地方。共性之处其一就是ClearCase客户端与VOB服务器端用户权限的问题,要保证在VOB服务器端创建VOB的用户所属组的名称与在ClearCase客户端装载VOB的用户所属组的名称相同。其二,ClearCase VOB服务器端与ClearCase客户端需要指向同一台Registry Server。其三,VOB服务器上VOB的存储路径必须共享出来,不论是用NFS、CCFS、还是SMB中的哪一种方式共享。并且必须保证ClearCase客户端能够通过主机名访问到该VOB的存储路径。当然在配置四种环境中,不同之处比较多,其中比较特殊的是通过Linux ClearCase客户端访问Windows上的VOB时,必须通过CCFS创建静态视图来访问VOB。

通过本文的学习,我们已经掌握了在任何一种网络环境中搭建ClearCase,这也为进一步学习应用ClearCase打下了坚实的基础。

7. 参考

8. 致谢

在这里我想衷心的感谢我的Manager付鲁平和我的Team Leader姜静波,我相信如果没有他们的鼓励,我不会顺利完成此篇文章。还有要感谢所有和我一起工作的Rational组的同事,特别是施慧斌,商慧波,史新丽,和曾经在IBM共事过的郑如彬,他们在ClearCase相关技术方面提供了鼎力支持并一同讨论分析所遇到的难题。另外还有要感谢在IBM做Linux Support的工程师李建文,他提供了有关Linux系统的支持。当然还有我深爱的父母和男友,他们给了我精神上莫大的支持。最后,由于在写作过程中还参考了大量红皮书,IBM文档和IBM developerWorks上的相关文章,在此也向所有文章的作者表示衷心的感谢。

9. 附加说明

免责声明
在本站点发表的话题仅代表本人观点,并非代表 IBM 的立场、策略和观点。本文档所介绍的信息仅仅限于本文的环境。本文档不提供任何类型的包括显式或隐含的担保,不对任何(但不限于)收入或利润的损失或其它间接的、特殊的、偶然的、必然的损失负责,使用者将自行承担由于使用本文档所造成的各类经济损失和法律责任。相关技术细节,请咨询IBM公司、操作系统服务提供商,或者直接质询作者。


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Rational
ArticleID=161944
ArticleTitle=在不同网络环境中 ClearCase 的管理
publish-date=12192005