Rails 3.2.20,Ruby 1.9.3p194,Apache 2.2.22,Passenger 3.0.21。
文件上传到/tmp
(我在查看日志时的想法:
Parameters: {
...
@tempfile=#<File:/tmp/RackMultipart20150317-1329-19lcteh>>
...
}
)
大文件上传(例如对于1.8Go文件)使用日志跟踪引发异常Errno::ENOSPC: No space left on device - write
:
/usr/local/lib/ruby/1.9.1/fileutils.rb:1372 :in `copy_stream`
/usr/local/lib/ruby/1.9.1/fileutils.rb:1372 :in `block (2 levels) in copy_file`
/usr/local/lib/ruby/1.9.1/fileutils.rb:1371 :in `open`
/usr/local/lib/ruby/1.9.1/fileutils.rb:1371 :in `block in copy_file`
/usr/local/lib/ruby/1.9.1/fileutils.rb:1370 :in `open`
/usr/local/lib/ruby/1.9.1/fileutils.rb:1370 :in `copy_file`
/usr/local/lib/ruby/1.9.1/fileutils.rb:477 :in `copy_file`
/usr/local/lib/ruby/1.9.1/fileutils.rb:396 :in `block in cp`
/usr/local/lib/ruby/1.9.1/fileutils.rb:1515 :in `block in fu_each_src_dest`
/usr/local/lib/ruby/1.9.1/fileutils.rb:1531 :in `fu_each_src_dest0`
/usr/local/lib/ruby/1.9.1/fileutils.rb:1513 :in `fu_each_src_dest`
/usr/local/lib/ruby/1.9.1/fileutils.rb:395 :in `cp`
[GEM_ROOT]/gems/paperclip-4.2.0/lib/paperclip/io_adapters/abstract_adapter.rb:41 :in `copy_to_tempfile`
[GEM_ROOT]/gems/paperclip-4.2.0/lib/paperclip/io_adapters/uploaded_file_adapter.rb:8 :in `initialize`
我不明白为什么因为/tmp
目录所在的分区有足够的可用空间:
Filesystem Size Used Avail Use% Mounted on
rootfs 9.9G 4.9G 4.6G 52% /
Apache配置中没有文件大小限制。
答案 0 :(得分:2)
我快速查看回形针来源。似乎文件内容被复制,因此它在磁盘上存在2次。 (错误跟踪也显示它)
因此,为了能够使用1.8G文件,您需要至少3.6G的可用空间。如果同时上传了一个500M文件(或者如果有另一个副本,那么)你没有足够的磁盘空间。
为了能够调整所需的存储空间,您需要跟踪框架处理上传文件的方式。