Дисковое пространство на Fedora 12

Lennart Poettering недавно сделал некоторое рытье в поведение при блокировании файловой системы Linux, которое не красит особенно розовое изображение для блокировки по NFS (особенно продолжение, с которым он связывается в нижней части сообщения).

http://0pointer.net/blog/projects/locking.html

5
13.11.2010, 11:30
2 ответа

Во-первых, необходимо узнать то, что разрушает пространство. Я предложил бы, чтобы Вы разыскали физический файл или каталог, который растет до того размера.

Самый простой путь состоял бы в том, чтобы регистрировать каталоги / использование: (Я предложил бы выполнить его как корень),

 # du -hs /* 2> /dev/null
4.2M  /bin
25M   /boot
204K  /dev
6.7M  /etc
19G   /home
112M  /lib
16K   /lost+found
12K   /media
16K   /mnt
4.0K  /multimedia
1018M /opt
0     /proc
15M   /root
8.6M  /sbin
12K   /srv
4.2M  /storage
0     /sys
108K  /tmp
16G   /usr
4.3G  /var

Теперь, Вы выполняете это, когда компьютер недавно запустился и не начал есть пространство все же, и Вы сохраняете вывод в файле ( ~/record-space )

$ sudo du -hs /* 2> /dev/null 1> ~/record-space

И затем когда Ваш компьютер приближается к "ПОЛНОМУ" состоянию, можно выполнить команду, снова сохраняющую вывод во втором файле.

$ sudo du -hs /* 2> /dev/null 1> ~/record-space2

Теперь можно сравнить эти два файла ( ~/record-space и ~/record-space2 ) видеть, как отличаются th e основные каталоги...

Мой любимый способ сравнить файлы использует diff:

$ diff ~/record-space{,2}

обновление: См. комментарий Gille к этому ответу.

Вместо du -hs /*, скорее используйте du -xsh /tmp/* /var/*/* ~/.*.

5
27.01.2020, 20:38
  • 1
    Столь же 'ужасный', как это решение звучит, я настоятельно рекомендую его в этом случае. –  N J 13.11.2010, 11:55
  • 2
    я предлагаю du -xsh /tmp/* /var/*/* ~/.* как du команда. Список каталога должен поймать наиболее вероятные местоположения и добавленное -x должен пропустить другие файловые системы (например, Псевдодиски, Карты памяти). –  Gilles 'SO- stop being evil' 13.11.2010, 14:13

Некоторые дистрибутивы или настольные среды могут показать предупреждение, если Ваше доступное дисковое пространство опускается ниже определенного порога; вот то, как можно мостить собственное. В терминале ввести crontab -e (не как корень); это откроется редактор. Введите следующую строку:

*/5 * * * * if [ "$(df -P / | awk 'NR==2 {print $4}')" -le 1048576 ]; then df /; fi

Это означает каждые пять минут (*/5 * * * *), если свободное пространство на диске ("$(df -P / | …)") отбрасывания ниже ([ … -le … ]) 1048576 КБ (1 ГБ), отправьте Вам местную почту со свободным пространством на диске (крон отправит Вам вывод df /).

Можно заметить, что “используемые” и “доступные” столбцы только составляют 95% общего количества; поэтому зарезервированного пространства и не ответственно за Вашу проблему (зарезервированная сумма не варьируется со временем).

Наиболее вероятные места, где что-то могло бы съедать Ваше дисковое пространство, /tmp, /var и Ваш корневой каталог (включая их подкаталоги). Я подсказки второго Stefan относительно установки базовой линии du вывод и сравнение его с выводом, когда диск полон.

Если пространство освобождено, когда Вы загружаетесь, может быть несколько причин. Некоторая программа, по-видимому, создает большие временные файлы; возможно, эти файлы очищены, когда программа завершается, возможно, они очищены во время процесса начальной загрузки, возможно, они очищены, когда программа запускается снова. Один случай, с которым Вы не сможете наблюдать du то, если большие файлы удалены, в то время как программа использует их. При удалении файла в системе Unix только имя файла исчезает сначала (файл является “несвязанным”); содержание файла только исчезает, когда больше нет никаких ссылок на файл: ни имя, ни процесс, имеющий его открытый. Другими словами, если программа создает большой файл, открывает его и удаляет его, пространство только освобождено, когда программа закрывает файл (который происходит автоматически, когда программа умирает). Вы не видите удаленные файлы с du, но Вы видите их с lsof (“перечисляют открытые файлы”):

lsof | grep '(deleted)'

В выводе lsof предпоследнее число, прежде чем имя файла (т.е. 7-й столбец) является размером файла.

2
27.01.2020, 20:38

Теги

Похожие вопросы