Як оптимізувати простір для зберігання даних у Linux

15 хв читання - 22 травня 2026 р.

hero section cover
Зміст
  • Як оптимізувати простір для зберігання даних у Linux
  • Як визначити, що використовує ваш диск
  • Очищення кешів пакетів, журналів та дублікатів
  • Оптимізація на рівні файлової системи
  • Автоматизація обслуговування сховищ
  • Кожен гігабайт має значення
Поділитися

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

Як оптимізувати простір для зберігання даних у Linux

Протягом багатьох років стандартною відповіддю на проблему заповненого диска було просто додати більше місця для зберігання даних. Зберігання даних було дешевим. Тепер це вже не так. Ціни на флеш-пам'ять NAND різко зросли з кінця 2025 року через попит на інфраструктуру штучного інтелекту, який вичерпав світові виробничі потужності. Ціни на корпоративні SSD за контрактом зросли на 85–90% лише у першому кварталі 2026 року, роздрібні ціни на споживчі 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 надає вам текстовий інтерфейс з можливістю навігації, де ви можете сортувати за розміром та видаляти файли безпосередньо.

Функціяduncdu
ІнтерфейсСтатичний вивід командного рядкаІнтерактивний TUI з навігацією за допомогою клавіш зі стрілками
Найкраще підходить дляСтворення скриптів та швидких перевірокРучне дослідження віддалених серверів
СортуванняПотрібно підключення до sortВбудована (за розміром, іменем тощо)
Видалення файлівОкрема rm командаВбудована (натисніть d)

Очищення кешів пакетів, журналів та дублікатів

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

Кеш пакетів та загублені залежності

Кожна інсталяція або оновлення залишає після себе кешовані файли пакетів. З часом вони непомітно накопичуються. Очистіть їх відповідно до вашого дистрибутива:

ЗавданняDebian/Ubuntu (APT)Fedora/RHEL (DNF)Arch (Pacman)
Очистити кешsudo apt cleansudo dnf clean allsudo paccache -r
Видалити залишкиsudo apt autoremovesudo dnf autoremovepacman -Rs $(pacman -Qdtq)
Очистити залишки конфігураційsudo apt autoremove --purgeОбробляється за допомогою autoremoveНедоступно

Спочатку перегляньте зміни за допомогою 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

Будьте обережні з цим на томах, що мають знімки або рефлінки. Дефрагментація порушує зв'язки «копіювання при записі», що фактично може збільшити використання дискового простору.

Рефлінки для миттєвих копій

І XFS, і Btrfs підтримують рефлінки, які створюють копії файлів, що спільно використовують фізичні блоки, доки одна з копій не буде змінена. Це корисно для клонування образів дисків віртуальних машин або шарів контейнерів без подвоєння споживання місця на диску:

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Щодня
Очищення Dockerdocker 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

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

3 хв читання - 9 травня 2025 р.

Як оптимізувати простір для зберігання даних у Linux

15 хв читання - 22 травня 2026 р.

Більше статей
background image

Маєте запитання або потребуєте індивідуального рішення?

icon

Гнучкі варіанти

icon

Глобальне охоплення

icon

Миттєве розгортання

icon

Гнучкі варіанти

icon

Глобальне охоплення

icon

Миттєве розгортання