在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

相关推荐
zhangrelay12 小时前
ROS项目设计案例智能大模型正经乱答案例
linux·笔记·学习·ubuntu·机器人
大侠归来14 小时前
Ubuntu 搭建 APUE 环境:从源码编译到第一个示例跑通
linux·运维·ubuntu
_smart_boy__17 小时前
I.MX6U开发板Uboot无法ping Ubuntu问题解决方案(二)
linux·运维·ubuntu
android阿杜18 小时前
Ubuntu 26.04 LTS 系统每次重启后屏幕亮度都会增加一点
linux·运维·ubuntu
浪淘沙jkp1 天前
ComfyUI全方位指南(4)LTX-2.5 ComfyUI文生视频尝鲜,显卡会OOM吗?
ubuntu·ai作画·文心一言·gpu算力·ltx
encoderlee1 天前
ubuntu server 如何播放视频显示网页
linux·ubuntu·音视频·树莓派·ubuntu server·arm嵌入式
FPGA小徐1 天前
Ubuntu 22.04 安装 Miniconda、PyTorch 与 YOLOv8 并完成 CPU 推理
pytorch·yolo·ubuntu
wdfk_prog1 天前
Wi-Fi Direct 教程 05:control socket 与 eloop——P2P_FIND 怎样进入 wpa_supplicant 命令解析器
运维·服务器·后端·网络协议·ubuntu·p2p·wifi-direct
ZMacros1 天前
Live-build方法构建debian和ubuntu
linux·ubuntu·debian
向成科技2 天前
XC3576H工控主板|深度适配Ubuntu 26.04 LTS,释放边缘AI与工业开发新潜能
linux·人工智能·ubuntu·机器人·硬件·主板·边缘ai