checkpoint-restore/criu

GitHub: checkpoint-restore/criu

CRIU 是 Linux 平台上实现进程和容器状态冻结、持久化保存与恢复的用户态工具,支持热迁移和断点续跑。

Stars: 3726 | Forks: 723

[![X86_64 GCC Test](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/8fd5bf9eeb004903.svg)]( https://github.com/checkpoint-restore/criu/actions/workflows/x86-64-gcc-test.yml) [![Docker Test](https://github.com/checkpoint-restore/criu/actions/workflows/docker-test.yml/badge.svg)]( https://github.com/checkpoint-restore/criu/actions/workflows/docker-test.yml) [![Podman Test](https://github.com/checkpoint-restore/criu/actions/workflows/podman-test.yml/badge.svg)]( https://github.com/checkpoint-restore/criu/actions/workflows/podman-test.yml) [![CircleCI](https://circleci.com/gh/checkpoint-restore/criu.svg?style=svg)]( https://circleci.com/gh/checkpoint-restore/criu)

## CRIU -- 一个为 Linux 实现检查点/恢复功能的项目 CRIU(代表 Checkpoint and Restore in Userspace,用户空间检查点与恢复)是一个用于 Linux 任务检查点/恢复的实用程序。 使用此工具,你可以冻结正在运行的应用程序(或其部分),并将其作为文件集合检查点保存到硬盘驱动器。然后,你可以使用这些文件将应用程序从冻结点恢复并运行。CRIU 项目的显著特征是它主要在用户空间实现。还有一些其他项目为 Linux 进行 C/R(检查点/恢复),目前 CRIU [似乎是](https://criu.org/Comparison_to_other_CR_projects)功能最丰富且与内核最新特性保持同步的项目。 CRIU 项目(几乎)是一个永无止境的故事,因为我们必须始终紧跟 Linux 内核,以支持其提供的所有功能的检查点和恢复。因此,我们正在寻找各类贡献者——反馈、错误报告、测试、编码、写作等。如果你想参与其中,请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)。 该项目[始于](https://criu.org/History)为 OpenVZ Linux 容器进行实时迁移的方式,但后来发展成为一个更复杂、更灵活的工具。目前它被 OpenVZ、LXC/LXD、Docker 和其他软件使用(或集成其中),该项目得到了社区的巨大帮助,其软件包已包含在许多 Linux 发行版中。 项目主页位于 http://criu.org。此 Wiki 包含了我们拥有的关于 CRIU 的所有知识库。值得从以下页面开始: - [安装说明](http://criu.org/Installation) - [一个简单的使用示例](http://criu.org/Simple_loop) - [更高级的使用示例](https://criu.org/Category:HOWTO) - 故障排除可能很难,可以在[这里](https://criu.org/When_C/R_fails)、[这里](https://criu.org/What_cannot_be_checkpointed)和[这里](https://criu.org/index.php?title=FAQ)找到一些帮助 ### 简单循环进程的检查点和恢复

## 高级功能 由于 CRIU 的主要用途是实时迁移,因此有一个名为 P.Haul 的库。此外,该项目还公开了两个很酷的核心功能作为独立库。它们分别是用于寄生代码注入的 libcompel 和用于 TCP 连接检查点-恢复的 libsoccr。 ### 实时迁移 使用 CRIU 进行真正的[实时迁移](https://criu.org/Live_migration)是可能的,但手动执行所有步骤可能会很复杂。[phaul 子项目](https://criu.org/P.Haul)提供了一个封装了大部分复杂性的 Go 库。该库和 CRIU 的 Go 绑定保存在 [go-criu](https://github.com/checkpoint-restore/go-criu) 仓库中。 ### 寄生代码注入 为了获取正在运行的进程的状态,CRIU 需要让该进程执行一些代码来获取所需信息。为了在不终止应用程序本身的情况下实现这一点,CRIU 使用了[寄生代码注入](https://criu.org/Parasite_code)技术,该技术也可作为一个名为 [libcompel](https://criu.org/Compel) 的独立库使用。 ### TCP 套接字检查点-恢复 CRIU 的功能之一是能够保存和恢复 TCP 套接字的状态而不中断连接。此功能本身被认为是有用的,我们通过 [libsoccr 库](https://criu.org/Libsoccr)提供了它。 ## 许可证 该项目根据 GPLv2 授权(尽管位于 lib/ 目录中的文件为 LGPLv2.1)。images/ 目录中的所有文件均根据 Expat 许可证(所谓的 MIT)授权。请参阅 images/LICENSE 文件。
标签:API接口, CRIU, DNS解析, Docker, LXC, OpenVZ, Podman, 内核交互, 安全渗透, 安全防御评估, 实时迁移, 客户端加密, 客户端加密, 容器, 应用冻结, 开源项目, 恢复, 日志审计, 检查点, 热迁移, 状态保存, 用户空间, 系统工具, 虚拟化, 请求拦截, 运维工具, 进程快照