Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1100335
  • 博文数量: 286
  • 博客积分: 3124
  • 博客等级: 中校
  • 技术积分: 5186
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-24 23:42
个人简介

Bomi

文章存档

2015年(1)

2013年(1)

2012年(281)

2008年(3)

分类: 系统运维

2012-02-05 00:16:35

本文的主题围绕Solaris系统的备份和恢复方案,并针对zfs文件系统下的snapshot作了详细的介绍。在基于ufs的Solaris 系统中,可以使用ufsdump和ufsrestore命令来备份和恢复文件系统(必须先卸载文件系统),使用fssnap来创建文件系统的在线快照从而实现在线文件系统的备份。两种方法相比,使用snapshot的优点是:snapshot是一种在线文件系统备份方案,不需要先卸载文件系统;同时,snapshot实际使用多少空间就占用多少,而不是占用和整个文件系统同样大小的空间。
什么是snapshot呢?它就是在线文件系统的一个快照,它把文件系统的数据存储在一个备份恢复文件里。快照文件是一个bit-mapped文件,会一直占用磁盘直到删除快照,其大小会随着被拍照的文件系统的活动次数而改变,主要取决于一上次拍照以来该文件系统有多少数据发生改变。一旦创建snapshot后,就可以像对待其他设备一样对其进行备份操作。如果我们强行卸载一个活跃的文件系统,就会自动删除其快照(在快照存在的情况下)。
在基于ufs的Solaris系统里,创建ufs快照是通过以下命令实现的:
fssnap –F ufs –o bs=snapshot_path /snapshot_filesystem
在OpenSolaris里,由于默认采用zfs文件系统,基于存储池的概念,故创建snapshot的操作也与ufs条件下有所不同。以下是创建zfs快照的实例:
zfs snapshot rpool/ROOT/opensolaris@basic
当你为文件系统(如/export/home)创建一个新的snapshot时,你会发现这个snapshot的文件大小可能为0KB。在创建快照后,你对系统所做的操作都将被记录在这个snapshot里,如创建或删除一个文件等操作,所以快照文件也会逐渐增大。当然,如果一个快照文件用完了磁盘空间,系统会自动删除snapshot,不会影响源文件系统。一旦rollback到某一个快照状态,在该快照之后的所有操作将会被还原。接下来将通过一个实例来说明snapshot的原理:
haiou@opensolaris:~$ zfs list
NAME                                USED  AVAIL  REFER  MOUNTPOINT
rpool                              3.05G  2.86G    57K  /rpool
rpool@install                        17K      -    55K  -
rpool/ROOT                         3.00G  2.86G    18K  /rpool/ROOT
rpool/ROOT@install                   15K      -    18K  -
rpool/ROOT/opensolaris             3.00G  2.86G  2.42G  legacy
rpool/ROOT/opensolaris@install     60.0M      -  2.22G  -
rpool/ROOT/opensolaris/opt          529M  2.86G   529M  /opt
rpool/ROOT/opensolaris/opt@install   72K      -  3.61M  -
rpool/export                       53.2M  2.86G    19K  /export
rpool/export@install                 15K      -    19K  -
rpool/export/home                  53.1M  2.86G  46.2M  /export/home
rpool/export/home@install            18K      -    21K  -
//查看目前zfs文件系统和快照的情况
haiou@opensolaris:~$ pfexec zfs snapshotrpool/export/home@a
//为文件系统/export/home创建一个snapshot, pfexec用来在普通用户下执行特权命令,与Linux下的sudo功能相似。
haiou@opensolaris:~$ pwd
/export/home/haiou
haiou@opensolaris:~$ ls
Desktop
haiou@opensolaris:~$ touch a
//在当前目录下新建一个文件a
haiou@opensolaris:~$ gedit a
//编辑文件a
haiou@opensolaris:~$ mkdir b
//在当前目录下新建文件夹b
haiou@opensolaris:~$ ls
a
b
Desktop
haiou@opensolaris:~$ pfexec zfs rollbackrpool/export/home@a
//使用之前创建的snapshot将系统恢复到没有新建文件a的状态
//we can use ‘-r’ after ‘rollback’ to forcedeletion of the recent snapshots, for example:
// pfexec zfs rollback –rrpool/export/home@a
haiou@opensolaris:~$ ls
Desktop
// There is no file name “a” and nodirectory name “b” in the current directory, the system has been rollbackedsuccessfully
在刚创建快照时使用zfs list命令会发现rpool/export/home@a文件的大小为0,恢复快照后再次调用会发现其大小发生了变化,是因为在snapshot里记住了我们在创建快照后对系统的操作。
OpenSolaris在系统不正当操作或升级一些系统包后可能无法正常启动,这时候很多朋友可能束手无策。由于系统在默认安装后自动制作了一些snapshot,我们可以通过以下操作将破坏的系统恢复到安装时的状态:
1. 将opensolaris Live CD放入光驱并启动
2. 使用su切换到root用户,密码是opensolaris
3. 把硬盘上已破坏的opensolaris系统挂载上来
zpool import -f rpool
4. 使用安装时制作的快照恢复
zfs rollback rpool/ROOT/opensolaris@install
5. 重启 init 6
这样系统就恢复到安装时的状态并能正常启动了,但你会发现原先系统中安装的软件都不复存在了,这是件大家都不愿意遇到的非常苦恼的事情。所以在使用IPS安装升级包或其它应用软件时,最好先做一个snapshot。如在安装完OpenOffice、Netbeans及Sun Studio等基本软件后,可以作一个rpool/ROOT/opensolaris@basic的snapshot,这样当系统崩溃时我们可以选择这个快照进行系统恢复。当然,定期做一个snapshot也是一个很好的习惯,就像Windows下设置还原点一样,当系统破坏时,我们可以选择系统运行最稳定时做的snapshot进行恢复

阅读(639) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~