读研的时候做的是容器,便接触过criu,同门师兄还写过几篇源码分析的文章,工作后参与的项目也与它有关。迄今为止自己对criu进行二次开发也有一年了,写点东西给它呗。
介绍
criu完全在用户空间实现,不依赖特定的Linux核模块,它能够冻结正在运行中的应用,扫描该进程的状态与资源并将其记录到文件中;之后criu便可以利用这些文件恢复应用。criu的功能是平台相关的,只能在Linux下使用。并非Linux内核提供的所有功能criu都可以支持,criu采用白名单的方式支持能够被保存、恢复的进程状态与资源,对于有状态的资源,比如TCP链接,需要在内核中定制一些特别的功能以恢复这些资源。