卷级重复数据删除技术 I

关键字与相关解释:

卷(逻辑卷):Logical Volume是由逻辑磁盘形成的虚拟盘,也可称为磁盘分区

快照(LVM方式):Logical Volume Manager是逻辑卷管理的简写,它是Linux环境下对磁盘分区进行管理的一种机制;

块(Block):块(数据块)的大小在硬盘格式化时被指定,一般有1K,2K,4K最常用;

簇(Cluster):块簇是操作系统与硬盘交互的最小数据单元,在Linux系统中称为块,在Windows系统中称为簇;

扇区(Sector):扇区是磁盘中最小的物理存储单位,通常情况下每个扇区的大小是512字节;

位图(Bitmap):是一种非常常用的数据结构。在位图中,每个元素为“0”或“1”,表示其对应的元素不存在或者存在;

        一个块簇只能被一个文件占用,如果逻辑文件大于块簇预设值会有多个块簇,但如果文件小于块簇预设值就会出现内碎片情况。块簇一般预设值为4KB;

        如果块簇设置数值太大会造成大量内碎片,太小则会使读取IO占用变大;

方案存在的问题:

1. 在LVM方案中针对逻辑卷快照的迁移操作过程会导致临时磁盘占用较大,与dd工具耗时较长的复制操作时间;

2. 针对备份逻辑卷快照的逐块扫描生成块簇位图功能设计与验证;(位图方案)

3. 块簇位图在备份链中的合并方案,以及差量识别后的存储端存储内容设计;(存储方案)

方案的备份业务流程:

1. 客户端接收到备份任务,将备份卷执行快照操作后得到快照卷;

针对快照卷进行逐块扫描,得到有效块簇位图信息:

打开快照卷后逐块簇进行遍历,对于数据占用的块簇在相应位图处标识为1,否则用0标识。

对已完成的变更块簇位图进行遍历;

对于位图标识为1的位,根据位图下标计算得出块偏移位置;

从快照卷对应的块偏移位置的扇区读取数据;

将读取数据以及对应的偏移位置进行备份存储;

存储数据的偏移位置是为了后续的恢复操作;

全部遍历并存储后,关闭并删除快照卷;

全量备份完毕;

2. 客户端接收到增备任务,将备份卷执行快照操作后得到快照卷;

扫描快照卷得到临时的变更块簇位图;

将增量快照卷所产生的临时变更块簇位图与持久块簇位图合并,

得到从上次备份到本次增量期间的所有变化块簇信息;

根据合并后的块簇位图,获取所有变化块簇的偏移位置与地址,

从增量快照卷对应的块簇扇区内读取数据,

将读取数据以及对应的偏移位置进行备份存储;

全部遍历并存储后,关闭并删除增量快照卷;

将临时的变更块簇位图替换持久块簇位图,然后删除临时的块簇位图;

增量备份完毕;

实施建议:

网络传输环境较好的情况下,建议一次将源端备份快照压缩或分块传输至存储端后进行操作;

方案的恢复业务流程:

对于全备与增备的恢复流程均为相同流程和操作;

服务端接收到某个时间点的恢复任务,

在服务/存储端针对恢复时间点所保存的有效块簇位图信息索引获得后,

根据位图信息中保存的一系列有效块簇偏移位置信息与相对应保存的数据块簇,

分别将有效块簇位图信息和对应数据发送至客户/源端进行验证与组合恢复操作,

将合并完成后的有效备份卷快照在源端进行挂载并选取或全部恢复;

实施建议:

1. 鉴于服务/存储端的运行资源优于客户端/源端,

建议将恢复过程实现在服务/存储端;

因为卷快照磁盘占用较大,所以建议将组合快照操作放在客户/源端进行;

2. 差异块簇与对应偏移的存储与索引,

暂无设计内容与方案;

新海量场景策略前期需验证内容:

1. 快照操作导致的应用场景资源占用情况;(未验证)

2. 快照是否可以压缩,解压缩后是否影响挂盘使用,压缩率情况;(已验证)

3. 从源端到存储端将快照一次或分块传输;(未验证)

4. 根据位图保存有效块簇数据,是否可以正常恢复与使用;(未验证)

5. 该方案原型使用到的基础技术所涉及内容的可用性与效率;(未验证)

新海量场景策略实施细节分析记录:

1. 对于一次备份任务,备份卷为固定大小,因此映射块簇数量也固定;

2. 第一次完备将所有有效块簇进行备份保存,并保存此次映射位图数组;

3. 整卷块簇散列后,位图标志允许重复冗余,但只存储去重后的块簇数据;

4. 对于位图信息中,相同的有效块簇数据md5也相同,如何标识相同的有效块簇,设计特别标志位或特征字符;(相同输入hash后结果有可能不相同)

5. 算力偏重源端或存储端,取决于快照采集后的压缩传输验证结果,如果对于快照进行压缩有较高的压缩比,则可利用网络传输优势一次性将源端原始数据传送至存储端进行后续的标识与去重操作;

LVM快照验证笔记:

测试环境准备:

1. fdisk /dev/sda

2. n -> e -> +1G ->w 划分扩展分区(大小为1G)

(mkfs.ext4 /dev/sda_n) 格式化新分区(命名为sda_n)

(mount /dev/sda_n /mnt/tmp) 挂载新分区

(/etc/fstab -> /dev/sda_n /mnt/tmp ext4 defautls 0 0) 修改默认挂载

测试过程列表:

1. vgcreate vg_name /dev/sda_n ... 创建vg(可以多个路径)

2. lvcreate -L 1G -n lv_name vg_name 创建lv(逻辑卷大小为1G)

3. mkfs.ext4 /dev/vg_name/lv_name 给lv创建文件系统类型

4. mkdir /mnt/lv_name 创建逻辑卷挂载点

5. mount /dev/vg_name/lv_name /mnt/lv_name 挂载逻辑卷

6. cd lv_name -> touch file{0..9} 在逻辑卷内创建测试文件

7. lvcreate -L 1G -s -n lv_name_snap /dev/vg_name/lv_name 针对逻辑卷创建快照

8. mkdir /mnt/lv_name_snap 创建快照挂载点

9. mount /dev/vg_name/lv_name_snap /mnt/lv_name_snap 挂载快照卷

10. cd lv_name_snap  -> ls -> rm -rf file{0..9} 在快照卷内删除测试文件

11. umount /mnt/lv_name 卸载逻辑卷挂载点

12. umount /mnt/lv_name_snap 卸载快照卷挂载点

13. lvconvert --merge /dev/vg_name/lv_name_snap 合并转换快照

验证测试结果:

1. umount /dev/vg_name/lv_name_snap 卸载快照卷

2. dd if=/dev/vg_name/lv_name_snap | gzip > lv_name_snap.gz 压缩备份快照

(dd if=/dev/hdx of=/path/image)

(dd if=/dev/hdx | gzip > /path/image.gz) (拷贝传输快照压缩文件)

3. gzip -dc /path/image.gz | dd of=/dev/vg_name/lv_name_snap 解压快照验证

(dd if=/path/image of=/dev/hdx) (恢复后再挂载使用快照)

相关网址链接:

扇区,块簇知识点

https://www.cnblogs.com/kerrycode/p/12701772.html

LVM知识点

理解LVM《二》lvm 组件 - 爱码网

快照原理

运维篇-快照基础 – 蓝队云

Linux 快照 (snapshot) 原理与实践(一) 快照基本原理

爱数卷级简述

爱数博客 | AnyBackup 7.0 稳定及高性能的卷级文件备份你get到了吗?

linux卷组管理

linux卷组大小查看,Linux逻辑卷,卷组管理_ZHENGYI佳的博客-CSDN博客

变更块位图技术

更改块跟踪 (Changed Block Tracking, CBT)

GitHub - veeam/blksnap: Nonpersistent block device snapshot with block-level change-tracking capabilities.

Linux内核-块设备

深入理解 Linux 内核---块设备驱动程序_bio_alloc-CSDN博客

借鉴项目

GitHub - datto/dattobd: kernel module for taking block-level snapshots and incremental backups of Linux block devices




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Capricorn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值