树莓派存储设备选择

备注

我感觉树莓派为了降低生产成本,没有集成能够满足桌面性能的存储芯片和接口实在是阉割了做作桌面或者服务器的能力。实际上,ARM的存储性能很弱,我不知道即将推出的苹果ARM架构笔记本/桌面设备如何解决这个存储性能问题。但至少,目前在树莓派,外接USB的移动存储设备是提升系统性能非常重要的环节。

树莓派主板没有集成存储控制芯片,没有我们熟悉的SATA或m2存储接口,所以需要借用USB接口来实现硬盘存储访问。好在当前树莓派4b已经支持USB3.0接口,至少在访问接口上已经接近 500MB/s ,具有一定的实用性。

默认情况下树莓派Raspberry Pi是从SD卡启动系统的,但是SD卡存储容量有限,如果能够转换成磁盘启动(SSD/HDD)则可以实现一个海量的存储系统。

最初我以为树莓派可以通过扩展卡来支持SATA磁盘,后来参考 Raspberry Pi: Adding an SSD drive to the Pi-Desktop kit 发现类似的解决方案是通过一种USB连接卡转换成 mSATA 或者 SATA接口,这样就类似于常用的USB接口移动硬盘连接。早期外接机械移动硬盘比较累赘,通过外接转接卡可以获得比较紧凑充满机械风的存储设备。

随着SSD技术进步,现在的外接SSD移动硬盘已经越做越小,摆脱了早期2.5寸移动硬盘的身影。我发现现在已经没有必要购买外接转接卡了,直接连接USB SSD存储器已经非常轻巧紧凑。推荐使用SSD移动存储作为树莓派存储设备。

mSATA 是SATA技术整合在小尺寸装置的接口控制器规范。目前笔记本电脑开始使用这种接口用于固态硬盘。

如果存储连续性数据,例如视频,则需要大量的空间,并且顺序读取情况下机械硬盘和固态存储差距较小,出于成本考虑,依然可以采用传统的机械硬盘。

存储转接卡

2018年我购买树莓派3b的时候,SSD存储还比较昂贵并且缺乏大容量规格。那时机械硬盘性价比较高(廉价),所以我组建树莓派存储时候选择了2.5寸机械硬盘。

另外,为了能够营造出服务器的风格,我选择了 SupTronics X820扩展卡 作为机械硬盘转接器。

USB外接SSD移动硬盘

根据经验和测试 西部数据Passport SSD移动硬盘 可以看到通过USB外接SSD移动硬盘是最佳的存储设备,随机4k写入性能是TF卡的46倍。

所以,作为 Kubernetes Atlas 在ARM设备上部署实现,强烈建议Raspberry Pi采用外接SSD移动硬盘来实现最佳存储性能。

备注

当前固态存储技术主流已经采用NvME存储,性能比几年前的SSD存储有很大提高。不过,根据 USB标准3.x 标准,当前树莓派只提供了USB 3.0接口,接口速度限制是无法充分发挥NvME存储性能的,适合匹配性能弱一个级别的SSD存储(售价也会低很多)。

不过,最近我发现NvME的存储设备大多是USB接口直连不通过转接线,非常类似U盘,所以做得非常小巧,可以比外接USB移动硬盘占用更小的空间。所以,如果要将 Raspberry Pi Cluster 做得更为紧凑美观,推荐采用NvME存储(U盘)。

USB外接M.2 NVMe协议固态硬盘

当前主流的移动硬盘已经跨越了SATA接口,采用NVMe PCI-E硬盘协议,可以充分发挥固态硬盘芯片的性能。并且设备非常小巧,适合树莓派使用。

我准备在合适的时候购买一款 USB外接M.2 NVMe协议固态硬盘 来配合 树莓派Raspberry Pi 400 使用,看能否进一步提高树莓派的性能。

USB外接机械移动硬盘

如果单纯考虑存储容量,并且主要用于顺序写入,例如视频流,则可以采用外接机械移动硬盘来助力ARM设备存储。我考虑在 Jetson Nano 上使用以前旧的机械硬盘,来作为存储容量补充。

U盘

我在使用 树莓派Raspberry Pi 400 考虑到TF性能有限,所以类似之前在 Raspberry Pi 4B 上使用 西部数据Passport SSD移动硬盘 一样外接USB存储来提高磁盘性能。不过,树莓派400是一款键 盘一体机,连接USB外接磁盘有点累赘,我很久以前购买过一个SDisk的魔豆U盘,非常小巧,当时购买的是最高规格的128G产盘,并且是USB 3.0接口。

不过,我实际测试下来,U盘的随机读写性能很差,4K随机写入速度只有187 IOPS,带宽 750KB/s,甚至还不如使用TF卡的随机IO。