在存储管理中为了实现数据去重和压缩可以利用RHEL中提供的VDO块级别数据虚拟化技术。
VDO技术
Virtual Data Optimizer(VDO)是一种块级别的虚拟化技术,可以利用VDO技术创建压缩并去重过的块存储池,它提供了块级别的数据管理。
- 去重:
VDO检测重复的块并记录对原始块的引用,VDO维护上层使用的逻辑块地址对下层使用的物理块地址的映射 - 压缩:
数据压缩技术通常对于那些不需要在块级别冗余扩展的文件类型很有效,比如日志文件和数据库
VDO的组件
VDO主要由三个组建构成分别是
- kvdo(VDO kernel module)
一个加载到linux设备映射层的内核模块提供去重,压缩和精简块存储卷功能 - uds(UDS kernel module)
一个内核模块来与卷上的UDS(Universal Deduplication Service)索引通信为去重分析数据 - CLI(command line tool)
管理存储的命令行工具
VDO的写入策略
当kvdo接受到请求要写入一块数据到VDO卷上时,首先会检查是否是DISCARD请求或TRIM请求或者要求写入的数据是否为0。如果满足其中之一那么kvdo会更新块映射并立刻响应请求。否则则会给请求分配一个物理块再执行写入策略
-
如果kvdo模式处于同步模式
- 暂时将请求写入的数据写入到一个分配的数据块然后响应请求
- 一旦响应完成,通过计算hash签名来尝试去重数据块,签名会发送到VDO索引
- 如果VDO索引中包含相同的签名,那么kvdo会逐字节对比两个数据块检查是否相同
- 如果相同,kvdo更新映射,逻辑块指向相同的物理块,释放之前分配的物理块
- 如果VDO索引中不包含相同的签名或数据块上的数据实际不同,kvdo更新块映射使得临时的物理块变为永久
-
如果kvdo模式处于异步模式
- 立刻响应请求而不写入数据
- 同样尝试去重数据块
- 如果数据块重复,kvdo更新块映射并释放数据块。否则将请求的数据写入分配的数据块然后更新块映射使其成为永久的
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。