Alibaba Cloud Linux 2使用说明

本文主要介绍在Alibaba Cloud Linux 2操作系统中查看系统或内核参数、设置内核转储功能的操作步骤,同时提供了Debuginfo包、源码包以及实验性软件包的获取方式。

查看或修改参数

  • 查看或修改系统参数

    Alibaba Cloud Linux 2在配置文件/etc/sysctl.d/50-aliyun.conf中更新了下列内核配置参数,运行sysctl命令,可查看或修改Alibaba Cloud Linux 2运行时的系统参数。

    系统参数

    说明

    kernel.hung_task_timeout_secs = 240

    延长内核hung_task超时秒数,避免频繁的hung_task提示。

    kernel.panic_on_oops = 1

    允许内核发生Oops错误时抛出Kernel Panic异常,如果配置了Kdump则可自动捕获崩溃详情。

    kernel.watchdog_thresh = 50

    延长hrtimer、NMI、Soft Lockup以及Hard Lockup等事件的阈值,避免可能出现的内核误报。

    kernel.hardlockup_panic = 1

    允许内核发生Hard Lockup错误时抛出Kernel Panic异常,如果配置了Kdump则可自动捕获崩溃详情。

  • 查看内核参数

    Alibaba Cloud Linux 2更新了下列内核参数,运行cat /proc/cmdline命令,可查看Alibaba Cloud Linux 2运行时的内核参数。

    内核参数

    说明

    crashkernel=0M-2G:0M,2G-8G:192M,8G-:256M

    为内核转储(Kdump)功能预留的内存空间。

    cryptomgr.notests

    关闭crypto在内核启动时的自检行为,加快启动速度。

    cgroup.memory=nokmem

    关闭Memory Cgroup的内核内存统计功能,避免出现潜在的内核不稳定问题。

    rcupdate.rcu_cpu_stall_timeout=300

    延长RCU CPU Stall Detector的超时阈值为300秒,避免内核误报。

开启或关闭内核转储(Kdump)功能

Alibaba Cloud Linux 2提供了Kdump服务。开启该服务后可捕获内核错误,方便您分析内核崩溃现象。

说明

所选实例规格的内存小于或等于2 GiB时,无法使用Kdump服务。

  • 依次运行以下命令可以开启Kdump服务。

    # 先开启Kdump服务
    sudo systemctl enable kdump.service
    # 重启Kdump服务
    sudo systemctl restart kdump.service
  • 依次运行以下命令可以将Kdump服务预留的内存地址空间归还给操作系统,并彻底关闭Kdump服务。

    # 先更改/sys/kernel/kexec_crash_size文件配置
    sudo sh -c 'echo 0 > /sys/kernel/kexec_crash_size'
    # 关闭Kdump服务
    sudo systemctl disable kdump.service
    # 停止Kdump服务
    sudo systemctl stop kdump.service
    说明

    Kdump服务预留的内存地址空间归还给操作系统后,必须重启操作系统才可再次开启Kdump服务。

安装Debuginfo包和源码包

  • 依次运行以下命令可以安装Debuginfo包。

    # 先安装yum-utils
    sudo yum install -y yum-utils
    # 安装Debuginfo包,其中<packageName>为您预期安装的软件包名称
    sudo debuginfo-install -y <packageName>
  • 依次运行以下命令可以安装源码包。

    # 先安装源码
    sudo yum install -y alinux-release-source
    # 安装yum-utils
    sudo yum install -y yum-utils
    # 安装源码包,其中<sourcePackageName>为您预期安装的软件包名称
    sudo yumdownloader --source <sourcePackageName>

使用试验性支持的软件包

试验性支持的软件包指由阿里云官方提供,但未经严格测试,不保证质量的软件包。Alibaba Cloud Linux 2提供了普通试验性软件包和SCL插件方式支持的试验性软件包。

  • 普通试验性软件包

    • Golang 1.12

    • Golang 1.13

    依次运行以下命令可以安装软件包。

    # 先开启YUM仓库支持
    sudo yum install -y alinux-release-experimentals
    # 安装普通试验性软件包,其中<packageName>为您预期安装的软件包名称
    sudo yum install -y <packageName>
  • SCL插件方式支持的开发工具包

    • 基于GCC-7.3.1的开发工具包(devtoolset-7)

    • 基于GCC-8.2.1的开发工具包(devtoolset-8)

    • 基于GCC-9.1.1的开发工具包(devtoolset-9)

    依次运行以下命令可以安装软件包。

    # 先安装scl-utils
    sudo yum install -y scl-utils
    # 打开YUM仓库支持
    sudo yum install -y alinux-release-experimentals
    # 从YUM源安装您需要的软件包,以下示例命令同时安装了SCL插件方式支持的所有开发工具包
    sudo yum install -y devtoolset-7-gcc devtoolset-7-gdb devtoolset-7-binutils devtoolset-7-make
    sudo yum install -y devtoolset-8-gcc devtoolset-8-gdb devtoolset-8-binutils devtoolset-8-make
    sudo yum install -y devtoolset-9-gcc devtoolset-9-gdb devtoolset-9-binutils devtoolset-9-make

    安装成功后,您即可使用高版本的GCC以及相关工具。示例命令如下:

    # 先查看现有的SCL,需要指定库名,本示例命令中,库名为devtoolset-7
    scl -l devtoolset-7
    # 运行相关的SCL软件
    scl enable devtoolset-7 'gcc --version'

常见问题

安装Debuginfo包失败怎么处理?

如果在安装Debuginfo包和源码包中执行sudo debuginfo-install -y <packageName>命令为软件包安装相应的Debuginfo包失败,请尝试执行以下命令以进行安装。

<packageName>需替换为要安装的软件包名,例如kernel-debuginfo

sudo yum install --enablerepo=*-debug <packageName>