You need to enable JavaScript to run this app.
文档中心
云服务器

云服务器

复制全文
下载 pdf
veLinux操作系统问题
使用veLinux 5.15内核的实例因io_uring出现磁盘异常,如何处理?
复制全文
下载 pdf
使用veLinux 5.15内核的实例因io_uring出现磁盘异常,如何处理?
问题描述​
使用veLinux 5.15.x内核镜像的云服务器实例运行io_uring业务时,在高I/O负载下可能出现两类异常。​
  • 磁盘 I/O 长时间无响应​
  • ​
    2025-12-08 06:51:03 +951710 INFO: task node_exporter:2301919 blocked for more than 1063649 seconds.​
    2025-12-08 06:51:03 +952029 Tainted: G S OE 5.15.152.bsk.13-amd64 #5.15.152.bsk.13​
    2025-12-08 06:51:03 +952299 "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.​
    2025-12-08 06:51:03 +952565 task:node_exporter state:D stack: 0 pid:2301919 ppid: 9209 flags:0x00000000​
    2025-12-08 06:51:03 +952567 Call Trace:​
    2025-12-08 06:51:03 +952567 <TASK>​
    2025-12-08 06:51:03 +952568 __schedule+0x9f9/0x10e0​
    2025-12-08 06:51:03 +952571 schedule+0x51/0xd0​
    2025-12-08 06:51:03 +952573 schedule_preempt_disabled+0xa/0x10​
    2025-12-08 06:51:03 +952575 __mutex_lock.isra.11+0x329/0x440​
    2025-12-08 06:51:03 +952576 queue_attr_show+0x2b/0x60​
    2025-12-08 06:51:03 +952579 sysfs_kf_seq_show+0x98/0x100​
    2025-12-08 06:51:03 +952581 seq_read_iter+0x186/0x3c0​
    2025-12-08 06:51:03 +952583 new_sync_read+0x112/0x190​
    2025-12-08 06:51:03 +952585 vfs_read+0xee/0x190​
    2025-12-08 06:51:03 +952587 ksys_read+0x59/0xd0​
    2025-12-08 06:51:03 +952589 do_syscall_64+0x34/0xb0​
    2025-12-08 06:51:03 +952592 entry_SYSCALL_64_after_hwframe+0x61/0xcb​
    2025-12-08 06:51:03 +952593 RIP: 0033:0x4ac9db​
    2025-12-08 06:51:03 +952595 RSP: 002b:000000c015aa8ee0 EFLAGS: 00000206 ORIG_RAX: 0000000000000000​
    2025-12-08 06:51:03 +952596 RAX: ffffffffffffffda RBX: 000000c00005b000 RCX: 00000000004ac9db​
    2025-12-08 06:51:03 +952597 RDX: 0000000000001001 RSI: 000000c015366000 RDI: 000000000000005c​
    2025-12-08 06:51:03 +952597 RBP: 000000c015aa8f30 R08: 0000000000000001 R09: 000000c016165e00​
    2025-12-08 06:51:03 +952598 R10: 00007fd64d083c70 R11: 0000000000000206 R12: 000000c015366000​
    2025-12-08 06:51:03 +952599 R13: 0000000000000000 R14: 000000c00607cb60 R15: 0000000000000009​
    2025-12-08 06:51:03 +952600 </TASK>​
    2025-12-08 06:51:03 +952735 INFO: task node_exporter:2301919 is blocked on a mutex likely owned by task sh:2540448.​
    2025-12-08 06:51:03 +953062 task:sh state:D stack: 0 pid:2540448 ppid: 9995 flags:0x00000000​
    2025-12-08 06:51:03 +953064 Call Trace:​
    2025-12-08 06:51:03 +953065 <TASK>​
    2025-12-08 06:51:03 +953066 __schedule+0x9f9/0x10e0​
    2025-12-08 06:51:03 +953069 ? call_rcu+0xd8/0x580​
    2025-12-08 06:51:03 +953071 schedule+0x51/0xd0​
    2025-12-08 06:51:03 +953074 blk_mq_freeze_queue_wait+0x62/0x90​
    2025-12-08 06:51:03 +953076 ? finish_wait+0x80/0x80​
    2025-12-08 06:51:03 +953078 blk_mq_update_nr_requests+0x4b/0x150​
    2025-12-08 06:51:03 +953080 queue_requests_store+0x69/0xa0​
    2025-12-08 06:51:03 +953083 queue_attr_store+0x3c/0x60​
    2025-12-08 06:51:03 +953085 kernfs_fop_write_iter+0x12d/0x1c0​
    2025-12-08 06:51:03 +953088 new_sync_write+0x119/0x1a0​
    2025-12-08 06:51:03 +953090 vfs_write+0x181/0x260​
    ​
  • 业务数据校验失败​
  • ​​​
问题原因​
5.15内核版本中的io_uring实现存在缺陷。在高I/O负载下,缺陷可能通过以下两类路径引发磁盘异常:​
  • 批量提交混合读写的直接I/O请求时,块设备层可能错误初始化请求的读写标志,造成读写请求处理异常,并可能影响数据完整性。例如,使用io_uring一次提交8个DIRECT I/O请求,且其中同时包含读请求和写请求时,可能触发该问题。​
  • io_uring请求处理过程中,块设备队列的引用计数可能未被正确释放。随后执行磁盘队列参数调整、I/O调度器切换、设备重置或热插拔等需要冻结队列的操作时,队列可能长时间无法完成冻结,表现为单块磁盘I/O卡住。​
解决方案​
通过内核热补丁,您可以在不重启实例及其中运行的业务的前提下修复问题,避免后续请求继续触发该问题。​
注意​
当前仅内核版本为5.15.152-7.1.ve2的实例支持通过热补丁修复该问题。热补丁只能避免后续请求再次触发该问题,无法恢复已经损坏的数据。​
  1. 执行如下命令,确认当前操作系统内核版本号。​
  • ​
    sudo uname -r​
    ​
  • 回显如下所示时,表示内核版本号为5.15.152-7.1.ve2。​
  • ​
    5.15.152-7.1.ve2.x86_64​
    ​
  1. 根据操作系统及内核版本号,执行对应命令安装热补丁。​
  • ​
    sudo yum makecache​
    sudo yum install -y livepatch-5.15.152-7.1.ve2-io-uring-data-corruption-1.0-1.x86_64​
    ​
  1. 执行如下命令,确认热补丁是否安装成功。​
  • ​
    rpm -qa | grep -F 'livepatch-5.15.152-7.1.ve2-io-uring-data-corruption-1.0-1.x86_64'​
    ​
  • 回显如下所示时,表示热补丁已安装成功。​
  • ​​​
  1. 执行如下命令,确认热补丁模块已成功加载。​
  • ​
    sudo lsmod | grep -i livepatch​
    ​
  • 回显如下所示时,表示热补丁已成功加载并生效。​
  • ​​​
最近更新时间:2026.10.09 14:31:25
这个页面对您有帮助吗?
有用
有用
无用
无用