LINUX.ORG.RU

Отказоустойчивость


0

0

1)Верно ли, что если выключить электричество при запуске mv f1 f2, файл не потеряется (имя будет либо старое, либо новое)

2)Что может произойти с файлом если произошел сбой до завершения close/fsync, если дописывать только в конец? А если писать в разные места?

3)В книжке про БД, при описании алгоритмов обработки транзакций предполагалось (на сколько я понял), что операция сброса страницы атомарная (при сбое на диске остается либо старое, либо новое содержание, а не смесь того и друго например). Ну или хотябы для страниц, в которых хранится журнал (иначе бороться с мусором в конце журнала становится невозможно) Как такое может быть организовать в реальности? Можно ли асинхронно, програмно указавать какие страницы сбрасывать?

★★

1) Верно в пределах одной фаловой системы - rename(2) если вас интересует с точки зрения программирования.

2) Состояние последнего синка + незавершённые транзакции в журнале в обоих случаях.

3) Сбросом страниц занимается ядро IMO. Если есть делание делать за него эту работу - смотреть в сторону исходников журналируемых FS.

Если рассуждать логически - пишите метку принятой транзакции. Если после метки данные есть, а следующей метки нету - значит мы транзакцию до конца не приняли - удаляем. Если транзакцию удачно закомитили - меняйте метку. Соотв-но если при восстановлении метки commited нету, а данные - на месте - значит питание выключили на самом интересном месте :-) Для "целых" транзакций - выполняем коммит, после первой-же broken - игнорируем остатки, т.к. там может быть что угодно. Можно конечно ввести метку целостности, но это затормозит процесс очень сильно.

nblx
()
Ответ на: комментарий от nblx

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

ale ★★
()
Ответ на: комментарий от ale

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

А если вместо журналируемой ФС поставить UPS то будет вообще не очень понятно что записанно на винте когда UPS прикажет долго жить...

Вопрос в общем виде - ответ в общем виде. Хотите конкретных подробностей - спрашивайте лучше :-)

nblx
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.