跳转到内容

OpenCloudOS 使用指南

OpenCloudOS 是由腾讯主导、多家企业联合发起的开源操作系统社区项目。它在兼容 Enterprise Linux 生态的基础上,引入了 TencentOS Kernel 等差异化特性,是腾讯云生态中的核心操作系统选择。腾讯云上的「TencentOS Server」即基于 OpenCloudOS。

版本上游基础生命周期说明
OpenCloudOS 8(当前 8.8)RHEL 8至 2029 年兼容 CentOS 8 / AlmaLinux 8
OpenCloudOS 9(当前 9.6)RHEL 9至 2032 年兼容 CentOS Stream 9 / AlmaLinux 9
OpenCloudOS Stream 23独立演进滚动维护自主技术路线,社区创新版本

OpenCloudOS 8/9 与 RHEL 8/9 兼容,适合需要稳定生产环境的用户。OpenCloudOS Stream 23 则采用独立的版本策略,引入更多社区创新。

腾讯云上的命名对应关系:

腾讯云镜像名对应社区版本
TencentOS Server 3.1基于 OpenCloudOS 8
TencentOS Server 4基于 OpenCloudOS 9

OpenCloudOS 提供两种内核选择:

  • 标准内核:OpenCloudOS 8 使用与 RHEL 8 兼容的 5.4 内核;OpenCloudOS 9 使用 6.6 LTS 内核(比 RHEL 9 的 5.14 更新)
  • TencentOS Kernel(TK):基于上游 LTS 内核,腾讯自研优化

TencentOS Kernel 是 OpenCloudOS 区别于其他 EL 兼容发行版的核心特性。

OpenCloudOS 8 的用户态软件包与 RHEL 8 高度一致,通常可以直接使用 RHEL/CentOS 8 的 RPM 包。OpenCloudOS 9 与 RHEL 9 保持兼容。

  • SELinux 默认处于 enforcing 模式
  • 防火墙默认使用 firewalld
  • 网络管理使用 NetworkManager
  • 在腾讯云 CVM 上运行时,cloud-init 预配置了腾讯云数据源
查看当前 OpenCloudOS 版本
$ cat /etc/opencloudos-release
查看内核版本
$ uname -r
查看已启用的仓库
$ dnf repolist

OpenCloudOS 8 默认仓库:

仓库 ID说明
BaseOS基础操作系统包
AppStream应用流包
Extras额外软件包
PowerTools开发者工具
Plus社区增强包
仓库 ID说明
BaseOS基础操作系统包
AppStream应用流包
CRBCodeReady Builder 对应包
Extras额外软件包
查看仓库配置文件
$ ls /etc/yum.repos.d/

OpenCloudOS 兼容 EPEL 仓库:

启用 EPEL
$ sudo dnf install epel-release -y

如果 epel-release 包不在默认仓库中,可以手动安装:

手动安装 EPEL(OpenCloudOS 8)
$ sudo dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
手动安装 EPEL(OpenCloudOS 9)
$ sudo dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm

在腾讯云 CVM 上,OpenCloudOS 仓库默认指向腾讯云内网镜像,访问速度快且不消耗公网带宽。如果在非腾讯云环境使用:

切换到公网镜像源
$ sudo sed -i 's|http://mirrors.tencentyun.com|https://mirrors.cloud.tencent.com|g' /etc/yum.repos.d/OpenCloudOS*.repo
$ sudo dnf makecache

TencentOS Kernel(TK)是 OpenCloudOS 的核心差异化特性,基于上游 LTS 内核,融入了腾讯在大规模生产环境中积累的优化经验。

特性标准内核TencentOS Kernel
基础版本RHEL 回移内核上游 LTS + 腾讯补丁
更新频率跟随 RHEL独立更新周期
容器优化标准支持深度优化
性能调优通用配置针对云场景优化

在腾讯云 CVM 上,TencentOS Server 镜像默认使用 TK。手动安装方式:

安装 TencentOS Kernel
$ sudo dnf install kernel-tkernel
查看已安装的内核
$ rpm -qa | grep kernel
设置 TK 为默认启动内核
$ sudo grubby --set-default /boot/vmlinuz-*tkernel*
$ sudo reboot
重启后验证
$ uname -r

输出中包含 tkernel 字样表示正在使用 TencentOS Kernel。

  • cgroupfs 优化:改进 cgroup v2 的性能和稳定性
  • 容器网络优化:减少容器网络命名空间切换的开销
  • OOM 增强:改进 OOM Killer 在容器场景下的行为,避免误杀关键进程
  • io_uring 增强:对异步 I/O 框架的性能优化
  • 云盘 I/O 优化:针对虚拟化存储的 I/O 调度优化
  • 文件系统改进:ext4 和 XFS 在高并发场景下的性能提升
  • BBR 拥塞控制:预置 TCP BBR 拥塞控制算法
启用 BBR
$ sudo sysctl -w net.core.default_qdisc=fq
$ sudo sysctl -w net.ipv4.tcp_congestion_control=bbr
持久化 BBR 配置
$ echo "net.core.default_qdisc=fq" | sudo tee -a /etc/sysctl.d/99-bbr.conf
$ echo "net.ipv4.tcp_congestion_control=bbr" | sudo tee -a /etc/sysctl.d/99-bbr.conf
  • XDP 支持:eXpress Data Path 高性能数据包处理
  • MPTCP:多路径 TCP 支持
  • 内核热补丁:支持在不重启的情况下修复内核漏洞
  • KASLR 增强:内核地址空间布局随机化改进

TencentOS Kernel 提供了一些额外的可调参数:

查看 TK 专属参数
$ sudo sysctl -a | grep tencent 2>/dev/null
常用网络调优参数
# 增大 TCP 缓冲区
$ sudo sysctl -w net.core.rmem_max=16777216
$ sudo sysctl -w net.core.wmem_max=16777216
# 优化 TCP 连接复用
$ sudo sysctl -w net.ipv4.tcp_tw_reuse=1
# 增大连接队列
$ sudo sysctl -w net.core.somaxconn=65535

OpenCloudOS 社区提供了官方迁移工具 migrate2opencloudos

下载迁移脚本
$ curl -fsSL https://mirrors.opencloudos.tech/opencloudos/migration/migrate2opencloudos.sh -o migrate2opencloudos.sh
$ chmod +x migrate2opencloudos.sh

CentOS 7 到 OpenCloudOS 8 属于跨大版本迁移,建议采用重新部署的方式而非原地升级。如果必须原地迁移:

  1. 先将 CentOS 7 迁移到 OpenCloudOS 7(如果可用)
  2. 再执行大版本升级

更推荐的做法是新建 OpenCloudOS 8 实例,然后迁移应用和数据。

CentOS 8 到 OpenCloudOS 8 属于同版本迁移,兼容性最好:

执行预检查
$ sudo bash migrate2opencloudos.sh --check

预检查会扫描:

  • 当前系统版本是否支持迁移
  • 第三方仓库和包的兼容性
  • 磁盘空间是否充足
  • 内核模块兼容性
执行迁移
$ sudo bash migrate2opencloudos.sh --migrate

迁移过程:

  1. 备份当前仓库配置
  2. 替换 CentOS 仓库为 OpenCloudOS 仓库
  3. 替换系统标识包(centos-releaseopencloudos-release
  4. 同步更新所有系统包
  5. 重建 RPM 数据库
迁移后验证
$ cat /etc/opencloudos-release
$ rpm -qa | grep centos
# 应该没有 CentOS 相关包输出
重启以加载新内核
$ sudo reboot
重启后确认系统状态
$ uname -r
$ systemctl is-system-running
$ dnf check
CentOS Stream 9 迁移
$ sudo bash migrate2opencloudos.sh --os-version 9 --check
$ sudo bash migrate2opencloudos.sh --os-version 9 --migrate
  • 备份优先:迁移前务必创建完整快照或备份
  • 测试先行:在测试环境验证迁移流程后再操作生产环境
  • 第三方包:EPEL、Remi 等第三方仓库的包需在迁移后重新配置
  • 自编译模块:自编译的内核模块需在新内核上重新编译
  • 不可中断:迁移过程中不要中断操作或关闭电源
  • 监控服务:迁移后检查所有关键服务是否正常运行
迁移后检查关键服务
$ sudo systemctl list-units --type=service --state=failed
$ sudo systemctl status nginx postgresql redis

在腾讯云 CVM 上运行 OpenCloudOS(即 TencentOS Server)时,有以下专属集成特性:

TencentOS Server 镜像预装了以下腾讯云组件:

  • cloud-init:实例初始化,预配置腾讯云数据源
  • tat_agent:腾讯云自动化助手 agent,支持远程命令执行
  • sgagent:腾讯云监控 agent
  • YunJing:腾讯云主机安全 agent
查看预装的腾讯云组件
$ rpm -qa | grep -E "(cloud-init|tat_agent|sgagent)"
$ systemctl status tat_agent

TAT 允许你在控制台或通过 API 远程执行命令,无需 SSH 登录:

查看 TAT agent 状态
$ systemctl status tat_agent

通过 CLI 执行远程命令:

使用 tccli 在实例上远程执行命令
$ tccli tat RunCommand \
--Content "$(echo 'df -h && free -m' | base64)" \
--InstanceIds '["ins-xxxxxx"]' \
--CommandType SHELL

腾讯云为 TencentOS Kernel 提供内核热补丁支持:

查看可用的热补丁
$ sudo dnf list available | grep kpatch
安装热补丁
$ sudo dnf install kpatch-patch-<kernel-version>

TencentOS Server 在 CVM 上的默认配置针对腾讯云做了调优:

  • 虚拟化驱动:virtio 驱动针对腾讯云虚拟化平台优化
  • 内存管理:页面回收和 swap 策略针对 CVM 调优
  • 网络参数:TCP 和网卡参数针对腾讯云网络调优
  • 存储调度:I/O 调度器针对云硬盘特性调优
查看腾讯云调优参数
$ cat /etc/sysctl.d/*tencent* 2>/dev/null
$ cat /etc/sysctl.d/*cloud* 2>/dev/null

结合 tccli 可以实现自动化运维:

批量查询实例状态
$ tccli cvm DescribeInstances \
--Filters '[{"Name":"instance-state","Values":["RUNNING"]}]' | \
jq '.InstanceSet[] | {InstanceId, InstanceName, PrivateIpAddresses}'
创建定期快照策略
$ tccli cbs CreateAutoSnapshotPolicy \
--Policy '[{"DayOfWeek":[0],"Hour":[3]}]' \
--AutoSnapshotPolicyName "weekly-backup" \
--RetentionDays 30

OpenCloudOS 社区资源:

腾讯云用户还可以通过腾讯云工单系统获取技术支持。

查看所有已安装的内核
$ sudo grubby --info=ALL | grep title
切换到标准内核
$ sudo grubby --set-default /boot/vmlinuz-4.18.0-xxx.oc8.x86_64
$ sudo reboot
切换回 TencentOS Kernel
$ sudo grubby --set-default /boot/vmlinuz-5.4.119-xxx.tkernel.x86_64
$ sudo reboot

OpenCloudOS 与 TencentOS Server 的关系

Section titled “OpenCloudOS 与 TencentOS Server 的关系”

OpenCloudOS 是社区开源项目,TencentOS Server 是腾讯云基于 OpenCloudOS 定制的商业镜像。两者的主要区别:

  • TencentOS Server 预装了腾讯云 agent 和监控组件
  • TencentOS Server 的仓库指向腾讯云内网镜像
  • TencentOS Server 可获得腾讯云官方技术支持
  • 两者的内核和用户态软件包完全一致

OpenCloudOS 8/9 与 RHEL 8/9 兼容,为 RHEL/CentOS 编译的软件通常可以直接运行。如遇问题:

检查二进制文件依赖
$ ldd /path/to/binary
查找缺失的库文件属于哪个包
$ dnf provides libxxx.so.1