在Ubuntu中安装CRIU

CRIU

CRIU,全称checkpoint/restore in userspace,是运行在Linux操作系统上的一个软件工具,在用户空间实现checkpoint/restore功能。

使用CRIU可以记录一个正在运行的程序,并且checkpoint到程序关联的一系列文件,然后用这些文件在任何主机上重新恢复备份的程序。

源码地址:https://github.com/checkpoint-restore/criu

CRIU特性

  • 热迁移(live migration)

热迁移,又叫动态迁移、实时迁移,即对程序或者虚拟机的保存/恢复。通常是将整个虚拟机的运行状态完整的保存下来,同时可以快速的恢复到原有硬件平台或者是不同的硬件平台上。整个过程用户不会察觉到程序/虚拟机的变化。

实施热迁移的原理就是在用户态或者内核态层面实现对进程的checkpoint/restore。

  • 代码动态注入(parasite code injection)

针对正在运行的进程,在不杀死进程的情况下,利用代码动态注入技术获取当前进程的相关信息。

  • TCP sockets checkpoint-restore

在不破坏一个TCP链接的情况下,备份和恢复它的状态。可以通过它封装的libsoccr库单独使用。

CRIU实现原理

CRIU的基本分为两个过程,checkpoint和restore。

checkpoint

利用ptrace机制完成 特殊代码---动态注入---收集---存储

在checkpoint过程中,将criu进程称为dumper进程,将要备份的进程称为dumpee进程。

checkpoint过程,CRIU主要通过ptrace机制把一段特殊代码动态注入到dumpee进程并运行,收集dumpee进程的所有上下文信息,然后CRIU把这些信息按功能分类存储为一个个的镜像文件。

Restore

恢复就是执行 解析---恢复---运行的过程

Restore过程,CRIU解析checkpoint过程产生的镜像文件,以此来恢复备份前的状态,让程序从备份前的状态继续运行。

CRIU的安装

问题:在Ubuntu中安装CRIU时,以22.04版本为例,直接sudo apt install criu后,使用criu --version查看版本得到的是16.1。在checkpoint进行备份之后,使用restore进行恢复时,会出现Signal 11,也就是段错误------Segment Fault,所以需要对CRIU进行升级。

升级(安装高级版本)的命令分为四部分:

  1. 将 OpenSUSE Build Service 上的 CRIU(Checkpoint/Restore In Userspace)开发工具仓库添加到 Ubuntu 系统的软件源列表中;
  2. 下载并添加该软件源的 GPG 公钥,用于验证从该仓库下载的软件包的完整性和真实性;
  3. 完成更新。apt 会从新添加的 CRIU 仓库获取软件包列表,并能够验证其签名;
  4. 安装CRIU。

对于 xUbuntu 25.04,运行以下命令:

复制代码
echo 'deb http://download.opensuse.org/repositories/devel:/tools:/criu/xUbuntu_25.04/ /' | sudo tee /etc/apt/sources.list.d/devel:tools:criu.list
curl -fsSL https://download.opensuse.org/repositories/devel:tools:criu/xUbuntu_25.04/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/devel_tools_criu.gpg > /dev/null
sudo apt update
sudo apt install criu

对于 xUbuntu 24.04,运行以下命令:

复制代码
echo 'deb http://download.opensuse.org/repositories/devel:/tools:/criu/xUbuntu_24.04/ /' | sudo tee /etc/apt/sources.list.d/devel:tools:criu.list
curl -fsSL https://download.opensuse.org/repositories/devel:tools:criu/xUbuntu_24.04/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/devel_tools_criu.gpg > /dev/null
sudo apt update
sudo apt install criu

对于 xUbuntu 23.04,运行以下命令:

复制代码
echo 'deb http://download.opensuse.org/repositories/devel:/tools:/criu/xUbuntu_23.04/ /' | sudo tee /etc/apt/sources.list.d/devel:tools:criu.list
curl -fsSL https://download.opensuse.org/repositories/devel:tools:criu/xUbuntu_23.04/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/devel_tools_criu.gpg > /dev/null
sudo apt update
sudo apt install criu

对于 xUbuntu 22.04,运行以下命令:

复制代码
echo 'deb http://download.opensuse.org/repositories/devel:/tools:/criu/xUbuntu_22.04/ /' | sudo tee /etc/apt/sources.list.d/devel:tools:criu.list
curl -fsSL https://download.opensuse.org/repositories/devel:tools:criu/xUbuntu_22.04/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/devel_tools_criu.gpg > /dev/null
sudo apt update
sudo apt install criu

对于 xUbuntu 21.10,运行以下命令:

复制代码
echo 'deb http://download.opensuse.org/repositories/devel:/tools:/criu/xUbuntu_21.10/ /' | sudo tee /etc/apt/sources.list.d/devel:tools:criu.list
curl -fsSL https://download.opensuse.org/repositories/devel:tools:criu/xUbuntu_21.10/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/devel_tools_criu.gpg > /dev/null
sudo apt update
sudo apt install criu

对于 xUbuntu 21.04,运行以下命令:

复制代码
echo 'deb http://download.opensuse.org/repositories/devel:/tools:/criu/xUbuntu_21.04/ /' | sudo tee /etc/apt/sources.list.d/devel:tools:criu.list
curl -fsSL https://download.opensuse.org/repositories/devel:tools:criu/xUbuntu_21.04/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/devel_tools_criu.gpg > /dev/null
sudo apt update
sudo apt install criu

对于 xUbuntu 20.04,运行以下命令:

复制代码
echo 'deb http://download.opensuse.org/repositories/devel:/tools:/criu/xUbuntu_20.04/ /' | sudo tee /etc/apt/sources.list.d/devel:tools:criu.list
curl -fsSL https://download.opensuse.org/repositories/devel:tools:criu/xUbuntu_20.04/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/devel_tools_criu.gpg > /dev/null
sudo apt update
sudo apt install criu

参考链接:https://software.opensuse.org/download.html?project=devel%3Atools%3Acriu&package=criu

相关推荐
农民小飞侠3 小时前
SandboxFusion搭建教程
linux·ubuntu
shandianchengzi4 小时前
【记录】Ubuntu26|通过网页和ydotool用手机远程输入文本到电脑上,方便接入手机上优越的语音输入法
ubuntu·手机·工具·输入·软件·输入法
shandianchengzi4 小时前
【记录】Claude Code|Ubuntu26给Claude Code新增任务消息提示音
运维·服务器·ubuntu·ai·大模型·音频·claude
大明者省6 小时前
Ubuntu Python 部署终极版教程
开发语言·python·ubuntu
承渊政道6 小时前
Linux系统学习【进程控制:进程创建、终止与等待、进程程序替换、自主shell命令行解释器详解】
linux·服务器·c++·学习·ubuntu·bash·远程工作
大明者省7 小时前
CentOS 与 Ubuntu Python 部署差异
笔记·python·ubuntu·centos
andlbds1 天前
解决Ubuntu20.04进入系统卡死在厂商Logo界面问题
linux·ubuntu
MIXLLRED1 天前
解决: Ubuntu 22.04上树莓派4B扩展板ROS2兼容性修复指南
linux·ubuntu·树莓派
QFIUNE1 天前
使用 MMseqs2 计算多个 DTI 数据集的蛋白序列相似度
linux·python·ubuntu