Я размещаю приложение Ruby on Rails на Linode с хранилищем 96 ГБ. Все изображения моего приложения хранятся на Amazon, и они получены от Amazon. Таким образом, у моего линода должно быть как минимум 80 ГБ свободного места.
Но когда лог-файлы приложения превышает 200 Мб, я получаю сообщение об ошибке:
Errno::ENOSPC: No space left on device
и мой сайт не работает.
Я включил ротацию журналов для своего приложения ежедневно с помощью следующего кода в файле /etc/logrotate.conf:
path/to/application/log/*.log {
daily
missingok
rotate 1
compress
delaycompress
notifempty
copytruncate
}
Но теперь я начал получать одни и те же ошибки в день, поэтому я изменил настройки конфигурации в зависимости от размера следующим образом:
path/to/application/log/*.log {
size 1M
missingok
rotate 1
compress
delaycompress
notifempty
copytruncate
}
Я также переместил файл logrotate из /etc/cron.daily в /etc/cron.hourly, чтобы cronjob logrotate запускался каждый час и поворачивал журнал, если он превышает 1M. Я перезапустил апач.
Но когда я проверил через час, мои файлы размером больше 1M. Таким образом logrotate cronjob не работал каждый час. Когда я с силой поворачиваю журнал, используя команду:
sudo /usr/sbin/logrotate -f /etc/logrotate.conf
затем файлы журнала поворачиваются, и размер файлов уменьшается.
Я не могу понять, почему эта конфигурация не работает. Более того, когда пространство на линоде составляет 80 ГБ, как это влияет, если файлы журнала превышают 200 МБ?. Как можно выделить больше места для каталога журналов?
Как и предполагалось, я побежал 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
Таким образом, мои inodes почти бесплатны. У меня не заканчиваются inodes.
Выход 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
У меня на диске действительно меньше места. Как мне продолжить?
Пожалуйста, помогите. Большое спасибо!
У меня было такое же сообщение об ошибке при попытке запустить npm install
.
npm ERR! nospc ENOSPC: no space left on device, open /{dir}/...
Исправление для меня было следующим:
sudo rm -rf node_modules
- Удалить node_modulesdf -hi
- Проверьте доступное место на дискеsudo apt-get update
- Обновить пакетыsudo apt-get autoremove
- Используйте autoremove для удаления пакетов, которые больше не нужныsudo apt-get -f install
- Исправить сломанные зависимостиЭто правда, у вас осталось очень мало места.
Filesystem Size Used Avail Use% Mounted on
/dev/xvda 9.5G 8.7G 325M 97% /
Всего несколько сотен мегабайт, и ваш диск снова будет заполнен.
Вы сказали, что ожидаете, что у вас будет гораздо больше дискового пространства, чем показано здесь, поэтому я бы рекомендовал вам связаться с Linode, чтобы узнать, что происходит.
мои 2 цента здесь:
Я обнаружил, что вывод lsof | grep -i deleted
несколько лет назад у меня был production.log. Который перезапуск службы освободил все пространство. Я получил идею от: Диск полный, ду говорит разное. Как дальше расследовать?