Чтобы каждый раз не задрачивать жёсткий диск операциями чтения и записи, ядро Linux обычно сохраняет некоторую часть данных в памяти.
Представим ситуацию: у тебя на кухне гудит сервак, ты запускаешь на нём apt update, и внезапно отключают свет. Через минуту свет включают, ты запускаешь вновь apt update, а оно тебе орёт:
The package cache file is corrupted
Что это за покемон? Почему оно сломалось?
Потому что во время операции apt update часть данных была сохранена в памяти и данные просто не успели записаться на диск. Соответственно, целостность файла с кешем была похерена.
Давай посмотрим:
free -h
Смотрим столбец buff/cache, в нём видим что-то вроде 383 MiB.
Это и есть те данные, которые ещё не успели записаться на диск и находятся в пограничном состоянии. Если сейчас выключат свет, все эти данные в памяти похерятся.
sync, которая позволяет насильно записать все данные из памяти на диск.Но если после sync повторно запустить free -h, изменений ты не увидишь, потому что sync ничего не зачищает, а только записывает.
Зачистить можно так:
sync; echo 1 > /proc/sys/vm/drop_caches
sync; echo 2 > /proc/sys/vm/drop_caches
sync; echo 3 > /proc/sys/vm/drop_caches
Хуячим командами в ядро и зачищаем buff/cache, теперь можно снова запустить free -h и лицезреть меньший размер.
- Очищает кеш страниц (page cache), который используется для кеширования содержимого файлов и каталогов.
- Очищает только кеш объектов inode и dentry — данные о файловой системе, такие как пути и метаданные файлов.
- Очищает как кеш страниц, так и кеш объектов inode и dentry.
Где применять?
- Перед отключением устройства (
umount). - Перед очисткой кешей памяти (
drop_caches). - После крупных файловых операций.
- В Bash-скриптах для безопасного завершения.
А для анализа всех этих кешей, памяти, буферов и т. п. есть несколько утилит: vmtouch, bpfcc-tools, dstat. Можешь потыкать на досуге.
Пользуйтесь!








Комментарии