【摘要】企业在推动国产化进程时,需选择一款主流、稳定且安全的服务器操作系统作为其系统软件。在产品投入实际生产环境前,对上游软硬件的适配情况有深入了解至关重要。本文将重点介绍银河麒麟高级服务器操作系统V10(以下简称麒麟V10)的软件适配情况,结合实例进行分享,并对运维过程中遇到的问题进行分析,提供有效解决方案。
一、麒麟操作系统概况
麒麟V10是一款商业版本服务器操作系统,其作为承载业务系统的基础底座,能满足大部分企业的产品需求,各类软硬件适配也都较好。麒麟V10的SP1/SP2/SP3版本内核都是基于OpenEuler 20.03 LTS研发的,其支持X86、ARM、Alpha、MPIS等CPU架构,支持Intel、AMD、鲲鹏、海光、飞腾、龙芯、兆芯、申威8种国内外主流CPU品牌,已适配1400多款国内外服务器整机,适配1500多款主板和板卡,适配200多款数据库和200多款中间件产品,适配6600多款服务器基础软件,适配250000多款服务器商业软件和开源软件。
二、常用软件选型适配
2.1 常用软件适配情况
本文罗列了29款常用软件的适配情况,如下表所示,供参考:
更多兼容适配情况,可登录麒麟生态官网进行查询:
探索商业生态,欢迎访问https://eco.kylinos.cn/zoology/commercial.html?system_class=1。在这里,我们将带您领略商业世界的奥秘与魅力。
2.2 常用软件适配案例
以下是几个典型的数据库(MongoDB、Redis)和中间件(Nginx、Tomcat)的适配测试案例,为您详解软件适配流程。
2.2.1 MongoDB
2.2.1.1 MongoDB测试环境
麒麟V10镜像:
Kylin Server 10 SP1 ARM64,版本2500,发布日期:2020年12月02日。立即体验稳定高效的服务器系统!
硬件环境:cpu数量(4),可用内存(8G),磁盘(300G)
软件版本:MongoDB 4.0.12
2.2.1.2 MongoDB适配步骤
(1)软件安装
创建安装目录
# mkdir -p /usr/local/mongodb/bin
解压并安装mongodb-linux-arm64-4.0.12.tgz至/usr/local/mongodb/bin,轻松完成软件配置。
解压mongodb-linux-arm64-4.0.12.tgz文件到/usr/local/mongodb/bin目录,命令如下:`tar -zxvf mongodb-linux-arm64-4.0.12.tgz -C /usr/local/mongodb/bin`
(2)配置系统环境参数
# vim /etc/profile
将您的环境路径扩展至新位置:/usr/local/mongodb/bin/mongodb-linux-arm64-4.0.12/bin,为您的操作带来无限可能。
# source /etc/profile
(3)创建MongoDB数据文件存放目录和日志文件存放目录
# mkdir -p /data/db /logs
(4)创建MongoDB运行时使用的配置文件
# mkdir -p /usr/local/mongodb/conf
请将以下启动参数编辑并保存至/usr/local/mongodb/conf/mongodb.conf文件中。
dbpath = /data/db # 数据文件存放目录
logpath = /logs/mongodb.log # 日志文件存放目录
port = 27017 # 端口
fork = true # 以守护程序的方式启用,即在后台运行
开启认证后,您将需要设置 MongoDB 账户并输入密码以进行远程访问。首次安装时,建议您先进行注释处理。
将bind_ip设置为0.0.0.0,即可实现远程访问。如需仅限本地访问,可注释此行或将其设为127.0.0.1。
(5)启动MongoDB
执行以下命令,启动MongoDB
启动MongoDB,使用命令:`mongod -f /usr/local/mongodb/conf/mongodb.conf`
(6)验证
使用mongo交互工具,操作MongoDB数据库,如下所示:
验证帮助、退出等功能“help”、“show dbs”、“quit”进行交互。
(7)查看日志
# cat mongodb.log
完成兼容性适配测试。
2.2.2 Redis
2.2.2.1 Redis测试环境
麒麟V10镜像:
Kylin-Server-10-SP1,2020年12月2日发布,版本10.2500,适用于arm64架构。
硬件环境:cpu数量(128),可用内存(510G),磁盘(2T)
软件版本:redis-5.0.7
2.2.2.2 Redis适配步骤
(1)软件安装
请使用命令# rpm -ivh redis-5.0.7-1.ky10.aarch64.rpm进行安装。
(2)检查版本
a.查看Redis版本。
# redis-server -v
系统会显示如下类似信息,表示redis的版本是5.0.7。
b.查看Redis的CLI版本。
# redis-cli -v
系统会显示如下类似信息,表示redis的CLI版本是5.0.7。
(3)启动服务
c.执行如下命令,启动redis-server。
# systemctl start redis.service
# systemctl status redis.service
(4)功能测试
# redis-cli
127.0.0.1:6379> set aa 1
OK
127.0.0.1:6379> get aa
"1"
完成兼容性适配测试。
2.2.3 Nginx
2.2.3.1 Nginx测试环境
麒麟V10镜像:
优化后:Kylin-Server-10-SP1-v10.2500-20201202-ARM64.iso。
硬件环境:cpu数量(128),可用内存(510G),磁盘(2T)
软件版本:nginx1.16组件
2.2.3.2 Nginx适配步骤
(1)配置软件源
编辑/etc/yum.repos.d/kylin_aarch64.repo文件,添加软件仓库源地址如下:
[ks10-adv-appstore]
Kylin Linux高级服务器10版现已上架AppStore,提供专业且高效的Linux服务解决方案。
访问升级平台:http://update.cs2c.com.cn:8080/NS/V10/V10SP1/os/adv/lic/appstore/$basearch/,为您带来最新资讯与服务。
gpgcheck = 0
enabled = 1
b.清除之前的缓存
# yum clean all
c.建立缓存
# yum makecache
(2)软件安装
a.执行如下命令安装
# dnf install -y nginx
b.查看软件版本
# nginx -v
c.查看nginx运行情况
执行命令开启nginx服务
# systemctl start nginx.service
(3)运行测试
从浏览器访问本机ip显示“Welcome to nginx!”
完成兼容性适配测试。
2.2.4 Tomcat
2.2.4.1 Tomcat测试环境
麒麟V10镜像:
Kylin-Server-10-SP1-Release-Build10-2500-20201202-arm64.iso:全新升级,稳定强大。
硬件环境:cpu数量(4),可用内存(8G),磁盘(300G)
软件版本:tomcat-8.5.0
2.2.4.2 Tomcat适配步骤
(1)配置软件源
编辑/etc/yum.repos.d/kylin_aarch64.repo文件,添加软件仓库源地址如下:
[ks10-adv-os]
Kylin Linux Advanced Server 10 - OS,高效稳定的企业级服务器操作系统。
请访问我们的升级站点:http://update.cs2c.com.cn:8080/NS/V10/V10SP1/os/adv/lic/base/$basearch/,开始您的体验之旅。我们提供最新、最安全的服务,期待您的光临!
gpgcheck = 0
enabled = 1
b.清除之前的缓存
# yum clean all
c.建立缓存
# yum makecache
(2)软件安装
# tar -zxvf apache-tomcat-8.5.0.tar.gz
(3)启动tomcat
# cd apache-tomcat-8.5.0
# cd bin
# ./startup.sh
tomcat已启动。
(4)设置防火墙
a.需要设置防火墙开放8080端口,命令为
使用firewall-cmd,将端口8080/tcp永久添加到公共区域。操作简洁,网络安全一键搞定,快来体验吧!
命令解析:
--zone #作用域
--add-port=8080/tcp #添加端口,格式为:端口/通讯协议
--permanent #永久生效,没有此参数设置,重启后会失效。
b.重启防火墙
# firewall-cmd -reload
(5)功能验证
在浏览器中访问该系统ip的8080端口即可访问tomcat8.5.0。
a.查看系统ip
# ifconfig
b.打开浏览器输入:172.17.30.109:8080
完成兼容性适配测试。
三、运维实施过程中的难点及应对方案
本文深入剖析了我们近几年使用麒麟V10系统所遇到的挑战及应对策略,涵盖操作系统兼容性、漏洞、特性及激活四大领域。
3.1 系统兼容问题
3.1.1 国产服务器安装麒麟V10系统异常
3.1.1.1 场景说明
3.1.1.2 分析及处置过程
在安装过程中遭遇错误,很可能源于磁盘问题。通常,通过初始化磁盘并重建磁盘阵列,问题可得到解决。首先进行本地盘的初始化,重启后错误依旧;其次,取消存储卷映射关系,重启并重新进入安装界面,错误未再出现。然而,点击“下一步”后,新的错误提示“未选择任何磁盘”浮出水面,即系统未能识别到磁盘。
点进去确实没有发现磁盘。
识别不到盘一般和阵列卡驱动有关,需要安装对应驱动,下面开始安装阵列卡驱动:
a.将对应驱动做进系统镜像里,挂载镜像开始安装。
b.到安装界面,通过Ctrl+Alt+F2切换至命令行模式
c.挂载镜像:mount /dev/sr0 /mnt
安装驱动:轻点rpm -ivh kmod-megaraid_sas-07.720.04.00-1.ky10.x86_64.rpm -nodeps。让技术更便捷,让生活更美好。
驱动装载:执行命令'insmod /lib/modules/4.19.90-23.8.v2101.ky10.x86_64/extra/megaraid_sas/megaraid_sas.ko'。请确保路径准确无误,以便成功加载驱动。
f.重新扫描下磁盘,则识别到了磁盘。
选中该磁盘,开始正常安装。
3.1.2 红帽7与麒麟V10的SSH会话会超时中断
3.1.2.1 场景说明
3.1.2.2 分析及解决方案
测试结果显示,红帽7与麒麟V10的SSH会话在同版本间正常运作。然而,当跨版本进行会话时,如红帽7至麒麟V10或麒麟V10至红帽7,均出现兼容性问题。初步推断,这是操作系统SSH的兼容难题。
查看两者SSH默认配置:
(1)麒麟V10SP1默认配置参数ClientAliveCountMax值为0;
优化后:红帽7.1默认未设定ClientAliveCountMax和ClientAliveInterval参数。
解决方案有以下三种,选其一即可:
(1)客户端远程连接服务器时,每60秒自动接收一次KeepAlive请求,确保超时空闲不会导致连接断开。
优化后:在红帽系统配置文件/etc/ssh/ssh_config中,添加参数ServerAliveInterval 60,以保持连接活跃。
b.重启ssh服务
# systemctl restart sshd
在红帽系统中,要发起SSH远程连接,请添加参数,例如:`ssh -o ServerAliveInterval 60 <用户名>@<IP地址> "脚本或执行命令"`。
(3) 作为服务端,每60秒发送KeepAlive请求至客户端,确保连接不因超时而中断。若连续三次失败,则认为客户端网络问题,中断SSH会话。
在麒麟V10中,请打开配置文件/etc/ssh/sshd_config(注意区分),添加参数ClientAliveCountMax 3和ClientAliveInterval 60。这样设置后,您的连接将更加稳定高效。
b.重启SSH服务
# systemctl restart sshd
3.2 操作系统漏洞
操作系统不可避免会有漏洞,需要迭代更新,国产服务器操作系统也不例外。
麒麟V10的主要漏洞为内存泄露,涉及诸如mate-indicators、audit审计、kylin-kms-daemo和gvfs-udisks2-volume-monitor等进程。应对内存泄漏,我们通常采用两种策略。
(1)优化措施:通常,我们可以通过禁用服务或终止进程来应对紧急情况。然而,某些服务存在依赖关系,当其他服务重新启动或其他场景下,这些服务可能会被激活,导致问题未得到彻底解决。例如,gvfs-udisks2-volume-monitor进程依赖于gdm服务,这种方法在这种情况下并不适用。
(2)解决措施:升级补丁,彻底修复。
3.2.1 mate-indicators进程内存泄漏
3.2.1.1 问题描述
现象揭秘:mate-indicators进程,图形界面的关键角色,却遭遇内存泄露困扰。程序运行过程中,申请的内存未能得到妥善释放。如上图,top命令揭示其内存使用率居高不下,超过80%。
优化后:
影响范围:Mate-Indicators软件包,版本低于20150918Kord0Ukui58-10.p07。
3.2.1.2 解决方案
(1)检查软件包版本
# rpm -qa | grep mate-indicators
优化后:2015年9月18日,Mate指标更新至kord0ukui58-10.p03.ky10版本,适用于aarch64架构。
该版本存在内存泄露问题,一般建议升级至最新稳定版本。
(2)升级补丁
通过yum源或rpm包方式进行软件包升级,如
# rpm -Uvh mate-indicators*
升级后检查版本信息
# rpm -qa | grep mate-indicators
"Mate Indicators 20150918Kord0UKUI58-10.P07.KY10.Aarch64 - 高效、精准的科技指标工具,为您的数据驱动决策提供强大支持。"
(3)重新加载配置
# systemctl restart lightdm
3.2.2 rpm进程出现CPU冲高
3.2.2.1 问题描述
现象:rpm进程持续运行不退出且cpu占用接近100%。
影响范围:libdb软件包版本低于5.3.28-37.p01.ky10
3.2.2.2 解决方案
通过yum源或rpm包方式进行软件包升级,如:
# rpm -Uvh libdb*
探索我们的三个软件包:libdb-help -5.3.28-37.p01.ky10.noarch.rpm、libdb-devel-5.3.28-37.p01.ky10.x86_64.rpm、libdb-5.3.28-37.p01.ky10.x86_64.rpm。它们将引领您进入技术的新领域,为您的工作和学习提供强大的支持。
3.2.3 rpmdb出现损坏
3.2.3.1 问题描述
影响范围:查看当前版本,rpm版本非p01,需要修复
# rpm -qa|grep -E '^rpm'
3.2.3.2 解决方案
将软件包(rpm-4.15.1-23.p01.ky10.aarch64.rpm、python3-rpm-4.15.1-23.p01.ky10.aarch64.rpm)统一放置于指定目录,进入后执行升级操作。
# yum localinstall ./*.rpm
(2)禁用dnf-makecache.timer定时器
# systemctl stop dnf-makecache.timer
# systemctl disable dnf-makecache.timer
3.2.4 其他漏洞问题
欲探索更多漏洞问题,欢迎访问麒麟软件知识库。目前,我们的知识库已涵盖浙江公开知识库(https://www.yuque.com/kylinos/zj)和麒麟软件公开知识库(http://wx.kylinos.cn/zsk)。让我们一起挖掘知识的宝藏,解锁无限可能!
3.3 操作系统特性
麒麟V10系统与红帽系统在日常应用上并无显著差异,尽管存在一些特殊属性可能影响运行。因此,建议在运维实施前进行充分规划,以提前应对可能出现的问题。
3.3.1 9090端口被占用
3.3.1.1 现象
查看端口使用情况,发现9090端口被占用。
# netstat -antp |grep 9090
3.3.1.2 原因
9090端口已被Cockpit服务锁定,这款开源工具以Web界面管理Linux系统,提供丰富的功能,如文件管理、系统日志查看、用户管理、服务配置、网络设置及安全审计等。Cockpit,让Linux管理更便捷,更直观。
3.3.1.3 解决方案
禁用服务,释放端口。
请执行以下命令以查看Cockpit服务状态:# systemctl status cockpit.socket
"3. 关闭Cockpit服务:执行命令# systemctl disable cockpit.socket。"
(4)查看端口占用情况:# netstat -antp |grep 9090
3.3.2 系统重启后/tmp目录被清空
3.3.2.1 现象
# df -Th|grep /tmp
3.3.2.2 原因
/tmp目录是采用tmpfs文件系统类型,这是一种基于内存的、被称为临时文件系统的存储方式。由于其将文件存放在内存中,因此会占用内存资源,一旦系统重启,内存数据便会丢失。
请注意,tmp.mount是一项systemd服务,专为挂载临时文件系统设计。在启动时,此服务会自动运行,将高效的tmpfs文件系统挂载至/tmp目录,以实现临时文件的快速读写。为您的系统操作带来便捷体验。
3.3.2.3 优化建议(二选一)
(1)禁用tmp.mount服务,将/tmp恢复至/目录下
# systemctl mask tmp.mount
重启后生效:
(2)保留tmp.mount服务,为操作系统添加硬盘,构建一个独立逻辑卷并挂载在/tmp目录下。设置为独立文件系统并整合至/etc/fstab配置中。利用LVM技术,操作简洁高效。
3.3.3 普通用户无法执行crontab命令
3.3.3.1 现象
普通用户执行crontab报错,显示没有权限执行。
# crontab -e
3.3.3.2 原因
"crontab"命令,让您定时执行任务。若被恶意利用,可能引发安全隐患。麒麟V10默认实施安全策略,仅允许root用户及/etc/cron.allow文件中的非root用户使用,确保您的系统安全无虞。
3.3.3.3 解决方案(二选一)
(1)临时添加白名单
在/etc/cron.allow中添加需执行crontab的用户,如monitor。若文件不存在,则进行创建。
不再报错:
(2)删除白名单,创建黑名单(放开所有用户)
# rm -f /etc/cron.allow
# touch /etc/cron.deny
3.3.4 root用户不能直接su到普通用户
3.3.4.1 现象
root用户su到普通用户提示需要输入密码。
3.3.4.2 原因
麒麟V10搭载了全新的kysec安全管理工具,特设uid(600)和uid(700)两个特性,专为三权分立用户设计。当root用户切换到这些uid用户时,系统将提示输入密码,确保信息安全。
"三权分立角色涵盖secadm安全管理员、auditadm审计管理员及root系统管理员,确保权限清晰、操作安全。"
3.3.4.3 解决方案
调整su操作的用户密码验证策略。
(1)编辑配置文件/etc/pam.d/su
# vi /etc/pam.d/su
将/etc/pam.d/su文件的第一行注释掉,即第一行内容调整如下:
(2)测试是否生效
# su - test
3.3.5 开启内核参数tcp_tw_recycle报错
3.3.5.1 现象
在/etc/sysctl.conf配置文件中添加参数"net.ipv4.tcp_tw_recycle=1",然后执行命令启动。
# sysctl -p
报错如下:
3.3.5.2 原因
从内核版本4.10开始,每个数据包的时间戳生成机制进行了变革(TCP连接的时间戳偏移被随机化),这可能与tcp_tw_recycle参数产生交互影响,引发TCP连接异常。因此,在内核版本4.12中,我们彻底移除了tcp_tw_recycle参数。
注:麒麟V10SP1采用4.19内核版本,无需处理。
3.4 操作系统激活
麒麟V10的激活方式包括微信扫码、KMS批量及场地授权。我们将聚焦微信扫码与KMS批量激活流程的差异,而忽略无需操作的场地授权。
3.4.1 激活流程
激活流程:微信扫码绑定授权二维码,获取启动权限。系统读取授权文件并执行命令,生成二维码。扫描二维码,启动激活程序。完成激活,一切尽在掌握。
3.4.2 差异及建议
激活耗时:微信方式手工操作,大量激活需耗费时日;KMS方式待搭建完成服务器后,将显著减少工作量。尽管自动化程度有待提升,建议在KMS批量激活服务器搭建完成后,通过脚本或平台实现高效自动化激活。
麒麟V10不激活不影响系统运行,但商业版软件建议根据正版化要求进行激活使用。
四、总结
打造国产操作系统的完整生态链是推动创新信息操作系统的“关键步骤”。同时,一个健全的软硬件生态链也是企业在引入新操作系统时需要重点考虑的因素之一。麒麟V10已经成功建立了自己的生态链,在与常用软件的兼容性上已表现出色。然而,仍存在一些问题需要解决。生态链的持续优化和完善离不开企业在实际运维和业务场景中的问题反馈以及方案改进。在这场创新信息浪潮中,我们作为从业人员需积累技术、做好预备,以实现在遇到问题时能从容应对,心中有数。
-对此,您有什么看法见解?-
-欢迎在评论区留言探讨和分享。-