所以我买了一个全新的 128GB USB 记忆棒并将其插入我的树莓派。
然后我使用命令行使用 fdisk 和 mkfs.ext4 创建一个新分区和额外的文件系统
似乎一切顺利。然后我使用 rsync 将 65GB 的数据复制到 USB 记忆棒上,并放置了一夜。
第二天早上,rsync 提前收到一个命令,错误是设备已满。果然,df 确认已满 100%。我有点困惑,试图卸载,但卸载不成功,所以我重新启动了。重新启动后,设备无法安装,提示有错误,所以我运行了 e2fsck,它纠正了大量有关 inode、超级块和日志的内容。之后,所有数据都消失了,驱动器为 0%,但可以安装。
当我再次尝试复制文件时,同样的情况再次发生。因此我尝试重新格式化,这次驱动器立即报告错误。e2fsck 找到并修复了错误,但再次运行它会一次又一次地发现错误,因此它似乎无效。
然后我决定将它插入 Windows PC 并完全格式化为 exFAT。花了很长时间,但我可以将数据复制到它上面并读取它。回到 Linux,我可以将数据复制到它并读取数据。重新格式化为 ext4;再次出错。
所以我已格式化为 exFAT,现在正在运行坏块。它几乎已经完成,没有发现任何问题。为什么我在使用这个驱动器时遇到这么多困难?
答案1
市场上有各种假冒的 USB 记忆棒和存储卡。这些假冒产品的容量通常比实际容量大得多。更聪明的假冒产品设计成可以通过简单的测试并且实际上可以使用……直到您尝试存储比其实际容量更多的数据。那时,您将遇到数据损坏和错误。您看到的行为可能适合这种情况。
您可以尝试使用专门检测假存储设备的程序检查您的 USB 记忆棒。以下是几个示例(无特定顺序):
https://www.geckoandfly.com/22803/detect-fake-usb-flash-drives-sd-cards-ssd-disk/
答案2
尝试检测设备上的坏块。
您e2fsck -c -c -k …
mkfs.ext4
还可以使用支持-c
选项。
双重-c
行为慢的读写测试。
单次-c
测试执行得更快。
-k
选项保存先前检测到的坏块列表(例如,如果您-c
在双重-c
测试之前使用单次测试)。
答案3
Ubuntu 上 128 GB 的闪存驱动器也存在同样的情况。USB 闪存从 exFAT 开始。在 ext4 上会出现问题:
- 磁盘仅能支持 64 GB 格式。
- GUI 上的第一个文件会出现错误。
但它可以修复:
sudo apt install f3
sudo f3probe -t -n /dev/sdX #replace X with the drive letter
如果这是一个问题,它会提到f3fix对我来说,论点--最后一秒=134217727是必需的,现在磁盘有 69 GB。