Ръководство · Linux сървъри

Препълнен диск на Linux сървър:намерете какво заема мястото

Препълненият диск обикновено има една или две очевидни причини. Работете отгоре надолу, първо прочетете, после изтривайте, и никога не премахвайте ръчно файлове в /var/lib, освен ако не знаете коя услуга им е собственик.

← Всички ръководства

1. Установете коя файлова система е пълна

Изпълнете df -h. Вижте колоната Use% и колоната Mounted on: пълната файлова система може да е / или отделно монтиране като /var, /home или /data, а почистването на грешната не променя нищо.

Изпълнете и df -i. Една файлова система може да има свободно място, но да няма свободни inode-ове, което се случва, когато се натрупат милиони малки файлове (сесии, пощенски опашки, кеш файлове). Ако IUse% е близо до 100%, търсите много малки файлове, а не няколко големи.

2. Намерете най-големите директории

Изпълнете sudo du -xh --max-depth=1 / | sort -h и прочетете последните редове. Опцията -x остава в рамките на една файлова система, така че монтираните дискове и виртуалните файлови системи не изкривяват резултата. Повторете в най-голямата директория, например sudo du -xh --max-depth=1 /var | sort -h.

Ако ncdu е инсталиран (sudo apt install ncdu на Debian и Ubuntu), sudo ncdu -x / ви позволява да разглеждате същите данни интерактивно.

3. Проверете за изтрити файлове, които все още са отворени

Ако du показва много по-малко от df, възможно е някой процес да държи изтрит файл отворен, често голям лог. sudo lsof +L1 показва отворените файлове с брой връзки нула. Мястото се освобождава, когато процесът затвори файла, което обикновено означава рестартиране на услугата, която го притежава. Направете го в спокоен момент, а не по време на пик на заявките.

4. Прегледайте обичайните заподозрени

Логове: погледнете в /var/log и проверете журнала с journalctl --disk-usage. Ако е голям, вижте нашето ръководство за ограничаване на размера на journald.

Пакети: sudo apt clean премахва изтеглените пакетни файлове; sudo apt autoremove изброява пакетите и старите ядра, които вече не са нужни, и показва какво ще премахне, преди да потвърдите. Запазете работещото ядро и една предишна версия.

Docker: docker system df показва образите, контейнерите, томовете и кеша на изграждането. docker system prune премахва спрените контейнери, неизползваните мрежи и висящите образи; не премахва томове, освен ако не добавите --volumes, затова прочетете подканата, преди да отговорите.

Snap: snap list --all показва стари ревизии на snap пакети, които са деактивирани и могат да се премахват една по една с snap remove NAME --revision=NUMBER.

5. След като освободите място

Изпълнете отново df -h и проверете дали услугите, спрели заради пълния диск, работят (systemctl --failed). База данни, достигнала пълен диск, може да се нуждае от рестарт или проверка, преди да ѝ се доверите.

След това задайте ограничение, за да не се повтаря: ротация на логовете, лимит за journald и известие, преди дискът да достигне 90%.

Want a clearer view of storage and maintenance across your Linux servers?RainServer combines a lightweight agent with a cloud dashboard for VPS monitoring and maintenance.Try RainServer free for 7 days →  ·  All guides →

Последна промяна: 2026-10-03

Кратки въпроси

Прочети след това

Изтегляне

Пробвай я на своя компютър.

Безплатно, без регистрация, без абонамент. Windows 10 и 11.