格式化后文件仍存在:USB Mass Storage Gadget 只读模式排查

现象描述

USB Mass Storage Gadget 格式化完后:

  • 旧文件还在
  • 可以创建新文件、写入数据
  • 删除文件提示成功,重插后文件又出现

原因分类

1. 存储设备进入只读模式

U 盘、TF 卡、eMMC 出现坏块时控制器会自动切换为 Read-Only。表现为删除”成功”但重新挂载后文件复原。

Linux 排查

dmesg | grep -i readonly
dmesg | grep -i "write protect"

出现以下字样即确认只读:

Write Protect is on
switching to read-only mode
mmcblk0: read only

2. Gadget 镜像文件损坏

如果通过镜像文件方式挂载(echo /data/usb.img > lun/file),镜像内 FAT/exFAT 文件系统可能损坏:

# 检查镜像文件系统
fsck.vfat usb.img
# 或
dosfsck usb.img

3. Windows 快速格式化未重建文件系统

Windows “快速格式化”只重写 FAT 表,不实际清除旧数据,旧文件仍可被恢复工具读取。

彻底解决方式:

磁盘管理 → 删除分区 → 新建分区 → 完整格式化(取消勾选"快速格式化")

4. OverlayFS 层隔离(Android Root 环境)

TrickyStore、KernelSU、Magisk 等工具可能挂载了 OverlayFS,删除的是上层(upperdir),底层(lowerdir)文件仍然存在,重挂载后又出现。

mount | grep overlay

如有输出,需要先卸载 overlay 再操作底层文件系统。

5. NAND Flash 已损坏

最符合”能写入但删除无效”的情形:控制器接收了写入缓存但没有真正落盘,重插后旧数据回来。

验证方式

touch test.txt && sync
rm test.txt && sync
umount /dev/sdX && mount /dev/sdX /mnt
ls /mnt/test.txt   # 如果文件还在,基本确认存储介质损坏

修复方法

U 盘 / TF 卡(Linux)

# 用 diskpart 或 dd 低格
sudo dd if=/dev/zero of=/dev/sdX bs=1M status=progress

U 盘 / TF 卡(Windows)

以管理员运行 CMD:

diskpart
list disk
select disk N
clean
create partition primary
format fs=fat32 quick
assign
exit

Android/Linux 开发板 eMMC

eMMC 只读后一般无法软件修复,需要更换存储模块或使用厂商专用刷机工具重新初始化 flash 控制器。

快速定位表

现象最可能原因
删除后重插文件回来NAND 只读 / OverlayFS
格式化后旧文件可见但访问慢快速格式化(未清除)
fsck 报错镜像文件 FAT 损坏
dmesg 有 write protect存储介质已进入只读保护