一 为何要备份Linux系统
一个应用中的Linux系统,受内部环境影响、底层硬件的影响、外来黑客的攻击,出现问题是难免的,作为一名系统管理人员,自身的职责并不是要保证系统永远不出现问题,事实上也是不可能的,而是在系统出现故障或者崩溃时,能以最快的速度,在最短的时间内恢复系统的运行,保证数据的安全,将故障带来的损失降到最低点。
这就要求系统管理人员对操作系统和业务应用有一个合理的备份恢复策略,完美的备份策略可以保证业务的零宕机时间和数据的完全恢复。由于业务是运行在操作系统之上,因此操作系统的备份与恢复效率直接关系到整个业务系统的恢复程度。所以操作系统的备份变得至关重要。
二 Linux系统需要备份的数据
在windows下有ghost软件,可以将整个系统完全复制到另一个硬盘,ghost是一种磁盘镜像技术,可以将系统盘所有数据镜像到另一个备份硬盘上,当系统出现问题,用备份的镜像磁盘,在短时间内即可将系统所有数据完全恢复。
Linux下虽然也有类似ghost的工具,但是由于硬件的兼容性、恢复的复杂度等影响,ghost并不能很好的用于Linux镜像备份,同时如果Linux系统磁盘分区过大,备份和恢复过程都会很长,因此ghost并不适合备份Linux操作系统。
事实上,全盘备份系统并不是一个好的策略,Linux操作系统也没有必要完全备份,我们仅仅需要备份系统的所有配置文件即可,这样备份过程迅速,恢复也快。
Linux系统需要备份的文件大致可以分为两类:系统级配置文件和用户级配置文件。
系统级配置文件主要是系统全局的一些配置信息,例如/etc/目录、/home目录、/boot目录、/root目录等。这些目录对系统运行至关重要,并且针对不同的系统应用设置都不尽相同,如果丢失了这些文件,即使新的操作系统能很快安装完毕,对系统也要重新配置,花费的时间会更长。
用户级配置文件是用户的业务应用与系统相关的配置文件,这些文件是运行系统业务应用必不可少的,一旦丢失,系统业务就会无法启动,例如/usr/local整个目录、/var/www目录、/etc整个目录等。
重要的文件是必须要备份的,那么不需要备份的目录有哪些呢,例如/dev目录、/proc目录、/mnt目录、/tmp目录等这些目录都是不需要备份的,因为这些目录中要么是内存数据,要么是临时文件,没有重要的数据,备份的原则是重要数据一定要全部备份,无用数据绝不备份。
三 备份的介质与方式
要备份数据,就要有存放数据的安全容器,对存储介质的基本要求一般从存取速度、存储安全、存储容量三个方面进行考虑。
存取速度是对存储介质的一个基本要求,数据的备份是一个读写操作极度频繁的过程,存取速度非常高的备份介质,可以大大缩短备份数据的时间,同时也可以减少恢复数据的时间。
存储安全性是对存储介质的一个硬性要求,不安全的存储设备还不如不要存储介质,现在很多存储设备都对安全性做了很多优化,例如做raid磁盘阵列,cache读写等。专业的存储厂商有EMC、IBM、SUN等,都有自己的存储设备。
存储容量也是选择存储介质必须要考虑的一个方面,过大的存储空间会造成存储设备的浪费,过小的存储空间,导致数据存储失败,因此,必须根据备份数据的大小,选择相应大小的存储介质。
1.常用备份介质
常用的存储介质有光驱、磁盘、磁带机、软盘等,这里重点介绍一下磁带机的使用方法:
Linux下使用磁带机的方式有多种, tar命令是最经常使用的方法,tar主要用于单机环境下,将数据直接写入磁带机。磁带机在Linux下对应的设备名称为/dev/stX,如果是第一个磁带机,即为/dev/st0,基本操作如下:
(1)倒带,将磁带卷至起始位置
mt -f /dev/st0 rewind
(2)擦掉磁带上的内容
mt -f /dev/st0 erase
新购买的磁带,打开后即可使用,无需进行擦写操作,同时当数据写满磁带后,磁带可以覆盖原有数据并继续写入,因此无需进行任何擦写动作,由于擦写对磁带有一定的损害,建议不要执行擦写操作。
(3)出带,即将磁带卷至初始位置然后从磁带机内弹出
mt –f /dev/st0 offline
(4)通过tar列出磁带上的目录或者文件
tar tvf /dev/st0 [需要查看的文件或者目录]
如果后面不跟任何文件或目录,则是查看磁带上所有数据,当磁带上还没有任何数据时,执行此操作会报错,不过不影响磁带使用。
(5)通过tar备份数据到磁带
tar cvf /dev/st0 [要写入的文件或目录名]
备份数据到磁带有两种方式,打包压缩后写入磁带和不打包直接写入磁带。这里我们推荐将数据不打包直接写入磁带的方法。这样可以提高数据存储的安全性。为什么建议不打包备份呢,因为磁带是顺序写入数据的,即线性存储,如果将所有数据打包成一个独立的文件,那么当磁带任何一个地方发生故障,都可能会导致这个压缩文件解压失败而不可用,而如果对备份数据进行不打包存储的话,在磁带上就有很多文件,即使磁带某个地方发生故障,其余的文件仍然可用,这样就大大提高了数据备份的安全性。
例如,将/data/ixdba1.tar.gz这个压缩文件写入到磁带,并覆盖原有的内容,可以执行如下操作:
[root@webserver /data]# tar cvf /dev/st0 /data/ixdba1.tar.gz
通过“tar cvf”将数据写入磁带时,每次都会覆盖磁带中原有的数据,也就是每次都是从磁带的开始部分写入数据。磁带机的传输速度比较慢,对于不是很大的备份文件,在很短时间内就能备份完成,非常适合做系统级的文件备份。
(6)通过tar继续写入数据到磁带
tar rvf /dev/st0 [要写入的文件名]
由于磁带是线性存储,数据是依次写入的,为了在写入新的数据时,不覆盖原有已经存在的数据,可以使用“tar rvf”参数组合将数据依次写入磁带。
例如,依次将/data/ixdba2.tar.gz和/data/ixdba3.tar.gz备份到磁带机上:
[root@webserver /data]# tar rvf /dev/st0 /data/ixdba2.tar.gz
[root@webserver /data]# tar rvf /dev/st0 /data/ixdba3.tar.gz
(7)通过tar将数据从磁带恢复到磁盘
tar xvf /dev/st0 [要恢复的文件或者目录名]
例如,首先查阅磁带上存在的所有数据:
[root@webserver ~]# tar tvf /dev/st0
-rw-r--r-- root/root 320 2009-2-20 10:19:02 ixdba1.tar.gz
-rw-r--r-- root/root 320 2009-2-20 10:25:10 ixdba2.tar.gz
-rw-r--r-- root/root 320 2009-2-20 10:45:18 ixdba3.tar.gz
现在如果要恢复磁带上的ixdba2.tar.gz文件到磁盘,可以执行如下命令:
[root@webserver ~]# tar xvf /dev/st0 ixdba2.tar.gz
ixdba2.tar.gz
这样就将数据从磁带恢复到了当前的路径下。
2.数据备份方式
数据的备份方式常见的有本地备份和异地容灾备份,可以根据对数据重要性的要求程度,选择合理的备份方式。
本地备份就是将数据备份到本地系统的磁盘、磁带或者专有存储设备上,本地备份是对数据安全的一级考虑,主要是针对系统故障或者黑客攻击等造成的数据丢失情况。
异地容灾是对数据和业务安全性考虑的更高指标,主要是将数据备份到另一个城市或者国家,主要是针对可能发生的自然灾害,例如地震、火灾、水灾等,当这些自然灾害发生时,本地备份数据也将全部丢失,此时,就需要通过远程的容灾备份来恢复数据。
四 制定备份策略
常用的备份策略有完全备份、增量备份,同时增量备份还可以分为差异增量备份和累计增量备份,下面简单讲述下它们之间的区别。
1.完全备份
完全备份就是将所有数据全部备份,对于Linux操作系统来说,就是将根分区下所有文件进行备份,完全备份的好处是:所有数据都进行了备份,系统任何数据丢失都能恢复,并且恢复效率高;缺点是备份时间较长,备份了很多无用数据,浪费了存储空间。
2.增量备份
在一个数据量很大的业务应用中,每天对系统进行完全备份是不现实的,这就需要增量备份策略了。增量备份就是只备份每天增加或者变化的数据,而不备份系统中没有变动的数据,这样备份的数据量就大大减少了,可以缩短备份时间,但是增量备份也有缺点,那就是恢复数据时比较复杂,需要用首次完全备份的数据和增量备份数据组合进行恢复,如果有多个增量备份文件,恢复过程将变得十分缓慢。
一个比较好的备份策略是:对于数据量不大,并且每天数据量增加不多的系统,建议选择完全备份,备份过程较短,恢复也很简单。对于数据量巨大,每天新增数据也很多的系统,一定要选择增量备份。
阅读(412) | 评论(0) | 转发(0) |