Linux下的三种快照实现方法


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/lv01
Logical 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打补丁

1)将patch文件放在Linux内核的根部录下,以以下方式打补丁
patch -p1 < dm-bufio.patch //将所有的文件dapatch

4)注意将LANG=C,然后开始编译内核
make menuconfig;
make all ;
make modules_install ;
make install ;
reboot

内核编译完成

2. 目前可以测试device-mapper下的multisnap已经可用了,测试如下
//清空目前的逻辑卷
[root@localhost ~]# dd if=/dev/zero of=/dev/mapper/vg1-ms_base bs=4096 count=1
[root@localhost ~]# dd if=/dev/zero of=/dev/mapper/vg1-ms_snapshot bs=4096 count=1
//加载必须的模块、开机记得加载这两个模块
[root@localhost ~]# modprobe dm-store-mikulas
[root@localhost ~]# modprobe dm-multisnapshot
//准备快照卷
[root@localhost ~]# echo 0 `blockdev --getsize /dev/mapper/vg01-ms_base` multisnapshot /dev/mapper/vg01-ms_base /dev/mapper/vg01-ms_snapshot 32 0 mikulas 0|dmsetup create ms
//> multisnapshot <origin> <COW device> <chunksize><generic args> <shared COW store type><snapshot ids>
//所以32应该是chunksize | 0 应该是 通用参数
> Table line arguments:
> - <origin> : origin device
> - <COW device> : shared COW store device
> - <chunksize> : chunk size in 512b sectors
> - <# generic args> : number of generic arguments
> - <generic args> : generic arguments
> sync-snapshots --- synchronize snapshots according to the list
> preserve-on-error --- halt the origin on error in the snapshot store
> - <shared COW store type> : shared COW store type
> mikulas --- provided by the 'dm-store-mikulas' module
> daniel --- provided by the 'dm-store-daniel' module
> - <# shared COW store args> : number of arguments for shared COW store type
> - <shared COW store args> : shared COW store arguments
> cache-threshold size --- a background write is started
> cache-limit size --- a limit for metadata cache size
> If 'sync-snapshots' was specified:
> - <# snapshot ids> : number of snapshot ids
> - <snapshot ids> : snapshot ids in desired sync order
> Once this is done, you should no longer access /dev/sda and
  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值