论文部分内容阅读
摘 要:UNIX系统被广泛地用于政府、银行、企事业单位等各种重要应用系统的建设。这些系统的机器配置,很多都采用一主一备方式,并且从硬件、软件上都要求主备机保持高度一致,使之具有全部或局部的可置换性。本文提出了多种备用机构建方法,包括GHOST对拷,UNIX下dd命令对拷,以及特殊情况下硬件不一致时的文件目录对拷方法。既解决了旧系统因使用年限较长可能产生的安装资料缺失问题,同时又能大大缩短装机时间,具有很好的参考价值。
关键词:UNIX;主备机对拷;系统备份
中图分类号:TP316.81
UNIX被广泛地用于政府、银行、企事业单位等各种重要应用系统的建设。这些系统的机器配置,很多采用一主一备方式,即一台生产机一台备用机,并且从硬件、软件上都要求主备机保持高度一致,使之具有全部或局部的可置换性。在实际工作中,常常因为新系统建设或在用系统崩溃而需要构建备用机,尤其是当主备机协同工作很长时间以后,安装软件或资料可能已经缺失,采用常规的安装方法很难实现,而如果采用硬盘对拷方式,既解决了上述问题,同时又能将枯燥漫长的装机过程大大缩短。
有两种比较常用的对拷方法,一种是在windows环境下,采用GHOST工具进行对拷;一种是在UNIX环境下,采用dd命令进行硬盘设备文件对拷,下面笔者一一进行介绍。
1 采用GHOST方式实现对拷
GHOST是美国赛门铁克公司旗下的一款非常出色的硬盘备份还原工具,又称之为克隆软件,支持将分区或硬盘备份到一个扩展名为.gho的镜像文件里,或者直接备份到另一个分区或硬盘里,同时支持相应的系统还原。对于UNIX系统硬盘而言,可先将源盘做成镜像,然后将镜像文件恢复到目标硬盘(Image to Disk),也可以采用硬盘对硬盘(disk to disk)的方式进行对拷。
具体方法在很多文章里已有介绍,这里不赘述。但笔者不推荐这种方式,一是因为GHOST名为克隆,但实际上在拷贝时对于主引导扇区和分区表的写入并不完全忠实于原盘,这样可能会造成一些应用程序或整个系统不能正常使用。二是由于采用了第三方软件,需要提防病毒(尤其是主引导区病毒比较多),一旦感染病毒可能会造成灾难性后果。三是GHOST对分区内容是傻瓜型的对拷,灵活性差。
2 采用UNIX系统下的dd命令实现对拷
UNIX系统的一大特点是将所有设备作为文件进行管理,并将设备文件放置在/dev目录下,这样,只要对设备文件进行操作就能简单地完成对硬盘的使用和管理,比如cp readme /dev/lp0将readme文件从打印机印出,echo 你好吗 >/dev/tty01将在控制台发送一条“你好吗”的信息。看到这里也许有人会问,我们用cp 硬盘1 硬盘2是不是就实现了两个硬盘对拷?基本上就是这样,但是我们不用cp,而是用dd。这两个指令都是拷贝命令,dd是以块为单位和顺序进行原汁原味地对拷,不管有没有数据所都会进行读写,是一种克隆;而cp是普通的文件操作,有数据才会读写,所以cp可能会导致目标盘和源盘不一致。dd命令的完整用法可参阅UNIX命令手册,最常见的用法如下。
dd if=file1 of=file2 bs=size
其中if=输入文件名
of=输出文件名
bs=每次读写的块大小,size可以写1024,1k,1m等等,缺省是512字节。
这是硬盘对拷的灵魂,但是,在采用dd对拷硬盘之前,我们还必须先作好一些准备工作,下面笔者以SCO Unix OpenServer为例简要介绍硬盘对拷的步骤。
第一步,将目标盘挂接到原计机算上,并以源盘启动,然后以超级用户进入单用户模式。
第二步,在命令行方式下输入mkdev hd命令创建第二硬盘。命令执行过程中要正确填写第二硬盘所处的硬盘控制器、位置等信息,而对分区表、交换区等参数可以不用填写,直接跳过就行了,因为后面将进行完整的硬盘对拷,这些信息在拷贝时会复制过来的。
第三步,输入并执行dd if=/dev/rdsk/0s0 of=/dev/rdsk/1s0 bs=1024k。这里面/dev/rdsk/0s0是第一块硬盘整个硬盘的设备文件,/dev/rdsk/1s0是第二块硬盘整个硬盘的设备文件。这一命令执行可能需要几分甚至几十分钟的时间。
第四步,关机,将已拷贝好的硬盘安装到备用机并启动,这时会提示系统根文件系统需要清理,一路按y执行完毕即可。为什么会出现文件系统清理呢,是因为在拷贝的时候,第一块盘并未关机,导致第二块盘拷贝到的是未正常关机的系统。
注意:在上述操作时要特别小心,因为在单用户模式下,系统处于超级用户状态下,权限非常大,所有命令都将被执行。而每个硬盘有很多设备文件,名称相似,千万别搞错了,例如,同目录下的0s1表示第1块硬盘第1个分区, 1s1表示第2块硬盘第1个分区,依次类推。如果拷错文件,当然会得到非预期的结果,而一旦反向拷贝(将第二硬盘拷贝到第一硬盘),将引起整个系统崩溃,必须慎甚之又慎。
3 如果源主机和目标主机硬件不一致怎么办
以上是生产机和备用机硬件完全一致的情况,但是在现实情况下,由于使用年限过久往往导致一些设备损坏,从而使得维修后或新购的备机与生产机不一样。如果仅仅是硬盘大小不一致,只要目标盘不比源盘小,甚至目标盘只要不比源盘已用空间小都可以用dd命令进行硬盘对拷,而目标盘在第一次启动时总会执行fsck命令进行文件系统清理和修复。
但如果目标主机和源主机的机型或部分硬件(比如网卡)产生不一致时,这种简单的硬盘对拷就行不通了,因为硬件不一样,驱动程序就不一样,那么,这个时候还有办法吗?有!那就是采取有选择性的文件目录对拷。
UNIX文件系统中文件摆放都有一定的规范,以SCO OpenServer为例,用户home目录和应用系统程序一般放置在/usr目录下,还有一些与应用系统有关的重要配置则放置在/etc目录下。那么,我们在找不到应用系统安装软件或忘记应用系统配置参数时,可以按照下述方法进行文件对拷。
第一步,在备用机上用系统安装盘安装UNIX系统、数据库(如果需要)和相关驱动程序。
第二步,将备用机硬盘取下来挂接到生产机上,启动并进入单用户模式。
第三步,执行mount /dev/rdsk/1s0 /mnt,将备用机硬盘的根文件系统装载到/mnt目录下。
第四步,采用文件对拷恢复应用系统,主要包括:
cp –rf /usr /mnt/usr,拷贝源盘/usr目录下所有文件和目录,其中-rf选项的作用是拷贝子目录,且自动覆盖已存在的文件。
cp /etc/hosts /mnt/etc 拷贝主机名映射文件。
cp /etc/rc* /mnt/etc
cp -rf /etc/rc.d /mnt/etc拷贝启动文件。/etc/rc文件在系统启动时会自动执行,这些文件一般与具体应用系统相关。
cp /etc/passwd /mnt/etc
cp /etc/shadow /mnt/etc 拷贝用户信息。UNIX系统的用户信息都放在/etc下的passwd和shadow文件里。
cp /etc/services /mnt/etc 拷贝服务端口配置文件。很多应用系统会对服务端口进行限制,例如很多系统会限制telnet、rlogin服务。
第五步,执行umount /mnt命令卸载每二块硬盘,关机,将目标硬盘装回到原备用机。
参考文献:
[1]韩伟,贺也平.类Unix文件系统中TOCTTOU缺陷的静态分析方法[J].计算机研究与发展,2011(08).
作者简介:莫卫平(1967.4-),男,湖南邵阳人,本科,工程师,研究方向:计算机软件技术。
作者单位:中国人民银行邵阳市中心支行,湖南邵阳 422000
关键词:UNIX;主备机对拷;系统备份
中图分类号:TP316.81
UNIX被广泛地用于政府、银行、企事业单位等各种重要应用系统的建设。这些系统的机器配置,很多采用一主一备方式,即一台生产机一台备用机,并且从硬件、软件上都要求主备机保持高度一致,使之具有全部或局部的可置换性。在实际工作中,常常因为新系统建设或在用系统崩溃而需要构建备用机,尤其是当主备机协同工作很长时间以后,安装软件或资料可能已经缺失,采用常规的安装方法很难实现,而如果采用硬盘对拷方式,既解决了上述问题,同时又能将枯燥漫长的装机过程大大缩短。
有两种比较常用的对拷方法,一种是在windows环境下,采用GHOST工具进行对拷;一种是在UNIX环境下,采用dd命令进行硬盘设备文件对拷,下面笔者一一进行介绍。
1 采用GHOST方式实现对拷
GHOST是美国赛门铁克公司旗下的一款非常出色的硬盘备份还原工具,又称之为克隆软件,支持将分区或硬盘备份到一个扩展名为.gho的镜像文件里,或者直接备份到另一个分区或硬盘里,同时支持相应的系统还原。对于UNIX系统硬盘而言,可先将源盘做成镜像,然后将镜像文件恢复到目标硬盘(Image to Disk),也可以采用硬盘对硬盘(disk to disk)的方式进行对拷。
具体方法在很多文章里已有介绍,这里不赘述。但笔者不推荐这种方式,一是因为GHOST名为克隆,但实际上在拷贝时对于主引导扇区和分区表的写入并不完全忠实于原盘,这样可能会造成一些应用程序或整个系统不能正常使用。二是由于采用了第三方软件,需要提防病毒(尤其是主引导区病毒比较多),一旦感染病毒可能会造成灾难性后果。三是GHOST对分区内容是傻瓜型的对拷,灵活性差。
2 采用UNIX系统下的dd命令实现对拷
UNIX系统的一大特点是将所有设备作为文件进行管理,并将设备文件放置在/dev目录下,这样,只要对设备文件进行操作就能简单地完成对硬盘的使用和管理,比如cp readme /dev/lp0将readme文件从打印机印出,echo 你好吗 >/dev/tty01将在控制台发送一条“你好吗”的信息。看到这里也许有人会问,我们用cp 硬盘1 硬盘2是不是就实现了两个硬盘对拷?基本上就是这样,但是我们不用cp,而是用dd。这两个指令都是拷贝命令,dd是以块为单位和顺序进行原汁原味地对拷,不管有没有数据所都会进行读写,是一种克隆;而cp是普通的文件操作,有数据才会读写,所以cp可能会导致目标盘和源盘不一致。dd命令的完整用法可参阅UNIX命令手册,最常见的用法如下。
dd if=file1 of=file2 bs=size
其中if=输入文件名
of=输出文件名
bs=每次读写的块大小,size可以写1024,1k,1m等等,缺省是512字节。
这是硬盘对拷的灵魂,但是,在采用dd对拷硬盘之前,我们还必须先作好一些准备工作,下面笔者以SCO Unix OpenServer为例简要介绍硬盘对拷的步骤。
第一步,将目标盘挂接到原计机算上,并以源盘启动,然后以超级用户进入单用户模式。
第二步,在命令行方式下输入mkdev hd命令创建第二硬盘。命令执行过程中要正确填写第二硬盘所处的硬盘控制器、位置等信息,而对分区表、交换区等参数可以不用填写,直接跳过就行了,因为后面将进行完整的硬盘对拷,这些信息在拷贝时会复制过来的。
第三步,输入并执行dd if=/dev/rdsk/0s0 of=/dev/rdsk/1s0 bs=1024k。这里面/dev/rdsk/0s0是第一块硬盘整个硬盘的设备文件,/dev/rdsk/1s0是第二块硬盘整个硬盘的设备文件。这一命令执行可能需要几分甚至几十分钟的时间。
第四步,关机,将已拷贝好的硬盘安装到备用机并启动,这时会提示系统根文件系统需要清理,一路按y执行完毕即可。为什么会出现文件系统清理呢,是因为在拷贝的时候,第一块盘并未关机,导致第二块盘拷贝到的是未正常关机的系统。
注意:在上述操作时要特别小心,因为在单用户模式下,系统处于超级用户状态下,权限非常大,所有命令都将被执行。而每个硬盘有很多设备文件,名称相似,千万别搞错了,例如,同目录下的0s1表示第1块硬盘第1个分区, 1s1表示第2块硬盘第1个分区,依次类推。如果拷错文件,当然会得到非预期的结果,而一旦反向拷贝(将第二硬盘拷贝到第一硬盘),将引起整个系统崩溃,必须慎甚之又慎。
3 如果源主机和目标主机硬件不一致怎么办
以上是生产机和备用机硬件完全一致的情况,但是在现实情况下,由于使用年限过久往往导致一些设备损坏,从而使得维修后或新购的备机与生产机不一样。如果仅仅是硬盘大小不一致,只要目标盘不比源盘小,甚至目标盘只要不比源盘已用空间小都可以用dd命令进行硬盘对拷,而目标盘在第一次启动时总会执行fsck命令进行文件系统清理和修复。
但如果目标主机和源主机的机型或部分硬件(比如网卡)产生不一致时,这种简单的硬盘对拷就行不通了,因为硬件不一样,驱动程序就不一样,那么,这个时候还有办法吗?有!那就是采取有选择性的文件目录对拷。
UNIX文件系统中文件摆放都有一定的规范,以SCO OpenServer为例,用户home目录和应用系统程序一般放置在/usr目录下,还有一些与应用系统有关的重要配置则放置在/etc目录下。那么,我们在找不到应用系统安装软件或忘记应用系统配置参数时,可以按照下述方法进行文件对拷。
第一步,在备用机上用系统安装盘安装UNIX系统、数据库(如果需要)和相关驱动程序。
第二步,将备用机硬盘取下来挂接到生产机上,启动并进入单用户模式。
第三步,执行mount /dev/rdsk/1s0 /mnt,将备用机硬盘的根文件系统装载到/mnt目录下。
第四步,采用文件对拷恢复应用系统,主要包括:
cp –rf /usr /mnt/usr,拷贝源盘/usr目录下所有文件和目录,其中-rf选项的作用是拷贝子目录,且自动覆盖已存在的文件。
cp /etc/hosts /mnt/etc 拷贝主机名映射文件。
cp /etc/rc* /mnt/etc
cp -rf /etc/rc.d /mnt/etc拷贝启动文件。/etc/rc文件在系统启动时会自动执行,这些文件一般与具体应用系统相关。
cp /etc/passwd /mnt/etc
cp /etc/shadow /mnt/etc 拷贝用户信息。UNIX系统的用户信息都放在/etc下的passwd和shadow文件里。
cp /etc/services /mnt/etc 拷贝服务端口配置文件。很多应用系统会对服务端口进行限制,例如很多系统会限制telnet、rlogin服务。
第五步,执行umount /mnt命令卸载每二块硬盘,关机,将目标硬盘装回到原备用机。
参考文献:
[1]韩伟,贺也平.类Unix文件系统中TOCTTOU缺陷的静态分析方法[J].计算机研究与发展,2011(08).
作者简介:莫卫平(1967.4-),男,湖南邵阳人,本科,工程师,研究方向:计算机软件技术。
作者单位:中国人民银行邵阳市中心支行,湖南邵阳 422000