Как я сделал «помойку» на HDD быстрой с помощью vmtouch (Ubuntu, DevOps, немножко магии)

На старом HDD часто лежит всё подряд: образы, архивы, рабочие файлы, «скачал на всякий случай». Пока папка не гигантская, жить можно. Открываешь её в Dolphin или Midnight Commander — и система уходит в раздумья, а диск тарахтит. NVMe ещё не завезли? Нормально. Ниже как я ускорил работу с «помойкой» на Ubuntu через vmtouch: без чёрной магии и без лишних трат.

Почему тормозит

Жёсткий диск медленнее SSD по определению. Особенно если в каталоге сотни гигабайт и тысячи файлов: файловый менеджер читает метаданные, тянет миниатюры, ходит по inode. Файловый кеш Linux помогает, но греет не всё и не всегда — то, чем пользуешься редко, в RAM не задерживается.

vmtouch: ручной прогрев кеша

vmtouch — утилита, которая позволяет явно «потрогать» файлы и затянуть их (или их части) в page cache. PCIe 4.0 не нужен: хватает apt, пары строк bash и свободной оперативки.

Установка:

sudo apt install vmtouch

На Ubuntu/Debian ставится без сюрпризов. Проверено на своей машине.

Что греть, а что не трогать

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

Рабочая однострочка:

find /mnt/data/Download -type f -mtime -7 -print0 | xargs -0 vmtouch -t

Логика простая:

  • find выбирает файлы за последние 7 дней;
  • vmtouch -t читает их в кеш;
  • в файловом менеджере папка открывается заметно живее, «как с SSD» для свежего слоя.

Как проверить, что кеш прогрелся

Запусти без флага -t:

vmtouch /mnt/data/Download

Утилита покажет, сколько страниц уже resident в памяти. Не «магия ИИ», а честная статистика: Resident Pages — твой индикатор.

Автозапуск после reboot

Вручную каждый раз лень. Я вынес прогрев в скрипт и повесил на crontab:

  1. Скрипт ~/warmup_downloads.sh
  2. Права: chmod +x ~/warmup_downloads.sh
  3. В crontab -e: @reboot /home/slon/warmup_downloads.sh

После загрузки системы кеш прогревается сам, и папка открывается без лишней боли.

Статистика vmtouch: resident pages после прогрева кеша

Если диск ещё не смонтирован

На этот случай в скрипте стоит проверка mountpoint:

if ! mountpoint -q /mnt/data; then
  echo "/mnt/data не смонтирован!" >> /home/slon/warmup_log.txt
  exit 1
fi

Лишних ошибок нет, лог под рукой. На случай, если ночью спросят: «Почему всё медленно?»

Скрипт warmup_downloads.sh: проверка mountpoint и vmtouch

Зачем это было нужно

Чтобы не тратить нервы на ожидание. После vmtouch свежие файлы (образы, фото, документы) открываются за доли секунды. HDD не превращается в SSD, но перестаёт бесить в ежедневной работе: это архив, который ведёт себя предсказуемо.


Пара инженерных шуток:

— Почему DevOps пьёт кофе и пишет скрипты для кеша?
— Потому что его HDD не умеет в turbo boost.

— Как ускорить старый диск?
— Напугать vmtouch и пообещать заменить на SSD.


Лайфхаки напоследок

  • Мало RAM — грей только нужные расширения, например *.jpg и *.pdf
  • В лог пиши дату: будет видно, когда скрипт реально отработал
  • Появится SSD или NVMe — vmtouch всё равно полезен для «горячего» слоя файлов

Вывод

vmtouch — практичный лайфхак для больших папок на HDD в Ubuntu. Не чудо, а инженерия: прогрел нужное в RAM — получил быстрый доступ. Больше оперативки — шире кеш — спокойнее жизнь. Проверь на своей «помойке» и сравни до/после.

Источники и ссылки


Комментарии загружаются…