На виртуализированном сервере под управлением Ubuntu 10.04 df сообщает следующее:
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 7.4G 7.0G 0 100% /
none 498M 160K 498M 1% /dev
none 500M 0 500M 0% /dev/shm
none 500M 92K 500M 1% /var/run
none 500M 0 500M 0% /var/lock
none 500M 0 500M 0% /lib/init/rw
/dev/sda3 917G 305G 566G 36% /home
Это меня озадачивает по двум причинам: 1.) df сообщает, что / dev / sda1, смонтированный в /, имеет емкость 7,4 гигабайт, из которых используются только 7,0 гигабайт, но при этом сообщает, что / заполнен на 100 процентов; и 2.) Я могу создавать файлы на /, так что там явно осталось место.
Возможно, актуально то, что каталог / www представляет собой символическую ссылку на / home / www, который находится в другом разделе (/ dev / sda3, смонтированном в / home).
Может ли кто-нибудь предложить предложения о том, что здесь может происходить? Кажется, что сервер работает без проблем, но я хочу убедиться, что нет проблем с таблицей разделов, файловыми системами или чем-то еще, что может привести к сжатию (или взрыву) позже.
Возможно, процесс открыл большой файл, который с тех пор был удален. Вам придется остановить этот процесс, чтобы освободить место. Вы можете идентифицировать процесс с помощью lsof. В Linux удаленные, но открытые файлы известны lsof и помечаются как (удаленные) в выводе lsof.
Вы можете проверить это с помощью sudo lsof +L1
5% (по умолчанию) файловой системы зарезервировано для случаев, когда файловая система заполняется, чтобы предотвратить серьезные проблемы. Ваша файловая система заполнена. Ничего катастрофического не происходит из-за 5% -ного буфера - root может использовать этот буфер безопасности, и в вашей настройке у пользователей без полномочий root нет причин для записи в эту файловую систему.
Если у вас есть демоны, которые работают как пользователь без полномочий root, но которым необходимо управлять файлами в этой файловой системе, все сломается. Один из распространенных таких демонов - named
. Другой ntpd
.
Возможно, у вас закончились inodes. Проверьте использование inode с помощью этой команды:
df -i
Большинство файловых систем Linux резервируют 5% пространства для использования только пользователем root.
Вы можете увидеть это, например,
dumpe2fs /dev/sda1 | grep -i reserved
Вы можете изменить зарезервированную сумму, используя:
tune2fs -m 0 /dev/sda1
В большинстве случаев сервер будет продолжать работать нормально - при условии, что все процессы выполняются от имени «root».
Помимо уже предложенных причин, в некоторых случаях это могут быть следующие:
du -md 1
очередной раз. Исправить ситуацию, переместив скрытый папку в другое место или смонтировать в другом месте. У меня была эта проблема, и я был сбит с толку тем фактом, что удаление различных больших файлов не улучшило ситуацию (я не знал о 5% буфере), следуя некоторым подсказкам здесь
Из корневого каталога прошли по самым большим каталогам, обнаруженным повторяющимся выполнением: -
du -sh */
пока я не пришел в каталог для файлов журналов веб-сервера, в которых были очень большие журналы
который я усек с
:>lighttpd.error.log
внезапно df -h снизился до 48%!
df -h
округляет значения. Даже проценты округлены. Опустить -h
и вы видите более мелкие различия.
Ой. И ext3, и производные резервируют процент (по умолчанию 5%) для файловой системы именно для этого проблемного созвездия. Если ваша корневая файловая система действительно заполнена (осталось 0 байт), вы не сможете загрузить систему. Таким образом, зарезервированная часть предотвращает это.
Я сделал большое обновление нескольких библиотек, и там было много ненужных библиотек и временных файлов, поэтому я освобождаю место в папке «/», используя:
apt-get install -f
sudo apt-get clean
И очистите свой мусор
проверьте / lost + found, у меня была система (centos 7), и некоторые файлы в / lost + found съели все пространство
Если ваш раздел - btrfs, возможно, там есть подтом, занимающий место. Файловая система btrfs может иметь много подтомов, только один из которых смонтирован. Ты можешь использовать btrfs subvolume list <dir>
чтобы перечислить все подтомы и btrfs subvolume delete <dir>/<subvolume>
чтобы удалить один. Убедитесь, что вы не удалили тот, который установлен по умолчанию.