Як зупинити цю постійну втрату вільного місця?


15

Я працював Ubuntu, як звичайно, коли раптом у мене з’явилося діалогове вікно, в якому сказано, що у мене залишилося лише 1,2 ГБ вільного місця. За годину до цього у мене було 30 ГБ вільного місця.

Я видалив деякі речі та приніс вільний простір до 25 ГБ. Але воно продовжує зменшуватися. Я спробував видалити старі файли журналів та обрізати файли журналів тощо, і він продовжує зменшуватися!

Я спробував за допомогою Disk Analyzer дізнатися, звідки беруться всі ці втрати вільного простору, і це не спрацювало, оскільки воно показало все як слід. Я перезавантажив і, зрештою, Ubuntu перевірив диск, який якимось чином повернув вільний простір до 40 ГБ, але він продовжує зменшуватися приблизно на 10 ГБ на день. Я продовжую намагатися знаходити нові способи звільнення місця, але це як автоматизований процес зменшення дискового простору, який я не можу зупинити.

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

Ось результат із sudo du -sh /var/* ~/.xsession-errors:

13M /var/backups
204M    /var/cache
112M    /var/crash
4.0K    /var/games
503M    /var/lib
4.0K    /var/local
0       /var/lock
9.5G    /var/log
85M     /var/mail
4.0K    /var/metrics
24K     /var/opt
0       /var/run
1.7M    /var/spool
391M    /var/tmp
11G     /var/tvmobili
20K     /var/www
224K    /home/school/.xsession-errors

2
Чи можете ви відредагувати публікацію, щоб додати вихід, sudo du -sh /var/* ~/.xsession-errorsбудь ласка? (ці два місця я б очікував підірвати, якщо щось буде дурним). Інакше я з Елією - це вказує на проблеми з диском. Поставтеся до цього серйозно.
Олі

Відповіді:


26

У вас є кілька журналів поза контролем. Замість того, щоб видаляти як божевільні щодня, знайдіть швидко зростаючий файл чи файли та загляньте всередину, щоб дослідити, що може спричинити це. Можливо, якась програма крутиться в циклі, який записує якусь умову. Або вимкніть цю програму, відключіть її реєстрацію або спробуйте виправити умову, на яку вона скаржиться.

Якщо файл зростає перед вашими очима, і ви не маєте уявлення, яка програма пише до нього, ви можете це легко знайти. Ось приклад. Хто /var/log/syslogвідкрив? Ми використовуємо fuserкоманду:

# fuser /var/log/syslog
/var/log/syslog:      602

Лише один процес /var/log/syslogвідкритий. Це процес 602. Що це? Давайте не будемо заважати psі grep, а подивимось /procбезпосередньо на файлову систему:

# ls -l /proc/602/exe
lrwxrwxrwx 1 root root 0 Mar 29 17:45 /proc/602/exe -> /usr/sbin/rsyslogd

Ага, це так rsyslogd. Ми не здивовані , що rsyslogdє /var/log/syslog/відкрита.

Цей метод не гарантовано працює. Причина полягає в тому, що програмам не потрібно тримати файли відкритими для їх запису. Припустимо, у вас є процес, який відкриває файл, додає його та закриває. У вас буде дещо складніше розслідування. Ви можете бігати fuserбагато разів, поки випадково не впіймаєте процес "червоними руками". Цей процес сам по собі міг швидко входити і вибудовуватись. Ще одна проблема полягає в тому, що декілька процесів можуть відкрити файл, але лише один робить його більшим. У цьому випадку ви можете простежити їх системні дзвінки.

# fuser /var/log/huge-annoying-file
/var/log/huge-annoying-file:   1234 23459

На жаль! Відкрито два процеси: 1234 та 23459. Подивимося, що вони роблять:

# strace -p 1234
Process 1234 attached - interrupt to quit
select(1, NULL, NULL, NULL, {9, 922666}

Це нічого не робить, просто блокує selectдзвінок. Ctrl-C для порушення сліду:

select(1, NULL, NULL, NULL, {9, 922666}^C <unfinished ...>

Перевірте наступне:

# strace -p 23459
write(5, "Useless garbage ..."..., 512) = 512
write(5, "More useless garbage ..."..., 512) = 512
write(5, "More useless garbage ..."..., 512) = 512
write(5, "More useless garbage ..."..., 512) = 512
write(5, "More useless garbage ..."..., 512) = 512
write(5, "More useless garbage ..."..., 512) = 512
write(5, "More useless garbage ..."..., 512) = 512
^C

На жаль, це пишуть постійно. Він повинен бути поганим. Ми навіть можемо перевірити, що дескриптор файлу 5, до якого пише процес, насправді є великим файлом:

# ls -l /proc/23459/fd/5
lr-x------ 1 root root 64 Apr  3 23:39 /proc/23459/fd/5 -> /var/log/huge-annoying-file

Я не підозрюю, що у вас є пошкоджена файлова система, але для примусової перевірки вам не потрібно завантажувати DVD.

По-перше, перегляньте параметр максимальної кількості файлів у вашій файловій системі. Визначте свій розділ за допомогою команди df. Приклад для системи Ubuntu у мене тут:

# df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda1       18062108 5499320  11645284  33% /
udev              392152       4    392148   1% /dev
tmpfs             159768     768    159000   1% /run
none                5120       0      5120   0% /run/lock
none              399416     200    399216   1% /run/shm
/dev/sr0           43668   43668         0 100% /media/VBOXADDITIONS_4.1.4_74291

Ви можете бачити, що /файлова система змонтована /dev/sda1. Так само /dev/sda1є накопичувачем кореневого розділу (і єдиним розділом у цій конкретній системі).

Давайте розглянемо деякі атрибути цієї файлової системи. Це безпечно зробити, навіть якщо він встановлений. Команда показує багато результатів. Ось уривок:

$ dumpe2fs /dev/sda1
dumpe2fs 1.42 (29-Nov-2011)
Filesystem volume name:   <none>
Last mounted on:          /
[ ... SNIP ... ]
Last mount time:          Fri Mar 29 17:45:18 2013
Last write time:          Tue Mar  5 09:08:03 2013
Mount count:              22
Maximum mount count:      22
[ ... SNIP ... ]

Привіт, дивіться, кількість кріплення дорівнює максимальній кількості кріплення. Наступного разу, коли я перезавантажуюсь, буде перевірка файлової системи. Важливим є те, що кількість кріплення - це додатне значення. Якщо ваш нуль, змініть його на якесь додатне значення, наприклад, 22 tune2fs -c 22 /dev/whatever. Нуль означає, що перевірка ніколи не примушується незалежно від того, скільки разів встановлений розділ. Рідко перезавантажені системи повинні мати тут низькі значення. Сервер, який виходить з ладу раз на рік, ймовірно, може використовувати fsck щоразу, коли він перезавантажується. Ви також можете встановити інтервали перевірок на основі дати.

Тепер, щоб примусити перевірити, ви можете змінити фактичну кількість, що перевищує максимальну чи рівну, а потім перезавантажити. Це робиться з капіталом C: tune2fs -C 1234 /dev/whatever. Тепер розділ виглядає так, що він був встановлений 1234 рази без перевірки, що більше одно- або двоцифрового максимуму.


дуже інформативно, але проблема вирішена, саме брандмауер писав величезні файли журналів
askcompu

2
Дивіться, як я підозрював. Жодна таємнича пошкодженість диска не замикає простір вгору та вниз. Я маю на увазі, що це може пояснити поодинокий випадок, але як тільки його відремонтують, його слід відремонтувати. І диск не працює, ви очікували б деяких помилок у журналі ядра та паніці.
Каз

так, я зрозумів, що це не привід, SMART тести кажуть, що це старий привід, але все ще функціонує і працює
askcompu

Найпростіший спосіб зрушити всі ваші файлові системи - це запустити 'sudo touch / forcefsck; sudo / sbin / shutdown -r зараз '.
Блер Заяк

3

Перевірка диска звільнила деякий простір, припустивши, що ця проблема (або її частина) може бути наслідком пошкодження файлової системи. Якщо це так, то ви повинні мати можливість звільнити більше місця за допомогою сканування та відновлення файлової системи. Однак, якщо корупція постійно відбувається (що може бути, а може і не бути), це означає, що жорсткий диск вмирає. Якщо ваші резервні копії (ваших документів та будь-яких інших важливих файлів, які важко було б замінити), не є повністю оновленими, будь ласка, скопіюйте все важливе зараз!

Для перевірки та ремонту диска його неможливо встановити (принаймні, не читати-записувати). Тож слід запустити утиліту ремонту з живого середовища (живий CD / DVD або USB). По-перше, вам доведеться дізнатися назву пристрою розділу, який містить ваші файли.

Тому у встановленій системі запустіть:

mount | grep ' on / '

(Обов’язково введіть пробіл між /і '.)

У вас вийде щось на кшталт:

/dev/sda8 on / type ext4 (rw,errors=remount-ro)

Текст раніше on- в прикладі з моєї машини, - /dev/sda8це повна назва пристрою для вашого кореневого розділу ( /). Запишіть це - вам це знадобиться.

Потім завантажте комп'ютер із настільного CD / DVD або USB флеш-пам’яті Ubuntu, як те, що ви використовували для встановлення Ubuntu спочатку. (Якщо це система Wubi, встановлена ​​разом із інсталятором Windows, будь ласка, повідомте нас про це. Я не очікую цього, враховуючи те, про що ви повідомили, але якщо це так, процедура буде іншою.)

Виберіть Спробуйте Ubuntu без встановлення (не Встановити Ubuntu ). Коли ви отримаєте робочий стіл, натисніть Ctrl+ Alt+, Tщоб відкрити вікно терміналу. Потім запустіть цю команду:

sudo e2fsck -fkccp /dev/sda8

Але не забудьте замінити /dev/sda8правильне повне ім’я пристрою для вашого /розділу, як ви отримали методом, описаним вище.

Це може зайняти деякий час. В cопції , включені в цю команду бо сканувати поверхню диска на наявність помилок, а також файлову систему (і позначити будь-які погані області , як погано так вони не використовуються). Ви можете залишити ccїх, якщо вам подобається (якщо це зробити, ви також можете пропустити k), але я рекомендую зберігати їх.

Можливо, вам буде запропоновано вирішити певні проблеми, якщо ви e2fsckвважаєте, що існує велика ймовірність, що спроба їх виправити може призвести до втрати даних. (Це pробить так, що він вирішить будь-які проблеми, які, напевно, можуть виправити, не викликаючи ускладнень.)

Я рекомендую вам бути сильно схильним дозволити йому виправляти все, що він хоче, оскільки ви повинні робити це лише після того, як переконайтесь, що ваші резервні копії актуальні . Якщо ви хочете, щоб спробувати навіть потенційно небезпечні виправлення без запиту, замініть pз y.

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


Що робити, якщо у мене немає для чого резервного копіювання?
askcompu

1
@ user2045360 Вкрасти, пограбувати, взяти в борг чи купити. Або натисніть на Інтернет (Ubuntu One, Dropbox, Google Docs, S3 тощо).
Олі

@ user2045360 Це залежить від кількості важливих файлів. Якщо вони складаються з 20 офісних документів (або навіть 100, якщо ви терплячі), ви можете надіслати їх електронною поштою. Ви також можете використовувати хмарні сервіси зберігання даних, як-от Ubuntu One або DropBox (будьте обережні - якщо ви налаштували щось для синхронізації, а файл видалено або змінено на вашому комп’ютері, те саме зміниться і в хмарі). З іншого боку, якщо ви кінорежисер і у вас є 300 гігабайт кадрів, то ваш єдиний варіант - це, мабуть, придбати (або, як пропонує Олі, позичити) якийсь носій інформації, наприклад зовнішній жорсткий диск.
Eliah Kagan

У мене немає грошей і ні в кого не брати позики, наскільки можливою є втрата даних за допомогою цієї команди?
askcompu

@ user2045360 Ймовірність втрати даних від цього e2fsckкомандного складу досить низька, особливо якщо ви не натискаєте yна щось, що попереджає вас про те, що ви можете втратити дані. Але виконання цієї команди не є причиною створення резервної копії даних. Вам потрібно створити резервну копію даних, оскільки швидкий і постійний характер вашого падіння вільного простору настійно говорить про те, що ваш жорсткий диск може зійти збитку фізично повністю . Якщо це станеться, ви втратите будь-які дані на ньому і майже точно не зможете відновити жодну з них. Інші способи створення резервної копії включають мережу на іншу машину або CD / DVD.
Елія Каган

0

Ця проблема була вирішена, саме брандмауер записував тонни журналів та файли кодування tvmobili

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.