骑士注册 登录
Linux中国开源社区 返回首页

郊寒岛瘦的个人空间 https://linux.cn/space/4609 [收藏] [复制] [分享] [RSS]

日志

迁移 Linux 系统,第 1 部分——如何迁移备份和裸机恢复 Linux 系统

热度 19已有 6868 次阅读2010-02-06 13:23 |个人分类:迁移 Linux 系统|

简介:不论是企业用户还是个人用户,完全系统备份是保证数据安全最好的方法。当遇到硬件失败、软件缺陷、人为因素或自然灾害时,裸机恢复必不可少。开源平台 Linux 系统上的完全备份和恢复软件多种多样,其中也不乏有重量级的企业级软件。本文分析了基于可移动媒体的 Linux 系统完全备份和恢复的全部过程及技术细节,并且利用 Linux 平台上开源的工具实现了的单台 Linux 系统的迁移备份及裸机恢复功能。本文的解决方案,不仅适用于个人电脑的备份,同样也适合企业级服务器的备份恢复,而且容易添加远程备份,远程恢复,自动化备份等功能。全文分成两个部分,本文是第一部分,介绍了 Linux 系统迁移备份和裸机恢复的原理。

  当硬件升级,更换存储设备或是遇到硬件故障时,需要迁移原来的操作系统及应用软件到新的硬件设备上。这个过程包含系统的迁移备份和裸机恢复,本文详细描述了整个过程的细节。

迁移备份和裸机恢复

  灾难恢复 , 指自然或人为灾害后,重新启用信息系统的数据、硬件及软件设备,恢复正常商业运作的过程。灾难恢复是涵盖面更广的业务连续规划的一部分,其核心即对企业或机构的灾难性风险做出评估、防范,特别是对关键性业务数据、流程予以及时记录、备份、保护。灾难恢复规划需要许多手动、复杂的步骤来分配恢复资源、执行裸机恢复、执行数据恢复,并验证系统是否为使用做好了准备。

  在灾难恢复中,裸机恢复(bare metal restore)是在灾难性故障发生之后,通过擦除对计算机进行重新格式化的过程。一般包括重新安装操作系统和各种应用软件,如果可能的话,也包括对数据和设置信息的恢复。


本文的方案简介

  本文介绍的 Linux 系统灾难恢复方案利用了 Linux 工具进行数据备份和恢复,利用 Linux 上的开源软件和工具进行裸机恢复。一台服务器和可移动存储设备,实现了灾难备份和裸机恢复的主要功能。

图 1. 基于单机的迁移备份及恢复

  在本文的方案中,简化了复杂存储设备,替代为外部可移动存储硬盘,而存储设备和服务器之间的网络连接着简化为 USB 连接或 SCSI/SATA 接口连接。这样把系统备份和恢复的过程缩小到一台机器上。同样,本文的解决方案也很容易扩展到网络连接的远程存储上。

表 1. 灾难备份的环境
灾难备份环境 说明
硬件环境 任意一台支持 Linux 操作系统的机器。本文使用了 IBM System x3500M2,基于 Intel 酷睿多核 CPU。
可移动的存储设备,本文使用了可插拔 SATA 硬盘。
软件环境 Linux 操作系统,本文安装了 SUSE Linux Enterprise Server 10 SP2。
备份恢复工具。
其他应用程序。

迁移备份过程

  • 备份操作系统本身。对于 Linux 系统,并不是所有的目录和文件都需要备份。/dev、 /sys、 /proc、 /tmp 不需要备份。
  • 如果 Linux 的分区基于 LVM,可以使用 LVM 快照功能保证系统备份的完备性和一致性。
  • 系统硬件信息的备份,包括硬盘分区表,hostname, 网络连接配置。

裸机恢复的准备

  裸机恢复需要从可移动介质如 CD、USB Disk 上启动一个诊断系统。本文采用了 KIWI imaging System 来定制一个预装恢复软件的 LiveCD,见本文的第二部分。

裸机恢复的过程

  • LiveCD 引导系统
  • 驱动硬件设备、加载备份媒介、存储设备并恢复硬盘分区
  • 连接备份媒介
  • 恢复操作系统数据到硬盘分区
  • 恢复其他系统设置
  • 重起系统至硬盘引导
  • 验证恢复成功

  本方案的优点在于结构简单,硬件需求少;不考虑复杂的网络环境和网络接口;裸机恢复方案灵活,过程可定制性强。


Linux 系统的备份

  拥有良好备份的第一步是拥有备份计划。首先明确您需要保存的数据以及需要什么恢复策略,然后使用最适合该策略的工具。

备份哪些文件

  本文中备份操作系统时,有一些文件系统和目录不需要备份。proc,sysfs, tmpfs 文件系统和 /proc 目录在系统启动时自动生成;/mnt 目录用于 mount 其他文件系统;/media 目录挂载了可移动备份介质。其他一些特殊的目录需要特殊的处理,比如数据库文件。

备份媒介

  可擦写光盘、其他硬盘、同一块硬盘的不同分区、或者网络存储系统都可以作为备份媒介。大型的服务器使用 tap 磁带机来备份数据,而如果是一般个人计算机的话,很可能是使用可擦写式光盘来存取数据。本文是基于单机的备份选用了可移动媒体,适用于小型服务器或者个人计算机。因为可移动媒体灵活方便,更换维护容易,成本低,速度快,容量对于单机的备份足够。

备份方式

  • 完全备份(普通备份 Normal):备份所有选择的文件和文件夹(不管是否被设为存档属性), 备份后清除备份标志;通常 , 在首次创建备份集时要执行一次正常备份。
  • 增量备份(Incremental):只备份选择的,并且带有标志的文件和文件夹,它清除备份标志 . 即只备份上次正常备份或增量备份以来创建或更改的文件。其需要最少的存储空间 , 并节省备份时间 . 然而在恢复文件比较耗时和困难。
  • 差异备份(Differential):只备份选择的,并且带有标志的文件和文件夹,它不清除备份标志 . 即只备份上次正常备份或增量备份以来创建或更改的文件。由于其不清除文件的存档属性 , 所以对一个文件执行两次差异备份 , 则在每一次整个文件都要被备份。差异备份使用的存储介质比增量备份多 , 但还原差异备份的数据则简单些。

  为了节省存储空间,还需要对备份的数据进行压缩。

备份频率

  是否天天备份、若完全备份,需要多久进行一次,增量备份何时一次,备份档案的管理。

  根据本文的情况,选择一周一次完全备份,每天增量备份。

备份工具

  备份有很多工具,传统的 UNIX 备份工具是 tar 、 cpio 和 dump 。另外,还可以使用第三方软件包 ( 包括 freeware 和商业版 )。备份介质的选择可能影响工具的选择。

  tar 是一个已移植到 Linux 中的经典 UNIX 命令。 tar 是 tape archive(磁带归档)的缩写,最初设计用于将文件打包到磁带上。如果您下载过 Linux 源代码,或许已经碰到过 tar 文件。这是一个基于文件的命令,它本质上是连续地、首尾相连地堆放文件。本文中使用了 tar 和 Shell 脚本来控制 Linux 系统备份的策略。

  实际上在 Linux 中,任何能够复制文件的程序都可以用来执行某种程度的备份。有人就使用 cpio 和 dd 来执行备份。cpio 是又一个与 tar 差不多的打包实用工具,但使用得不太普遍。 dd 是一个文件系统复制实用工具,它产生文件系统的二进制副本。 dd 还可用于产生硬盘驱动器的映像,类似于使用诸如 Symantec 的 Ghost 这样的产品。然而, dd 不是基于文件的,因此您只能使用它来将数据还原到完全相同的硬盘驱动器分区。

  可用于 Linux 的商业化备份产品有很多。商业化产品一般提供了便利的界面和报告系统,而在使用诸如 dump 和 tar 这样的工具时,您必须自食其力。商业化产品很广泛,通常提供大量的特性。Tivoli Storage Manager 或许是现在可用于 Linux 的最好的商业化备份和存储管理实用工具。Tivoli Storage Manager 服务器可运行在多种平台上,包括 Linux,而客户机则可以运行在更多种类的平台上。关于 Tivoli Storage Manager 在 Linux 系统上的使用,请参阅本文的参考资源。

Linux 下的备份示例

  本例的备份策略是的是选择每个月的一号和每周日做完全备份,每天都做增量备份。这个增量备份是基于每周日的完全备份的。tar 文件并没有压缩,所以用 gzip 压缩。

清单 1. 备份脚本
 #!/bin/sh 
 # Backup Script: backup.sh 

 if [ $# -lt 3 ] 
 then 
   echo "usage: backup.sh dir_under_backup dump_to name"
   exit; 
 fi 

 COMPUTER=`hostname` 

 if [ $# -gt 3 ] 
 then 
   COMPUTER=$3 
 fi 

 DIRECTORIES=$1 
 BACKUPDIR=$2 
 FLAGS="— directory=$DIRECTORIES --exclude=mnt --exclude=proc --exclude=media"

 TAR=/bin/tar                # name and locaction of tar 

 PATH=/usr/local/bin:/usr/bin:/bin 
 DOW=`date +%a`              # Day of the week e.g. Mon 
 DOM=`date +%d`              # Date of the Month e.g. 27 
 DM=`date +%d%b`             # Date and Month e.g. 27Sep 

 if [ $DOM = "01" ]; then  # monthly full backup 
        NEWER=""
        echo "$TAR $NEWER -z -c -f $BACKUPDIR/$COMPUTER-$DM.tgz $FLAGS ."
 fi 

 if [ $DOW = "Sun" ]; then # weekly full backup 
    NEWER=""
    NOW=`date +%d-%b` 
    echo $NOW > $BACKUPDIR/$COMPUTER-full-date #update full backup date 
  echo "$TAR $NEWER -z -c -f $BACKUPDIR/$COMPUTER-$DOW.tgz $FLAGS – ignore-failed-read ."

 else    # make incremental backup - overwrite last weeks 
    NEWER="--newer `cat $BACKUPDIR/$COMPUTER-full-date`" #get date of last full backup 
  echo "$TAR $NEWER -z -c -f $BACKUPDIR/$COMPUTER-$DOW.tgz $FLAGS – ignore-failed-read ."
 fi 

  为了使脚本自动化运行,可以使用 crontab 工具。

清单 2. 自动运行备份
 47 9 * * * /media/script/tempdelete.sh 
 30 1 * * 1-6 /meida/script/ringbackup.sh 
 0 1 * * 0  /media/script/ringfullbackup.sh 

  0 为星期日

基于 LVM 分区的 Linux 操作系统备份

  如果在备份过程期间数据没有发生变化,那么就能够获得一致的备份。但是如果不在备份期间停止系统,就很难保证数据没有变化。 LVM 实现了一种称为快照(Snapshot)的特性,它的作用就像是“拍摄”逻辑卷在某一时刻的照片。通过使用快照, 可以获得同一个逻辑卷的两个拷贝。一个可以用于备份,另一个继续用于日常操作。LVM 快照有两大优点:

  • 快照的创建非常快,不需要停止生产环境。
  • 建立两个拷贝,但是它们的大小并不一样。快照使用的空间仅仅是存储两个 LV 之间的差异所需的空间。

  LVM 技术已经大量应用于类 Unix 系统并成为安装系统时默认的分区格式,如 AIX 和大部分的 Linux 发行版。本文就是利用 LVM 的快照技术,在不中断系统和应用程序运行的情况下完成备份。

清单 3. 创建 LVM 快照分区
保证 vg 有空闲的空间来创建快照
 sles:~ # vgdisplay -s 
  "system" 463.54 GB [427.22 GB used / 36.32 GB free] 

创建 root 卷的快照分区,大小为 32G,并命名为 snap。
 sles:~ # lvcreate -s -L 32G -n snap /dev/system/root 
  Logical volume "snap" created 

可以使用 lvdisplay 查询特殊信息,比如 CoW 的大小和使用情况  (lvs) 
 sles:~ # lvdisplay /dev/system/snap 
  --- Logical volume --- 
  LV Name                /dev/system/snap 
  VG Name                system 
  LV UUID                ft2uvx-5SLW-ArSU-HVSK-Xdxo-pu4q-4YHTId 
  LV Write Access        read/write 
  LV snapshot status     active destination for /dev/system/root 
  LV Status              available 
  # open                 1 
  LV Size                411.24 GB 
  Current LE             105277 
  COW-table size         32.00 GB 
  COW-table LE           8192 
  Allocated to snapshot  0.09% 
  Snapshot chunk size    8.00 KB 
  Segments               1 
  Allocation             inherit 
  Read ahead sectors     0 
  Block device           253:2 

  对于所有日常操作,LVM 快照看起来就是原来逻辑卷的一个拷贝。本文对映射到根目录的逻辑卷创建 LVM 快照,并且 mount 到 /mnt/lvm/ 目录中,然后执行快照的备份。

清单 4. 备份快照分区
 # mount snapshot volume 
 mount -o ro  /dev/system/snap  /mnt/lvm 
 # df -h 
 Filesystem            Size  Used Avail Use% Mounted on 
 /dev/mapper/system-root 
                      405G   57G  328G  15% / 
 udev                  4.0G  148K  4.0G   1% /dev 
 /dev/sdb1             244M   15M  216M   7% /boot 
 /dev/sda1             459G  200G  259G  44% /media 
 /dev/mapper/system-snap 
                      405G   57G  328G  15% /mnt/lvm 
 # lvs 
  LV   VG     Attr   LSize   Origin Snap%  Move Log Copy% 
  root system owi-ao 411.24G 
  snap system swi-ao  32.00G root     0.15 
  swap system -wi-ao  15.98G   

备份 boot 目录
 /media/script/backup.sh /boot /media boot 

备份根目录" / "
 /media/script/backup.sh /mnt/lvm /media root 

  备份过程完成之后,就不需要快照了,这时只需用 lvremove 卸载并销毁它。

清单 5. 删除 LVM 快照卷
 # umount /mnt/lvm/ 
 remove snapshot 
 # lvremove /dev/system/snap 

备份系统信息

  为了能够恢复到备份前的状态。不仅要备份 Linux 系统文件,而且需要收集其他一些系统信息。Linux 系统上有许多命令或工具能够帮助你完成信息收集,比如 fdisk、proc 文件系统、df、ifconfig 和 /etc/sysconfig 目录。需要收集的系统信息包括:

  • 硬盘分区信息。包括分区个数、类型、大小、boot 分区和 root 目录。
  • hostname
  • 网络信息。包括 IP 地址、子网掩码、网关设置、DNS 设置。
  • 操作系统的运行级别

  这些信息也需要保存在可移动硬盘上,以备逻辑回复时使用。

清单 6. 备份系统信息
在可移动硬盘上创建系统信息备份目录
 # mkdir -p /media/sys_bk/ 

备份硬盘分区表
 # fdisk -l > /media/sys_bk/partitions.txt 

备份 LVM 分区
 # /sbin/vgcfgbackup -v 
    Finding all volume groups 
    Finding volume group "system"
    Creating volume group backup "/etc/lvm/backup/system" (seqno 33). 
  Volume group "system" successfully backed up. 

 # mv /etc/lvm/backup/system /media/sys_bk/ 

裸机恢复方案介绍

  裸机恢复在灾难恢复计划中占有很重要的地位,也是最关键的一步。以下是几种裸机恢复的方法及比较。

手动引导恢复

  最便宜的裸机恢复方案就是手动安装一个最小系统来引导恢复流程,并在其上安装恢复软件来恢复系统数据。

图 2. 手动引导恢复

  手动恢复需要耗费大量时间。用户必须重新安装机器的操作系统和应用程序,恢复数据,然后修复配置,调节原系统和恢复数据之间的所有差异。使用这种方法恢复机器需要花费几天时间,最终通常无法完全恢复机器,另外,这种恢复方法非常容易出错。其中许多错误非常难以察觉,需要多花几天时间才能发现、排除和纠正。

操作系统镜像引导恢复

  利用第三方软件或自带的工具快速恢复一个最小系统。比如 AIX 系统上的 mksysb 工具。

图 3. 操作系统镜像引导恢复

Live Media 引导恢复

  从可移动媒质上引导和运行一个完整的操作系统是完全可能的,例如 CD-ROM 或 USB 设备。这些系统可能被预先安装了硬件驱动和软件,以连接和恢复备份数据。目前这种方式特别适合类 unix 系统,比如 Linux。

图 4. Live Media 引导恢复

自动裸机恢复

  如果把以上方案用自动化脚本无缝连接起来,就是自动化的恢复方案。许多商业公司提供这样的自动化软件。比如 VERITAS Bare Metal Restore 和 TSM system backup and recovery for AIX。

本文的 LiveCD 裸机恢复计划

  在文章的开头已经指明,本文的解决方案采用了 LiveCD 引导恢复的方案;本文的第二部分介绍了如何制作 LiveCD。那么在一切就绪的情况下开始恢复系统。

  • 启动 LiveCD 系统
    • LiveCD 引导系统,设置系统信息或服务
    • 驱动硬件设备、存储设备并加载备份媒介
    • 在存储设备上恢复系统分区和 LVM 分区
  • 恢复 Linux 操作系统的根目录和 boot 目录
  • Linux 系统引导和系统设置的恢复
  • 启动裸机恢复后的系统

启动 LiveCD 系统

  本文的第二部分介绍了如何使用 KIWI 软件制作一张 LiveCD 镜像。本文的使用的镜像只有 160MB,完全可以刻录在一张 CD 上,成为恢复引导媒质。

LiveCD 引导系统

  准备一台用作恢复的裸机,就是没有安装任何操作系统和应用程序的机器,最好与做灾难备份的机器硬件类似。插入 LiveCD 到机器的光盘驱动器,并设置系统从光盘启动。用预先设置好的用户名和密码登陆后,检查系统信息。还可以修改系统的设置,或者开启网络服务如 ssh。但是记住,这些修改只是暂时写到内存中,当 LiveCD 系统重启后又恢复到初始状态。

清单 7. LiveCD 系统信息
内核信息
 linux:~ # uname -a 
 Linux linux 2.6.16.60-0.21-smp #1 SMP Tue May 6 12:41:02 \ 
           UTC 2008 x86_64 x86_64 x86_64 GNU/Linux 

系统内存
 linux:~ # free 
             total       used       free     shared    buffers     cached 
 Mem:       1394232     120060    1274172          0      10768      71472 
 -/+ buffers/cache:      37820    1356412 
 Swap:            0          0          0 

系统分区
 linux:~ # df -h 
 Filesystem            Size  Used Avail Use% Mounted on 
 /dev/root             681M  376K  681M   1% / 
 udev                  681M   88K  681M   1% /dev 

硬盘信息
 linux:~ # fdisk -l 
 Disk /dev/sda: 497.9 GB, 497998102528 bytes 
 255 heads, 63 sectors/track, 60544 cylinders 
 Units = cylinders of 16065 * 512 = 8225280 bytes 

   Device Boot      Start         End      Blocks   Id  System 

网络信息
 linux:~ # ifconfig 
 eth0      Link encap:Ethernet  HWaddr 00:0C:29:06:56:1C  
          inet addr:9.123.99.225  Bcast:9.123.99.255  Mask:255.255.255.0 
          inet6 addr: fe80::20c:29ff:fe06:561c/64 Scope:Link 
          UP BROADCAST NOTRAILERS RUNNING MULTICAST  MTU:1500  Metric:1 
          RX packets:3606 errors:0 dropped:0 overruns:0 frame:0 
          TX packets:208 errors:0 dropped:0 overruns:0 carrier:0 
          collisions:0 txqueuelen:1000 
          RX bytes:422057 (412.1 Kb)  TX bytes:33439 (32.6 Kb) 
          Base address:0x1400 Memory:f4820000-f4840000 

 lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0 
          inet6 addr: ::1/128 Scope:Host 
          UP LOOPBACK RUNNING  MTU:16436  Metric:1 
          RX packets:16 errors:0 dropped:0 overruns:0 frame:0 
          TX packets:16 errors:0 dropped:0 overruns:0 carrier:0 
          collisions:0 txqueuelen:0 
          RX bytes:1124 (1.0 Kb)  TX bytes:1124 (1.0 Kb) 

加载备份媒质

  本文中,备份媒质即可移动硬盘。我们把操作系统、应用程序、系统信息存储在可移动硬盘中。所以裸机恢复时,需要把可移动硬盘加载到 LiveCD 系统上。备份介质加载后 mount 到 LiveCD 系统的 /media 目录上。

表 2. 备份媒质的内容
/media 下的文件或目录 说明
script/ 自动化备份恢复脚本
Data/ 备份数据
sys_bk/ 系统信息备份
清单 8. 加载备份媒质
 linux:~ # fdisk -l 

 Disk /dev/sda: 497.9 GB, 497998102528 bytes 
 255 heads, 63 sectors/track, 60544 cylinders 
 Units = cylinders of 16065 * 512 = 8225280 bytes 

   Device Boot      Start         End      Blocks   Id  System 

 Disk /dev/sdb: 500.1 GB, 500107862016 bytes 
 255 heads, 63 sectors/track, 60801 cylinders 
 Units = cylinders of 16065 * 512 = 8225280 bytes 

   Device Boot      Start         End      Blocks   Id  System 
 /dev/sdb1               1       60801   488384032   83  Linux 

 linux:~ # mount /dev/sdb1 /media/ 
 linux:~ # df 
 Filesystem           1K-blocks        Used  Available Use% Mounted on 
 /dev/root               697116         376     696740   1% / 
 udev                    697116          88     697028   1% /dev 
 /dev/sdb1             480719088  209328684  271390404  49% /media 

恢复系统分区

  在 LiveCD 加载存储设备后,就可以利用系统工具 fdisk 和 LVM 在上面创建分区了。首先清除硬盘的主引导记录 MBR。

清单 9. 清除主引导记录
 # dd if=/dev/zero of=/dev/sda bs=512 count=1 

  读取备份媒质上的硬盘分区表文件 /media/sysbk/partitions.txt,用 fdisk 工具恢复分区。

清单 10. 恢复硬盘分区
 linux:~ # fdisk /dev/sda -l 

 Disk /dev/sda: 497.9 GB, 497998102528 bytes 
 255 heads, 63 sectors/track, 60544 cylinders 
 Units = cylinders of 16065 * 512 = 8225280 bytes 

   Device Boot      Start         End      Blocks   Id  System 
 /dev/sda1   *           1          32      257039+  83  Linux 
 /dev/sda2              33       60544   486062640   8e  Linux LVM 

  然后使用 LVM 工具为根分区和交换分区创建逻辑分区。参见 DeveloperWorks 上的文章“ 逻辑卷管理”。

清单 11. 创建逻辑分区
 linux:~ # pvcreate /dev/sda2 
  Physical volume "/dev/sda2" successfully created 
 linux:~ # vgcreate system /dev/sda2 
  Volume group "system" successfully created 
 linux:~ # vgchange -a y 
  0 logical volume(s) in volume group "system" now active 
 linux:~ # vgscan 
  Reading all physical volumes.  This may take a while... 
  Found volume group "system" using metadata type lvm2 
 linux:~ # lvcreate -L 16G -n swap system 
  Logical volume "swap" created 
 linux:~ # lvcreate -L 400G -n root system 
  Logical volume "root" created 
 linux:~ # lvscan 
  ACTIVE            '/dev/system/swap' [16.00 GB] inherit 
  ACTIVE            '/dev/system/root' [400.00 GB] inherit 

  至此,硬盘分区表已经按照备份重建了。在恢复过程中,可以根据系统硬件的实际情况(比如内存大小,硬盘大小)来调节分区大小。


恢复 Linux 操作系统及应用程序

  恢复 Linux 系统到最近的备份状态,首先要验证恢复工具已经安装到 LiveCD 上。本文备份时使用的是 tar 和 gzip,所以他们需要预先安装到 LiveCD 中。接着映射硬盘分区到 LiveCD 的系统中去。

清单 12. 恢复 Linux 系统目录
格式化根分区并 mount 
 linux:~ # mkfs.ext3 /dev/system/root 
 linux:~ # mkdir /bmr 
 linux:~ # mount /dev/system/root /bmr/ 

格式化 boot 分区并 mount 
 linux:~ # mkfs.ext3 /dev/sda1 
 linux:~ # mkdir /bmr/boot 
 linux:~ # mount /dev/sda1 /bmr/boot/ 

加载交换分区
 linux:~ # mkswap /dev/system/swap 
 Setting up swapspace version 1, size = 2147479 kB 
 linux:~ # swapon -a /dev/system/swap 

恢复 /boot 目录
 # /bin/tar -zxf /media/data/boot_Sun.tgz -C /bmr/ 

恢复根目录
 # /bin/tar -zxf /meida/data/sles_Sun.tgz -C /bmr/ 

  只需要等待一段时间就完成了所有操作系统目录的恢复,文件系统的恢复操作就这么简单。恢复时间的长短取决于数据的多少。这样 Linux 操作系统本身和安装在操作系统上的应用程序都恢复到了硬盘分区上。


Linux 系统引导和系统设置的恢复

  恢复了 Linux 系统的所有目录到硬盘上,并不等于完成了裸机恢复。裸机恢复要保证恢复后的系统能够自行从硬盘启动并且系统设置与备份的系统一致。所以还有一些后续的恢复操作。

恢复 grub

  恢复磁盘分区前,擦除了新硬盘上的主引导记录 MBR。因为我们要重新写入它。Grub 提供了工具程序 grub-install,用来将 grub 安装到硬盘的 MBR。

 grub-install -root-directory Mount-Point (hdn) 

  上面的命令可以将 grub 安装到硬盘的 MBR。内核镜像 (kernel-image) 如果不在根分区 / 下,例如在 /boot,可以使用 Mount-Point 指定其路径。(hdn) 表示某个硬盘,n 是硬盘的编号,编号从 0 开始。

清单 13. 恢复磁盘 MBR
 linux:~ # grub-install --root-directory=/bmr/ /dev/sda --recheck 
 Probing devices to guess BIOS drives. This may take a long time. 
 Installation finished. No error reported. 
 This is the contents of the device map /bmr//boot/grub/device.map. 
 Check if this is correct or not. If any of the lines is incorrect, 
 fix it and re-run the script `grub-install'. 

 (fd0)   /dev/fd0 
 (hd0)   /dev/sda 
 (hd1)   /dev/sdb 

恢复网络设置

  网卡的 MAC 地址和设备号的对应规则预先设置在系统的 /etc/udev/rules.d/30-net_persistent_names.rules 文件中。当裸机恢复系统到另外一台机器后,网卡的 MAC 地址必然改变了。所以我们必须删除旧的注册信息,以便系统能够更新这些规则。

清单 14. 清除网络绑定
 linux:~ # echo "" > /bmr/etc/udev/rules.d/30-net_persistent_names.rules 

重起系统至硬盘引导

清单 15. 恢复硬盘系统
 linux:~ # umount /bmr/boot 
 linux:~ # umount /bmr/ 
 linux:~ # umount /bmr/media/ 
 linux:~ # umount /bmr 
 linux:~ # poweroff 

  至此裸机恢复已经完成了。从光驱中移除 LiveCD,重启系统从硬盘引导,就可以看到系统已经恢复到备份时的状态。本文裸机恢复过程完全在 LiveCD 的控制台下完成。如果把这些命令写入脚本并加入到 LiveCD 的启动过程中运行,就成为了自动裸机恢复模式了。由此可见,自动恢复并不神秘。而且本文的灾难备份和裸机恢复的方法具有高度可定制性,很容易插入特殊的操作以满足不同用户的需求。


小结

  本文介绍了如何备份 Linux 系统,然后迁移到新的硬件上。当然,新的硬件平台需要和原来的硬件兼容,因为 Linux 系统迁移时只是数据的恢复,并没有重新探测硬件并加载硬件驱动模块。本文的压缩备份工具选用了基于 Linux 系统的开源工具。功能更加丰富的商业备份软件如 IBM Tivoli Storage Manager,同样也可以在本文的方案中使用。

参考资料

关于作者

  郭晋兵,软件工程师,目前在 IBM 中国系统与科技研发中心从事 Linux 系统相关的测试工作。

本文来自

  http://www.ibm.com/developerworks/cn/linux/l-cn-linux-br1/
  发布日期:2010 年 2 月 04 日
  级别:初级


文章目录:

返回顶部

分享到微信

打开微信,点击顶部的“╋”,
使用“扫一扫”将网页分享至微信。