У меня есть жесткий диск SATA с кэшем записи отключенным:Работает ли fsync (fd) файл, созданный внешней программой?
hdparm -W0 /dev/foo
я действую на ext4
раздел с этими опциями монтирования (среди других):
data=ordered
auto_da_alloc
Linux ядро версии 2.6.32-5-686
.
Теперь у меня есть внешняя программа, что я не могу изменить, но я знаю, что создает файл следующим образом:
int fd = open(path);
write(fd, data, data_size);
close(fd);
И.Э. перед закрытием он не выполняет fsync. Таким образом, на данный момент данные могут, вероятно, находиться в ОЗУ, где-то в кешах ядра/fs.
Примечание: метаданные еще не заняты: окончательные метаданные будут записаны и обработаны после Я убедился, что данные достигли дисковых табличек. Сами данные являются предметом озабоченности.
Итак, вопрос в том, как я могу помочь данным достичь реальных дисковых пластин?
Я думал о выполнении этой отдельной программы впоследствии:
int fd = open(path);
fsync(fd);
close(fd);
Поможет ли промывать данные, или я должен использовать другой подход?