Chinaunix首页 | 论坛 | 博客
  • 博客访问: 149656
  • 博文数量: 51
  • 博客积分: 1545
  • 博客等级: 上尉
  • 技术积分: 600
  • 用 户 组: 普通用户
  • 注册时间: 2006-08-31 10:20
文章分类

全部博文(51)

文章存档

2011年(3)

2010年(48)

我的朋友

分类:

2010-01-20 10:23:57

ZFS snapshotOpenSolaris的一个非常强大的技术,它就像Windows的还原点一样,能让你的系统还原到你想要的状态。在《》一文中,我对snapshot的使用及恢复做了较详细的介绍,本文将介绍如果对snapshot快照进行备份(包括增量备份),从而来保证数据的完整性。

首先通过一个简单的demo来重温一下snapshot的原理:

1.       rpool存储池中创建一个test文件系统:

haiou@opensolaris:~# zfs create rpool/test

haiou@opensolaris:~# zfs list

NAME                      USED  AVAIL  REFER  MOUNTPOINT

rpool                    4.52G  1.01G  79.5K  /rpool

rpool/ROOT               3.84G  1.01G    19K  legacy

rpool/ROOT/opensolaris   3.84G  1.01G  3.58G  /

rpool/cifsdemo             99K  1.01G    19K  /rpool/cifsdemo

rpool/export              698M  1.01G    21K  /export

rpool/export/home         698M  1.01G    23K  /export/home

rpool/export/home/haiou   697M  1.01G   391M  /export/home/haiou

rpool/test                 19K  1.01G    19K  /rpool/test

2.       test文件系统下创建几个新文件:

haiou@opensolaris:/rpool/test# cd /rpool/test

haiou@opensolaris:/rpool/test# echo “How are you?” > f1 

//创建一个f1文件,内容为How are you?

haiou@opensolaris:/rpool/test# echo “I am fine” > f2    //创建一个f2文件

3.       接下来为rpool/test文件系统创建一个快照:

haiou@opensolaris:/rpool/test# zfs snapshot rpool/test@1 

//rpool/test文件系统创建一个快照

haiou@opensolaris:/rpool/test# echo “ok” > f3           //创建一个f3文件

haiou@opensolaris:/rpool/test# ls

f1  f2  f3

4.       使用创建的快照对rpool/test 文件系统进行恢复:

haiou@opensolaris:/rpool/test# zfs rollback rpool/test@1

haiou@opensolaris:/rpool/test# ls

f1  f2

这样系统就成功恢复到了创建快照rpool/test@1之前的状态。

在创建快照以后,为了保证数据的完整性,我们也可以对快照进行备份。可以备份在同一个存储池的另一个文件系统,也可以备份到不同的存储池里;同时,我们还可以通过iSCSIssh等技术将其备份到远程的物理机器上。

我们可以使用以下的命令来备份rpool/test@1这个快照:

# zfs send rpool/test@1 | zfs receive rpool/rtest
使用zfs list命令可以发现在rpool存储池里创建了一个新的文件系统rtest,且文件系统的内容和test一模一样。同时,在创建rtest的同时,还创建了一个rpool/rtest@1的快照。
在对一个文件系统创建了多个快照以后,我们可以采用增量备份的方式。假设我们又对rpool/test文件系统创建了一个新的快照rpool/test@2,采用增量备份的方式就会只将两个快照之间的差别传送到rtest文件系统里。得注意一点,就是在增量备份之前需要将rtest文件系统设为只读,命令如下:
# zfs set readonly=on rpool/rtest
# zfs send -i rpool/test@1 rpool/test@2 | zfs receive -F rpool/rtest
当然,当我们为一个文件系统创建了多个快照之后,可以将各个快照分别备份到不同的文件系统,命令如下:
# zfs send rpool/test@1 | zfs receive rpool/rtest1
# zfs send rpool/test@1 | zfs receive rpool/rtest2
# zfs send rpool/test@1 | zfs receive rpool/rtest3
如果能将它们都备份到远程的服务器上,就更好地保证了数据的完整性。
阅读(3157) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~