我有一个新的 USB 闪存驱动器,16GB。我正尝试将一个文件夹从本地驱动器复制到此闪存驱动器。我尝试复制的文件夹包含大约 225000 个 4KB 文件。我尝试使用文件夹 GUI 和终端进行复制。两次复制确切地21844 个文件然后我收到错误:
“无法创建常规文件‘filename’:设备上没有剩余空间”
我还有一个文件的压缩副本,并尝试将其直接提取到 USB 驱动器中,在提取 21844 个文件后再次停止。
我寻找了可能的解决方案并尝试清空垃圾,但这并不能解决问题。我还将驱动器格式化为 FAT32 并重试,但这不起作用。有人有什么建议吗?
我正在运行 Ubuntu 12.04,USB 驱动器是 ADATA S107。
答案1
文件系统空间不足有两种原因:1) 数据空间不足 2) 文件系统资源(如 inode 或 fat 表条目)不足。大量小文件可能会导致 inode 不足——文件系统是使用默认的 inode 数量构建的,可能无法满足您的需求。FAT32 文件系统限制每个目录 64k 个文件(最大值,长名称会减少这个数字),因此除非您在复制小文件之前将它们与 tar 等归档程序结合使用,否则这种方法对您不起作用。归档程序方法应该适用于任何情况,并且肯定会减轻闪存的压力——考虑目录块在构建过程中可能获得的写入次数,并希望驱动程序能够智能地进行缓冲。也许您应该在 16G 棒上放置与硬盘上相同类型的文件系统?(我猜是 ntfs,因为它的目录限制超过 400 万)。您可以运行 mke2fs 并设置开关以更改默认的 inode 大小/数量。运行手册页
man mke2fs
了解完整描述。另一种可能性是,您确实没有足够的空间来存储数据 - 您知道您的文件只有 4K,但请问问自己,文件系统为它们分配了多少空间?当存储棒显示没有更多空间时,请检查剩余的可用空间 - 可用空间表示缺少 inode。没有可用空间,好吧,总有归档程序可以解决这个问题。