Есть ли способ заставить ядро вернуть свободное место на диске сейчас? Как написать что-то в / proc /? Использование Ubuntu 11.10 с ext4.
Это, наверное, старая и очень повторяющаяся тема. После нажатия 0 пробел только заметил, когда мой редактор не смог сохранить файлы исходного кода, которые у меня открыты, которые, к моему ужасу, теперь имеют размер 0 байт в списке папок, я продолжил удаление.
Я удалил сотни МБ больших файлов как от пользователя, так и от пользователя root, а также сделал несколько жестких ссылок.
Непосредственно до того, как я это apt-get clean
сделал, в / var / cache / apt / archives было более 900 МБ, теперь только 108 КБ:
# du
108 /var/cache/apt/archives
Час спустя все еще нет свободного места и не могу сохранить мои драгоценные файлы, открытые в редакторе, но обратите внимание на несоответствие ниже:
# sync; df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda4 13915072 13304004 0 100% /
Какие-либо предложения? Я отключил некоторые службы / процессы, но не уверен, как проверить, кто может активно использовать дисковое пространство.
Больше информации
# dumpe2fs /dev/sda4
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 884736
Block count: 3534300
Reserved block count: 176715
Free blocks: 422679
Free inodes: 520239
First block: 0
Block size: 4096
Fragment size: 4096
Ответы:
Проверьте,
lsof
есть ли открытые файлы. Пространство не будет освобождено, пока они не будут закрыты.скажет вам, какие удаленные файлы остаются открытыми.
источник
mysqld
блокировки в / tmp, но многиеapport-gt
случаи использования вымерших файлов в / var / lib / apt / lists /partal /, которые, по-видимому, накапливались. Так что я мог бы,killall apport-gt
но сначала исследую это.lsof +L1
(выберите открытые файлы, которые не были связаны).Используйте,
lsof
чтобы найти удаленный, но открытый файл, все еще занимающий место:Найдите запись,
/proc/<pid>/fd/
которая соответствует дескриптору файла:Теперь просто
cat /dev/null
в FD:Обратите внимание, что индекс все еще открыт, но теперь он имеет длину 0
источник
cat
для усечения. В оболочке Bourne точно так> /proc/3446/fd/128
и сделаю.df
не будет отображать пространство, зарезервированное дляroot
(даже при запуске какroot
):Как изменить «процент зарезервированных блоков»
Уменьшить зарезервированное пространство до 4%
# tune2fs -m4 /dev/sda4
df -h
сейчас показал 45М бесплатно.Положи обратно на 5%
# tune2fs -m5 /dev/sda4
источник
df
отображает для обычного пользователя полезного пространства. Поскольку apt запускается от имени пользователя root, зарезервированное пространство полезно только для защиты от переполнений, вызванных пользователями без полномочий root (= обычные пользователи и службы, имеющие своего собственного пользователя).mkfs
эти дни следует бронировать, например. 5% или 300 МБ, в зависимости от того, что меньше . Просто перенастроил некоторые из моих серверов на 2% и освободил ГБ обратно!В Ubuntu, если вы удалили файлы с помощью корзины, ваши файлы были, скорее всего, удалены не полностью.
Даже после очистки корзины ваши файлы будут сохраняться
~/.local/share/Trash/expunged
до перезагрузки и, возможно, даже дольше.Я не нашел веских причин для этого, но если мне не хватает места, я всегда вручную
rm
удаляю удаленные файлы.источник
Объяснение:
Grep
lsof
вывод для извлечения только удаленных файлов. Sed извлекает идентификатор процесса и идентификатор файлового дескриптора из каждой строки и создает строку в формате{pid}/fd/{fid}
. Хотя цикл и ничего не выводить в каждый файл, устанавливая их пустыми.источник
Интересно,
sync
поможет ли это здесь - но не должно быть, поскольку IIRC в большинстве ("многих"?) Систем, файловые системы синхронизируются каждые 30 с.Я бы проверил журнал ядра (чтобы
dmesg
), чтобы выяснить, происходит ли что-нибудь неприятное, и запустил бы,lsof
чтобы увидеть, открыт ли еще какой-либо большой удаленный файл (на самом деле, я думаю, что удаленные файлы будут помечены так же вlsof
выходных данных).Две причины (одна из которых указана в вопросе, на который вы ссылаетесь) могут привести к тому, что удаленные файлы не будут освобождены
unlink()
ссылка где-то еще (точнее, вы редактировали файл с более чем одной ссылкой)Но я не знаю конкретной причины, по которой это может произойти с таким количеством файлов ...
источник
sync
никогда не помогал Что касается логов, то это система Ubuntu, поэтому она довольно глючная, так что да, они обычно шумные.apport
часто развертывается, потому что каждое ночное обновление apt-get вылетает, хотя / var / crash имеет только 77 МБ. Также было замечено,atd
что файл / var / log / syslog повторяется с повторяющимися строками, как,atd[8892]: File a0015c0152ab76 is in wrong format - aborting
вероятно, поскольку несколько файлов в / var / spool / cron / atspool имеют размер 0, что, конечно, делает проблему круглойCentOS 6.3 также выполняет функцию "фактически не очищать мусорное ведро, когда вы очищаете мусорное ведро". Я не мог найти способ вернуть себе место, пока не побежал
rm -rf ~/.local/share/Trash/expunged/
. Вызвала сильную головную боль.источник