Удаление файлов, но дисковое пространство по-прежнему заполнено

Работа с старой коробкой CentOS 5.6 без установки lvm, моя корневая файловая система / заполнена, я удалил много старых файлов журналов и файлов приложений, которые мне не нужны, размер которых был больше 2-5 ГБ, однако моя система Все еще сообщает, что диск заполнен.

[[email protected] ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda3 130G 124G 0 100% / /dev/sdb1 264G 188M 250G 1% /data /dev/sda1 99M 24M 71M 26% /boot tmpfs 2.0G 0 2.0G 0% /dev/shm [[email protected] ~]# mount /dev/sda3 on / type ext3 (rw) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) /dev/sdb1 on /data type ext3 (rw) /dev/sda1 on /boot type ext3 (rw) tmpfs on /dev/shm type tmpfs (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw) 

Любая идея о том, что я должен делать дальше? К сожалению, перезагрузка коробки в данный момент не является вариантом.

Здесь могут быть две вещи.

Во-первых , ваша файловая система зарезервировала некоторое пространство, на которое может писать только root , поэтому критический системный процесс не падает, когда нормальные пользователи заканчивают дисковое пространство. Вот почему вы видите 124G из 130G, но ноль доступен. Возможно, файлы, которые вы удалили, привели к использованию до этого момента, но не ниже порога для обычных пользователей.

Если это ваша ситуация, и вы в отчаянии, вы можете изменить объем пространства, зарезервированного для root . Чтобы уменьшить его до 1% (по умолчанию 5%), ваша команда будет

 # tune2fs -m 1 /dev/sda3 

Во-вторых , операционная система не освободит дисковое пространство для удаленных файлов, которые все еще открыты. Если вы удалили (скажем) один из файлов журнала Apache, вам нужно будет перезапустить Apache, чтобы освободить место.

Если вы удалите файл, который используется процессом, вы больше не можете просматривать файл с помощью ls . Этот процесс все еще записывается в этот файл, пока вы не остановите процесс.

Чтобы просмотреть эти удаленные файлы, просто запустите lsof|grep delete

Еще 2 способа получить диск – полная проблема:

1) скрыт под точкой монтирования: linux покажет полный диск с файлами, «скрытыми» под точкой монтирования. Если у вас есть данные, записанные на диск, и подключите к ним другую файловую систему, linux правильно отмечает использование диска, даже если вы не видите файлы под точкой монтирования. Если у вас установлены nfs, попробуйте их убрать и посмотрите, не было ли случайно записано в этих каталогах до монтирования.

2) поврежденные файлы: я иногда вижу это в окнах для переноса файлов linux через SMB. В одном файле не удается закрыть дескриптор файла, и вы завершите работу с файлом размером 4 ГБ.

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

 cd / du -sh ./* 

Количество каталогов верхнего уровня обычно ограничено, поэтому я устанавливаю человеческий читаемый флаг -h чтобы увидеть, какой подкаталог представляет собой пробел.

Затем вы входите в дочерний процесс и повторяете процесс для всех элементов в нем. Чтобы это было легко обнаружить крупные предметы, мы немного изменили дю и разделили его на сорт.

 cd /<suspiciously large dir> du -s ./* | sort -n 

Который производит наименьший и самый большой вывод по размеру байтов для всех файлов и каталогов

 4 ./bin 462220 ./Documents 578899 ./Downloads 5788998769 ./Grocery List 

Как только вы заметите большой файл, вы можете просто удалить его.

Вы можете узнать, какие файлы открыты с lsof. Это может привести к большому количеству выходных данных, поэтому в приведенном ниже примере я ограничил строки, заканчивающиеся на log:

 # lsof | grep log$ rsyslogd 2109 syslog 0u unix 0xffff88022fa230c0 0t0 8894 /dev/log rsyslogd 2109 syslog 1w REG 252,6 62393 26 /var/log/syslog rsyslogd 2109 syslog 2w REG 252,6 113725 122 /var/log/auth.log rsyslogd 2109 syslog 3u unix 0xffff88022fa23740 0t0 8921 /var/spool/postfix/dev/log rsyslogd 2109 syslog 5w REG 252,6 65624 106 /var/log/mail.log /usr/sbin 2129 root 2w REG 252,6 93602 38 /var/log/munin/munin-node.log /usr/sbin 2129 root 4w REG 252,6 93602 38 /var/log/munin/munin-node.log ... 

В дополнение к тому, что было объяснено, проблема может заключаться в том, что на другом подключенном дисководе на том же сервере имеется другая точка монтирования каталога удаленных файлов. Проверьте текущие крепления и записи fstab.

Фактическая проблема, наблюдаемая в дикой природе:

Убедитесь, что вы удаляете фактические файлы, а не ссылки на файлы. Это особенно характерно для файлов журналов.

Если некоторые файлы удаляются, но все еще используются каким-то процессом, то это пространство не будет выпущено. В этом случае либо перезапустите процесс, который использует файл, либо аннулирует файл. Всегда рекомендуется удалять такие файлы, а не удалять их. Чтобы найти удаленные файлы, но все еще используется некоторыми процессами

 #lsof +L1 

Он выдаст идентификатор процесса и дескриптор файла. Нулевой удаленный файл по файловому дескриптору

 #echo "" > /proc/$pid/fd/$fd 
  • Узнайте, почему / как создается папка
  • Как создать случайный файл .txt (текст, читаемый человеком, такой как ascii) в linux
  • Почему эта команда отключает Linux
  • Linux найти команду для перемещения файлов
  • Исправить окна 8 efi MBR - нет успеха
  • Ls с каталогом путь показывает файлы, но ls с шаблоном файла нет?
  • Какое максимальное количество папок разрешено в папке в Linux?
  • Что такое .Trash и .Trash-1000?
  • Как я могу проверить, что занимает дисковое пространство в / tmp?
  • Как удалить повторяющиеся файлы через отдельные деревья каталогов?
  • Где Skype сохраняет аватары моего контакта в Linux?
  • Давайте будем гением компьютера.