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

Почему файловая система ext3 должна быть откатана на виртуальной машине Debian, работающей в VirtualBox, после потери питания хоста

Виртуальная машина Debian работает как гостевая виртуальная машина VirtualBox. Это файловая система EXT3. Хост-система теряет питание, и после загрузки хост-системы и гостевой виртуальной машины я обнаружил, что файловая система виртуальной машины была откатана к предыдущему состоянию, теряя изменения, внесенные в файловую систему за некоторое время до потери питания. Операции, которые были откатаны, были полностью завершены до потери питания (файлы полностью скопированы, дескрипторы файлов закрыты и т. Д.), Но возможно и даже вероятно, что другие операции записи выполнялись на виртуальной машине в момент сбоя.

Итак, я пытаюсь выяснить, является ли процесс восстановления файловой системы откатом операций файловой системы после обнаружения повреждения после потери питания, или это, возможно, связано с VirtualBox и тем, как он по умолчанию игнорирует запросы на сброс для повышения производительности (обсуждается Вот)

Существуют ли другие факторы, которые могут привести к откату файловой системы после потери питания?

Изменить: протестировал упрощенный сценарий с той же виртуальной машиной на хосте Windows, загрузив ее, создав пару файлов в файловой системе и убив процесс VirtualBox.exe, запускающий виртуальную машину. После загрузки виртуальной машины файлы, созданные до завершения процесса, исчезнут. Я варьировал время между записью файлов и завершением процесса VirtualBox от нескольких секунд до нескольких минут с одинаковыми результатами. В тот период времени на тестовой виртуальной машине не было операций ввода-вывода, за исключением, конечно, обычной активности Linux, какой бы она ни была. Также попробовал тот же тест на виртуальной машине Debian с ext2 вместо ext3 с точно такими же результатами. Похоже, это больше связано с VirtualBox, чем с файловой системой.

Также во время тестов VirtualBox был настроен со следующими дополнительными настройками:

"VBoxInternal/Devices/piix3ide/0/LUN#[x]/Config/FlushInterval" 1
"VBoxInternal/Devices/piix3ide/0/LUN#[x]/Config/IgnoreFlush" 0

Похоже, они никак не влияют на эту конкретную проблему.

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

все остальное, что повреждает журнал или иным образом вызывает его потерю, будет иметь такой же эффект (например, неисправные кабели).

есть более подробные обсуждения, например здесь:

https://unix.stackexchange.com/questions/12699/do-journaling-filesystems-guarantee-against-corruption-after-a-power-failure