在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

相关推荐
小鱼仙官1 小时前
Ubuntu C++ NTP校时程序
linux·c++·ubuntu
CHHH_HHH2 小时前
【Linux系统篇】深入解析Linux文件系统:从磁盘寻址到软硬链接
linux·服务器·开发语言·后端·ubuntu
晨枫阳18 小时前
@changesets/cli是什么?哪些情况下需要使用?怎么使用
linux·运维·ubuntu
hkNaruto1 天前
【Linux】Ubuntu 22.04 LTS GNOME 原生远程桌面配置:告别vnc、nomachine
linux·运维·ubuntu
Eloudy1 天前
Ubuntu 22.04 从源码编译安装 ROS 2 Jazzy 笔记
linux·笔记·ubuntu
云空2 天前
《XUbuntu 终端完整命令大全》
linux·前端·chrome·ubuntu·xubuntu
北城笑笑2 天前
Server 18 ,Nginx + Vite 前端部署排错实战:从 `/api/gpt/chat` 404 到 9012 后端服务的完整定位过程
linux·运维·前端·nginx·ubuntu·vue
小小的木头人2 天前
Ubuntu 20.04 离线安装最新版 Firefox 浏览器
ubuntu·firefox
时空无限3 天前
ubuntu dpkg -l 输出第一列解释
linux·运维·ubuntu
叮咚侠3 天前
Ubuntu 24.04 安装zabbix-agent 5.0 服务
linux·ubuntu·zabbix·zabbix-agent