Как я ускорил «помойку» на HDD с помощью vmtouch в Ubuntu

Как я ускорил «помойку» на HDD с помощью vmtouch в Ubuntu

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

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

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

Что такое vmtouch

vmtouch это небольшая утилита под лицензией BSD, которая показывает, какие файлы сейчас лежат в кэше, и умеет явно загрузить их туда, выгрузить или закрепить в памяти. Автор Doug Hoyte, исходники на GitHub.

В Ubuntu пакет есть в репозиториях 22.04, 24.04 и 26.04, так что ставится одной командой:

sudo apt install vmtouch

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

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

find /mnt/data/Download -type f -mtime -7 -print0 | xargs -0 vmtouch -t
  • find выбирает файлы за последние 7 дней;
  • vmtouch -t читает их в кэш страниц;
  • свежий слой папки после этого открывается почти как с SSD.

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

Без ключа -t vmtouch только показывает статистику. Строка Resident Pages говорит, какая часть файлов уже в памяти:

vmtouch /mnt/data/Download

Автозапуск после перезагрузки

Руками каждый раз лень, поэтому прогрев вынесен в скрипт ~/warmup_downloads.sh с правами на запуск (chmod +x) и повешен на crontab -e:

@reboot /home/slon/warmup_downloads.sh

Если диск к этому моменту ещё не смонтирован, скрипт пишет в лог и выходит:

if ! mountpoint -q /mnt/data; then
  echo "$(date) /mnt/data не смонтирован" >> /home/slon/warmup_log.txt
  exit 1
fi
find /mnt/data/Download -type f -mtime -7 -print0 | xargs -0 vmtouch -t

Советы напоследок

  • мало RAM: грейте только нужные расширения, например *.jpg и *.pdf;
  • пишите в лог дату, чтобы видеть, когда скрипт реально отработал;
  • ключ -l закрепляет файлы в памяти, а -e наоборот выгружает их из кэша;
  • появится SSD или NVMe: vmtouch всё равно пригодится для горячего слоя файлов.

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

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


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