表面上是实验报告,实质上记录的是一大堆踩坑的过程。
一、实验要求
CRIU是一种在用户空间实现的进程或者容器checkpoint 和restore的方法, 从而实现进程或者容器的保存和恢复。 请利用CRIU实现进程和容器的迁移(迁移种类不限),并测试 迁移过程中的性能损耗(如进程停止时间、网络传输时间等)。
二、实验环境配置(重点)
经过测试,该实验真正的重难点在于:Linux版本,虚拟机类型,docker版本,criu版本四者必须全部兼容。
很遗憾的是没有办法方便地查明应该使用什么虚拟机和什么软件版本,只能一个个试。
2.1 实验环境
- 虚拟机类型:Virtual Box
- Linux版本:Ubuntu 18.04 LTS
- CRIU版本:3.17.1
- Docker版本:19.03.0(使用apt-get安装方法时,对应的序列号为5:19.03.0~Ubuntu-bionic)
2.2 虚拟机类型排坑
不要使用wsl2。
经过很多个版本的测试,wsl2,至少在2024年10月12日,绝大部分的Linux版本的docker版本都不能正常运行。
报错原因是cgroup没有挂载,该问题因为wsl2虚拟机的实现问题,我没有找到对应的解决办法。
经过测试能运行docker的wsl-Linux版本:Ubuntu 24.04(官方版本)
cgroup挂载错误导致docker不能正常运行的Linux版本:
- Ubuntu 18.04 LTS(官方版本)
- Ubuntu 20.04 LTS(官方版本)
- CentOS7(手动安装。同时,CentOS7的阿里源会不定期抽风,建议使用网易源)
我建议使用传统的vb,vm等虚拟机,或者直接配置Linux机集群。
2.3 Linux版本
我不推荐使用Ubuntu 22.04 LTS及以上的版本。
原因如下:Ubuntu 22.04 LTS及以上的版本的Docker版本已经来到了20,20及以上的版本号已经对CRIU不支持了(人工测试过)
我建议如果有现成的版本搭配方案时不要轻易尝试其他组合,因为兼容性问题永远是一个会把人折磨崩溃的问题。因此,使用Ubuntu18.04 LTS是最为稳妥的。
2.4 CRIU安装
CRIU可以使用最新版本(虽然很久没更新了)。
我不推荐下载到本地然后在本地编译的方法,我推荐使用CRIU软件包+apt-get的安装方法。
本地编译方法参考
-
https://blog.csdn.net/m0_4634