Errno :: ENOSPC:在Ruby on Rails上没有剩余空间

Iam在96 GB存储的Linode上托pipeRuby on Rails应用程序。 我的应用程序的所有图像都存储在亚马逊,他们从亚马逊提取。 因此,我的linode应该有至less80 GB的免费存储空间。

但是,当应用程序的日志文件超过200 Mb我得到的错误:

Errno::ENOSPC: No space left on device 

和我的网站下降。

我使用以下代码在/etc/logrotate.conf文件中每天启用我的应用程序的日志轮换:

 path/to/application/log/*.log { daily missingok rotate 1 compress delaycompress notifempty copytruncate } 

但现在我已经开始得到相同的错误twics一天,所以我改变了我的configuration设置的大小的基础上:

 path/to/application/log/*.log { size 1M missingok rotate 1 compress delaycompress notifempty copytruncate } 

我还将logrotate文件从/etc/cron.daily移到了/etc/cron.hourly,这样logrotate cronjob每小时运行一次,如果日志超过1M,就会轮换它。 我重新启动了Apache。

但是当我在一个小时后检查我的文件大小超过1M。 因此, logrotate cronjob每小时后都不工作 。 当我用命令强制旋转日志时:

  sudo /usr/sbin/logrotate -f /etc/logrotate.conf 

那么日志文件就会旋转,文件大小也会减小。

我无法弄清楚为什么这个configuration不起作用。 而且,当linode上的空间是80 GB时,如果日志文件超过200 Mb,它将如何影响 。 什么是分配更多的空间login目录的方式?

build议我跑df -ih来检查Iam是否耗尽inode 。 我得到的follwoing输出:

 Filesystem Inodes IUsed IFree IUse% Mounted on /dev/xvda 2.2M 263K 2.0M 12% / devtmpfs 174K 2.0K 172K 2% /dev none 174K 1 174K 1% /dev/shm none 174K 33 174K 1% /var/run none 174K 2 174K 1% /var/lock none 174K 1 174K 1% /lib/init/rw 

因此我的inode几乎是免费的。 Iam没有耗尽inode。

df -h的输出如下:

 Filesystem Size Used Avail Use% Mounted on /dev/xvda 9.5G 8.7G 325M 97% / devtmpfs 1010M 112K 1010M 1% /dev none 1010M 0 1010M 0% /dev/shm none 1010M 52K 1010M 1% /var/run none 1010M 0 1010M 0% /var/lock none 1010M 0 1010M 0% /lib/init/rw 

我的磁盘空间真的less了。 我应该如何继续?

请帮助。很多谢谢!

确实,你剩下的空间很小

 Filesystem Size Used Avail Use% Mounted on /dev/xvda 9.5G 8.7G 325M 97% / 

只有几百兆字节,你的磁盘将再次满。

你说你希望有更多的磁盘空间比这个显示,所以我build议你联系Linode找出发生了什么事情。

尝试运行npm install时,我遇到了同样的错误信息。

npm ERR! nospc ENOSPC: no space left on device, open /{dir}/...

对我的修复如下:

  • sudo rm -rf node_modules – 删除node_modules
  • df -hi – 检查可用的磁盘空间
  • sudo apt-get update – 更新软件包
  • sudo apt-get autoremove – 使用“autoremove”删除不再需要的软件包
  • sudo apt-get -f install – 更正中断的依赖关系

我的2分钱在这里:

我发现了lsof | grep -i deleted的输出 lsof | grep -i deleted了几年前的production.log。 哪一个服务的重新启动释放了所有的空间。 我从中得到了这个想法: 磁盘满了,杜告诉不同。 如何进一步调查?