语境
我必须复制Ubuntu 18.04 服务器大约有 5,000,000 个小文件,它们是用于 Web 应用程序的地图图块。
它们目前存储在另一台带有 XXL 硬盘(1 TB)的机器上的文件夹中。总重量该文件夹的大小略小于 30 GB。
服务器上的目标文件夹是单个 ext4 分区中具有 50 GB 可用空间的磁盘。应该没问题。
错误
使用复制文件时scp
,我最终遇到了许多以下错误(在复制 3'271'897 个文件后它们大量弹出,也许这个数字很重要?):
(...)
scp: /media/data/tiles/16/69654: No space left on device
(...)
如果我检查设备上的可用空间,它会显示:
$ df -h
Filesystem Size Used Avail Use% Mounted on
(...)
/dev/sdb1 49G 19G 28G 41% /media/data
那么为什么会有这个"No space left on device"
消息呢?
我感觉文件数量太大,无论磁盘空间如何,或者诸如此类的东西,而且我错过了一个重要的概念......
并且也许可以通过在某个较低级别正确“准备”分区本身(parted
例如使用)来摆脱该消息。
或许ext4
不适合保存大量小文件?
问题
我需要注意什么才能正确设置我的 50 GB 磁盘以有效地托管 5'000'000 个文件(之后通过 Web 应用程序提供这些文件时也应该具有良好的性能)?
更新
在 Soren A 的评论之后:
$ df -hi
Filesystem Inodes IUsed IFree IUse% Mounted on
(...)
/dev/sdb1 3.2M 3.2M 0 100% /media/data