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 里面有讲灾难恢复的办法。