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

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

Tru64 Unix AdvFS 系统盘的克隆、仿制及灾后复原的方法

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

领测软件测试网
一、 引言
  在Unix运行中,系统盘突然出故障或损坏,操作系统因偶然事件而崩溃,这种危险虽不常见,但却是可能的而且致命的。为了防患于未然,系统管理员应该未雨绸缪,要嘛按照一定的策略做好系统的备份,要嘛做一个备用的系统盘以对付急需。这个工作可以归结为如何从故障后恢复原先的操作系统盘(灾后复原),或如何仿制一个系统盘,如何克隆一个系统盘的问题。鉴于AdvFS是Tru64 Unix所特有的一种高级文件系统,有许多优点和特点,使用者渐多,而介绍文章却很少,本文拟以Tru64 Unix V4.0E和V5.1(或COSIX64 V5.1)AdvFS文件系统为例,详细介绍AdvFS 系统盘的克隆、复制和灾后复原的具体方法。为节省篇幅起见,本文只讨论高级文件系统(AdvFS)的情况,Unix文件系统(ufs)的情况比较简单,恕不赘述。

二、 如何克隆系统盘
  所谓系统盘克隆,实际上就是这样做系统盘备份:将系统盘原原本本地复制到一个类型完全相同、容量相同或者稍大一点的磁盘上。原盘和克隆盘不仅功能和所有配置完全一样,而且就连盘上的所有文件、数据的存放顺序都一样,因此,两者是可以相互替换的。
  目前国际流行的主要Unix 版本几乎都使用dd命令来做系统盘克隆。对传统文件系统(ufs)的低版本而言是有效的,但对高版本或者AdvFS来说就不灵了。因为设计dd命令主要是用来做数据拷贝,而不是为文件系统拷贝的。因此,Tru64 Unix 强调指出,用dd克隆系统盘不是推荐的做法。尽管如此,但笔者经过反复尝试,认为只要使用得当,还是能做的。下面就V4.0E和V5.1的Advfs系统盘的克隆分别介绍如下。
2.1 V4.0E
>>> sh dev 在控制台提示符>>>下查得系统盘的bootdev名为dka0:,克隆盘bootdev名为dka100:
>>> boot dka0 然后由root登录
# file /dev/rrz*c 或使用diskconfig命令查得dka0:设备名为rz0,dka100:设备名为rz1
# disklabel -z rz1
# dd if=/dev/rrz0c of=/dev/rrz1c conv=noerror,sync bs=100k 注意! 使用raw device
# shutdown -h now
将系统盘dka0:拆去,再将克隆盘的SCSI-ID 号改成dka0:的SCSI-ID号,用克隆盘引导系统。
>>> boot dka0 这时,克隆盘就跟原系统盘一模一样,两者可以相互替换,留一个作为备用。
如果你不想用原盘的SCSI-ID号,而想让两盘共存,那么,有两个办法实现:
办法一、在系统关机之后,不卸掉原系统盘,不改动SCSI-ID号,而用克隆盘来引导系统。
>>> boot dka100 由root登录
# cd /etc --------------(A)
# vi fstab 将rz0a改为rz1a, 将rz0g 改为rz1g , 将rz0b改为rz1b 
# cd /sbin
# rm swapdefault
# ln -s /dev/rz1b swapdefault 
# shutdown -h now ---------------(B)
卸去dka0:后用克隆盘引导系统
>>> boot dka100 以证实克隆盘可用;然后,再将系统盘连上,以便两盘共存。
办法二、卸去原系统盘dka0:,再将克隆盘的SCSI-ID改成原系统盘的号后用克隆盘引导系统,
>>>b dka0: 由root登录
接着执行(A)---(B)各步,然后将克隆盘的SCSI-ID恢复如初,再用克隆盘引导系统
>>>b dka100 证实克隆盘可用后,再连接上原系统盘,此后便有两个系统盘可用。 2.2 V5.1
>>> sh dev 查得原系统盘为dka0:,新盘为dka100:
>>> boot dka0
# file /dev/rdisk/dsk*c 查得系统盘设备名为dsk0,克隆盘为dsk1
# disklabel -z dsk1
# dd if=/dev/rdisk/dsk0c of=/dev/rdisk/dsk1c conv=noerror,sync bs=100k
# halt
>>> boot dka100 不要拆下原盘,但须用克隆盘引导系统,然后由root登录。
# cd /etc/fdmns
# mv root_domain old-root_domain 或者直接删除文件域root_domain
# mv usr_domain old-usr_domain 或者直接删除文件域usr_domain
# mkdir root_domain
# cd root_domain
# ln -s /dev/disk/dsk1a
# cd ..
# mkdir usr_domain
# cd usr_domain
# ln -s /dev/disk/1g
# cd /etc
# vi sysconfigtab 将swapdevice=/dev/disk/dsk0b改为swapdevice=/dev/disk/dsk1b
# halt 关机后卸去原系统盘dka0: 
>>> boot dka100 再用克隆盘引导系统,以便证实克隆盘可用。
值得注意的是,在V5.1下磁盘设备名/dev/disk/dskX是不能改变的,因此,没有必要将克隆盘的SCSI-ID号改成原盘的号来引导。

三、 如何仿制系统盘
  所谓仿制系统盘,就是为了备用起见,将完好的原系统盘复制在另一个盘上。与原盘相比,仿制盘的容量应相同或更大,类型不必一样,SCSI-ID(或者targ号)用户自定。此外,仿制与克隆不同,前者使用vdump和vrestore命令,后者用dd命令,而且,前者能使盘内数据存放更有条理,结果可靠,可推荐用于制作备用系统盘。
3.1 V4.0E系统
>>> sh dev 查看出原系统盘ST32155N的bootdev名为dka100,仿制盘ST32550N的bootdev名为dka0:。从原系统盘引导系统
>>>boot dka100 然后由root登录
# file /dev/rrz*c 或用命令# diskconfig查看设备名,仿制盘设备名为rz0,原系统盘为rz1
# disklabel -rw -t advfs rz0 ST32550N
# diskconfig 
按照rz1的分区大小来配置rz0;如果rz0有富余,则可另配一个分区。 
# mkfdmn /dev/rz0a root_domain0
# mkfdmn /dev/rz0g usr_domain0
# mkfset root_domain0 root
# mkfset usr_domain0 usr
# shutdown now 进入单用户方式
# mount -a 
# mount -t advfs usr_domain0#usr /mnt
# vdump -0vf - / | vrestore -xf - -D /mnt
# umount /mnt
# mount -t advfs root_domain#root /mnt
# vdump -0vf - / | vrestore -xf - -D /mn
#
# cd /mnt/etc/fdmns 在仿制盘中删除老盘的域和文件集
# cd root_domain
# rm rz1a
# cd ..
# rmdir root_domain
# cd usr_domai
# rm rz1g
# cd ..
# rmdir usr_domain
# rm .advfslock_root_domain 
# rm .advfslock_usr_domain
#
# mv usr_domain0 usr_domain 将仿制盘的域名和文件集正名
# mv root_domain0 root_domain
# mv .advfslock_usr_domain0 .advfslock_usr_domain 
# mv .advfslock_root_domain0 .advfslock_root_domain
# cd ..
# ed /mnt/etc/fstab 用行编辑来修改文件,用rz0b代替rz1b,使swap定位在rz0b

# cd /mnt/sbin 规定缺省对换区swapdefault
# rm swapdefault
# ln -s /dev/rz0b swapdefault 
# cd /
# umount /mnt
#
# cd /etc/fdmns 在老盘中删除仿制盘的域名和文件集
# cd root_domain0
# rm rz0a
# cd ..
# rmdir root_domain0
# cd usr_domain0
# rm rz0g
# cd ..
# rmdir usr_domain0 
# rm .advfslock_usr_domain0
# rm .advfslock_root_domain0
# cd /
# halt
>>> boot dka0 (仿制盘的bootdev为dka0)
V4.0E的Advfs系统盘的仿制宣告完成。

3.2 V5.1系统
>>> sh dev
从原系统盘dka100: 引导系统
>>> b dka100 用root登录
# file /dev/rdisk/dsk*c 或# diskconfig查看设备名,仿制盘设备名dsk3
# disklabel -z dsk3 
# disklabel -rw -t advfs dsk3 4265-1
# diskconfig 按照原盘dsk0的分区来配置dsk3 ;如果dsk3有富余,则可另配一个分区。
# mkfdmn /dev/disk/dsk3a root_domain3
# mkfdmn /dev/disk/dsk3g usr_domain3
# mkfdmn /dev/disk/dsk3h var_domain3
# shutdown now
# mount -a
# mount -t advfs var_domain3#var /mnt
# vdump -0vf - /var | vrestore -xf -D /mnt
# umount /mnt
# mount -t advfs usr_domain3#usr /mnt
# vdump -0vf - /usr | vrestore -xf -D /mnt 
# umount /mnt
# mount -t advfs root_domain3#root /mnt
# vdump -0vf - / | vrestore -xf -D /mnt 
# cd /mnt/etc/fdmns
# rm .advfslock_root_domain
# rm .advfslock_usr_domain
# rm .advfslock_var_domain
# cd root_domain
# ls -l
# rm dsk0a
# cd ..
# rmdir root_domain
# cd usr_domain
# ls -l
# rm dsk0g
# cd ..
# rmdir usr_domain
# cd var_domain
# ls -l 
# rm dsk0h
# cd ..
# rmdir var_domain
# mv .advfslock_root_domain3 .advfslock_root_domain
# mv .advfslock_usr_domain3 .advfslock_usr_domain
# mv .advfslock_var_domain3 .advfslock_var_domain
# mv root_domain3 root_domain
# mv usr_domain3 usr_domain
# mv var_domain3 var_domain
# cd /
# umount /mnt
# cd /etc/fdmns 在系统盘中删去仿制时产生的3个点文件和3个目录(在此例中就是带"3"字符的)
# rm .advfslock_root_domain3
# rm .advfslock_usr_domain3
# rm .advfslock_var_domain3
# cd root_domain3
# rm dsk3a
# cd ..
# rmdir root_domain3
# cd usr_domain3
# rm dsk3g
# cd ..
# rmdir usr_domain3
# cd var_domain3
# rm dsk3h
# cd ..
# rmdir var_domain3
# cd /
# halt ---------------(C)
>>> boot dka0 注意!此时请别卸去dka100: 
由root登录
# swapon -s
# swapon /dev/disk/dsk3b
# cd /etc
# vi sysconfigtab
将swapdevice=/dev/disk/dsk0b 改成 swapdevice=/dev/disk/dsk3b 
事实上,swapdevice的修改可以在halt(即(C) 处)之前用ed编辑器来编辑sysconfigtab文件,那样就可以直接卸去dka100:了。
# halt
卸去dka100: 然后
>>> boot dka0
到此为止,V5.1的Advfs系统盘的仿制就完成了。

四、 如何做系统盘的灾后复原
4.1 前期工作 
灾后复原有个前提条件,就是灾前要做好完整的系统备份,即全备份和增量备份。
i. 以超级用户登录,然后用命令
# shutdown now 转入单用户方式。
ii. # mount -a 用此命令裱附(mount)要备份的文件系统。
iii. 用如下格式命令完成全备份和增量备份:
vdump [-0..9]vf device fileset 例如
全备份:
vdump -0vf /dev/rmt0h / 或 vdump -0vf /dev/tape/tape0_d1 / 
vdump -0vf /dev/rmt0h /usr 或 vdump -0vf /dev/tape/tape0_d1 /usr 
vdump -0vf /dev/rmt0h /var 或 vdump -0vf /dev/tape/tape0_d1 /var 
增量备份:
vdump -9vf /dev/rmt0h /usr 或 vdump -9vf /dev/tape/tape0_d1 /usr
vdump -9vf /dev/rmt0h /var 或 vdump -9vf /dev/tape/tape0_d1 /var
注意!如果要使用同一盒磁带做备份就得加上不反绕字符n 。
iv. # Ctrl-D 返回到多用户方式。
4.2 灾后复原的过程
复原工作就是在原系统盘的位置(即SCSI-ID号不变)上进行。如果系统盘硬件损坏了,那就要在原来
的位置上更换一只硬盘,新磁盘容量必须等于或大于原盘;如果只是操作系统被破坏了,那么就用原盘。
>>>boot cdrom_device_name 
用发行介质光碟来引导系统,然后转入具有特权的单用户方式,即UNIX Shell 方式。
4.2.1 V4.0E系统
对于V4.0E版本而言,可直接进到UNIX Shell。
# disklabe -rw -t advfs rz1 (原盘为rz1,要换新盘,其SCSI-ID用原来的,设备名仍然为rz1)
# disklabel -e -r rz1(此时进入行编辑状态,必须根据原盘的大小来配置各个分区的大小)
# cd /dev
# ./MAKEDEV rz1 tz0
# mkfdmn /dev/rz1a root_domain 
# mkfdmn /dev/rz1g usr_domain 
# mkfset root_domain root
# mkfset usr_domain usr
# cd /
# mount -t advfs usr_domain#usr /mnt
# cd /mnt
# vrestore -xvf /dev/rmt0h 
# cd /
# umount /mnt
# mount -t advfs root_domain#root /mnt
# cd /mnt
# vrestore -xvf /dev/rmt0h 
# cd /
# umount /mnt
退出单用户方式,从新盘重新引导系统。
4.2.2 5.1系统
对于V5.1版本,从"欢迎安装"窗的"文件[F]"中选"Shell 窗口"。注意,此时还不是单用户方式。
# disklabel -rw -t advfs dsk2 (新盘设备名为dsk2)
# diskconfig 在Shell窗口中,用此命令在图形界面下配置各分区
此时,V5.1的系统必须从"文件[F]"选"退出",以便进到特权的单用户方式。
# cd /dev
# ./MAKEDEV dsk2 tape2 
# mkfdmn /dev/disk/dsk2a root_domain 
# mkfdmn /dev/disk/dsk2g usr_domain 
# mkfset root_domain root
# mkfset usr_domain usr
# cd /
# mount -t advfs usr_domain#usr /mnt
# cd /mnt
# vrestore -xvf /dev/tape/tape0_d1 
# cd /
# umount /mnt
# mount -t advfs root_domain#root /mnt
# cd /mnt
# vrestore -xvf /dev/tape/tape0_d1 
# cd /
# umount /mnt
退出单用户方式,从新盘重新引导系统。

 robert 回复于:2003-03-28 12:39:17
非常好.

 zllovezlm 回复于:2003-03-28 13:54:12
VERY GOOD

 zyg2008 回复于:2003-03-31 08:24:03
收到!

 digital_boy 回复于:2003-03-31 11:54:05
,感谢diuss,能贴系统管理方面的一些文档吗?

 我爱臭豆腐 回复于:2003-03-31 12:10:50
刚刚把你的帖子加为精华希望你能够有更多更好的帖子给大家发表谢谢:)

 lonelyp 回复于:2003-03-31 15:19:45
/多点了几下发送就发了好几铁,怎么不能删自己的贴阿

 lonelyp 回复于:2003-03-31 15:20:20
 同上,ft~

 lonelyp 回复于:2003-03-31 15:29:24
如果Tru64UNIX5.1a使用Compaq (HP) SAN Strage Network 作启动盘,而不是本地硬盘的话,这样恢复比较方便:

备份:用vdump 将 / ,/usr , /var 备份成root.dump usr.dump var.dump
可以放在本地硬盘(反正不用LocalHD,废物利用阿)

恢复:

1. Present新的VD ,
2. 在系统CONSOLE MODE下;
A:INIT(WWIDMGR 会占用所有的系统内存,所以要重新启动)
B:WWIDMGR –CLEAR ALL (清除EVA设备WWID)
C:WWIDMGR –SHOW WWID 
D:WWIDMGR –QUICKSET –UDID 1 (设定新的设备ID)
E:WWIDMGR –SHOW REACH (显示新的设备的可到达性)
F:SHOW B* (显示B开头的系统参数设定)
G:SET BOOTDEF_DEV dga0.1001.0.7.1,dga0.1002.0.7.1(设定默认启动方式)
H:INIT(重新INIT,使新的参数生效)

3. 放入TRU 64 5.1A 的启动光盘;
4. >>>B dqb0 (用光盘启动系统)
5. 等到系统出现图形安装界面,选择安装ENGLISH版
6. 从图形安装界面的FILE工具栏,选择SHELL WINDOWS,直接进行快速恢复安装;
7. HWMGR –SCAN SCSI (搜寻新的硬件设备)
8. HWMGR –VIEW DEV(显示新的硬件设备,例如:找到新的硬盘/DEV/DISK/DSK0C)
9. Disklabel –wr –t advfs /dev/rdisk/dsk0c (硬盘设成可读可写)
10. EDITOR=VI;export EDITOR (指定编辑器)
11. Disklabel –e /dev/rdisk/dsk0c (从新编辑硬盘分区)
12. Disklabel –r dsk0c (查看硬盘分区是否正确无误)

13.cd /etc/fdmns (改变路径;只有这个目录为可写)
13. Mkfdmn /dev/disk/dsk0a root_domain  (建立file domain)
14. Mkfdmn /dev/disk/dsk0g usr_domain
15. Mkfdmn /dev/disk/dsk0h var_domain
16. Mkfset root_domain root (建立file set)
17. Mkfset usr_domain usr
18. Mkfset var_domain var
19. Showfsets root_domain (验证建立的是否正确无误)
20. Mkdir tmp (建立临时tmp目录)
21. MOUNT root_domain#root /mnt
22. Mkdir back_domain
23. Cd back_domain
24. Ln –s /dev/disk/dsk2c (连接本地硬盘;上面有所有的系统恢复用的DUMP文件包)
25. Showfsets back_domain
26. Mount back_domain#back tmp (在cd /etc/fdmns目录下)
27. Cd /mnt
28. Vrestore –x –v –f  /etc/fdmns/tmp/root.dump(解DUMP文件包)
29. Umount /mnt
30. Mount usr_domain#usr /mnt
31. Cd /mnt
32. Vrestore –x –f /etc/fdmns/tmp/usr.dump
33. Umount /mnt
34. Mount var_domain#var /mnt
35. Cd /mnt
36. Vrestore –x –f /etc/fdmns/tmp/var.dump
37. Sync 
38. Shutdown –h now (重起机器)
>>>b dga0 (用光纤卡引导启动)
系统启动失败,出现一次死机;
>>>b dqa (用光盘引导启动)
再次进入shell windows
39. Hwmgr –view dev (找到新的硬盘号;例如dsk23c)
(PS. 如果找不到新的硬盘号,去看/etc/dfsc.dat,最新的那个硬盘就是)
40. Cd /etc/fdmns
41. Mkdir root_domain
42. Cd root*
43. Ln –s /dev/disk/dsk23a
44. Mount root_domain#root /mnt
45. Cd /mnt
46. Cd etc
47. EDITOR=vi;export EDITOR
48. Vi sysconfigtab
49. 用/vm查找到vm设定:如下
swapdevice=/dev/disk/dsk23b
50. Vi rc.config
51. 用/PAGEFILE查找到PAGEFILE;PARTITION的设定:如下
PAGEFILE="/dev/disk/dsk23b"
export PAGEFILE
PARTITION="dsk23b"
export PARTITION

1. cd fdmns
2. cd root_domain
3. rm *
4. ln –s /dev/disk/dsk23a
5. cd ../usr_domain
6. rm *
7. ln –s /dev/disk/dsk23g
8. cd ../var_domain
9. rm *
10. ln –s /dev/disk/dsk23h


Shutdown –h now  


===

PS.我用WORD打得这篇文章,该死的他把第一个字母都大写了,大家自己改改把……
;)

 netkey 回复于:2003-03-31 20:23:53
不错,好文章啊!

 skyshine 回复于:2003-04-03 10:54:15
有兴趣的朋友,请看附上的几句话。

 skyshine 回复于:2003-04-03 11:18:25
有兴趣的朋友,请看几句话。
1、 有兴趣的读者可以参考:
“2002年国际高新技术研讨会暨惠普机用户大会论文集”
中国计量出版社   统一数号:ISBN7-5026-1692-6/TP·80

不过,需要做一些勘误:
论文集第462页第2行应为:
# vi fstab  将rz0b改为rz1b
然后,接着增加如下行:
# cd fdmns/root_domain
# rm rz0a
# ln –s /dev/rz1a
# cd ../usr_domain
# rm rz0g
# ln –s /dev/rz1g
论文集第465页倒数第17行应去掉tape2,然后在下增加一行:
# /sbin/dn_setup –install_tape

附录:
因为高版本V5.1与 V4.0E兼容,故使用MAKEDEV tz2命令来建立带机设备特殊文件也是可行的,但必须注意其表述形式,如/dev/rmt0h等。
# cd /dev
# ./MAKEDEV dsk2 tz2 
# mkfdmn /dev/disk/dsk2a root_domain 
# mkfdmn /dev/disk/dsk2g usr_domain 
# mkfset root_domain root
# mkfset usr_domain usr
# cd /
# mount –t advfs usr_domain#usr /mnt
# cd /mnt
# vrestore –xvf /dev/rmt0h
# cd /
# umount /mnt
# mount –t advfs root_domain#root /mnt
# cd /mnt
# vrestore –xvf /dev/rmt0h
# cd /
# umount /mnt
# exit 

2、 此外,在今年的《惠普计算机应用》会刊第一期上我还有另一篇文章,是从另一个角度讨论Tru64 UNIX AdvFS 系统盘的克隆、仿制及灾后复原的问题的,可供参考。
文章题目是:  《UNIX Shell的一种新应用》。
可以用E-mail: CUAPRC@263.net 与编辑部联系。

 benbenbo 回复于:2003-05-26 23:09:03
好!但是克隆盘却不能引导,报无引导块,我错在那里? 如何对一个盘加引导标志(引导块?)

 hahaer 回复于:2003-05-26 23:18:21
disklabel -rw rz1(-w的参数没加吧?)

 lonelyp 回复于:2004-08-14 11:21:39
[quote:407f573f0e="benbenbo"]好!但是克隆盘却不能引导,报无引导块,我错在那里? 如何对一个盘加引导标志(引导块?)[/quote:407f573f0e]

disklabel -t advfs /dev/disk/dskxxx

 zwpb 回复于:2005-07-06 14:00:11
好,慢慢品味!

 laosun 回复于:2005-07-06 20:54:49
当我看到MAKEDEV  tape2 那句时,就知道楼主没有实际操练过.
100%没做过磁带的恢复.
真对不起,多嘴了.

 d-c-h 回复于:2005-07-06 22:56:42
请各位老大亲自做实验验证,看能否成功,我估计4.X版本问题不大,5.X系统可能有问题.另外,谁家的系统用单机,cluster的克隆和恢复才有意义.在cluster环境中,4.X系统简单,5.X系统我从来都没有做成功过,谁能给出个答案?

延伸阅读

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


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

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