recientemente 新闻发布 Linux内核的创建者, “ Linus Torvalds”被纳入核心分支 (基于5.4版的形成) dm-clone模块的实现 实施新的控制器 基于Device-Mapper。
这个新建议 用于Linux内核 将允许您克隆现有的块设备。 该模块允许创建基于本地的副本 可以在克隆过程中写入的只读块设备上。
作为建议的Linux内核模块的典型应用 “ Dm-clone”是指以只读模式和I / O处理方式对远程文件设备进行网络克隆 具有较长延迟的设备,将其传输到支持快速记录和处理请求的快速本地设备。
用它 提供挂载克隆设备并立即开始使用它的功能 创建之后,无需等待数据传输过程完成。
另一方面,信息复制将在后台继续进行,与访问新设备时生成的输入/输出并行。
dm-clone的主要用例是将潜在的远程延迟,只读文件类型锁定设备克隆到可写的主类型设备上。
例如 dm-clone可用于还原附加的存储备份 通过基于SSD或NVMe的本地存储上的NBD,光纤通道,iSCSI和AoE等协议可连接到网络。
dm-clone代码针对其大小与块大小(默认为4K)匹配的小型随机写入进行了优化。
在克隆过程中,读请求将导致直接从克隆设备请求数据,而影响尚未同步区域的写请求将被延迟,直到未计划的请求块加载完成(用于记录的加载操作)相关的区块会立即开始)。
通过“丢弃”操作删除的块将从复制过程中排除(安装后,用户可以执行“ fstrim / mnt / cloned -fs”,以避免复制FS中未使用的块)。
信息 关于已加载块中的更改和数据 它们存储在单独的本地元数据表中。
克隆完成后,用户会收到源设备的完整工作副本,其中反映了自克隆开始以来所做的所有更改。
可以在同步后删除带有克隆元数据的表,方法是将其替换为直接将数据反映到新设备的行表。
与基于Unionfs和OverlayFS的解决方案的主要区别在于dm-clone在块设备级别上运行,而不管此设备上使用的文件系统如何,并且dm-clone构成源设备的完整副本,并且不施加附加层。被跟踪。
与dm-mirror不同,dm-clone模块最初设计为仅在只读模式下与原始节一起使用,而无需转换写入操作。
在dm快照中,不会创建完整副本,也不支持后台副本。 在dm-cache中,不会创建完整副本,转发写操作,并将工作减少到缓存命中。 最接近的功能是dm-thin。
dm-clone使用dm-kcopyd将部分源设备复制到目标设备。 默认情况下,将发出大小等于区域大小的复制请求。
“ hydration_batch_size <#regions>”消息可用于调整这些复制请求的大小。 增加水合处理批次的大小会导致dm-clone尝试将连续区域分组在一起,因此我们批量复制了来自许多区域的数据。
数据来源: https://git.kernel.org