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

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

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

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

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

решение1

Я думаю, что на этот вопрос уже дан ответ.здесь:

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

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

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

Связанный контент