- 论坛徽章:
- 0
|
一、 引言
在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
退出单用户方式,从新盘重新引导系统。 |
|