KInG2
V2EX  ›  问与答

MySQL 在 NFS 存储上启动时,无法完成初始化。

  •  
  •   KInG2 · 23h 38m ago · 727 views

    MySQL 在 NFS 存储上启动时,因 NFS 服务端对 openat 系统调用无响应,导致工作线程陷入 D 状态(不可中断睡眠),主线程在 futex 上等待超时,最终服务卡死在 "InnoDB initialization" 阶段。

    下面是 AI 给出的判断:

    mysqld 线程状态:
    
    tid=68418  state=D  wchan=rpc_wait_bit_killable  syscall=257(openat)
    tid=7867   state=S  wchan=futex_wait              ← 主线程在等上面那个
    
    工作线程卡在 openat (打开文件)这个系统调用上,wchan=rpc_wait_bit_killable 是 NFS 客户端在等 NFS 服务器的 OPEN RPC 响应——也就是说 mysqld 正在尝试打开某个 InnoDB 文件( redo/dblwr/undo 之一),而 NFS 服务端对这个 OPEN 一直不回应,于是线程卡死在 D 状态。主线程在 futex 等它,所以整个 mysqld 卡在"InnoDB initialization"。
    
    

    第一次遇到,想知道怎么修复以及有好的解决方案吗? iSCSI 会不会更好一点。

    8 replies    2026-09-09 10:51:25 +08:00
    chenglus
        1
    chenglus  
       23h 23m ago
    MySQL 我都不敢在机械硬盘上用,这种网络盘方案还是别考虑了吧。
    KInG2
        2
    KInG2  
    OP
       23h 19m ago
    @chenglus 没办法,开发这边把 MySQL 单点就涨到了 3T ,导致客户现场只能采用大容量存储的形式来挂载数据使用。
    shakaraka
        3
    shakaraka  
       23h 13m ago
    你很勇喔只能说
    loveshuyuan
        4
    loveshuyuan  
       23h 11m ago
    这延迟能用?
    KInG2
        5
    KInG2  
    OP
       22h 54m ago
    @loveshuyuan 延迟还行,不涉及金钱交易,延迟可以接受,而且开发查表语句能查 5min 以上,NFS 的延迟算是我们系统中最小的延迟部分了。
    noahhhh
        6
    noahhhh  
       22h 38m ago via Android
    不能弄个 SSD 缓存吗。MySQL 构建下缓存也不至于查 5 分钟吧
    dreamx11
        7
    dreamx11  
       21h 42m ago
    https://dev.mysql.com/doc/refman/8.0/en/disk-issues.html
    最好还是换存储吧,MySQL 尽量不要用 NFS 存储,确实有坑
    KInG2
        8
    KInG2  
    OP
       4h 56m ago
    @dreamx11 目前暂时换不了,不能经过长时间校验好像 MySQL 自己好了。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   5376 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 43ms · UTC 07:47 · PVG 15:47 · LAX 00:47 · JFK 03:47
    ♥ Do have faith in what you're doing.