Как оптимизировать пространство для хранения данных в Linux
15 мин чтения - 22 мая 2026 г.

Практические приемы освобождения и оптимизации дискового пространства на серверах Linux, от очистки кэша пакетов до настройки файловой системы и автоматического обслуживания.
Как оптимизировать дисковое пространство в Linux
В течение многих лет стандартный ответ на проблему переполненного диска был прост: добавить больше места для хранения. Хранение данных было дешевым. Но теперь это уже не так. Цены на флэш-память NAND резко выросли с конца 2025 года из-за спроса на инфраструктуру искусственного интеллекта, который поглотил мировые производственные мощности. Только в первом квартале 2026 года цены на корпоративные SSD по контрактам выросли на 85–90%, розничные цены на потребительские NVMe-накопители примерно удвоились, а новые производственные мощности по выпуску NAND, как ожидается, не будут запущены до 2027 года.
Результат: каждый гигабайт на вашем сервере стоит дороже, чем год назад, и поэтому оптимизация того, что у вас уже есть, — гораздо более выгодная инвестиция, чем покупка дополнительных ресурсов. В этой статье рассказывается, как найти, что занимает место на диске, очистить его и настроить файловую систему для более эффективного использования хранилища.
Выявление того, что использует ваш диск
Начните с df -h , чтобы получить обзор всех смонтированных файловых систем, включая общий размер, использованное пространство и процент использования. Любой раздел, заполненный более чем на 90%, требует внимания. При необходимости проверьте отдельные разделы:
df -h /
df -h /bootНе упускайте из виду иноды. Файловая система может иметь свободное пространство, но не иметь доступных инодов, что приводит к тем же сбоям. Проверьте с помощью df -i.
Если df показывает 100% загрузки, но цифры не сходятся, вероятно, у вас есть «призрачные» файлы. Это файлы, которые были удалены, но все еще удерживаются открытыми запущенным процессом. Место не будет освобождено, пока процесс не освободит дескриптор файла. Найдите их с помощью:
sudo lsof / | grep deletedКак только вы узнаете, какие файловые системы находятся под давлением, просмотрите каталоги с помощью du или ncdu. Для быстрой проверки или написания скриптов du подходит следующий инструмент:
du -h --max-depth=1 /varДобавьте -x при сканировании от корня, чтобы оставаться в одной файловой системе и пропускать виртуальные монтирования, такие как /proc. Для интерактивного исследования на удаленном сервере ncdu предоставляет удобный текстовый интерфейс, в котором можно сортировать файлы по размеру и удалять их напрямую.
| Особенность | du | ncdu |
|---|---|---|
| Интерфейс | Статический вывод в командной строке | Интерактивный TUI с навигацией с помощью клавиш со стрелками |
| Лучше всего подходит для | Создание скриптов и быстрая проверка | Ручное исследование удаленных серверов |
| Сортировка | Требует передачи данных в sort | Встроенная (по размеру, имени и т. д.) |
| Удаление файлов | Отдельная rm команда | Встроенная (нажмите d) |
Очистка кэшей пакетов, журналов и дубликатов
Три области неизменно занимают наибольшую часть освобождаемого места: кэши пакетов, файлы журналов и большие или дублирующиеся файлы.
Кэши пакетов и осиротевшие зависимости
Каждая установка или обновление оставляет после себя кэшированные файлы пакетов. Со временем они незаметно накапливаются. Очистите их в соответствии с вашим дистрибутивом:
| Задача | Debian/Ubuntu (APT) | Fedora/RHEL (DNF) | Arch (Pacman) |
|---|---|---|---|
| Очистить кэш | sudo apt clean | sudo dnf clean all | sudo paccache -r |
| Удалить осиротевшие файлы | sudo apt autoremove | sudo dnf autoremove | pacman -Rs $(pacman -Qdtq) |
| Очистить остатки конфигураций | sudo apt autoremove --purge | Обрабатывается автоудалением | Не применимо |
Сначала просмотрите изменения с помощью sudo apt autoremove --dry-run. Старые ядра могут занимать 1,5 ГБ и более на системах Ubuntu. Всегда сохраняйте текущее ядро и одну резервную копию, прежде чем удалять более старые версии.
Если вы используете Snap или Flatpak, они также накапливают ревизии и среды выполнения:
sudo snap set system refresh.retain=2
flatpak uninstall --unusedФайлы журналов в /var/log
Логи — это наиболее распространённая скрытая причина перегрузки диска. Сначала найдите лог-файлы большого размера:
du -xhd1 /var/log | sort -h
find /var/log -type f -size +100MДля журналов systemd используйте встроенный инструмент vacuum, а не удаляйте файлы вручную:
sudo journalctl --vacuum-size=500MЧтобы установить постоянный лимит, отредактируйте /etc/systemd/journald.conf:
SystemMaxUse=500M
MaxRetentionSec=14dayДля активных файлов журналов, которые все еще открыты службой, не используйте rm. Место не будет освобождено, пока процесс удерживает дескриптор файла. Вместо этого используйте команду truncate:
sudo truncate -s 0 /var/log/syslogКрупные и дублирующиеся файлы
Найдите файлы размером более 500 МБ по всей системе:
sudo find / -type f -size +500M -exec ls -lh {} +Для дубликатов rmlint использует сравнение на основе хешей для обнаружения дубликатов файлов, пустых каталогов и неработающих символьных ссылок. Внимательно просмотрите вывод команды перед удалением чего-либо, особенно на серверах, где идентичные файлы могут выполнять разные функции.
Оптимизация на уровне файловой системы
После очистки файлов вы можете выжать больше полезного пространства из того же оборудования, настроив файловую систему.
Уменьшение зарезервированного пространства ext4
По умолчанию ext4 резервирует 5% файловой системы для корневого каталога. На разделе данных объемом 2 ТБ это 100 ГБ, которые простаивают без дела. На выделенном сервере, где раздел данных не является корневой файловой системой, вы можете безопасно уменьшить этот объем:
sudo tune2fs -m 1 /dev/sdXnЭто устанавливает резервирование на 1%, чего достаточно для большинства случаев использования. Проверьте изменение с помощью tune2fs -l /dev/sdXn.
Прозрачное сжатие Btrfs
Btrfs поддерживает прозрачное сжатие файлов, чего нет в ext4 и XFS. Подключите раздел с параметром compress=zstd для автоматического сжатия данных при записи. ZSTD обеспечивает хороший баланс скорости и коэффициента сжатия. Для смешанных нагрузок compress-force=zstd может обеспечить дополнительную экономию 10–20% за счет сжатия файлов, которые эвристика обычно пропускает.
Чтобы сжать существующие данные на томе Btrfs:
btrfs filesystem defragment -czstd /path/to/dirБудьте осторожны с этим на томах, имеющих моментальные снимки или reflinks. Дефрагментация нарушает отношения «копирования при записи», что на самом деле может увеличить использование дискового пространства.
Рефлинки для мгновенных копий
Как XFS, так и Btrfs поддерживают reflinks, которые создают копии файлов, совместно использующие физические блоки, пока одна из копий не будет изменена. Это полезно для клонирования образов дисков виртуальных машин или уровней контейнеров без удвоения потребления хранилища:
cp --reflink=always source.img clone.imgТонкое выделение LVM
Тонкое выделение LVM позволяет выделить больше логического пространства, чем имеется физически, потребляя реальный диск только по мере записи данных. Это ценно при запуске нескольких виртуальных машин или контейнеров, каждому из которых требуется собственный логический том, но которые не заполнят их все одновременно.
Чтобы предотвратить исчерпание тонких пулов, включите автоматическое расширение в /etc/lvm/lvm.conf , установив thin_pool_autoextend_threshold и thin_pool_autoextend_percent.
Автоматизация обслуживания хранилищ
Ручная очистка работает один раз. Автоматическая очистка поддерживает диски в рабочем состоянии с момента выполнения до следующего входа в систему. Используйте systemd таймеры cron , где это возможно. Они автоматически journalctl автоматически, а Persistent=true догоняет пропущенные запуски после перезагрузки.
| Задача | Инструмент | Частота |
|---|---|---|
| Ротация журналов | logrotate | Ежедневно или еженедельно |
| Очистка журнала | journalctl --vacuum-time | Еженедельно |
| Очистка кэша пакетов | apt clean / dnf clean all | Ежемесячно |
| Очистка временных файлов | systemd-tmpfiles | Ежедневно |
| Очистка Docker | docker system prune | Еженедельно |
| Мониторинг использования дискового пространства | Пользовательский скрипт + таймер systemd | Каждые 15–30 минут |
Docker заслуживает особого внимания. Журналы контейнеров могут расти без каких-либо видимых предупреждений. Ограничьте размер журналов глобально, отредактировав /etc/docker/daemon.json. Установите max-size и max-file в разделе log-opts ключом, чтобы отдельные контейнеры не заполняли ваш диск.
Для проактивного мониторинга настройте двухуровневую систему оповещений: предупреждение при 80% загрузке диска и критическое оповещение при 90%. Регистрируйте использование дискового пространления ежечасно, чтобы отслеживать тенденции роста и прогнозировать, когда раздел достигнет предельной емкости:
0 * * * * df --output=source,size,used,pcent >> /var/log/disk_usage.csvЕще одна мера предосторожности: смонтируйте /var, /tmpи /home на отдельных разделах. Это предотвращает ситуацию, когда неуправляемые журналы или пользовательские данные заполняют корневую файловую систему и приводят к сбою всей системы.
Каждый гигабайт на счету
В связи с ростом цен на хранение данных и отсутствием прогнозов об облегчении ситуации до запуска производства новых NAND-накопителей в 2027 году оптимизация имеющихся ресурсов — это не просто хорошая практика. Это позволяет реально сэкономить деньги. Подход прост:
- Проведите аудит использования дискового пространства с помощью
df,du, иncduпрежде чем вносить какие-либо изменения. - Очистите кэши пакетов, выполните ротацию логов и удалите дубликаты, чтобы немедленно освободить место.
- Настройте файловую систему. Уменьшите количество зарезервированных блоков ext4, включите сжатие Btrfs или используйте тонкое выделение ресурсов LVM, чтобы получить больше от того же оборудования.
- Автоматизируйте обслуживание с помощью таймеров systemd, чтобы ваши диски оставались чистыми между проверками.
- Отслеживайте тенденции использования и настройте оповещения на 80% и 90%, чтобы выявлять проблемы на ранней стадии.
Если вам нужна инфраструктура выделенных серверов с высокопроизводительным хранилищем NVMe, выделенные серверы FDC созданы именно для этого.
Почему важно иметь мощный и не тарифицируемый VPS
Нужна надежная производительность и неограниченный трафик? Мощный VPS без учета тарифов обеспечивает необходимую скорость, масштабируемость и пропускную способность, не беспокоясь об ограничениях на использование.
3 мин чтения - 9 мая 2025 г.
Как оптимизировать пространство для хранения данных в Linux
15 мин чтения - 22 мая 2026 г.

У вас есть вопросы или вам нужно индивидуальное решение?
Гибкие варианты
Глобальный охват
Мгновенное развертывание
Гибкие варианты
Глобальный охват
Мгновенное развертывание