В чем разница между опциями direct и fsync в dd?

В чем разница между опциями direct и fsync в dd?

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

решение1

Прочитависходный кодпоказывает, что вам также следует спросить об этой nocacheопции. Эта directопция должна дать вам то, что вы хотите, но это также зависит от того, с какой версией ddвы играете. Создание большой копии в системе Ubuntu 11.04 показало мне даже более медленное (=ближе к реальности?) время с опцией dsyncиспользования синхронизированного ввода-вывода для данных, что, вероятно, теряет преимущество агрегации, которое дают нам современные контроллеры дисков. Чтобы узнать «точно», что происходит, вам придется покопаться в исходном коде для конкретного ядра, которое вы используете, но даже в этом случае вы находитесь во власти интерфейсной платы на диске, которая выполняет собственную буферизацию.

решение2

Параметр fsync очистит данные в конце копирования. Параметр dsync очистит данные после каждого блока. Параметр direct даст результаты, аналогичные dsync, только без загрязнения кэша файловой системы данными. Это хорошо для кэширования остальной части системы и экономит некоторые накладные расходы процессора.

Как dsync, так и direct обеспечат более низкую пропускную способность, но это можно компенсировать за счет использования большого размера блока, например 1 МБ или более.

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