通过 lvm 为一致性备份做快照
时间:2006-12-12 来源:xiaoliu528
通过 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的运行。。。
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的运行。。。
相关阅读 更多 +