Файловая система NTFS (и ext3-4) использует журнал транзакций для управления изменениями. Каждое изменение сохраняется в журнале, а затем сам журнал используется для эффективного изменения.
За исключением катастрофических сбоев диска, файловая система спроектирована так, чтобы она была согласованной в своих своих структурах данных, а не в вашей: в случае сбоя процедура восстановления решит, что откатиться, чтобы сохранить согласованность , В случае отката ваши «еще не записанные, но подлежащие записи» данные будут потеряны.
Файловая система будет согласованной, а ваши данные - нет.
Кроме того, существует несколько других факторов: программные и аппаратные кэши вводят дополнительный уровень и, следовательно, точку отказа. Обычно операции выполняются в кеше, а затем сам кэш сбрасывается на диск. Драйвер файловой системы не будет видеть операции, выполненные «в» кэше, но мы увидим операции очистки.
Это сделано из соображений производительности, поскольку жесткий диск является узким местом. Аппаратные контроллеры имеют батареи для гарантии того, что их собственный кэш может быть очищен даже в случае потери питания.
Размер сектора является еще одним важным фактором, но эту деталь не следует принимать во внимание, поскольку сам жесткий диск может лежать относительно его собственного размера для целей взаимодействия.
Если у вас сопоставлена таблица памяти, и вы вставляете данные в середину, а питание отключается, содержимое файла может частично содержать внесенные вами изменения, если оно превышает размер внутренних буферов.
TxF - это способ смягчить проблему, но имеет несколько последствий, которые ограничивают контексты, в которых вы можете его использовать: например, он не работает на разных дисках или в общих сетях.
Чтобы быть ACID, вам необходимо спроектировать свои структуры данных и / или способ их использования, чтобы не полагаться на детали реализации. Например, Mercurial (инструмент управления версиями) всегда добавляет свои собственные данные в свой собственный журнал изменений.
Существует множество возможных шаблонов, однако, чем больше гарантий вам нужно, тем больше технологий вы получите (и к которым привязаны).