You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 22.04及后续版本开机自动运行kpartx识别jMicron fakeRAID分区的规范方法

Ubuntu 22.04及后续版本开机自动运行kpartx识别jMicron fakeRAID分区的规范方法

我太懂你这种卡壳的感觉了——以前2010年那套udev规则的方法早就过时,rc.local又像个凑数的临时方案,mdadm更是对不上路子(毕竟这是dmraid管的fakeRAID,不是mdadm的软件RAID)。好在Ubuntu 22.04之后用systemd来做这件事是最规范、最靠谱的,下面一步步来操作:

  • 第一步:创建专属的systemd服务文件
    我们要做一个只在jMicron阵列设备就绪后才触发的服务,避免时机不对导致kpartx跑失败。创建并编辑服务文件:

    sudo nano /etc/systemd/system/kpartx-jmicron.service
    

    粘贴以下内容(注意把jmicron_GRAID换成你实际的阵列设备名,就是dmraid识别出来的那个):

    [Unit]
    Description=自动识别jMicron fakeRAID分区
    Requires=dev-mapper-jmicron_GRAID.device
    After=dev-mapper-jmicron_GRAID.device
    DefaultDependencies=no
    Before=local-fs.target
    
    [Service]
    Type=oneshot
    ExecStart=/sbin/kpartx -a /dev/mapper/jmicron_GRAID
    ExecStop=/sbin/kpartx -d /dev/mapper/jmicron_GRAID
    RemainAfterExit=yes
    
    [Install]
    WantedBy=multi-user.target
    

    这里解释下关键配置:

    • Requires和After确保只在阵列设备/dev/mapper/jmicron_GRAID完全就绪后才启动服务
    • DefaultDependencies=no避免和systemd的默认依赖冲突,保证服务在文件系统挂载前执行
    • Type=oneshot表示这是一次性执行的任务
    • RemainAfterExit=yes让服务执行完后保持active状态,符合systemd的状态管理逻辑
  • 第二步:激活并测试服务
    先让systemd加载新的服务配置:

    sudo systemctl daemon-reload
    

    然后设置开机自启:

    sudo systemctl enable kpartx-jmicron.service
    

    不用急着重启,先手动启动服务验证效果:

    sudo systemctl start kpartx-jmicron.service
    

    之后检查分区是否生成:

    ls /dev/mapper/jmicron_GRAID1
    

    如果能看到这个设备,说明配置生效了,重启系统后分区会自动被识别出来。

  • 额外说明(避坑)

    • 为什么以前的udev规则没用?Ubuntu 22.04里kpartx的udev触发逻辑已经调整,自己写的规则很容易在阵列设备还没完全初始化时就触发kpartx,自然跑失败
    • rc.local默认是禁用的,而且它的执行时机晚于文件系统挂载阶段,对于需要先识别分区再挂载的场景完全不适用,确实是临时凑数的方案
    • mdadm针对的是软件RAID,你的jMicron fakeRAID是硬件模拟的RAID,由dmraid管理,所以用mdadm根本不对路

备注:内容来源于stack exchange,提问作者Danatela

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 09:24:36