Не создаются файлы на диске (mkdir: невозможно создать каталог `test': На устройстве кончилось )

Knoppix

Модераторы: Warderer, Модераторы разделов

benimeni
Сообщения: 10

Не создаются файлы на диске

Сообщение benimeni »

Дорбрый, сервер-Debian, недавно началась следующая проблема. Машина как роутер и www-сервер. При заходе на www (joomla-админка), вылетает следующая ошибка

Код: Выделить всё

500 - An error has occurred!

DB function failed with error number 1
Can't create/write to file '/tmp/#sql_13a2_0.MYI' (Errcode: 28) SQL=SELECT c.*, g.name AS groupname, cc.title AS name, u.name AS editor, f.content_id AS frontpage, s.title AS section_name, v.name AS author FROM jos_content AS c LEFT JOIN jos_categories AS cc ON cc.id = c.catid LEFT JOIN jos_sections AS s ON s.id = c.sectionid LEFT JOIN jos_groups AS g ON g.id = c.access LEFT JOIN jos_users AS u ON u.id = c.checked_out LEFT JOIN jos_users AS v ON v.id = c.created_by LEFT JOIN jos_content_frontpage AS f ON f.content_id = c.id WHERE c.state != -2 ORDER BY section_name , section_name, cc.title, c.ordering LIMIT 0, 20

вообщем судя по всему не может создать файл. Ок, логинусь по ssh, пытаюсь создать каталог где угодно, пишет

Код: Выделить всё

mkdir test
mkdir: невозможно создать каталог `test': На устройстве кончилось место

Код: Выделить всё

df -h
Файловая система      Разм  Исп  Дост  Исп% смонтирована на
/dev/sda1              65G   40G   22G  65% /
tmpfs                1014M     0 1014M   0% /lib/init/rw
udev                   10M  780K  9,3M   8% /dev
tmpfs                1014M     0 1014M   0% /dev/shm

Удаляет при этом каталоги норм. Перезагружаю систему, после перезагрузки все норм, joomla работает, каталоги создаются, вообщем все ок. Через 15-20 минут опять тажа беда.
Создаю в корне флаг, для проверки ФС при загрузке touch /forcefsck , проверка проходит, вроде никаких ошибок нет. Подскажите, куда копать? Спасибо!
Спасибо сказали:
Аватара пользователя
Devider
Сообщения: 476
ОС: GNU/Linux

Re: Не создаются файлы на диске

Сообщение Devider »

benimeni писал(а):
26.07.2011 13:48
Через 15-20 минут опять

Ну а если через 10-15 минут посмотреть чем диск замусоривается?
Спасибо сказали:
benimeni
Сообщения: 10

Re: Не создаются файлы на диске

Сообщение benimeni »

Devider писал(а):
26.07.2011 14:12
benimeni писал(а):
26.07.2011 13:48
Через 15-20 минут опять

Ну а если через 10-15 минут посмотреть чем диск замусоривается?

Так ничем он не замусоривается вроде. Место как было свободное так и остается
Спасибо сказали:
Аватара пользователя
Brainsburn
Сообщения: 950
Статус: /
ОС: Gentoo

Re: Не создаются файлы на диске

Сообщение Brainsburn »

А если так:
# tune2fs -l /dev/sda1 | grep "Free inodes"
Спасибо сказали:
benimeni
Сообщения: 10

Re: Не создаются файлы на диске

Сообщение benimeni »

Brainsburn писал(а):
26.07.2011 15:02
А если так:
# tune2fs -l /dev/sda1 | grep "Free inodes"

Код: Выделить всё

Free inodes:              0
Спасибо сказали:
Аватара пользователя
Brainsburn
Сообщения: 950
Статус: /
ОС: Gentoo

Re: Не создаются файлы на диске

Сообщение Brainsburn »

benimeni писал(а):
26.07.2011 15:32

Код: Выделить всё

Free inodes:              0

Угу. Проще говоря, на файловой системе создано слишком много, скорее всего, маленьких файлов. Насколько я знаю, задать кол-во inodes можно только при создании файловой системы с помощью mkfs.ext4 -N. Вам можно или устранить замусоривание файловой системы, или создать новый раздел и подмонтировать его в тот каталог, в котором создается большое количество файлов.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Не создаются файлы на диске

Сообщение drBatty »

а что пишет

Код: Выделить всё

tune2fs -l /dev/sda5 | grep -i 'inode'

это вы мало инодов наделали, или слишком много используете?
вероятнее всего последнее, потому пилить надо вашу joomla, или что там у вас...
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
benimeni
Сообщения: 10

Re: Не создаются файлы на диске

Сообщение benimeni »

Блин, был в отезде

Код: Выделить всё

Inode count:              4292608
[b]Free inodes:              0[/b]
Inodes per group:         8192
Inode blocks per group:   512
First inode:              11
Inode size:              256
Journal inode:            8
First orphan inode:       3768923
Journal backup:           inode blocks

Помоему вообще мало айнодов?
При перезагрузки сервера, есть около 300 айнодов, но со временем и они уходят :crazy:
Эта проблема появилась после жесткого выключения (свет отключали надолго). Т.к. физически не на работе, сделать бэкап и создать по новой фс пока возможности нет.
Что можно придумать?
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: Не создаются файлы на диске

Сообщение watashiwa_daredeska »

benimeni писал(а):
03.08.2011 10:14
Эта проблема появилась после жесткого выключения
benimeni писал(а):
03.08.2011 10:14
Что можно придумать?
fsck не помогает?
Спасибо сказали:
benimeni
Сообщения: 10

Re: Не создаются файлы на диске

Сообщение benimeni »

watashiwa_daredeska писал(а):
03.08.2011 12:11
benimeni писал(а):
03.08.2011 10:14
Эта проблема появилась после жесткого выключения
benimeni писал(а):
03.08.2011 10:14
Что можно придумать?
fsck не помогает?

нет
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4824
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Не создаются файлы на диске

Сообщение SLEDopit »

benimeni писал(а):
03.08.2011 10:14
Что можно придумать?
Если раньше такого не было и fsck не помогает - можно попробовать найти место, которое захламляет диск маленькими файлами и пофиксить / поставить костыль / etc.
Найти папку с подозрительно большим количеством файлов поможет скрипт типа такого:

Код: Выделить всё

#!/bin/bash
find / -type d | while read DIR
do
echo $(find "$DIR" -maxdepth 1 -type f|wc -l)"  "$i
done |sort -n
(работать может достаточно долго)
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: Не создаются файлы на диске

Сообщение watashiwa_daredeska »

SLEDopit писал(а):
04.08.2011 11:16
Найти папку с подозрительно большим количеством файлов поможет скрипт типа такого:
Ну, раз уж -maxdepth 1, то можно попытаться искать просто каталог с самым большим размером: find / -type d -printf '%s %P\n' | sort -n, быстрее будет.
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4824
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Не создаются файлы на диске

Сообщение SLEDopit »

watashiwa_daredeska писал(а):
04.08.2011 11:49
Ну, раз уж -maxdepth 1, то можно попытаться искать просто каталог с самым большим размером: find / -type d -printf '%s %P\n' | sort -n, быстрее будет.
Кстати да, как-то я не подумал. Спасибо за подсказку.
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Аватара пользователя
sgfault
Сообщения: 586
Статус: -

Re: Не создаются файлы на диске

Сообщение sgfault »

Или что-нибудь такое

Код: Выделить всё

$ find Documents/ -type f | cut -d/ -f2 | uniq -dc | sort -n
   ..
   1075 dbus
   1584 posix
   2195 icq
   3822 xmms2

Потом выбираете из вывода последнюю строчку (название папки) и повторяете команду, заменив 'Documents/' на 'Documents/xmms2', и тд -) Можно и без '-type f', на случай, если много пустых директорий.
ЗЫ. И еще циферку надо увиличивать: '-f3' вместо '-f2' и тд -)

UPD
Для любителей "шоб все само", вот скрипт:

Код: Выделить всё

(
 path='Documents';
 max_depth=3;
 ((max_depth+=2));
 for ((i = 2; i < $max_depth; ++i)); do
    t="$(find "$path" | cut -d/ -f $i | uniq -dc | sort -n | tail -n1)";
    path="${path}/${t##* }";
    echo "Follow path '$path' with ${t% *} files";
  done;
)
Спасибо сказали: