使用dmsetup命令生成snapshot ( by quqi99 )

                     使用dmsetup命令生成snapshot 


转载自, http://blog.sina.com.cn/s/blog_4d3833cf0100n68c.html


可以使用如下方法建立snapshottarget 的逻辑设备:
1.      分区并通知系统确认
            #fdisk /dev/sda
            分别创建/dev/sda7 /dev/sda8 /dev/sda9 分区均为1G 空间
            #partprobe
            其中/dev/sda7 /dev/sda8 用来制作镜像目标linear target 逻辑设备,/dev/sda9 用来作为COW 设备。
2.      编写创建/dev/mapper/kevin_linear_dev ,/dev/mapper/kevin_snapshot_base_dev /dev/mapper/kevin_snapshot_dev 三个设备的脚本
    /dev/mapper/kevin_linear_dev 是原始目标设备
    /dev/mapper/kevin_snapshot_base_devsnapshot所需要的中间基础设备,后面会说到它与/dev/mapper/kevin_linear_dev的区别
    /dev/mapper/kevin_snapshot_dev是创建出的快照设备
    将如下代码写入并运行
    #vi kevin_linear_dev.sh
#!/bin/bash
size1=$(blockdev --getsize $1)
size2=$(blockdev --getsize $2 )
echo -e "0 $size1 linear $1 0\n$size1 $size2linear $2 0" | dmsetup create $3
 
    #vikevin_snapshot_base_dev.sh
#!/bin/bash
dmsetup table $1 | dmsetup create $2
 
    #vikevin_snapshot_dev.sh
size=$(blockdev --getsize $1)
CHUCK_SIZE=$3
dd if=/dev/zero of=$2 bs=512count=$CHUCK_SIZE
echo 0 $size snapshot $1 $2 p $3 | dmsetup create$4
3.      创建/dev/mapper/kevin_linear_dev 设备并为其创建文件系统放入文件
            #./kevin_linear_dev.sh /dev/sda7 /dev/sda8kevin_linear_dev
            #mkfs.ext3/dev/mapper/kevin_linear_dev
            #mkdir /mnt/kevin_linear_dev
            #mount /dev/mapper/kevin_linear_dev/mnt/kevin_linear_dev
            #cp /var/log/message/mnt/kevin_linear_dev/
4.      创建/dev/mapper/kevin_snapshot_base_dev 设备,并检测。
            #./kevin_snapshot_base_dev.sh kevin_linear_devkevin_snapshot_base_dev
            #mkdir /mnt/kevin_snapshot_base_dev
            #mount /dev/mapper/kevin_snapshot_base_dev/mnt/kevin_snapshot_base_dev
            #diff -qur /mnt/kevin_snapshot_base_dev/mnt/kevin_linear_dev
            你会发现/mnt/kevin_snapshot_base_dev 目录中的文件和/mnt/kevin_linear_dev 目录中的文件一致
            #cp /etc/resolv.conf/mnt/kevin_linear_dev
            #diff -qur /mnt/kevin_snapshot_base_dev/mnt/kevin_linear_dev
            即时修改后/mnt/kevin_snapshot_base_dev 目录中的文件和 /mnt/kevin_linear_dev 目录中的文件就不同步了!
5.      同步/dev/mapper/kevin_linear_dev /dev/mapper/kevin_snapshot_base_dev 设备
            # umount /mnt/kevin_linear_dev
            # umount /mnt/kevin_snapshot_base_dev
            卸载设备的挂接目录
            # dmsetup table kevin_linear_dev | dmsetup reloadkevin_snapshot_base_dev
            # dmsetup resumekevin_snapshot_base_dev
            #mount /dev/mapper/kevin_linear_dev/mnt/kevin_linear_dev
            #mount /dev/mapper/kevin_snapshot_base_dev/mnt/kevin_snapshot_base_dev
            #diff -qur /mnt/kevin_snapshot_base_dev/mnt/kevin_linear_dev
            经过reload rusume 后再次挂接设备就保持了同步
6.      创建/dev/mapper/kevin_snapshot_dev 设备并挂接
            #umount /mnt/kevin_snapshot_base_dev
            #umount /mnt/kevin_linear_dev
            #dmsetup suspend kevin_linear_dev
            为了保证数据完整性保证目标设备没有I/O 操作,需要先将目标设备挂起
            #./kevin_snapshot_dev.sh/dev/mapper/kevin_snapshot_base_dev /dev/sda9 8 \kevin_snapshot_dev
            #dmsetup resume kevin_linear_dev
            恢复kevin_linear-dev 设备后设备就可以正常运了
            #mkdir /mnt/kevin_snapshot_dev
            #mount /dev/mapper/kevin_snapshot_dev/mnt/kevin_snapshot_dev
7.      测试和同步快照
            #mount /mnt/mapper/kevin_linear_dev/mnt/kevin_linear_dev
            #diff -qur /mnt/kevin_linear_dev/mnt/kevin_snapshot_dev
            在没有更改任何文件的情况下快照和数据源是一致的
            #cp /etc/rc.local/mnt/kevin_snapshot_dev
            #diff -qur /mnt/kevin_linear_dev/mnt/kevin_snapshot_dev
            当快照被修改后,写入或修改的数据将存入COW 设备,而数据源保持不变
            #mount /dev/mapper/kevin_snapshot_base-dev/mnt/kevin_snapshot-dev
            这里会报错,因为/dev/mapper/kevin_snapshot_base_dev 已经被加入 /dev/mapper/kevin_snapshot_dev ,不可以直接使用了。如果想查看和导出数据源,就需要用到下一节的snapshot-origin 设备
            snapshot 的好处是快速建立备份和数据修改分支,同时如果数据源是直读设备(例如CD/DVD ),我们需要暂时修改其少量数据时snapshot 也非常有效。
8.      当我们不在需要使用以上三个设备后,我们需要卸载和删除这个设备
            # dmsetup remove kevin_snapshot_dev
            # dmsetup remore kevin_linear_dev
            # dmsetup remorekevin_snapshot_base_dev

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值