在树莓派系统中,SD 卡既承担启动分区,又承担根文件系统与日志写入,是整个系统中最容易损耗、却最关键的部件。当树莓派被用作服务器、运行 Docker、执行大量 rsync 或系统迁移时,SD 卡的寿命与稳定性就变得尤为重要。

本文记录了一次完整、工程化的 SD 卡健康检测过程,并给出明确的技术结论。


一、存储设备基本信息

首先确认树莓派当前使用的存储设备:

lsblk -o NAME,TYPE,SIZE,MODEL

输出显示:

mmcblk0     disk  7.5G
├─mmcblk0p1 part  511M
└─mmcblk0p2 part    7G

说明系统使用的是一张 8GB 级别的 SDHC 卡(约 7.48GiB 可用容量),设备型号显示为 NCard,属于无品牌或低端 SD 卡类别。


二、eMMC 寿命寄存器检测

尝试读取 eMMC 的寿命寄存器(EXT_CSD):

mmc extcsd read /dev/mmcblk0

返回:

ioctl: Connection timed out
Could not read EXT_CSD from /dev/mmcblk0

这是正常现象

EXT_CSD 只存在于 eMMC 设备中,而普通 SD 卡物理上并不支持这一寄存器,因此无法读取。这一结果并不表示故障,而是说明该存储介质是标准 SD 卡。


三、文件系统一致性检查

对根分区执行只读检查:

sudo fsck.ext4 -n /dev/mmcblk0p2

结果:

/dev/mmcblk0p2: clean, 80484/457856 files, 1219423/1830656 blocks

这代表:

  • 文件系统完整
  • 无坏块
  • 无 inode 错误
  • 无 journal 损坏

如果 SD 卡出现物理退化或闪存错误,这里通常会出现 I/O 错误或结构损坏提示。


四、内核 I/O 错误检查

查看内核是否记录了存储层异常:

dmesg | grep -i -E 'mmc|error|I/O'

输出仅包含正常初始化信息:

mmcblk0: mmc0:b368 NCard 7.48 GiB
EXT4-fs mounted ...

没有出现:

  • mmcblk0: error
  • Buffer I/O error
  • timeout
  • CRC error

这意味着控制器与闪存之间通信正常,没有重试或掉块。


五、真实读写性能测试

读取性能:

sudo hdparm -Tt /dev/mmcblk0
Timing buffered disk reads: 21.83 MB/sec

写入测试:

sync; echo 3 | sudo tee /proc/sys/vm/drop_caches
dd if=/dev/zero of=/tmp/test.bin bs=4M count=256 oflag=direct

结果:

1.1 GB copied in 95.86 s → 11.2 MB/s

这是典型低端 TLC SD 卡的真实速度,表现为:

  • 速度不高
  • 但稳定、连续
  • 无卡顿、无停顿、无超时

如果 SD 卡处于衰退阶段,通常会出现写入停滞、速度骤降或系统报错。


六、综合工程判定

从三个独立层面验证结果:

检测层结果
文件系统完整、干净
内核 I/O无错误
物理写入稳定

由此可得出明确结论:

这是一张低端、慢速,但当前完全健康的 SD 卡
没有任何“即将死亡”的技术迹象。


七、真正的风险来自使用方式

虽然当前健康,但这类 8GB TLC SD 卡的总写入寿命通常只有 10–40 TB
在树莓派上运行:

  • Docker
  • 系统日志
  • apt 更新
  • rsync / 迁移
  • swap / cache

会产生服务器级写入负载,可能在 1–3 年内耗尽闪存寿命。

这种损耗不会提前预警,往往是:

某天突然只读 → EXT4 报错 → 系统无法启动


八、最佳实践建议

正确的长期架构应为:

  • SD 卡仅用于 /boot
  • 根文件系统迁移到 USB SSD 或 U 盘

当前系统已经完成迁移与检测,这是进行这种结构升级的最佳时间窗口


总结

这次检测证明:

当前 SD 卡仍然健康,但并不适合作为长期服务器级系统盘。

工程上应把“是否已经坏了”与“是否适合继续这样用”严格区分,这正是稳定树莓派系统的关键。

Leave a Reply

Your email address will not be published. Required fields are marked *