首页 > Sysadmin > 正文

Linux 查看 SD 卡存储空间不足的 4 个方法

huyuanwen 2026-11-02 Sysadmin

SD 卡满了会丢数据、刷不进系统。以下方法按”先找设备,再看用量,最后定位大文件”的顺序使用,均经 WSL2 实测(识别设备除外)。

一、TL;DR:快速排查链路

1. lsblk 找设备名和挂载点。 2. df -h <挂载点> 看剩余空间。 3. du -sh <目录> 定位大文件夹。 4. findmnt 确认挂载关系和设备来源。

二、lsblk:先确认 SD 卡设备名

lsblk -f

输出关键看 NAME(设备名,如 sdb、mmcblk0)、FSTYPE(文件系统类型)、MOUNTPOINTS(挂载点)和 SIZE [1]。SD 卡通常显示为 mmcblk*(树莓派等板卡)或 sd*(USB 读卡器)。如果 RM 列为 1,说明是可移动设备。

WSL 环境下通常看不到物理 SD 卡,但命令语法一致,换到真机可直接复用。

三、df -h:直接看剩余空间

df -h /media/username/SDCARD
df -h --output=source,size,used,avail,pcent,target

-h 可读化单位,--output 只显示需要的列 [2]。Use% 超过 90% 就该清理。注意 df 是按文件系统维度统计,不会告诉你哪个文件夹占得多。

四、du -sh:定位大目录

du -sh /media/username/SDCARD/*
du -sh /media/username/SDCARD/* | sort -rh | head -n10

-s 只显示总计,-h 可读化 [3]。sort -rh 按人类可读的数字从大到小排,head 取前 10 个最大目录。如果只想知道哪个目录最大,可以先用 ncdu 交互查看,但 ncdu 不是所有发行版默认安装。

五、findmnt:确认挂载来源

findmnt /media/username/SDCARD

这条命令告诉你某个目录具体挂载在哪个块设备上,以及是哪个设备文件 [4]。如果 findmnt 显示设备是 /dev/sdb1,但 lsblk 里 sdb 不存在,可能是读卡器没插好或内核没识别。

六、回滚、排错与局限性

排错速查

现象 原因 处理
lsblk 看不到 SD 卡 读卡器未插、内核无驱动、WSL 无直通 换 USB 口或真机测试
df 报 “No such file or directory” 挂载点路径写错或卡已拔出 先用 lsblk 确认挂载点
du 卡住不动 目录下有挂载点或权限受限 加 2>/dev/null 或 sudo
findmnt 找不到设备 卡未挂载或挂载信息损坏 手动 mount 或检查 /etc/fstab

局限性

  • WSL2 没有物理 SD 卡总线,lsblk 只能看到虚拟磁盘;识别设备步骤需在真机验证。
  • df 不能看未挂载的 SD 卡空间;需要先挂载。
  • du 遇到权限拒绝会报错,加 sudo 可解决但会扫描更多系统目录。

实测记录

  • 环境:WSL2 Ubuntu 24.04,内核 5.15。
  • lsblk -f:显示 sda/sdb/sdc/sdd 均为虚拟盘,无 mmcblk 设备。
  • df -h:/dev/sdd 1T 总容量,已用 8.3G,可用 948G。
  • du -sh /home:5.3G。
  • findmnt:能正确显示 / 与 /dev/sdd 的对应关系。
  • 清理:未安装额外包,WSL 环境无需卸载。

参考资料

文中主要命令已在 WSL Ubuntu(24.04)实测并核对其在 Debian 系与通用发行版的文档口径。