Как заставить Linux перестать вымывать из памяти кэш метаданных файловой системы?

Я заметил, что если делать rsync на а очень большое число файлов (например, на всю машину — т.е. на "/" — при запуске rdiff-backup: миллионы файлов), то оно очень долго работает и сильно увеличивает LA, даже если в реальности никаких изменений rsync не обнаруживает. Если же сразу после завершения процесса запустить его снова, то все происходит в СОТНИ раз быстрее (первый rdiff-backup может работать 5 часов, а второй сразу же после него — 2 минуты). Это же касается и любой другой операции — например, «find /».


Я знаю, что ОС кэширует информацию о структуре файловой системе (где что лежит, сколько занимает и когда изменилось), но со временем этот кэш, похоже, вытесняется из памяти другими данными (т.к. на машине СУБД с большой базой данных). Так что ежедневный rdiff-backup заставляет снова поднимать всю структуру в память — а это вызывает огромное число seek-ов и вешает машину.


Есть ли какой-то способ сказать Linux, чтобы он всегда держал в памяти этот кэш метаданных и никогда его не чистил, даже если он долго не используется? (Хочу подчеркнуть, что речь именно метаданных — кэш же СОДЕРЖИМОГО файлов пусть как был, так и остается, с ним все нормально.)
  • Вопрос задан
  • 4789 просмотров
Пригласить эксперта
Ответы на вопрос 2
@motl
echo 0 > /proc/sys/vm/vfs_cache_pressure

www.kernel.org/doc/Documentation/sysctl/vm.txt
Ответ написан
Комментировать
vsespb
@vsespb
1. можно побольше сделать vm.swappiness возможно в своп уйдёт какая-нибудь не очень нужная программа или не очень нужная память (утёкшая в программе), потом оно там и останется. будет больше места для кэша

2. вообще такая же проблема была с rsnapshot + ext4. вообщем тормозит жутко. мало того такой вид бэкапа занимает кучу место в виде инодов. так что пытаюсь перейти на duplicity (где бэкап файлов не миллионы)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы