为什么无法跨centos、ubuntu、rocky linux 发行版本进行系统升级?
本文原地址: http://feitianzhi.com/boke/index.php/archives/56/
转载请注明出处,有疑问或错误请发邮件到xiaozhi@fslib.org
背景
linux分为很多发行版本,发行版本的内核可以升级,比如centos7可以使用kernel 4.*,5.的内核(官方默认为3.),但发行版本间确无法升级,比如centos7不能升级为ubuntu16.04,切换发行版本只能重装系统,甚至在同一发行版本间也不能升级,比如centos 8无法升级为rocky linux 9;
原因分析
linux发行版本虽都使用同一内核,但应用层的构架没有统一标准,内存的配置文件也是千差万别,本处以ssh连接为例,在centos 8中的ssh_keys用户组号为982,而rocky linux 9中的ssh_keys用户组号为994,即使其他数据完全一样,仅这一区别,升级后直接导致ssh服务不可用;
版本不能升级的影响
- 驱动问题,新硬件的驱动不能支持老版本,如intel的千兆wifi芯片,ax200、ax201、ax210、ax211只能支持5.2以上的内核,centos7(3.*内核),centos8(4.*内核)无法使用,虽然可以升级内核解决,但非官方原版,其稳定性与兼容性无法保证,使用官方原版可以共享他人成果,bug修正;
- 生态问题,linux发行版本有其支持维护生命周期,比如centos8于2021年12月停止维护,停止维护后dnf(yum)安装软件包受限,运维成本增加,新版本的应用软件也不会再针对centos8进行测试;
- 软件臃肿,最新的软件基于rocky linux9适配,但因项目存在centos7、centos8、ubuntu16.04等历史系统,软件不得不进行适配,增加工作量,同时需要大量的测试(开发人员需要熟悉多种发行版本,并针对调整);
- 持续消耗的运维成本,历史遗留的老系统需要持续维护(除非解约)或重新装机(每3年一次系统更替,远程机票出差等运维成本高昂);
如何实现跨linux发行版本升级
方案一:差异升级 | 方案二:镜像升级 | |
---|---|---|
描述 | 找出原系统A与目标系统B之间的差异,写脚本进行修改; 如ssh_keys用户组号变动需要修改group数据,并把与之相关的文件用户组号进行修改(有哪些相关文件?头疼); 典型商业案例:Redhat服务,redhat公司可为付费用户提供此升级方案 | 原系统A为A镜像,目标系统B为B镜像,系统升级即为镜像切换,只需继承网路配置和root密码(属于配置数据),其余部分之间替换 |
能否安全升级 | 因glibc等核心库的依赖(如只替换部分断电,将导致系统无法启动),难以安全升级 | 可采用双镜像设计,切换时先经行校验,实现安全升级 |
能否回滚 | 脚本依赖A与B之间的差异,升级与回滚逻辑不一致,难以实现 | 回滚也是镜像切换,与升级逻辑一致,可升级即可回滚 |
结论 | 适合redhat等原创linux的公司 | 适合做应用的公司,继承开源版本系统的所有功能,定制自己需要的应用部分 |
期望的方案
- 软件开发只需要考虑特定版本进行适配,如原来基于centos8开发的应用,现在换rocky linux9系统后,软件仅需要考虑rocky linux9系统,删除与centos8相关的代码,无须兼容centos8;
- 系统可以跨发行版本直接升级,包含引导、内核、驱动、虚根、应用软件;比如原来是centos8系统(源系统为centos8集成好所有应用的一个镜像),一键升级为rocky linux9(新系统是rocky linux9集成好所有应用的一个镜像);
- 系统可以跨发行版本进行降级;比如系统已升级为最新版本的系统rocky linux9,但发现某应用A工作不正常(可能A未适配好rocky linux9),此时可以一键降级为centos8系统(应用A也降级为centos8适配过的版本),测试A的工作效果(让应用A立即恢复正常或测试A的工作效果以便在rocky linux9调整应用A,让应用A在rocky linux9中工作正常);
- 系统升级保证安全,允许升级过程断电,升级过程中网络故障自动校正(比如某软件包,驱动传输过程中被篡改,系统能自动识别,并拒绝升级);
- 故障恢复机制,应用运行过程中会产生临时文件,也可能因bug修改系统中关键文件,如不适当修改/etc中文件、修改驱动导致系统运行故障;故障恢复机制让系统具备系统故障时重启后自动恢复自初始状态(除应用指定的数据目录、网络配置、系统密码外的所有目录与文件恢复自初始状态),保证系统重启肯定可以正常运行;
小雉系统解决方案
“小雉系统”是按以上需求的设计的一个镜像升级解决方案,适合ubuntu、centos、rocky linux、debian等linux发行版本;“小雉系统”仅是提供一个打包方案,无须重新编译原版系统的任何代码,稳定性、驱动、使用方法均与原发行版本完全一致(因“小雉系统”只提供打包方案,并不定义任何启动逻辑);
“小雉系统”解决方案开源,项目地址:
github https://github.com/feitianzhi/xiaozhios
gitee https://gitee.com/feitianzhi/xiaozhios
猜您可能喜欢
*小雉系统安装: http://www.feitianzhi.com/boke/index.php/archives/11/ *
*小雉系统安装包制作: http://www.feitianzhi.com/boke/index.php/archives/50/ *
*小雉系统网络配置:http://www.feitianzhi.com/boke/index.php/archives/15/ *
*小雉系统硬盘配置:http://www.feitianzhi.com/boke/index.php/archives/16/ *
*小雉系统远程升级:http://www.feitianzhi.com/boke/index.php/archives/14/ *
*使用Google Authenticator为小雉系统增加动态密码功能:http://www.feitianzhi.com/boke/index.php/archives/17/ *
*小雉配置工具:http://www.feitianzhi.com/boke/index.php/fslib-config.html *
*资源下载:http://www.feitianzhi.com/boke/index.php/ziyuanxiazai.html *