FreeBSD系统完全备份与恢复

来源:互联网 发布:ubuntu grub默认启动 编辑:程序博客网 时间:2024/05/21 10:36

FreeBSD系统完全备份与恢复


http://blog.luohuedu.net/Blog/View.aspx?essayID=177401&BlogID=817

 

—-原创文章引用请著明来源

       任何一套系统,特别是服务器系统,若是没有可靠的备份与恢复方案,是没人敢投入实际应用的。经过一段时间的研究,终于试验出了一套实用可行的FreeBSD系统备份与恢复方案。

一、备份

    1、备份设备
     我们使用旧的PIII电脑装上2个1000GB的硬盘,使用FreeNAS软件做了一个NAS存储设备。该设备既可以通过samba方式,为Windows提供备份存储,也可以以NFS方式为UNIX类服务器提供存储,FreeBSD使用NFS方式。服务器参数:
   IP 219.223.90.7
   存储文件夹 /mnt/bak/szwj-BSD

   2、备份内容
     使用df -h命令查看系统分区情况
[root@szwj-BSD /usr/local/script]# df -h
Filesystem               Size    Used   Avail Capacity Mounted on
/dev/ad0s1a              496M    138M    318M    30%    /
devfs                    1.0K    1.0K      0B   100%    /dev
/dev/ad0s1e              496M     14K    456M     0%    /tmp
/dev/ad0s1f              176G    1.8G    160G     1%    /usr
/dev/ad0s1d              1.9G    116M    1.6G     6%    /var
在这个硬盘中我们需要备份的分区是:
ad0s1a    /             根分区,存放内核和系统的基本文件
ad0s1f    /usr        usr分区,存放用户软件数据和系统工具
ad0s1d    /var        var分区,存放系统日志、邮件等信息

   3、备份操作
     为了方便,我们做两个脚本自动完成操作,脚本可以存放在管理员方便找到的目录中。我们是在 /usr/local目录中建了一个script目录存放脚本。

     mount-bak-NFS 脚本用于启动与NAS存储设备的连接:
mount_nfs -i -s 219.223.90.7:/mnt/bak/szwj-BSD /mnt/bak

     bak-DEV 脚本用于备份上述三个分区的内容:
# Backup /dev/ad0s1a– /
dump -0Lauf /mnt/bak/ad0s1a.dump /dev/ad0s1a

# Backup /dev/ad0s1f– /usr
dump -0Lauf /mnt/bak/ad0s1f.dump /dev/ad0s1f

# Backup /dev/ad0s1d– /var
dump -0Lauf /mnt/bak/ad0s1d.dump /dev/ad0s1d

     只要不重启系统mount-bak-NFS运行一次就可以了,bak-DEV 要经常运行,每运行一次,备份内容就会被更新一次。 运行以后就可以在备份NAS设备的/mnt/bak/szwj-BSD目录中见到ad0s1a.dump、ad0s1f.dump、ad0s1d.dump三个数据包文件。

二、恢复
      假设原来的硬盘完全崩溃,主板等其他部件没有问题,把系统备份恢复到一个新的硬盘里。

   1、准备工作
      准备一张与你的FreeBSD版本相同的livefs光盘,该光盘自动运行sysinstall系统安装程序。
      使用livefs光盘启动电脑,sysinstall->Express对新硬盘进行分区(注:分区方法及分区的个数要与原硬盘相同,每个分区的大小可以和原来不一样,也就是可以使用更大容量的硬盘),不要安装任何软件(提示安装软件忽略就可以了)。
      分好区后再使用livefs光盘重启电脑,使用sysinstall->Configure->Label确认分区信息已经写到新硬盘上了,查出新的磁盘名(我的新磁盘名变为:ad1s1)和分区名(ad1s1a:/ 分区,ad1s1d:/var 分区,ad1s1f:/usr 分区)。

   2、设置网络
     因为我们的备份文件存储在局域网的NAS上,所以首先要让我们的电脑能与网络相连。
     使用sysinstall->Configure->Networking->Interfaces,选择网卡,计算机名和IP地址随便,能连上NAS存储设备就可以了。

   3、实施还原
    使用sysinstall->Fixit->2 CDROM/DVD,进入一个shell(Fixit#)的状态,在该状态中执行下列指令:
mkdir /mnt/bak     &&在/mnt文件夹里新建bak文件夹
mount_nfs -i -s 219.223.90.7:/mnt/bak/szwj-BSD /mnt/bak   &&把备份文件夹加载到/mnt/bak文件夹中
newfs -U /dev/ad1s1a    &&格式化ad1s1a分区
newfs -U /dev/ad1s1d    &&格式化ad1s1d分区
newfs -U /dev/ad1s1f    &&格式化ad1s1f分区
mkdir /mnt/01    &&新建/mnt/01文件夹
mount /dev/ad1s1a /mnt/01    &&把ad1s1a分区加载到/mnt/01文件夹中
mkdir /mnt/02    &&新建/mnt/02文件夹
mount /dev/ad1s1d /mnt/02    &&把ad1s1d分区加载到/mnt/02文件夹中
mkdir /mnt/03    &&新建/mnt/03文件夹
mount /dev/ad1s1f /mnt/03    &&把ad1s1f分区加载到/mnt/03文件夹中
mkdir /mnt/bak/temp    &&在mnt/bak文件夹中新建temp文件夹
export TMPDIR=“/mnt/bak/temp“    &&把系统的/tmp文件夹改到存储设备上(原来的/tmp文件夹使用内存的影射磁盘,容量太小,恢复大容量的分区会出错)
cd /mnt/01
restore -rf /mnt/bak/ad0s1a.dump   &&恢复/分区
cd /mnt/02
restore -rf /mnt/bak/ad0s1d.dump   &&恢复/var分区
cd /mnt/03
restore -rf /mnt/bak/ad0s1f.dump   &&恢复/usr分区
ee /mnt/01/etc/fstab    &&修改新磁盘的文件系统表,把旧的磁盘名(ad0s1)改为新的磁盘名(ad1s1)。若是新旧磁盘同名不需要执行该步。
umount /mnt/01    &&卸载ad1s1a分区
umount /mnt/02    &&卸载ad1s1d分区
umount /mnt/03    &&卸载ad1s1f分区
umount /mnt/bak    &&卸载备份设备
exit    &&数据恢复完毕,退出Fixit状态

   取出光盘,重启电脑,就可以看见你备份时的系统了。
   新硬盘的系统启动后先检查/tmp文件夹的属性,必须为777(rwxrwxrwx),否则一些软件无法运行(如:MySql等),更改属性后要重启未启动的服务或重启电脑。

freebsd备份
方法一:如果你的硬盘没有做 RAID,可以添加一个和生产系统一样的硬盘,把生产硬盘的内容全部 dd 到新硬盘上。注意 if 和 of 噢,千万别写错了!

方法二:如果已经用了 RAID,可以再 RAID 里面添加一个 spare 硬盘 (RAID5)。如果有一个硬盘亮了红灯,就把它抽出来,送去修理。记住 RAID5 的硬盘在抽出一块硬盘后就不能在抽里面的硬盘了,否则硬盘里面的数据毁了救不回来的。

方法三:用磁带机备份,用 dd,方法和第一种类似。

方法四:双机容错。很抱歉,怎么在 FreeBSD 上跑双机容错我还不知道。

另外在 FreeBSD 的 handbook 里面有讲灾难恢复的办法。

原创粉丝点击