Chinaunix首页 | 论坛 | 博客
  • 博客访问: 854980
  • 博文数量: 254
  • 博客积分: 5350
  • 博客等级: 大校
  • 技术积分: 2045
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-27 13:27
文章分类

全部博文(254)

文章存档

2015年(1)

2014年(9)

2013年(17)

2012年(30)

2011年(150)

2010年(17)

2009年(28)

2008年(2)

分类: 系统运维

2011-08-28 18:17:30

通过 lvm 为一致性备份做快照

通过 lvm 为一致性备份做快照
问题:1、备份一个非常繁忙的服务器,需要停止大量的程序。否则,你将以数据不一致告终。
      
      
      2、保存数据库或目录。如果一个文件在使用状态,我们就没有任何线索了,除非我们给应用程序时间做一个清
         除的关闭。
      
这样我们不得不关闭程序,做备份,然后重新启动他们。时间的长短。。影响我们的工作。。
解决:使用LVM,我们可以做一个LV瞬间的快照,然后mount它,再备份它。
步骤:
# mount /dev/test/HOWTO /mnt
# echo > /mnt/a.test.file
# ls /mnt/  
a.test.file  lost+found
# ls -l /mnt/
total 13
-rw-r--r--    1 root     root            1 Apr  2 00:28 a.test.file
drwxr-xr-x    2 root     root        12288 Apr  2 00:28 lost+found
Ok,我们现在有些事情要用它一起做。让我们产生这个快照:
# lvcreate --size 16m --snapshot --name snap /dev/test/HOWTO
lvcreate -- WARNING: all snapshots will be disabled if more than 16 MB are changed
lvcreate -- INFO: using default snapshot chunk size of 64 KB
lvcreate -- doing automatic backup of "test"
lvcreate -- logical volume "/dev/test/HOWTO" successfully created
# mount /dev/test/snap /snap
# ls /snap
total 13
-rw-r--r--    1 root     root            1 Apr  2 00:28 a.test.file
drwxr-xr-x    2 root     root        12288 Apr  2 00:28 lost+found
现在我们从原处删除a.test.file,并且检查它是否仍然在快照里:
# rm /mnt/a.test.file
# ls /snap
total 13
-rw-r--r--    1 root     root            1 Apr  2 00:28 a.test.file
drwxr-xr-x    2 root     root        12288 Apr  2 00:28 lost+found
原理:
记得我们不得不设置“--size”参数吗?真正发生的事情是,“snap”卷需要有那些当LVM调用时,在原处要被改变的所有块的一个拷贝。
当我们删除a.test.file时,它的i节点被删除。这引起64KB要被标注成“脏的”--同时原始数据的一个拷贝被写到“snap”卷。这个例子中,我们分配了16MB给快照,因此如果多于16MB的块要被修改,快照就会无效了。
要决定一个快照分区的正确大小,你将不得不推测基于主LV的使用模式、快照要激活的总时间。例如,在午夜,当无人使用系统的情况下,一个几小时的备份可能要求很小的空间。
请注意,快照不是永久的。如果你卸下LVM或重启,它们就丢失了,需要重新创建。
经过我的实验:快照的目的是保持瞬间的数据,而不影响系统的运行。。。(静态备份某一时刻的数据)
相关命令:  lvremove--删除lv
          lvcreate --size 1000M --snapshot --name varsnap /dev/(逻辑卷)
---------------------------------------
应用探讨:
通过 lvm 为一致性备份做快照
假如你的数据在/usr/mysql/var下。。而你的/usr是一个lvm。。
可以通过lvm做一致性快照备份数据。。
lvcreate --size 1000M --snapshot --name varsnap /dev/(逻辑卷)
mkdir /bakfile
mount /dev/vgX/varsnap /bakfile
tar -czvf mysql.tar.gz /bakfile
注:不影响mysql的运行。。。
   
阅读(862) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~