То есть я хочу иметь возможность вынимать их в любое время, не беспокоясь о том, будут ли потеряны данные. Я хочу, чтобы каждая запись была написана немедленно.
Установите их с опцией смыва. Это делается по умолчанию в Ubuntu.
Опция 'flush' является опцией среднего уровня. Это повысит ваши шансы по сравнению с монтированием по умолчанию, однако кеширование все еще остается. AFAIK, он предназначен для обеспечения баланса для флешек.
Если вы хотите пойти еще дальше, используйте параметры «синхронизация» и «dirsync». У них есть недостатки, хотя. Вы можете сильно пострадать от производительности, поскольку флэш-накопители должны стереть неиспользуемый блок, а затем записать весь этот блок с данными и изменениями старого блока. Этот размер стираемого блока зависит от аппаратного обеспечения и часто намного больше, чем размер блока ввода-вывода. Вы можете оказаться в ситуации, когда накопитель должен записать 4 МБ, чтобы заменить один бит.
Не только синхронная производительность резервуара, но и огромное увеличение циклов стирания / записи блоков значительно сократит срок службы вашего накопителя.
Ничто не защитит вас от потери данных в файле, который был открыт приложением и находится в несогласованном состоянии, т.е. не закрыт, когда вы извлекаете диск.
Наконец, диск может иметь аппаратный кэш. Установка его для сквозной записи также может зависеть от аппаратного обеспечения. Я не удивлюсь, если значительное количество USB-флешек будет иметь кеш и даже не сообщать об этом в Linux.
Одним из вариантов, не связанных с кэшем, который увеличивает скорость записи, является «сброс». Это приводит к тому, что флэш-накопители, которые поддерживают его, немедленно удаляют или «обрезают» блоки, которые больше не используются файлом или файловой системой после их освобождения. Поскольку вы хотите быстро извлекать данные из кэша, это гарантирует, что у вас будет достаточно стертых блоков, готовых к записи, что ускоряет работу ввода-вывода, когда вам это нужно.
Приветствия, Джон