树莓派nvme异常

树莓派Raspberry Pi 5 的一个改进是集成了 PCIe 2 ,我原本以为这将彻底提升树莓派的存储能力,并且可以借助拆分转接卡,能够支持双 NVMe存储 实现一个模拟企业级存储。然而,实践发现,这个功能扩展非常鸡肋,给我带来非常多的困扰:

  • PCIe通道只有一个,由于板卡限制,在电压和电流上感觉像在刀锋边缘行走,对于电流要求较高的pcie 4非常挑存储

  • 没有统一的厂商(供应链)质量控制,第三方拆分卡看似能用,但是无形中又降低了pcie接口的电气特性,使得存储稳定性降低

双pcie设备

由于树莓派的 PCIe 2 接口只有一个,而现代计算机设备其实依赖大量的pcie设备,例如GPU,存储都是通过宝贵的pcie接口连接。所以,我的最初想法是购买第三方PCIe转接卡。我选购的国内较有知名度的"微雪"拆分卡,一个板卡可以安装2个 m.2 设备

我从官方下载的OS镜像,通过 dd 写入到 铠侠KIOXIA EXCERIA G2 NVMe SSD存储Intel Optane(傲腾) M10 ,发现一个非常诡异的事情:

  • 首次启动后很长时间(其实自动做了存储分区resize),会出现提示 PARTUUID=c037849a-02 does not exist (也就是操作系统根分区无法读取)

我最初以为是 Intel Optane(傲腾) M10 电气兼容性问题,所以我也验证测试了之前一直在 树莓派Raspberry Pi 5 上使用的 铠侠KIOXIA EXCERIA G2 NVMe SSD存储 ,但是报错依旧。

我使用常规的 SD 卡启动系统( 铠侠KIOXIA EXCERIA G2 NVMe SSD存储 安装在 m.2 上),我惊奇地发现,原来自动resize后的操作系统分区已经被破坏了:

显示OS分区已经扩展好,但是无法挂载读取并且所有的 blkid 已经丢失
Disk /dev/nvme0n1: 1.82 TiB, 2000398934016 bytes, 3907029168 sectors
Disk model: KIOXIA-EXCERIA G2 SSD
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xc037849a

Device         Boot   Start        End    Sectors  Size Id Type
/dev/nvme0n1p1        16384    1064959    1048576  512M  c W95 FAT32 (LBA)
/dev/nvme0n1p2      1064960 3907029167 3905964208  1.8T 83 Linux

root@bcloud-w1:~# blkid /dev/nvme0n1
/dev/nvme0n1: PTUUID="c037849a" PTTYPE="dos"
root@bcloud-w1:~# blkid /dev/nvme0n1p1
/dev/nvme0n1p1: LABEL_FATBOOT="bootfs" LABEL="bootfs" UUID="F615-3D6A" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="c037849a-01"
root@bcloud-w1:~# blkid /dev/nvme0n1p2
这里输出是空白,没有内容

root@bcloud-w1:~# mount /dev/nvme0n1p2 /mnt
mount: /mnt: more filesystems detected on /dev/nvme0n1p2; use -t <type> or wipefs(8).
mount: (hint) your fstab has been modified, but systemd still uses
       the old version; use 'systemctl daemon-reload' to reload.
分区无法挂载