• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

转贴:UNIX Shell 的一种新应用

发布: 2007-6-08 22:43 | 作者: seanhe | 来源: | 查看: 23次 | 进入软件测试论坛讨论

领测软件测试网
在对操作系统进行管理时,有时候当前系统本身就是操作对象。这种在运行系统中管理自己的行为是一种动态操作,似有摆脱不了操作对象干系之嫌,于是乎,人们要求一个独立的系统环境。 

UNIX Shell的情况与上述相反。对于Tu64 UNIX而言,以发行介质光碟引导出的安装环境,可以提供UNIX Shell(或Shell 窗口)、Installation Shell。它是一个独立的UNIX系统环境,能在安装环境中很好的完成有关系统盘的管理任务,以及普通系统所能做的大部分工作。使用UNIX Shell时,操作对象处于静止状态,因此,这种操作是一种与被管理对象(操作系统)无关的独立系统操作。 

笔者认为UNIX Shell是为系统安装管理而设,又有天生的独立性,用它来做系统盘的克隆、仿制及系统的全备份非常合适※。为了增强直观性,避免冗长的文字叙述,我们下面列举真实AdvFS例子来讨论一下UNIX Shell的这种新应用。至于ufs, UNIX Shell的这些应用同样适用,而且其操作比AdvFS更简单容易。如果读者对ufs系统盘的克隆、仿制及系统的全备份感兴趣的话,无论你熟悉不熟悉AdvFS,阅读本文都能从中悟出所需原理。 

1. 克隆(Clone) 

必须准备一个与原系统盘型号完全相同的磁盘。 

1.1 Digital UNIX V4.0E的实例 

假定,原系统盘的控制台方式设备名为dkb100:,新盘为dkb200:,发行介质光碟为dka400:。 

制作克隆盘有两种方式,一为制作备份式系统盘,另一为制作并存式系统盘。 

1.1.1 制作备份式系统盘 

首先谈谈备份式系统盘的制作,其过程与在普通环境下的制作相似,很简单:准备一个型号规格与原先的系统盘完全一样的磁盘,再执行带适当选项的dd命令,就完成了。>>>boot dka400 从发行介质光碟引导系统, 

点击“UNIX Shell”,出现shell窗口。 

# file /dev/rrz*c 假定,原系统盘为rz9,新盘为rz10
# disklabel -z 
# dd if=/dev/rrz9c of=/dev/rrz10c conv=noerror,sync bs=100k 

命令执行完毕之后,取下新系统盘备用。当原系统盘出现故障时,取下故障盘,插入备用盘即可。以上是制作备份式系统盘的过程。 

1.1.2 制作并存式系统盘 

如果想制作并存式系统盘的话,应以备份式系统盘为基础,将此盘置于原系统盘的位置,然后用此盘引导系统,由超级账户进入系统去修改系统文件fstab,然后删除、建立相应的符号链接,再改正swap 的指向。 

# vi /etc/fstab
将/dev/rz9b改为/dev/rz10b
# cd fdmns/root_domain
# ls -l
# rm rz9a
# ln -s /dev/rz10a
# cd ..
# cd usr_domain
# ls -l
# rm rz9g
# ln -s /dev/rz10g
# cd /sbin
# rm swapdefault
# ln -s /dev/rz10b swapdefault
# shutdown -h now ·
·
·


>>>boot dkb200 将克隆盘重新置回克隆时的位置,从克隆盘引导系统,以此证实新盘可用。 

1. 2 Tru64 UNIX V5.1的实例 

在V5.1下磁盘一旦被操作系统识别认可,其设备名就是唯一的而且不可改变的(这里顺便说一句,V5.1系统安装之后,系统盘的SCSI-ID是可以随意改变的,不影响其引导),所以V5.1的AdvFS系统盘克隆只能做到并存方式。 

>>>show dev 假定,原系统盘的控制台方式设备名为dkb100:,而新盘为dkb200:,发行介质光碟为dka400:, 

>>>boot dkb400 用光碟引导系统, 

欢迎安装(主机信息)文件Shell 窗口# 

#file /dev/rdisk/dsk*c 假定,原系统盘的设备名为dsk0,新盘的为dsk1,
# disklabel -z dsk1
# dd if=/dev/rdisk/dsk0c of=/dev/rdisk/dsk1c conv=noerror,sync bs=100k
# cd /etc/fdmns
# mkdir root_domain usr_domain
# cd root_domain
# ls -l
# ln -s /dev/disk/dsk1a
# cd ../usr_domain
# ln -s /dev/disk/dsk1g
# cd
# mount -t advfs root_domain#root /mnt
# cd /mnt/etc/fdmns/root_domain
# ls -l (应该显示dsk0a/dev/disk/dsk0a)
# rm dsk0a
# ln -s /dev/disk/dsk1a
# cd ../usr_domain
# ls -l
# rm dsk0g
# ln -s /dev/disk/dsk1g
# cd ../..
# vi sysconfigtab 将其中swapdevice=/dev/disk/dsk0b改为swapdevice=/dev/disk/dsk1b
# umount /mnt
# exit
主机信息文件退出#
# halt


>>>boot dkb200 使用新制作的克隆盘引导系统。 

2. 仿制(duplicate) 

首先要准备一个磁盘,其容量要等于或大于原系统盘。仿制系统盘,主要做如下几件事:
(1) 按照原先系统盘的大小配置一个新盘;
(2) 为新系统创建域和文件集;
(3) 为原系统创建目录并在该目录中建立符号链接;
(4) 利用命令vdum,vrestore和管道完成文件集的复制;
(5) 修改仿制系统中的符号链;
(6) 修改仿制系统中的fstab文件,并更改对换区(swap)的指向


2.1 Digital UNIX V4.0E的实例 

>>>show device 

>>>boot dka500 

"Installation Setup""Install Type"中"Custom"“Partition Disks...” 

按照原系统盘的各个分区大小配置新盘,配置新盘时应将多余磁盘空间配置成一个或多个分区留作他用(操作务必小心谨慎,万万不可对原系统盘进行配置操作!!)"UNIX Shell..." 

# mkfdmn /dev/rz12a root_domain1
# mkfdmn /dev/rz12g usr_domain1
# mkfset root_domain1 root
# mkfset usr_domain1 usr
# cd /etc/fdmns
# ls
# mkdir root_domain0 usr_domain0
# cd root_domain0
# ln -s /dev/rz10a
# cd ../usr_domain0
# ln -s /dev/rz10g
# mount -t advfs usr_domain0#usr /home
# mount -t advfs usr_domain1#usr /mnt
# vdump -0vf - /home | vrestore -xf - -D /mnt
# umount /home /mnt
# mount -t advfs root_domain0#root /home
# mount -t advfs root_domain1#root /mnt
# vdump -0vf - /home | vrestore -xf - -D /mnt
# umount /home
# cd /mnt/etc
# ed fstab 将文件中的rz10b改为rz12b
# cd /mnt/etc/fdmns
# cd root_domain
# rm rz0a
# ln -s /dev/rz12a
# cd ../usr_domain
# rm rz10g
# ln -s /dev/rz12g
# cd /mnt/sbin
# rm swapdefault
# ln -s /dev/rz12b swapdefault
# umount /mnt
# exit · · · 

>>>boot dkb400 从仿制盘引导系统。 

顺便提一下,剩余磁盘分区rz12h,可以按需要做成AdvFS或UFS。 

2.2 Tru64 UNIX V5.1的实例 

>>>show device 原系统盘dkb200: RZ1CF-CF;新盘dkb400: RZ2ED-LS。 

>>>boot dka400 由光碟引导系统欢迎安装文件Shell窗口# 

# file /dev/disk/dsk*c 

显示原系统盘RZ1CF-CF的设备名为dsk0,新盘RZ2ED-LS的设备名为dsk1 

# diskconfig 

按照原先系统盘各个分区的大小来配置新盘,多余的磁盘空间分配给一分区留作他用。 # mkfdmn /dev/disk/dsk1a root_domain1
# mkfdmn /dev/disk/dsk1g usr_domain1
# mkfset root_domain1 root
# mkfset usr_domain1 usr
# mkfset usr_domai1 var
# cd /etc/fdmns
# mkdir root_domain0 usr_domain0
# cd root_domain0
# ln -s /dev/disk/dsk0a
# cd ../usr_domain0
# ln -s /dev/disk/dsk0g
# mount -t advfs usr_domain0#usr /home
# mount -t advfs usr_domain1#usr /mnt
# vdump -0vf - /home | vrestore -xf - -D /mnt
# umount /home /mnt
# mount -t advfs usr_domain0#var /home
# mount -t advfs usr_domain1#var /mnt
# vdump -0vf - /home | vrestore -xf - -D /mnt
# umount /home /mnt
# mount -t advfs root_domain0#root /home
# mount -t advfs root_domain1#root /mnt
# vdump -0vf - /home | vrestore -xf - -D /mnt
# umount /home
# cd /mnt/etc/fdmns
# ls
# cd root_domain
# ls -l
# rm dsk0a
# ln -s /dev/disk/dsk1a
# cd ../usr_domain
# ls
# rm dsk0g
# ln -s /dev/disk/dsk1g
# cd ../..
# vi sysconfigtab
将swapdevice=/dev/disk/dsk0b 改为 swapdevice=/dev/disk/dsk1b
# cd
# umount /mnt
# exit “文件”“退出”##
# halt · · · 

>>>boot dkb400 

3. 全备份(full backup) 

众所周知,V4.0E和V5.1,它们的复原工作都是在UNIX Shell下完成的,但灾前备份的全备份却是在普通系统的单用户方式下做的。详情请参阅有关资料(如,“Installation Guide-Advanced Topics”的第三章“The UNIX Shell")。 

下面我们讨论一下用UNIX Shell做灾前备份的问题。这里最主要的一点就是要知道如何将系统盘的各个文件集裱附(mount)到一个临时的裱附点上;至于其它操作,那都是常规工作,不必详述。 

Digital UNIX V4.0E与Tru64 UNIX V5.1的情况相似,主要差别在创建设备特殊文件的命令不同,设备特殊文件名亦不同,为节省篇幅起见,下面只列出V5.1的例子。 

>>>set bootdef_dev “” 

>>>boot dka400 

欢迎安装文件Shell窗口# 

# hwmgr -view device
# /sbin/dn_setup -install_tape
# cd /etc/fdmns
# mkdir root_domain0 usr_domain0
# cd root_domain0
# ln -s /dev/disk/dsk2a
# cd ../usr_domain0
# ln -s /dev/disk/dsk2g
# mount -t advfs root_domain0#root /mnt
# vdump -0vf /dev/ntape/tape0_d1 /mnt
# umount /mnt
# mount -t advfs usr_domain0#usr /mnt
# vdump -0vf /dev/ntape/tape0_d1 /mnt
# umount /mnt
# mount -t advfs usr_domain0#var /mnt
# vdump -0vf /dev/ntape/tape0_d1 /mnt
# umount /mnt


4 结束语 

由于UNIX Shell 是独立系统,操作对象处于静止状态,克隆、仿制皆与操作对象没有干系,因此,操作简洁方便,可靠。 

我们在前面只讨论AdvFS系统盘的实例,是因为它比较特别;其实,UNIX Shell对AdvFS和ufs都一样适用,ufs系统盘的克隆、仿制等工作都可以在UNIX Shell下完成,感兴趣的读者不妨一试。 

UNIX Shell是为系统管理员提供的一种工具,在有了一定UNIX系统管理经验之后就可以应用;但是应该特别强调,在克隆、仿制等操作中必须头脑清醒、小心谨慎,否则,会造成灾难性后果。

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网