Linux 内核 7.1 对服务器和 VPS 有哪些影响?
Linux 内核 7.1 于 2026 年 6 月 14 日发布,但主流服务器发行版尚未采用。了解 VPS 可用的新功能、使用 uname -r 检查当前内核,以及发行版何时可能提供 7.1。
Linux kernel 7.1 的新功能
Linux kernel 7.1 于 2026 年 6 月 14 日发布,距 7.0 发布 9 周。对于 VPS(虚拟专用服务器)租户,值得关注的变化主要分为 4 个方面:存储和文件系统、网络、内存管理,以及进程和容器控制。其余变化主要涉及桌面和图形功能,无头服务器通常不会加载这些功能。
你需要先了解另一个问题。你的服务器几乎肯定没有运行 7.1,而且很长时间内都不会运行。kernel.org 没有将 7.1 列为长期支持版本。截至 2026 年 8 月 11 日,长期支持版本线为 6.18、6.12、6.6、6.1、5.15 和 5.10。主流服务器发行版都基于其中一个版本线构建,或使用自己维护的版本线。“kernel 中的新功能”和“服务器上的新功能”之间可能相差数年,因此本指南会同时介绍这两个方面。
当前 VPS 运行的内核
uname -r
uname -srm
systemd-detect-virtuname -r 会输出当前运行的内核发行版本。在 Ubuntu 24.04 上,输出类似 6.8.0-79-generic。第一个连字符之前的部分是上游版本线。其后的全部内容都是发行版自己的构建编号,与上游版本完全不同步。Canonical 的 6.8.0-79 包含数千项从更新内核回移植的修复,因此它并不是 Linus 在 2024 年 3 月标记为 6.8 的代码。这就是为什么“我的内核很旧”实际说明的问题比听起来少。功能可能较旧,但安全修复通常并不落后。
systemd-detect-virt 会告诉您是否可以更换内核。在完整虚拟机上,您可以启动自己的内核映像并执行真正的内核升级,此时它会输出 kvm。在共享宿主机内核的容器虚拟化环境中,它会输出 lxc 或 openvz。在容器方案中,uname -r 显示的是服务提供商的内核;安装内核软件包不会改变任何可启动的内核,只有服务提供商将宿主机重启到更新的内核后,该版本中的功能才对您可用。计划进行任何内核操作前,先运行此检查。
The data behind this chart
[
{
"distro": "Ubuntu 26.04 LTS (7.0)",
"releases_behind_7_1": 1,
"notes": "GA kernel, shipped with the April 2026 release"
},
{
"distro": "Ubuntu 24.04 LTS, HWE (6.17)",
"releases_behind_7_1": 4,
"notes": "6.17 came with 24.04.4; 7.0 is rolling out ahead of 24.04.5 on 27 August 2026"
},
{
"distro": "Debian 13 trixie (6.12)",
"releases_behind_7_1": 9,
"notes": "upstream longterm line, kernel.org projected EOL December 2028"
},
{
"distro": "RHEL 10 and its rebuilds (6.12)",
"releases_behind_7_1": 9,
"notes": "Red Hat backports fixes into its own frozen 6.12 stream"
},
{
"distro": "Ubuntu 24.04 LTS, GA (6.8)",
"releases_behind_7_1": 13,
"notes": "the default unless you install the HWE stack"
},
{
"distro": "Ubuntu 22.04 LTS, GA (5.15)",
"releases_behind_7_1": 26,
"notes": "upstream longterm line, kernel.org projected EOL December 2026"
}
]共有 6 个平台,其中没有一个启动 7.1。最新的是 Ubuntu 26.04 LTS (7.0),比上游版本落后 1 个发行版本。仍在支持期内的最旧版本落后 26 个发行版本。Ubuntu 24.04 的默认 GA 内核落后 13 个发行版本,Debian 13 和 RHEL 10 则基于 6.12 longterm 版本线落后 9 个发行版本。按发行版本计数只是粗略指标,因为它忽略了发行版回移植的全部内容,但可以显示差距的大致情况。如果您正在权衡使用其中哪个版本,那么 服务器上选择 LTS 版本还是中间版本的取舍 才是这些数字背后的实际决策。
7.1 中的存储和文件系统
7.1 新增了在文件系统内生成和验证 T10 PI(保护信息)的能力,不再仅限于块层,同时支持更灵活的 T10 对齐。T10 PI 是附加到每个块的额外字节,其中包含校验和以及用于标识数据所属块的标签。这样可以检测定向错误写入或撕裂写入,而不是将错误数据当作有效数据返回。VPS 租户需要注意的是硬件。设备必须公开完整性元数据,而虚拟磁盘通常不会公开这些元数据。
ls /sys/block/vda/integrity/在大多数 VPS 磁盘上,该命令会返回 No such file or directory,因为只有设备注册了完整性支持后,块层才会创建 integrity 目录。这里出现该错误是正常现象,并不表示故障。如果您想在进一步了解存储功能前确认磁盘的实际类型,应先检查 VPS 磁盘是否确实为 NVMe;VPS 上 NVMe 与 SATA SSD 的差异则解释了为什么答案会改变相关数值。
Btrfs 修复了内存压力下写时复制放大的问题,并改进了跟踪范围内第一个 extent 的清除速度。合并请求中报告的示例工作负载吞吐量提高了 10%。其关闭操作不再标记为实验性功能。XFS 改进了通过 iomap 执行的 zero range 刷新和查找,并为实时组几何结构增加了写指针,为分区设备提供基础支持。如果您需要在服务器上挂载来自 Windows 计算机的磁盘映像,这些 NTFS 改进也很重要,因为此版本完全重写了 NTFS,提供完整写入支持并完成了 iomap 转换。
其他值得了解的存储改进包括:ublk(用户空间块驱动程序)新增零拷贝 I/O;io_uring 新增 SCSI 直通命令;SED-OPAL 自加密磁盘支持 STACK_RESET 命令和扩展的单用户模式;新增用于直接访问设备的 fs-dax 字符设备驱动程序;VFS 将 inode->i_ino 从 unsigned long 扩展为 u64,从而移除了 32 位构建中的 inode 编号上限。在网络文件系统方面,内核内 NFS 服务器现在可以通过 sign_fh 挂载选项为文件句柄签名,CIFS 客户端新增了 O_TMPFILE。
网络:队列租用,以及它为容器带来的能力
网络方面最重要的变化是硬件队列租用。虚拟网络设备现在可以租用一个队列。该队列绑定到物理网络设备上的真实队列,虚拟设备可作为其代理。此功能主要面向容器。以前,需要使用 AF_XDP(地址族快速数据路径,一种将原始数据包直接交给用户空间、无需通过网络协议栈复制的套接字类型)的容器,几乎必须获得整个设备。使用租用队列后,容器只需获得一个硬件队列即可运行 AF_XDP 和内存提供程序,并达到原生速度;主机仍可使用 NIC 的其余队列。此功能与 io_uring 零拷贝路径中的 AF_XDP 支持一同引入。
在常规功能方面,sockfs 中的套接字现在接受 user.* 扩展属性。基于路径的 AF_UNIX 套接字此前已继承底层文件系统的 xattr 支持,但仅存在于 sockfs 中的套接字没有这项支持。现在,进程可以为套接字设置标签,eBPF 程序也可以根据该标签进行过滤。
有两项功能被移除。UDP-Lite 因无人使用而被移除。IPv6 不再支持构建为可加载模块;如果需要 IPv6,必须将其编译进内核。对于任何发行版内核,第二项变化都不可见,因为常见的服务器发行版已经将 IPv6 编译进内核。
内存管理:交换表已完成
交换子系统重构进入第三阶段。本阶段移除了静态交换映射。现在,交换计数直接存储在交换表中。据报告,静态交换元数据减少了约 30%。无论是否发生交换,内核都会根据交换设备的大小按比例保留这部分内存。在较小的交换文件上,绝对节省量不大;配置的交换空间越大,节省量也越多。
MGLRU(多代最近最少使用算法,较新的页面回收算法)现在可以批量检查页面的 young 标志,而不必逐页检查。该改动公布的数据是在 Arm64 32 核服务器上性能提升超过 60%。批处理在单页处理成本较高的场景中收益最大,因此这一数据来自大型 Arm 服务器。如果您运行的是 Arm VPS,而不是 x86 VPS,这是 7.1 中最可能在您自己的测量结果中体现出来的改动,但在 2 核或 4 核系统上不会达到这一幅度。
此外,已移除从即将销毁的内存 cgroup 转移内存的操作;khugepaged 扫描消耗的 CPU 更少;maple tree 也围绕大型节点处理进行了大规模重构。这些功能都不需要配置。您能观察到的变化是系统时间略有减少。
调度器:sched_ext 子调度器,以及默认启用的 FRED
sched_ext 是可扩展的调度器类别,允许将 CPU 调度器编写为 BPF 程序,并在运行时加载。它在 6.12 中引入。7.1 增加了子调度器的核心结构,使控制组最终可以使用自己的调度器。请仔细理解这句话。7.1 中的实现尚未完成,尤其缺少入队路径。因此,这些代码是为后续版本准备的基础工作,目前还不能启用。
对于支持 Intel FRED(灵活返回和事件传递)的硬件,FRED 现在默认启用。FRED 用更简洁的路径替代传统的 x86 事件传递路径。它从 6.9 开始存在于内核中,但此前需要通过 fred=on 启动参数启用。改为默认启用,说明已发布的硬件已经经过充分测试。到目前为止公布的测量结果显示,在 I/O 密集型工作负载下性能提升约 4% 到 7%。这些结果来自 Phoronix 对客户端芯片的测试,因此在测量自己的工作负载之前,不要将这一提升幅度用于服务器预算。
代理执行增加了用于提升远程锁所有者优先级的捐赠者迁移支持。EEVDF 修复了负延迟相关问题。高精度定时器核心也进行了大幅重写。这些改动改善延迟质量,但不会通过配置文件暴露出来。
clone3() 中新增的进程和容器控制
clone3() 中新增了 3 个标志。每个标志都填补了监管程序多年来一直手动绕过的一个缺口。CLONE_AUTOREAP 让子进程在退出时自行回收,因此不会变成僵尸进程,等待可能永远不会调用 wait() 的父进程。CLONE_NNP 在创建子进程时设置 no_new_privs,从而消除了 clone 与子进程自行设置该标志之间的时间窗口。CLONE_PIDFD_AUTOKILL 将子进程的生命周期绑定到返回给父进程的 pidfd:关闭 pidfd 后,子进程会被终止。因此,监管程序退出后不会留下仍在运行的孤儿进程。
挂载命名空间也获得了相同的处理方式。CLONE_EMPTY_MNTNS 用于 clone3(),UNSHARE_EMPTY_MNTNS 用于 unshare(),可创建一个空的挂载命名空间,而不是创建父进程挂载点的完整副本,再由运行时逐一卸载。FSMOUNT_NAMESPACE 允许 fsmount() 将文件系统直接放入新的命名空间。容器运行时已经手动完成这一组操作 10 年,因此现在通过一次调用即可完成,运行时不再需要从包含主机挂载点的命名空间开始。
在虚拟化方面,guest_memfd 现在支持 userfaultfd,因此 hypervisor 可以在用户空间处理来宾页错误。Arm 上受保护的 KVM 新增了匿名内存支持,但合并说明本身指出,该功能尚未达到生产就绪状态。
kernel 7.1 何时会进入您的服务器
Fedora 已经提供了该版本。Fedora 44 的更新仓库在 2026 年 7 月和 8 月期间转为使用 7.1 系列,因为 Fedora 会在一个发行版的生命周期内将内核重新基于新的稳定分支。Arch 和 openSUSE Tumbleweed 也是同样的原因。这些系统适合测试,不适合运行您的服务。
其他系统都需要等待,而且这是有意设计的。Debian 13 发布时使用 6.12,并在整个发行版生命周期内保持 6.12,只将修复反向移植到该版本中。RHEL 10 发布时使用 6.12.0,处理方式相同。Ubuntu 26.04 LTS 于 2026 年 4 月发布时使用 7.0。Ubuntu 24.04 LTS 提供硬件支持栈,可将后续 Ubuntu 版本中的更新内核引入 LTS;截至 24.04.4 点版本,该栈使用 6.17,并计划在 2026 年 8 月 27 日发布的 24.04.5 中转为 7.0。点版本不是新的 Ubuntu 版本,而是将截至目前的所有更新整合到全新安装介质中的同一个 24.04,因此 已在服务器上持续安装更新的用户需要了解 24.04.5 会改动什么,主要就是 HWE 内核分支,其他变化很少。
这里最容易被误解。HWE 栈会跳转到最新临时版本所携带的内核,因此可能完全跳过某个上游分支。Ubuntu LTS 中包含 7.0。7.1 可能永远不会成为某个 LTS 的基础版本,因为其后的临时版本会携带更晚的分支。7.1 中进入 LTS 的内容是修复,这些修复会被反向移植到您当前使用的分支。大部分功能不会进入 LTS。
如果您确实需要在稳定服务器上使用更新的内核,受支持的路径并不多。
# Ubuntu 24.04 LTS: install the hardware enablement stack
sudo apt update
sudo apt install --install-recommends linux-generic-hwe-24.04
sudo reboot
# Debian 13, with trixie-backports enabled in your apt sources
apt-cache policy linux-image-amd64
sudo apt install -t trixie-backports linux-image-amd64
sudo reboot重启后,检查实际启动的内核:
uname -r
dpkg -l 'linux-image-*' | grep ^ii
ls /var/run/reboot-requireduname -r 现在应显示新的分支,dpkg -l 会显示仍已安装的所有内核映像。如果 uname -r 显示旧版本,而 dpkg -l 列出新版本,说明软件包已安装,但 bootloader 的默认项没有切换:请检查 GRUB 菜单项。/var/run/reboot-required 仍然存在表示软件包已升级内核,但系统自此尚未重启;这是已修复的服务器仍在执行存在漏洞代码的最常见原因。
是否应在生产 VPS 上追逐 7.1
不应这样做。原因不是为了谨慎而谨慎。发行版内核代表一份支持契约。Canonical、Red Hat、SUSE 和 Debian 会将安全修复向后移植到各自冻结的内核版本线,并针对随其发布的用户空间进行测试。第三方归档中的主线内核或自行编译的内核可以提供新功能,但也会让你失去这些工作,因为没有人会将修复向后移植到你的构建版本中。你会成为该内核的维护者。
例外情况确实存在,但范围很窄:旧内核无法驱动的硬件,或者你已经在自己的工作负载上测量过的性能改进,并且愿意承担后果。在 VPS 上,第一种情况几乎从不成立,因为你看到的硬件是虚拟硬件。除此之外,请保持发行版内核为最新版本,并在系统提示时重启。如果发行版升级已经列入计划,从 Ubuntu 24.04 升级到 26.04 可一步将内核从 6.8 升级到 7.0,其跨度大于任何单个内核软件包所能提供的升级。
FAQ
如何检查 VPS 正在运行哪个 Linux 内核?
运行 uname -r。该命令会输出类似 6.8.0-79-generic 的内容。第一个连字符前的数字是发行版构建所基于的上游版本线,后面的内容是发行版自己的构建编号,其中包含回移植的修复。然后运行 systemd-detect-virt。如果输出 lxc 或 openvz,说明您使用的是容器虚拟化,共享主机的内核,无法更换内核。如果输出 kvm,说明您启动的是自己的内核映像,内核升级由您负责。
Linux 7.1 是长期支持内核吗?
不是。截至 11 August 2026,kernel.org 列出的长期支持版本线为 6.18、6.12、6.6、6.1、5.15 和 5.10,其中不包括 7.1。7.1 是普通稳定版本,其稳定版本线会在下一个主线版本发布后不久停止维护。如果您需要一个已经获得多年修复、未来也会持续获得多年修复的内核,您的发行版内核本身就是这种内核。
Ubuntu 或 Debian 何时会提供内核 7.1?
它可能永远不会成为默认内核。Debian 13 在整个发布周期内保持使用 6.12,RHEL 10 保持使用 6.12.0。Ubuntu 26.04 LTS 提供了 7.0,而 Ubuntu 的硬件支持栈会切换到最新临时版本所携带的内核,因此可能完全跳过某个上游版本线。Ubuntu 24.04 LTS 计划在 27 August 2026 发布 24.04.5 时,将其 HWE 内核升级到 7.0。7.1 中的修复会以回移植的方式进入较旧的版本线,您最终可以获得这些修复,但通常不会获得其中的新功能。
Linux 7.1 中哪些变化对虚拟专用服务器真正重要?
有 4 项。硬件队列租用允许容器以原生速度使用一个真实网卡队列处理 AF_XDP。交换分区重构的第 3 阶段移除了静态交换映射,据报告可将内核为交换设备保留的元数据减少 30%。MGLRU 可以批量检查页面的 young 标志,在多核 Arm 服务器上取得了最高的已发布性能提升。clone3() 还获得了 CLONE_AUTOREAP、CLONE_NNP 和 CLONE_PIDFD_AUTOKILL,使监管子进程更加安全。文件系统级 T10 保护信息也已加入,但虚拟磁盘很少会提供所需的完整性元数据。
升级内核会导致我的 VPS 故障吗?
常见故障发生在启动阶段。完整的 /boot 会导致 update-initramfs 在安装期间因 No space left on device 失败,使软件包处于半配置状态:使用 sudo apt autoremove --purge 清理旧内核,然后重新安装。基于旧内核构建的外部模块会停止加载,因此由 DKMS 管理的组件必须重新构建;如果重建失败,通常要到运行时缺少模块后才会发现。另一个情况是,重启后 uname -r 仍报告旧版本,而 dpkg -l 列出新内核映像。这不表示安装失败,而是引导加载程序的默认项没有更新。