Диагностика проблем с дисковым пространством

LinuxBeginner
Практиковаться сейчас

Введение

Нехватка дискового пространства — распространенная проблема для системных администраторов и разработчиков. Когда диск заполняется, приложения могут выйти из строя, а система может стать нестабильной. Умение быстро диагностировать и устранять эти проблемы является критически важным навыком.

В этой лабораторной работе вы возьмете на себя роль системного администратора, получившего оповещение о нехватке дискового пространства. Вы изучите систематический подход к определению того, что занимает место, и как безопасно его освободить. Вы будете использовать набор стандартных инструментов командной строки Linux: df, du, find и truncate. К концу этой лабораторной работы вы будете уверены в своей способности справляться с базовыми чрезвычайными ситуациями, связанными с дисковым пространством.

Проверка использования диска

На этом этапе вы начнете свое расследование с получения общего обзора использования дискового пространства на всех смонтированных файловых системах. Лучшим инструментом для этой задачи является команда df (disk free — свободное место на диске).

Команда df сообщает об объеме используемого и доступного дискового пространства в файловых системах. Использование ее с флагом -h (human-readable — читаемый человеком) делает вывод гораздо более понятным, отображая размеры в степенях 1024 (например, Килобайты, Мегабайты, Гигабайты).

Выполните следующую команду в своем терминале, чтобы проверить текущее использование диска:

df -h

Вы увидите вывод, похожий на этот. Обратите особое внимание на столбец Use% (Процент использования), особенно для корневой файловой системы, которая смонтирована на /. Высокий процент здесь указывает на потенциальную проблему.

Filesystem      Size  Used Avail Use% Mounted on
/dev/vda3        40G   38.5G  1.5G  96% /
tmpfs           1.8G     0  1.8G   0% /dev/shm
tmpfs          1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/vdb1        20G  1.2G   19G   6% /home/labex/project
...

Из примера вывода видно, что корневая файловая система (/dev/vda3, смонтированная на /) заполнена на 96%. Это подтверждает наличие проблемы с дисковым пространством, которую необходимо решить.

Поиск больших файлов

На этом этапе, после того как вы определили, что диск заполняется, ваша следующая задача — выяснить, какие каталоги потребляют больше всего места. Для этого идеально подходит команда du (disk usage — использование диска). Она оценивает использование дискового пространства.

Мы будем использовать du со следующими опциями:

  • -s: (summarize — суммировать) для отображения только итогового размера для каждого аргумента.
  • -h: (human-readable — читаемый человеком) для вывода размеров в более удобном для чтения формате (например, 1K, 234M, 2G).

Давайте проверим размер содержимого внутри вашего каталога project. Ваша текущая рабочая директория — ~/project, поэтому вы можете использовать относительный путь.

Выполните следующую команду, чтобы увидеть размер каждого файла и подкаталога в директории ~/project:

du -sh ~/project/*

Команда выдаст результат, показывающий размер каждого элемента. Вы должны увидеть большой файл, который был создан во время настройки лаборатории.

3.0G /home/labex/project/large_data_archive.dat

Этот вывод сообщает вам, что файл с именем large_data_archive.dat внутри вашего каталога проекта занимает 3.0 ГБ места. Хотя это один из источников потребления пространства, вывод df из предыдущего шага указывал на более серьезную проблему, которая может находиться за пределами домашнего каталога.

Поиск больших файлов журналов (лог-файлов)

На этом шаге вы исследуете еще одну распространенную причину проблем с дисковым пространством: большие файлы журналов (логов). Системные и прикладные журналы часто хранятся в каталоге /var/log. Если ими не управлять должным образом, эти файлы могут расти бесконечно.

Команда find — это мощная утилита для поиска файлов и каталогов. Вы можете использовать ее для поиска файлов по различным критериям, таким как имя, тип и размер.

Мы будем использовать find для поиска любых файлов (-type f) в каталоге /var/log, размер которых превышает 10 Мегабайт (-size +10M). Поскольку каталог /var/log принадлежит пользователю root, вам потребуется использовать sudo для предоставления административных прав, чтобы команда могла проверить все файлы.

Выполните следующую команду в своем терминале:

sudo find /var/log -type f -size +10M

Команда просканирует указанный каталог и выведет путь к любому файлу, соответствующему критериям. Ваш вывод может показать более одного файла.

/var/log/syslog
/var/log/journal/deaaf690a67544aaaa83c02167a202c6/user-6000@0005fc8f16f7df1a-7ea5bde2c8c33f92.journal~

Вывод ясно показывает, что /var/log/syslog больше 10 МБ. Хотя могут присутствовать и другие большие файлы, такие как журналы журнала (journal logs), для этого упражнения мы сосредоточимся на syslog. Теперь вы определили конкретный большой файл журнала, который способствует проблеме с дисковым пространством.

Очистка файла журнала (лог-файла)

На этом шаге, после того как вы определили большой файл журнала, вам необходимо освободить занимаемое им место. Простое удаление файла с помощью rm иногда может вызвать проблемы, если служба активно записывает в него данные. Более безопасный метод — очистить содержимое файла, не удаляя сам файл.

Команда truncate предназначена именно для этой цели. Она может уменьшать или увеличивать размер файла до указанного размера. Установив размер равным нулю, вы фактически очищаете файл.

Вы будете использовать truncate с опцией -s 0, которая устанавливает размер файла в 0 байт. Опять же, вам понадобится sudo, поскольку вы изменяете системный файл.

Выполните команду ниже, чтобы очистить содержимое syslog:

sudo truncate -s 0 /var/log/syslog

Успешное выполнение команды truncate не выводит никакого вывода. Чтобы убедиться, что это сработало, вы можете использовать команду ls -lh для проверки нового размера файла.

ls -lh /var/log/syslog

Теперь вывод должен показать размер файла равным 0.

-rw-r----- 1 syslog adm 0 Oct 22 15:31 /var/log/syslog

Вы успешно и безопасно очистили большой файл журнала, освободив дисковое пространство.

Проверка исправления

На этом шаге вы выполните последнее и самое важное действие: проверите, устранила ли ваша работа проблему с дисковым пространством. Вы снова используете команду df -h, как и на первом шаге.

Сравнив новый вывод с исходным, вы сможете подтвердить, что дисковое пространство было освобождено.

Выполните команду df -h еще раз:

df -h

Вы должны увидеть вывод, в котором Use% (Процент использования) для корневой файловой системы (/) ниже, чем было на Шаге 1.

Filesystem      Size  Used Avail Use% Mounted on
/dev/vda3        40G   37G  3.0G  92% /
tmpfs           1.8G     0  1.8G   0% /dev/shm
tmpfs          1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/vdb1        20G  1.2G   19G   6% /home/labex/project
...

Использование снизилось с 96% до 92%, что подтверждает, что усечение файла журнала сработало. Чтобы завершить очистку, вы также можете удалить большой файл данных, который вы нашли в каталоге вашего проекта.

rm ~/project/large_data_archive.dat

Теперь выполните df -h в последний раз, чтобы увидеть окончательный результат всех ваших действий по очистке. Доступное пространство должно увеличиться еще больше. Это подтверждает, что вы успешно диагностировали и решили проблему с дисковым пространством.

Резюме

Поздравляем с завершением лабораторной работы! Вы успешно диагностировали и устранили распространенную проблему с дисковым пространством в системе Linux.

В этой лабораторной работе вы изучили практический пошаговый рабочий процесс:

  1. Вы использовали df -h для получения общего обзора использования диска и подтверждения проблемы.
  2. Вы использовали du -sh для проверки размера конкретных каталогов и выявления больших файлов.
  3. Вы использовали find для поиска файлов по определенным критериям, таким как размер, чтобы точно определить большие файлы журналов.
  4. Вы научились использовать truncate -s 0 как безопасный способ очистки файла без его удаления.
  5. Наконец, вы проверили свое исправление, повторно запустив df -h, чтобы увидеть освободившееся место.

Эти команды являются важными инструментами для любого пользователя Linux или системного администратора. Обладая этими знаниями, вы теперь лучше подготовлены к обеспечению бесперебойной работы ваших систем.