Errno::ENOSPC:Ruby on Rails 中的设备上没有剩余空间

Swa*_*wal 8 ubuntu-10.04 ruby-on-rails-3

我在具有 96 GB 存储空间的 Linode 上托管 Ruby on Rails 应用程序。我的应用程序的所有图像都存储在亚马逊上,它们是从亚马逊获取的。因此,我的 linode 应该有至少 80 GB 的免费存储空间。

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

Errno::ENOSPC: No space left on device
Run Code Online (Sandbox Code Playgroud)

我的网站出现故障。

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

path/to/application/log/*.log {
  daily
  missingok
  rotate 1
  compress
  delaycompress
  notifempty
  copytruncate
}
Run Code Online (Sandbox Code Playgroud)

但是现在我开始每天两次相同的错误,所以我根据大小更改了配置设置:

path/to/application/log/*.log {
  size 1M
  missingok
  rotate 1
  compress
  delaycompress
  notifempty
  copytruncate
}
Run Code Online (Sandbox Code Playgroud)

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

但是当我在一小时后检查时,我的文件大小大于 1M。因此,logrotate cronjob 在每小时后都不起作用。当我使用以下命令强制轮换日志时:

 sudo /usr/sbin/logrotate -f /etc/logrotate.conf
Run Code Online (Sandbox Code Playgroud)

然后日志文件被轮换并且文件大小减小。

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

按照建议,我跑去df -ih检查我是否用完了inodes。我得到以下输出:

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
Run Code Online (Sandbox Code Playgroud)

因此我的 inode 几乎是免费的。我没有用完 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
Run Code Online (Sandbox Code Playgroud)

我的磁盘空间真的少了。我应该如何进行?

请帮忙。非常感谢!

Mic*_*ton 2

确实,你剩下的空间已经所剩无几了。

Filesystem            Size  Used Avail Use% Mounted on
/dev/xvda             9.5G  8.7G  325M  97% /
Run Code Online (Sandbox Code Playgroud)

只要几百兆,你的磁盘又会满了。

您说您预计会拥有比此显示更多的磁盘空间,因此我建议您联系 Linode 以了解发生了什么情况。