Назад | Перейти на главную страницу

Могу ли я заставить tar не использовать кеш файловой системы при чтении файлов?

У нас есть задание на производственном веб-сервере, которое требует архивирования файлов из всей файловой системы. Он работает примерно 105 минут, и в это время Apache начинает подкачку, потому что чтение нескольких гигабайт файлов увеличило объем памяти для кеша файловой системы.

Данные, которые читает tar, не обязательно должны находиться в кеше файловой системы. Он попадает в tarfile и все. Есть ли что-нибудь, что можно сказать вроде tar cvf whatever/ --no-system-file-buffer-reads? Мое чтение man tar не показывает ничего, что могло бы помочь.

Вы не должны указывать, что это можно рассматривать как ситуацию «Док, больно, когда я так хожу! Так что не ходи так». Каким-то образом нам нужно выгружать файлы в tar-файл, поэтому не делать этого - не вариант.

Я думаю, на это есть ответ Вот:

Здесь нокаш служебная программа, которая может добавляться к командам, например, ionice и nice. Он работает путем предварительной загрузки библиотеки, которая добавляет posix_fadvise с POSIX_FADV_DONTNEED отмечать любые открытые звонки.

Проще говоря, он сообщает ядру, что кэширование для этого конкретного файла не требуется; в этом случае ядро ​​обычно не кэширует файл. Видеть Вот для технических деталей.

Он творит чудеса для любых огромных копий, например. грамм. если вы хотите сделать резервную копию многотерабайтного диска в фоновом режиме с минимальным влиянием на вашу работающую систему, вы можете сделать что-нибудь вместе nice -n19 ionice -c3 nocache cp -a /vol /vol2.