如何修复exFAT文件系统

我们不小心导致服务器崩溃,没有进行干净的关闭,现在df报告外部USB(exfat)的统计数据错误。
root@srv1:/backup/usbdisk# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb2       3.6T  2.8T  646G  82% /
...
/dev/sde1       7.3T  241M  7.3T   1% /backup/usbdisk

杜说:
root@srv1:/backup/usbdisk# du -sh
2.6T    .

exfatfsck /dev/sde1 说:

exfatfsck 1.1.0
WARN: volume was not unmounted cleanly.
Checking file system on /dev/sde1.
File system version           1.0
Sector size                 512 bytes
Cluster size                128 KB
Volume size                7452 GB
Used space                  241 MB
Available space            7452 GB
ERROR: cluster 0x3f of file 'assets' is not allocated.
ERROR: cluster 0x40 of file 'mysql' is not allocated.
ERROR: cluster 0x41 of file 'public_assets' is not allocated.
Totally 3 directories and 0 files.
File system checking finished. ERRORS FOUND: 3.

那么我们该如何解决这个问题呢?
3个回答

自从2018年9月15日发布的v1.3.0版本以来,exfatfsck应该能够修复一些错误。

1这应该是正确的答案(如果不是的话,那么它至少是第一个有帮助的答案),但请注意,“一些错误”意味着真的很少。例如,修复文件损坏问题仍未实施(https://github.com/exfatprogs/exfatprogs/issues/117#issuecomment-964904075)。 - mirh

exfatfsck 的 manpage 上写着:

exfatfsck 用于检查 exFAT 文件系统的错误。请注意,它无法修复损坏的文件系统,只能报告发现的错误。

修复的一种方法是将其插入 Windows 系统中并在那里进行扫描和修复错误。



Ubuntu 20.04 sudo apt-get install exfatprogs 返回的结果是 无法找到软件包exfatprogs - Pierre ALBARÈDE
@PierreALBARÈDE 这是因为Ubuntu 20.04的软件仓库对于这个软件包来说已经过时了。如果你点击我帖子中的软件包链接,你会发现它目前只适用于Groovy,也就是Ubuntu 20.10。不过,我认为你可以尝试下载Groovy版本的软件包,并手动安装到你的20.04系统中。这个软件包似乎只依赖于glibc,所以应该可以这样工作。 - Hi-Angel
1我特意升级到20.10版本以尝试exfatprogs,并且实际上我成功将一张使用exFAT格式和MBR分区的SDXC卡挂载为只读。 - Pierre ALBARÈDE
我只能通过USB卡读取器来挂载可写的设备。在MacOS上也是一样的。 - Pierre ALBARÈDE
@PierreALBARÈDE 在挂载之前尝试运行journalctl -f命令,然后再挂载exfat文件系统。您应该在日志中看到exfat被以只读方式挂载的原因;是否有任何有趣的信息?顺便问一下,您的内核版本是多少? - Hi-Angel
我的只读问题的解决方案在这里https://bartechtv.com/read-only-sd-cards-on-macbook-pro-heres-the-solution/,纯硬件的解决方法,非常棒。内核版本是5.8.0-26-lowlatency。终于可以读写我的SDXC exFAT格式了。谢谢。 - Pierre ALBARÈDE