2025年chronyc 手动同步(chrony查看同步状态)

chronyc 手动同步(chrony查看同步状态)对于 Linux 中的数据 按照层级从上到下大致分为 3 类 应用数据 文件系统数据 块设备 扇区 数据 本次介绍 Linux 下最通用的文件级同步和块级同步技术 需要实时高效地数据同步 就是需要实时能监控到系统的哪些文件发生变动 磁盘的哪些扇区数据 BIO 发生变动 Inotify

大家好,我是讯享网,很高兴认识大家。



对于Linux中的数据,按照层级从上到下大致分为3类, 应用数据、文件系统数据、块设备(扇区)数据。本次介绍Linux 下最通用的文件级同步和块级同步技术。

需要实时高效地数据同步,就是需要实时能监控到系统的哪些文件发生变动,磁盘的哪些扇区数据(BIO)发生变动。

Inotify

Inotify是Linux中用于监控文件系统变化的API,自Linux 2.6.13开始集成到Linux内核中,该API可以实现近似实时地监控目录或文件发生的变化。它用于监控文件系统,比如删除、读取、写入等操作,当发生对应事件时,则会触发 inotify,将对应事件通知给应用程序。

可参考: Linux C 使用 inotify 监控文件或目录变化 - 她爱喝水 - 博客园

Inotify-tools

基于Inotify机制的Linux软件实现为inotify-tools,基于该工具可方便实现如下功能:

  • 配置变更自动重载
  • 监控变化的文件或目录,实时更新
  • 监控文件访问次数
  • 文件实时同步(备份)

Inotify-tools安装

推荐用源代码的方式安装 inotify-tools, inotify-tools 安装与使用 - Documentation

源码:https://github.com/inotify-tools/inotify-tools

文件同步方式

inotify-tools工具有两个命令,分别是:

  • inotifywait:用于持续监控,实时输出结果。 它通常与 rsync 增量备份工具一起使用。 因为它是对文件系统的监控,所以可以搭配脚本一起使用。
  • inotifywatch:用于短期监控,任务完成后输出结果。

块级别同步,也可以叫磁盘同步。基于磁盘实时同步机制,可实现通用的主机迁移、双机热备、异地容灾等能力。笔者之前开发的P2V/V2V 项目也是基于此技术。

块层IO(BIO)

这里简单介绍下Linux IO,下图是经典的Linux IO Stack


讯享网

我们简单说下结论:

对于Linux 磁盘IO流程,所有的块IO都需要经过通用块层(Block Layer)处理,这一层主要实现BIO调度逻辑,比如将一个大BIO请求拆分为多个小的BIO请求,将相邻的BIO请求合并,实现各种BIO调度等。

Blktrace

和文件系统一样,Linux提供了块设备块BIO的事件监听,Blktrace就是Linux 下对块IO监控的工具,常用于分析块设备读写性能问题。该工具可用于获取块设备BIO的详细情况,具体功能:(可参考: Linux命令拾遗-使用blktrace分析io情况-经典中的经典 - 寻梦99 - 博客园)

  • 读写进程名
  • 进程号、
  • 执行时间
  • 读写物理块号、
  • 读写块大小等

Blktrace安装

推荐使用源码编译安装blktrace

源码:kernel/git/axboe/blktrace.git - blktrace/parse repo

块级同步方式

可使用blktrace监控块设备变化的物理块号(LBA地址+偏移长度),可实时同步变化的物理块号到目标块设备。

需要注意的是,块级别同步仅能保证落盘的数据同步。如果在块设备之上存在文件系统和应用程序,由于文件系统延迟预留等问题,那么在目标块设备上的应用数据的完整性将可能无法保证。

小讯
上一篇 2025-04-29 09:45
下一篇 2025-04-19 16:05

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/189109.html