>> Soft-Updates — это упорядоченная очередь транзакций. Какие ещё "барьеры" нужны?
> secret! secret!Да я предчувствовал, что ты скажешь это. Просто ждал (и дождался).
> RAID-контроллеры принимают записи от системы и благополучно кладут в собственный кэш, а
> потом пишут, как душе угодно. И будь у тебя там хоть
> 100500 "упорядоченных очередей" - на диск они будут попадать не в
> том порядке, в котором ты их выдал, а как попало.
Поэтому для Ext* нужно задействовать барьеры записи.
А для UFS2, благодаря SoftUpdates, очередь транзакций находится в памяти, транзакции сбрасываются на диск с ощутимой задержкой, достаточной для того, чтобы контроллер начал запись до того, как заполнится его буфер следующим по списку элементом, и не делал в обратном случае никаких переупорядочиваний. Потеря записи одной транзакции в случае сбоя даёт только уменьшение свободного пространства на носителе (за счёт предвыделения), чинится при перезагрузке откатом журнала транзакций — схема "SU+J" сейчас дефолтная для UFS2. А Ext* нужно будет проверить всю!
> Если всё работает штатно (батарейка исправна, длительных отключений питания нет) - барьеры
> в принципе не нужны - всё запишется. Но вот в отдельных
> случаях (запись метаданных, конкретно) надо бы, чтобы данные все-таки достигли диска
> _в заданном порядке_, на всякий случай, чтобы при отказе железа не
> случилось полного ***ца.
Ага — почитай, почему SoftUpdates работает, а журналирование на Ext3/4 не всегда.
> Вот тут и появляется механизм барьеров, который как раз и позволяет _упорядочить_
> транзакции сквозняком, вплоть до записи на диск.
Вот я и говорю: для Linux Ext* обязательно включаем барьеры на запись.
> Естественно, в академической системе реальные промышленные юзкейсы и реальное промышленное железо никто в расчёт не берёт, поэтому и появляются фразы вида "у нас же есть софтапдейтс, какие еще барьеры".
Ну, конечно. Linux — шедевр инженерной мысли, FreeBSD — поделка академиков-теоретиков. :))