Використання дискового простору не доповнюється df & du


13

Я намагаюся звільнити трохи дискового простору - якщо я це роблю df -h, у мене є файлова система під назвою / dev / mapper / vg00-var, яка каже, що її 4G, 3.8G використано, 205M залишилося.

Це відповідає моєму каталогу / var.

Якщо я спускаюсь у / var і роблю du -kscxh *, загальна сума - 2.1G

2.1G + 200M безкоштовно = 2.3G ... Отже, моє запитання, де залишилися 1.7G?


Що du -shx /varговорить?
Кайл Сміт

1
Ви також можете видалити файли з відкритими ручками файлів. ОС не звільнить простір, поки ручки не закриються, але ви не побачите їх з "du". Ви можете запустити "lsof / var | grep delete" (або щось подібне), щоб побачити їх. Це насправді не було б дивовижним висновком у, скажімо, / var / log, якщо журнали обертаються, але процес ведення журналу не HUP'ed належним чином.
cjc

Я видаляв деякі файли журналів, які зійшли з розуму, здавалося, що вони не обертаються, але все одно, у мене було одне слово від друга "перезавантажити" - я зрозумів, що він саркастичний, але, мабуть, не :) я знову знайшов мій диск ... .... стихійне лихо запобігло (поки що).
Codecraft

@Codecraft Так, перезавантаження безумовно очистить будь-які ручки відкритого файлу, хоча це на зразок зламання яйця молотком.
cjc

@cjc до тих пір, поки я потрапляю на жовтого добра ... Будь-які пропозиції щодо того, як я можу очистити ручки відкритого файлу, не забиваючи яйце?
Codecraft

Відповіді:


20

Напевно, у вас є якийсь видалений великий файл журналу, файл бази даних чи щось подібне, що очікує на процес вивільнення цього файлу.

У Linux видалення файлу просто від’єднує файл. Він фактично видаляється, коли до цього файлу більше не підключені ручки файлів. Отже, якщо у вас є файл журналу 2 Гб, який ви видаляєте вручну за допомогою rm, дисковий простір не буде звільнений, доки ви не перезапустите демон демона (або надішліть йому HUPсигнал).

Спробуйте

lsof -n | grep -i deleted

і перевірте, чи є у вас якісь видалені файли зомбі, які все ще плавають.


Мені не вдалося виконати вашу команду, але те, що ви сказали, виявилося нахилом - я вручну вбивав декілька журналів, які зникли з розуму, і, врешті-решт, перезавантаження призвело до того, що дисковий простір було перераховано та показано правильно.
Codecraft

Він працював у нас з журналами Apache, заповнюючи каталог / var / log / apache /. Тож вам може не доведеться перезавантажувати весь сервер, ані syslog, лише службу, яку ви знайдете у висновку команди вище.
Іван

Просто ми самі це мали. У нас був tomcat6 catalina.out, щоб не ловити логротат, ми видаляли його, коли він досягав 4Gb і фіксував логротат. Через кілька тижнів ми поцікавились, чому 4Gb не повернувся. Ця lsofкоманда показала, що у нас є багато файлів tomcat, які очікують на видалення. Перезапустивши tomcat і раптом у нас є тони простору!
Нік

Нарешті відповідь, яка працювала на мене. PostgreSQL вийшов з ладу і залишив відкритими з'єднання до 400GiB (!!!) непов'язаних файлів на диску 1TiB. Перезапуск Postgres виправив це.
судо
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.