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

Как настроить Linux на игнорирование `sync`?

Я перестраиваю сервер, которому для выполнения задачи требуется очень много операций ввода-вывода. Есть ли способ указать Linux временно игнорировать все sync(), syncfs() и fdatasync() из каких процессов? Я думаю, что перестройка завершится быстрее, если я никогда не буду ждать, пока хранилище очистит кеши, до тех пор, пока я, наконец, не отключу хранилище.

Я надеюсь что-то вроде

mount -o remount,nosync /path/to/mount/point

но очевидно nosync не существует (только sync и async).

Я знаю о некоторых хаках с LD_LIBRARY_PATH чтобы переопределить эти системные вызовы, но есть ли что-нибудь в системе, что я могу активировать, когда процессы уже запущены?

Я понимаю, что использование такой функции заставит меня перезагрузиться с самого начала, если отключится питание или произойдет сбой в системе. Я с радостью внесу свои изменения в процесс восстановления.

Нарушение семантики sync () и друзей опасно для целостности данных, если это возможно.

Настройте свое приложение на меньшую синхронизацию (). Для базы данных отключите любой журнал и прочтите руководство о том, что это значит для восстановления.

Увеличьте количество операций ввода-вывода в секунду с помощью самого быстрого SSD, который у вас есть. Подумайте о добавлении его в качестве уровня кэширования, если у вас нет возможности поместить все это в быстрое твердотельное состояние.

Вы не описали тип файловой системы, структуру каталогов или шаблоны ввода-вывода. Это может значительно изменить требования к хранению. Например, миллионы маленьких файлов обычно приводят к множеству операций ввода-вывода метаданных.

Изменить: если это копирование большого количества файлов, рассмотрите возможность восстановления на основе образа. Отправьте снимок целиком с LVM и dd, отправьте zfs, отправьте btrfs или реплицируйте базовый диск. Избегает всех операций ввода-вывода метаданных файловой системы. Что займет много времени на нескольких веретенах.


но очевидно, что nosync не существует (только sync и async).

Это не то, что означают параметры синхронизации и асинхронного монтирования. Они имеют в виду синхронная и асинхронная запись. async используется по умолчанию, и это то, что вы должны использовать, чтобы не ждать каждого ввода-вывода.