Linux下的三种快照实现方法
来源:互联网 发布:龙之信条女性捏脸数据 编辑:程序博客网 时间:2024/06/17 22:32
1.使用LVM2工具对逻辑卷进行快照管理(最先选择的快照方式)
优点:独立快照,对数据的保护性最好,各快照间没有牵制关系
缺点:需要对每个快照分配空间,对系统空间浪费大,老的快照很可能由于超过可容修改内容而出错
*该方法只需要升级LVM2到最新,若需要进行快照还原的话,Linux内核保证2.6.33以上
2.使用device-mapper层进行multisnap快照管理(比较底层的快照方式)
优点:关联快照,节省空间
缺点:各快照间具有关联性,只可以删除最老的快照,管理型差,不能进行快照合并(只可以通过dd等方式还原快照内容)
*该方法需要对linux内核打补丁,并重新编译
3.使用LVM2管理device-mapper层的multisnap快照(对用户友好、对底层告诉节省空间)
*该方法需要对2.6.33以上Linux内核打补丁,重新编译,对LVM2工具打补丁重新编译
==========================================================================================================================
通过介绍第三种快照方式来统一
命令使用:
[root@localhost ~]# lvcreate -s --sharedstore mikulas -L 512M -c 64K /dev/vg02/lv01Logical volume "lv01-shared" created
命令相当简单,但是你在一台普通的LINUX上是不能成功的
环境:
1. 2.6.33及以上内核的LINUX
2. 对该内核进行multisnap补丁
3. 对LVM2工具进行multisnap补丁
具体操作步骤:
1.下载Linux内核,我实现版本内核为2.6.34 www.kernel.com
2.下载 multisnap补丁(我使用的是r18)http://people.redhat.com/mpatocka/patches/kernel/new-snapshots/
3.下载 lvm2 源码(我使用的是lvm2.02.60)
4.下载 lvm2 补丁(使用的是2.02.60的补丁) http://people.redhat.com/mpatocka/patches/userspace/new-snapshots
一.首先对Linux打补丁
# new snapshotsdm-multisnap-common.patchdm-bufio.patchdm-multisnap-mikulas-headers.patchdm-multisnap-mikulas-alloc.patchdm-multisnap-mikulas-blocks.patchdm-multisnap-mikulas-btree.patchdm-multisnap-mikulas-commit.patchdm-multisnap-mikulas-delete.patchdm-multisnap-mikulas-freelist.patchdm-multisnap-mikulas-io.patchdm-multisnap-mikulas-snaps.patchdm-multisnap-mikulas-common.patchdm-multisnap-mikulas-config.patchdm-multisnap-daniel.patch
3)修改一下
![](http://img.my.csdn.net/uploads/201210/10/1349863299_8489.png)
make menuconfig;
make all ;
make modules_install ;
make install ;
reboot
内核编译完成
2. 目前可以测试device-mapper下的multisnap已经可用了,测试如下
3.重新编译LVM2先对LVM2打补丁,方式还是和给LINUX打补丁类似
# Tested to apply (and work) on: lvm2.git v2_02_64lvm-merge-log-print.patch# Shared snapshotslvm-refactor-exception-type.patchlvm-shared-lvcreate.patchlvm-shared-add-argument-to-vg_add_snapshot.patchlvm-shared-new-segment-type.patchlvm-shared-fixed-name.patchlvm-shared-snapshot-flag.patchdevice-mapper-shared-target.patchlvm-shared-make-pointer-from-origin-to-shared-snapshot.patchlvm-shared-activate.patchlvm-shared-handle-activation-error.patchlvm-shared-snapshot-segment-type.patchlvm-shared-allow-no-size.patchlvm-shared-test-free-space-after-setting-segtype.patchlvm-shared-dev-manager.patchlvm-shared-create-snapshot.patchlvm-shared-no-snapshot-of-snapshot.patchlvm-shared-delete-message.patchlvm-shared-dont-deactivate-origin-when-deactivating-snapshot.patchlvm-shared-deactivate-snapshots-with-origin.patchlvm-shared-remove-snapshots-with-origin.patchlvm-shared-activate-shared-origin-with-the-snapshot.patchlvm-shared-dont-shrink-shared-volume.patchlvm-shared-noexplicit-segment.patchlvm-dont-merge-shared-store.patchlvm-last-seg.patchlvm-shared-resize-virtual-snapshot.patchlvm-shared-cleanup-on-activate.patchlvm-shared-status.patchlvm-shared-status-percent.patchlvm-shared-snapshot-of-snapshot.patch# Patches by snitzer@redhat.com:lvm-shared-additional-wrappers.patchlvm-shared-eliminate-shared_snapshot-in-lv.patchlvm-shared-vorigin-segv-fix.patchlvm-shared-add-ACCESS_HIDDEN_LV-flag.patch# by Mikulaslvm-refactor-chunksize-validation.patchlvm-shared-big-chunksize.patchlvm-merge-function-onactivate.patchlvm-shared-merge.patchlvm-shared-merge-dont-delete.patch
===========================================================================================================================================
可能的错误
lvcreate -s --sharedstore mikulas -c 64k -L 512M /dev/vg01/lv01
lvcreate:无法识别的选项"--sharedstore"
Error during parsing of command line
解答:重新给LVM打补丁并编译LVM工具,如上问3
WARNING: Unrecognised segment type multisnapshot
Cannot update volume group vg02 with unknown segments in it!
lvcreate: relocation error: lvcreate: symbol dm_tree_node_add_snapshot_shared_target, version Basenot definedin file libdevmapper.so.1.02 with link time reference
解答:如果是64位的机器,需要将编译完的lvm同时不知道lib64下,系统使用的是 /lib64/下的libdevmapper.so.1.02 ,那里并没被更新,从 /lib/拷过来就行了
- Linux下的三种快照实现方法
- Liunx 环境下vsftpd的三种实现方法
- .net框架下实现自动化测试的三种方法
- Linux 下设置环境变量的三种方法
- linux 下找回密码的三种 方法
- Linux操作系统下的三种Java环境配置方法
- linux下环境变量设置的三种方法
- linux下环境变量设置的三种方法
- linux下修改.bash_profile立即生效的三种方法
- Linux下查看磁盘挂载的三种方法
- Linux操作系统下配置环境变量的三种方法
- linux下修改.bash_profile立即生效的三种方法
- Linux操作系统下配置环境变量的三种方法
- Linux下设置环境变量的三种方法
- linux下配置环境变量的三种方法
- Linux下查看磁盘挂载的三种方法
- linux 下找回密码的三种 方法
- linux下修改.bash_profile立即生效的三种方法
- 关于js里面的call方法
- 淡定人生,享受平静
- android 4.0.3 usb插拔提示音播放问题分析
- DBUtil 增删改 (3)
- CSS之Position详解
- Linux下的三种快照实现方法
- VCL 窗口函数注册机制研究手记,兼与 MFC 比较(转)
- spring自动扫描java类(context:component-scan)
- RRDtool
- union共用体
- 博文共赏:也谈大公司病2——减少错误不等于增加成功
- poj 1258 最小生成树 prim+优先队列
- 合并排序算法
- 实现DIV层内的文字垂直居中