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
相关产品推荐
相关产品推荐

