当目标剩余空间为 31 GB 时,mv 失败并显示“设备上没有剩余空间”

Vik*_*kki 27 filesystem disk-usage mv

我一直在尝试将 32.6 GB 的文件移动到外部闪存驱动器上的文件夹中,以释放笔记本电脑 SSD 上的空间。在终端中打开源文件夹(并运行ulimit -S -s unlimited以防止mv呕吐)后,mv *from* /media/[username]/8849-14DB/Screenshots/传输前 5.9 GB 就好了。

但是,还有 26.7 GB 可用空间:

mv: cannot create regular file '/media/[username]/8849-14DB/Screenshots/Screenshot from 2022-01-06 06-34-27.png': No space left on device
mv: cannot create regular file '/media/[username]/8849-14DB/Screenshots/Screenshot from 2022-01-06 06-34-30.png': No space left on device
mv: cannot create regular file '/media/[username]/8849-14DB/Screenshots/Screenshot from 2022-01-06 06-34-34.png': No space left on device
mv: cannot create regular file '/media/[username]/8849-14DB/Screenshots/Screenshot from 2022-01-06 06-34-39.png': No space left on device
mv: cannot create regular file '/media/[username]/8849-14DB/Screenshots/Screenshot from 2022-01-06 06-35-23.png': No space left on device

[repeated ad infinitum]
Run Code Online (Sandbox Code Playgroud)

尽管事实上,有问题的闪存驱动器实际上并没有空间不足,如下所示

  • 我能够成功地将测试文件保存到所述闪存驱动器,并且
  • 驱动器的“属性”窗口及其“磁盘”条目均显示该驱动器仍有 31.1 GB 的可用空间。

然而,当我尝试使用 GUI 将上述测试文件移动到我一直试图用来mv移动多个 GB 文件的特定目录时,我确实收到了“设备上没有剩余空间”错误,表明

  • 无论问题是什么,它都特定于该文件夹,并且
  • 这不是特定于命令行的问题。

我查看了之前的问题:Filesystem - No space left error, but there is space。然而,这个问题的答案对我来说没有帮助,因为它们与 ext 系列文件系统上可用的 inode 数量有限有关,而就我而言,目标文件系统是 FAT32 格式的闪存驱动器。

我遇到了什么问题导致文件无法传输?如何克服?

编辑:目标目录中有 16,383 个文件。

Est*_*her 74

Ext4 文件系统并不是唯一对文件数量有限制的文件系统。FAT32 文件系统对单个目录中可以存储的文件数量有限制。如果您使用短名称(8 个字符 + .+ 3 个字符的文件扩展名),则限制为 65,534 个文件。但是,如果您使用较长的名称,则名称的每 13 个字节都会存储为单独的目录条目,这会极大地限制目录中可容纳的文件数量。

在你的例子中,看起来每个文件实际上占用了 4 个目录条目,因为你有 16,383 个文件,而 16,383 * 4 是 65,532,这使你达到了极限仔细观察,每个文件名有 39 个字符,即 39 个字节:正好是 13 * 3。因此,每个文件名有 3 个目录条目,第四个目录条目用于实际文件内容。

您可以通过以下任一方式解决此问题:

  1. 将驱动器格式化为 NTFS,这将文件数量限制为约 40 亿个(应该足够了)
  2. 将文件放在不同的子目录中,因为限制是目录条目的数量,并且您还没有遇到文件总数的限制

  • 好捕获埃丝特 (4认同)
  • @U.Windl,然后 2 个条目用于“。” 和“..”条目,每个目录有 65,534 个条目 (3认同)
  • @U.Windl 显然它对目录条目使用 16 位索引,因此它仅限于 2^16 目录条目 (2认同)
  • @U.Windl https://cscie92.dce.harvard.edu/spring2021/Microsoft%20Extensible%20Firmware%20Initiative%20FAT32%20File%20System%20Specification,%20Version%201.03,%2020001206.pdf,p33-34 (2认同)
  • 无论如何,将它们分成单独的子目录是一个好主意,因为目录中包含数以万计的文件会对性能产生巨大影响。 (2认同)