Linux内核7.1服务器新特性与升级时间
Linux内核7.1已于2026年6月14日发布,但服务器短期内通常不会运行。本文介绍VPS可用的新功能、uname -r检查方法,以及Ubuntu、Debian和RHEL何时可能采用。
Linux kernel 7.1 的新特性
Linux kernel 7.1 于 14 June 2026 发布,距离 7.0 发布 9 周。对于 VPS(virtual private server)租户,值得关注的变更主要分为四个方面:存储和文件系统、网络、内存管理,以及进程和容器控制。其余内容主要是桌面和图形方面的改进,无头服务器通常不会加载这些功能。
但您需要先了解另一个问题。您的服务器几乎肯定没有运行 7.1,而且很长时间内都不会运行。kernel.org 没有将 7.1 列为长期支持版本。截至 11 August 2026,长期支持分支包括 6.18、6.12、6.6、6.1、5.15 和 5.10;主流服务器发行版都基于其中一个分支,或基于发行版自行维护的内核分支构建。内核中的“新特性”和服务器上的“新特性”之间可能相隔数年,因此本文将分别介绍这两个方面。
您当前的 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 还是 interim release 的取舍才是这些数字背后的实际决策。
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 进行的零范围刷新和查找,并向实时组几何信息中加入写指针,为分区设备提供基础支持。本版本还完全重写了 NTFS,提供完整写支持并完成 iomap 转换。如果您需要在服务器上挂载来自 Windows 计算机的磁盘映像,这项改动很重要。
其他值得了解的存储改动包括: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(address family express data path,即一种将原始数据包直接交给用户空间、无需通过网络协议栈复制的套接字类型)的容器,几乎必须获得整个设备。使用租用队列后,容器只需获得一个硬件队列,即可原生速率运行 AF_XDP 和内存提供程序,同时主机保留 NIC 的其余队列。此功能与 io_uring 零拷贝路径中的 AF_XDP 支持一同加入。
在常规功能方面,sockfs 中的套接字现在接受 user.* 扩展属性。基于路径的 AF_UNIX 套接字此前已继承底层文件系统的 xattr 支持,但仅存在于 sockfs 中的套接字没有这项支持。现在,进程可以为套接字添加标签,eBPF 程序也可以根据该标签进行过滤。
有两项功能被移除。UDP-Lite 因无人使用而移除。IPv6 不再支持构建为可加载模块;如果需要 IPv6,必须将其编译进内核。第二项变化在任何发行版内核中都不可见,因为常见的服务器发行版本来就会将 IPv6 编译进内核。
内存管理:swap 表已完成
swap 重构进入第三阶段。本阶段移除了静态 swap 映射。现在,swap 计数直接存储在 swap 表中。报告的节省量约为静态 swap 元数据的 30%。无论是否实际使用 swap,内核都会根据 swap 设备的大小按比例占用这部分内存。对于较小的 swap 文件,绝对节省量不大;配置的 swap 越大,节省量也越多。
MGLRU(多代最近最少使用算法,较新的页面回收算法)现在可以批量检查页面的 young 标志,而不必逐页检查。该改动公布的结果是:在一台 32 核 Arm64 服务器上,性能提升超过 60%。批量处理在单页开销最高的场景中收益最大,因此这个数字来自一台大型 Arm 服务器。如果您运行的是 Arm VPS 而不是 x86 VPS,这是 7.1 中最可能在您自己的测量结果中体现出来的改动,但在 2 核或 4 核系统上不会达到相同幅度。
此外,退出中的 memory cgroup 不再发生内存迁移,khugepaged 扫描占用的 CPU 更少,maple tree 也围绕大型节点处理进行了大规模重构。这些功能都无需配置。您会感受到的变化是系统时间略有减少。
调度器:sched_ext 子调度器,以及默认启用 FRED
sched_ext 是可扩展的调度器类,允许您将 CPU 调度器编写为 BPF 程序,并在运行时加载。它在 6.12 中加入。7.1 增加了子调度器的核心结构,使控制组将来可以使用自己的调度器。请注意这句话的含义。7.1 中的实现尚未完成,尤其缺少入队路径。因此,这只是为后续版本准备的基础,当前还不能启用该功能。
Intel 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 可以在用户空间处理 guest 缺页异常。Arm 上受保护的 KVM 新增了对匿名内存的支持,但该合并请求本身说明此功能尚未达到生产就绪状态。
内核 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。
下面是人们最容易理解错的地方。HWE 栈会直接跳到最新中间版本所携带的内核,因此可能完全跳过某个上游内核系列。Ubuntu LTS 中有 7.0。7.1 可能永远不会成为某个 LTS 的基础版本,因为其后的中间版本会携带更晚的内核系列。7.1 中进入您的 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 列出新版本,说明软件包已经安装,但引导加载程序的默认项尚未更新:请检查 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。它是普通的稳定版,新的主线版本发布后,其稳定系列很快就会停止维护。如果您需要一个已经维护多年、未来还会继续获得多年修复的内核,您的发行版内核本身就是这种内核。
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 列出了新的内核镜像。这不表示安装过程出现故障,而是引导加载程序的默认项没有更新。