我正在使用 S3FS 在 Amazon EC2 实例上安装 S3 存储桶。18 个月以来,一切运行良好。
今天,我尝试在 S3 存储桶上直接使用 wget 下载一个 5GB 的文件(我之前已经做过这件事,没有任何问题),但出现了错误No space left on device
。
user@ec2-instance:$ /home/workspaces/$ wget http://example.org/file.xml.gz
Cannot write to ‘files.xml.gz’ (No space left on device).
user@ec2-instance:$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/xvda1 8125880 6576804 1113264 86% /
none 4 0 4 0% /sys/fs/cgroup
udev 15400288 12 15400276 1% /dev
tmpfs 3082424 216 3082208 1% /run
none 5120 0 5120 0% /run/lock
none 15412116 0 15412116 0% /run/shm
none 102400 0 102400 0% /run/user
s3fs 274877906944 0 274877906944 0% /home/workspaces
user@ec2-instance:$ df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/xvda1 524288 119569 404719 23% /
none 3853029 2 3853027 1% /sys/fs/cgroup
udev 3850072 380 3849692 1% /dev
tmpfs 3853029 262 3852767 1% /run
none 3853029 5 3853024 1% /run/lock
none 3853029 1 3853028 1% /run/shm
none 3853029 3 3853026 1% /run/user
s3fs 0 0 0 - /home/workspaces
我不明白df -i
返回的是什么。我怀疑 s3fs 显示 0 个 inode 是一个问题,但我不知道下一步该怎么做。
这与s3fs 中的问题 288:设备上没有剩余空间来存储大于 5GB 的文件自从:
- 现已修复
- 我已经能够下载大于 5GB 的文件
答案1
根据这个如何从远程服务器直接上传文件到 Amazon S3,您必须先将文件下载到本地服务器,然后再将其上传到 S3 存储桶。
由于您没有定义保存路径,恐怕您会将大文件本地存储在 /tmp 文件夹中,而该文件夹中没有足够的空间来存储 5 GB 的文件。
您可以进一步参考这个:如何在不创建临时本地文件的情况下将文件上传到 S3如果您不想编写上传程序,请查看是否可以摆脱创建的临时文件,或者在将大文件上传到 S3 存储桶之前扩展 EBS 卷以容纳大文件。
答案2
正如 Simon 在他的回答中提到的,文件首先下载到本地/tmp
文件夹。由于我的系统磁盘只有 1.1GB 可用空间,因此不足以处理该文件。
为了解决我的问题,我扩展了我的 ESB 存储以获得更大的/tmp
文件夹。