-
安装wireguard-tools 执行以下命令安装依赖。 dnf install gcc make 执行以下命令下载wireguard-tools源码包。 wget https://git.zx2c4.com/wireguard-tools/snapshot/wireguard-tools-1.0.20210914.tar.xz 执行以下命令解压上述源码包。 tar -xf wireguard-tools-1.0.20210914.tar.xz 进入wireguard-tools-1.0.20210914/src目录,依次执行以下命令编译安装。 make
make install 验证安装是否成功。 可以执行wg -h和wg-quick -h命令验证是否安装成功,如图所示。 图1 验证是否安装成功
-
背景信息 2020年12月08日,CentOS官方宣布了停止维护CentOS Linux的计划,并推出了CentOS Stream项目。更多信息,请参见CentOS官方公告。 CentOS 8系统2021年12月31日已停止维护服务,CentOS 7系统将于2024年06月30日停止维护服务。CentOS官方不再提供CentOS 9及后续版本,不再支持新的软件和补丁更新。CentOS用户现有业务随时面临宕机和安全风险,并无法确保及时恢复。
-
影响 基于CentOS官方的变更计划,对CentOS操作系统的使用者产生的影响如下所述: 2021年12月31日以后,CentOS 8的使用者将无法获得包括问题修复和功能更新在内的任何软件维护和支持。 2024年06月30日以后,CentOS 7的使用者将无法获得包括问题修复和功能更新在内的任何软件维护和支持。 对于华为云的公共镜像及服务支持存在一定影响: 华为云暂不会下线CentOS 8公共镜像,同时已经使用CentOS 8创建的E
CS 实例运行不会受到影响,但将停止更新镜像。 华为云对于CentOS操作系统的服务支持将和CentOS官方日期保持同步。2021年12月31日以后将不再对CentOS 8提供服务支持;对CentOS 7的服务支持将持续至2024年6月30日。
-
应对策略 为了保障使用CentOS系统的业务正常运行,华为云为您提供替换CentOS操作系统的应对策略。替换CentOS操作系统的方式分为两类,切换操作系统和迁移操作系统。 将CentOS操作系统切换为支持切换的操作系统。 如果现有的ECS配置(网卡、磁盘、VPN等配置的类型和数量)都不需要改变,仅需要修改ECS的操作系统镜像,并且您的软件和原操作系统耦合度较低,建议使用系统切换。 切换到Huawei Cloud EulerOS具体操作,详见将操作系统切换为HCE。 切换到CentOS Stream或Rocky Linux具体操作详见切换操作系统。 将CentOS操作系统迁移为Huawei Cloud EulerOS操作系统。 如果现有的ECS配置(网卡、磁盘、VPN等配置的类型和数量)都不需要改变,希望保留操作系统软件的配置参数,可以通过操作系统迁移的方式迁移到Huawei Cloud EulerOS。 系统迁移详见将操作系统迁移为HCE。 系统切换和迁移的区别如下表,请根据需要选择合适的替换方式。 表1 系统切换和迁移的区别 区别 系统切换 系统迁移 数据备份 切换操作系统会清除系统盘数据,包括系统盘上的系统分区和所有其它分区。 切换操作系统不影响数据盘数据。 迁移操作系统不会清除系统盘数据,为避免系统软件的数据丢失,建议将其备份。 迁移操作系统不影响数据盘数据。 个性化设置 切换操作系统后,当前操作系统内的个性化设置(如DNS、主机名等)将被重置,需重新配置。 迁移操作系统后,当前操作系统内的个性化设置(如DNS、主机名等)不需重新配置。 表2 支持切换的操作系统 操作系统 概述 适用人群 Huawei Cloud EulerOS Huawei Cloud EulerOS(简称HCE)是基于openEuler构建的云上操作系统,中文名为华为云欧拉操作系统。 HCE打造云原生、高性能、高安全、易迁移等能力,加速用户业务上云,提升用户的应用创新空间,可替代CentOS、EulerOS等公共镜像。 适用于希望使用免费镜像,并延续开源社区镜像使用习惯的个人或企业。 CentOS Stream CentOS Stream是一个滚动升级的版本,由CentOS官方提供。 适用于希望延续CentOS使用习惯,并希望获得滚动升级的个人或企业。 Rocky Linux Rocky Linux是一个社区化的企业级操作系统,位于Red Hat Enterprise Linux(RHEL)下游。Rocky Linux与CentOS一样,提供了适用于服务器的稳定版本,旨在作为CentOS完全兼容的替代版本。 适用于希望使用免费镜像,并延续开源社区镜像使用习惯的个人或企业。 AlmaLinux AlmaLinux是CloudLinux团队宣布构建的一个稳定版CentOS社区分支。该操作系统实现了与Red Hat Enterprise Linux(RHEL)二进制文件的1:1兼容,并提供了不停机更换操作系统的能力。 适用于希望使用免费镜像,并延续开源社区镜像使用习惯的个人或企业。 Debian、Ubuntu操作系统 Linux的其他发行版操作系统,不同操作系统在使用习惯和应用兼容性上存在一定差异。 适用于可以自行应对操作系统切换成本的个人或企业。
-
Huawei Cloud EulerOS、openEuler和EulerOS镜像的主要区别是什么? Huawei Cloud EulerOS、openEuler和EulerOS镜像均为华为自研镜像,主要区别与联系如下表1所示: 表1 HCE、openEuler和EulerOS镜像的区别与联系 镜像类型 描述 Huawei Cloud EulerOS Huawei Cloud EulerOS(简称HCE),是基于openEuler开发的一款商业发行版镜像,可替代CentOS、EulerOS等操作系统,并提供专业的维护保障能力,镜像目前免费对用户使用。 openEuler openEuler是一款开源镜像,您可以免费使用,但是不提供商业维护保障能力。openEuler最初由华为研发,但是已经在2021年11月9日正式捐赠给开放原子开源基金会,openEuler的技术支持由开源社区提供。 EulerOS EulerOS是基于开源技术的企业级Linux操作系统软件,具备高安全性、高可扩展性、高性能等技术特性,能够满足客户IT基础设施和云计算服务等多业务场景需求。 说明: EulerOS是基于开源操作系统openEuler进行开发的华为内部的操作系统。
-
OOM可能的原因 cgroup内存不足 使用的内存超出了cgroup中memory.limit_in_bytes配置的大小,如下示例演示memory.limit_in_bytes配置为80M,使用memhog模拟分配100M,触发OOM,/var/log/messages部分日志如下,可以从日志中看到memhog所在进程(PID: 2021820)使用了81920kB内存,超出了限制,触发了OOM: warning|kernel[-]|[2919920.414131] memhog invoked oom-killer: gfp_mask=0xcc0(GFP_KERNEL), order=0, oom_score_adj=0
info|kernel[-]|[2919920.414220] memory: usage 81920kB, limit 81920kB, failcnt 30
err|kernel[-]|[2919920.414272] Memory cgroup out of memory: Killed process 2021820 (memhog) total-vm:105048kB, anon-rss:81884kB, file-rss:1544kB, shmem-rss:0kB, UID:0 pgtables:208kB oom_score_adj:0 父cgroup内存不足 在子cgroup中内存仍然足够,但是父cgroup的内存不足,超过了内存限制,如下示例演示父cgroup memory.limit_in_bytes配置为80M,两个子cgroup memory.limit_in_bytes均配置为50M,在两个子cgroup中使用程序循环分配内存,触发OOM,/var/log/messages部分日志如下: warning|kernel[-]|[2925796.529231] main invoked oom-killer: gfp_mask=0xcc0(GFP_KERNEL), order=0, oom_score_adj=0
info|kernel[-]|[2925796.529315] memory: usage 81920kB, limit 81920kB, failcnt 199
err|kernel[-]|[2925796.529366] Memory cgroup out of memory: Killed process 3238866 (main) total-vm:46792kB, anon-rss:44148kB, file-rss:1264kB, shmem-rss:0kB, UID:0 pgtables:124kB oom_score_adj:0 系统全局内存不足 一方面由于OS的空闲内存不足,有程序一直在申请内存,另一方面也无法通过内存回收机制解决内存不足的问题,因此触发了OOM,如下示例演示OS中使用程序循环分配内存,触发OOM,/var/log/messages部分日志如下,可以从日志中看到内存节点Node 0的空闲内存(free)已经低于了内存最低水位线(low),触发了OOM: kernel: [ 1475.869152] main invoked oom: gfp_mask=0x100dca(GFP_HIGHUSER_MOVABLE|__GFP_ZERO), order=0
kernel: [ 1477.959960] Node 0 DMA32 free:22324kB min:44676kB low:55844kB high:67012kB reserved_highatomic:0KB active_anon:174212kB inactive_anon:1539340kB active_file:0kB inactive_file:64kB unevictable:0kB writepending:0kB present:2080636kB managed:1840628kB mlocked:0kB pagetables:7536kB bounce:0kB free_pcp:0kB local_pcp:0kB free_cma:0kB
kernel: [ 1477.960064] oom-kill:constraint=CONSTRAINT_NONE,nodemask=(null),cpuset=/,mems_allowed=0,global_oom,task_memcg=/system.slice/sshd.service,task=main,pid=1822,uid=0
kernel: [ 1477.960084] Out of memory: Killed process 1822 (main) total-vm:742748kB, anon-rss:397884kB, file-rss:4kB, shmem-rss:0kB, UID:0 pgtables:1492kB oom_score_adj:1000 内存节点(Node)的内存不足 在NUMA存储模式下,OS会存在多个内存节点,如果程序制定使用特定节点的内存,可能在OS内存充足的情况下触发OOM,如下示例演示在两个内存节点的条件下,使用程序循环在Node 1分配内存,导致Node 1内存不足,但是OS内存足够,/var/log/messages部分日志如下: kernel: [ 465.863160] main invoked oom: gfp_mask=0x100dca(GFP_HIGHUSER_MOVABLE|__GFP_ZERO), order=0
kernel: [ 465.878286] active_anon:218 inactive_anon:202527 isolated_anon:0#012 active_file:5979 inactive_file:5231 isolated_file:0#012 unevictable:0 dirty:0 writeback:0#012 slab_reclaimable:6164 slab_unreclaimable:9671#012 mapped:4663 shmem:2556 pagetables:846 bounce:0#012 free:226231 free_pcp:36 free_cma:0
kernel: [ 465.878292] Node 1 DMA32 free:34068kB min:32016kB low:40020kB high:48024kB reserved_highatomic:0KB active_anon:188kB inactive_anon:778076kB active_file:20kB inactive_file:40kB unevictable:0kB writepending:0kB present:1048444kB managed:866920kB mlocked:0kB pagetables:2752kB bounce:0kB free_pcp:144kB local_pcp:0kB free_cma:0kB
kernel: [ 933.264779] oom-kill:constraint=CONSTRAINT_MEMORY_POLICY,nodemask=1,cpuset=/,mems_allowed=0-1,global_oom,task_memcg=/system.slice/sshd.service,task=main,pid=1733,uid=0
kernel: [ 465.878438] Out of memory: Killed process 1734 (main) total-vm:239028kB, anon-rss:236300kB, file-rss:200kB, shmem-rss:0kB, UID:0 pgtables:504kB oom_score_adj:1000 其他可能原因 OS在内存分配的过程中,如果伙伴系统的内存不足,则系统会通过OOM Killer释放内存,并将内存提供至伙伴系统。
-
解决方法 手动配置dhcp自动获取ipv6地址,如下图在对应网卡配置文件(/etc/sysconfig/network-scripts/ifcfg-ethx)中添加以下参数。 IPV6INIT="yes"
DHCPV6C="yes" 图3 添加参数 执行以下命令重启NetworkManager服务即可获取到IPv6地址。 systemctl restart NetworkManager 图4 获取IPv6地址
-
操作背景 为了保证系统的安全性,以及减少用户在不使用系统时所造成的资源浪费,在用户离开系统一段时间后,必须对连接进行注销。注销有诸多方法,修改TMOUT变量为其中的解决方案之一。 TMOUT是一个环境变量,它决定了在系统自动注销前所空闲的秒数。因此,在设置了此变量后,若用户在规定时间内没有进行主动活动,则连接将自动断开。若没有设置此变量,或值为0,表示禁用自动注销,用户不会因长时间不活动而断开连接。
-
永久设置自动注销时间TMOUT 方式一 执行以下命令修改文件/etc/profile(若修改此文件不生效,可再修改/etc/bashrc,修改流程相同),这样可以使所有应用此配置文件的用户均受此自动注销时间的影响。 vim /etc/profile 或者 vim /etc/bashrc 添加以下命令至文件末尾。以设置自动注销时间为1200秒为例,实际值可自定义,设置为0禁用注销功能。 export TMOUT=1200 图1 设置自动注销时间 保存文件后执行以下命令刷新。 source /etc/profile 方式二 依次执行以下命令直接修改自动注销时间。 sed -i '$a\export TMOUT=1200' /etc/profile
source /etc/profile 执行以下命令查看自动注销时间。 echo $TMOUT 若显示定义的数值,则说明自动注销功能设置成功。 图2 自动注销功能设置成功
-
操作步骤 打开配置文件/boot/grub2/grub.cfg,删除selinux=0。 执行touch /.autorelabel命令。 /.autorelabel文件将触发OS在启动过程中对磁盘上所有文件relabel重新打selinux标签,该过程可能需要持续几分钟。relabel完成后OS将自动重启一次并生效,同时自动删除/.autorelabel文件确保下次不会再重复执行relabel动作。 打开配置文件/etc/selinux/config,设置SELINUX=permissive,并执行reboot重启操作系统。 图1 设置SELINUX=permissive 再次打开配置文件/etc/selinux/config,设置SELINUX=enforcing,并执行reboot重启操作系统。 图2 设置SELINUX=enforcing 重启后执行getenforce命令查看SElinux状态。 显示Enforcing表示SElinux已经开启。 图3 查看SElinux状态
-
在x86架构安装mlnx驱动 下载CX6网卡驱动安装包MLNX_OFED_LINUX-23.10-1.1.9.0-openeuler22.03-x86_64.tgz。 解压驱动安装包并进入工作目录。 tar -xf MLNX_OFED_LINUX-23.10-1.1.9.0-openeuler22.03-x86_64.tgz cd MLNX_OFED_LINUX-23.10-1.1.9.0-openeuler22.03-x86_64 安装CX6网卡驱动软件。 ./mlnxofedinstall --basic --without-depcheck --distro OPENEULER22.03 --force --kernel 5.10.0-60.18.0.50.oe2203.x86_64 --kernel-sources /lib/modules/$(uname -r)/build 其中,“5.10.0-60.18.0.50.oe2203.x86_64“是官方MLNX_OFED包本身编译时的内核版本。 创建链接。 ln -s /lib/modules/5.10.0-60.18.0.50.oe2203.x86_64/extra/mlnx-ofa_kernel /lib/modules/$(uname -r)/weak-updates/ ln -s /lib/modules/5.10.0-60.18.0.50.oe2203.x86_64/extra/kernel-mft /lib/modules/$(uname -r)/weak-updates/ depmod -a 执行reboot命令重启系统。 执行/etc/init.d/openibd status命令查看驱动安装结果。 显示如图1表示驱动安装成功。 图1 驱动安装成功
-
在Arm架构安装mlnx驱动 下载CX6网卡驱动安装包MLNX_OFED_LINUX-23.10-1.1.9.0-openeuler22.03-aarch64.tgz。 解压驱动安装包并进入工作目录。 tar -xf MLNX_OFED_LINUX-23.10-1.1.9.0-openeuler22.03-aarch64.tgz cd MLNX_OFED_LINUX-23.10-1.1.9.0-openeuler22.03-aarch64 安装CX6网卡驱动软件。 ./mlnxofedinstall --basic --without-depcheck --distro OPENEULER22.03 --force --kernel 5.10.0-60.18.0.50.oe2203.aarch64 --kernel-sources /lib/modules/$(uname -r)/build 其中,“5.10.0-60.18.0.50.oe2203.aarch64”是官方MLNX_OFED包本身编译时的内核版本。 执行如下命令创建链接。 ln -s /lib/modules/5.10.0-60.18.0.50.oe2203.aarch64/extra/mlnx-ofa_kernel /lib/modules/$(uname -r)/weak-updates/ ln -s /lib/modules/5.10.0-60.18.0.50.oe2203.aarch64/extra/kernel-mft /lib/modules/$(uname -r)/weak-updates/ depmod -a 执行reboot命令重启系统。 执行/etc/init.d/openibd status命令查看驱动安装结果。 显示如图2表示驱动安装成功。 图2 驱动安装成功
-
问题背景 2025年3月份之前,在HCE版本发布的rpm包hce-sign-certificate-1.0-1.hce2中,针对安全启动功能提供了两本验签证书:HCE_Secure_Boot_RSA_Code-Signing_Authority_1.cer 和 Huawei_Code-Signing_Authority_CA_3.der.cer,用于OS安全启动过程中shim,grub,vmlinux组件的验签。这两本证书任意一个都可以导入BIOS,作为验签证书,其中HCE_Secure_Boot_RSA_Code-Signing_Authority_1.cer证书在2025.04已经到期了,无法使用。 如果服务器安装了2025年3月份之前HCE版本,开启了安全启动功能且只导入了HCE_Secure_Boot_RSA_Code-Signing_Authority_1.cer证书,在升级2025年5月份之后的HCE版本,重启后,会存在系统无法引导启动的问题。
-
排查方法 确认当前安装的系统版本是否为2025年3月份之前的HCE2.0版本。如果是,执行步骤2;如果否,不存在该问题。 [root@localhost ~]# cat /etc/hce-latest
hceversion=HCE-2.0.2412.1_aarch64
compiletime=2025-02-28-10-00-01 执行mokutil --sb查看系统是否开启安全启动功能。如果显示“SecureBoot enabled”,执行步骤3;如果否,不存在该问题。 [root@localhost ~]# mokutil --sb
SecureBoot enabled 查看BIOS中导入的证书。 [root@localhost ~]# mokutil --db | grep "Subject:" 图1 系统导入证书查询 如果上述命令查询结果存在“Huawei Root CA”,则不会有该问题,直接跳到结束; 如果上述命令查询结果没有“Huawei Root CA”,有“Huawei Code-Signing Authority CA 3”,OS升级到2025年5月份之后的HCE2.0版本,不会有该问题;但是后续继续往HCE3.0升级同样会出现该问题,建议按照【解决方案】重新导入新的生命周期更长的证书; 如果上述命令查询结果中即不存在“Huawei Root CA”,也不存在“Huawei Code-Signing Authority CA 3”,有“HCE Secure Boot RSA Code-Signing Authority 1”,则存在该问题。
-
解决方案 获取HCE2.0镜像源中更新的证书,https://repo.huaweicloud.com/hce/2.0/updates/x86_64/Packages/路径下的hce-sign-certificate-1.0-2.hce2.x86_64.rpm,解压或安装后,将新证书Huawei_Root_CA.cer导入BIOS中。 BIOS证书导入参考: 鲲鹏服务器:https://support.huawei.com/enterprise/zh/doc/EDOC1100088653/97a0d5a0 2288H V5:https://support.huawei.com/enterprise/zh/doc/EDOC1000163371/afc5c7f8?idPath=23710424|251364409|21782478|21872244 2288H V6:https://support.huawei.com/enterprise/zh/doc/EDOC1100195299/fdb56216?idPath=23710424|251364409|21782478|23692812