我想在K1开发板中使用双固态硬盘用来做NAS,但是当我使用两个固态硬盘的时候,发现系统只识别了一个固态硬盘。一开始我以为是我的固态硬盘有问题,所以做了单独的测试,发现两个固态硬盘都可以识别,两个M.2的接口也是正常使用,所以怀疑是系统适配问题,请问如何修改能够实现双固态硬盘的识别。谢谢
这个问题 是由于此款ssd提供cntlid是相同的,所以导致只能识别一款:
- 在 NVMe 协议设计中,CNTLID(Controller ID) 是控制器唯一性标识的核心参数
- 其数据来源有两种:
- 物理 NVMe 设备:由固件通过 Identify Controller 命令返回
- NVMe-oF 设备:由主机或 Target 动态分配
ssd属于物理 NVMe 设备设备,由ssd固件决定。
- 主机需要通过CNTLID区分控制器,负载均衡策略和最小队列深度算法等都对其由依赖,linux系统要求其保证唯一性。
具体提交:1b1031ca63b2ce1d3b664b35b77ec94e458693e9,详见提交描述;
总结:
CNTLID的唯一性是linux系统nvme框架层要求,需要ssd固件保证。这款异常的ssd需要找原厂支持重新设置CNTLID。
1 Like
Thank you!