Vladislav
и ни на какой журнал zfs не полагается. Или пруфы плиз
????????? А лог транзакций что по вашему такое?
Alex
это не то же, что журнал ext
Станислав
Это так ужасно: нельзя уменьшить раздел. Как я живу без этого =))
Я только что описал кейс с РМК, где без уменьшения никак. Т.к. компы с разным размером диска и накатывать вручную на всех ОС то ещё приключение. Были самописные скрипты на pxe сервере, которые быстро разворачивали подготовленную ОС со всем софтом и т.д. На гигабитной сетке с процом i3 4gen этот 2х гиговый образ за 45 секунд влетал. Это благодаря тому, что размер ФС была уменьшена до минимума и сделана копия с dd. Иначе пришлось бы копировать 10гиг+
Vladislav
это не то же, что журнал ext
Нет, стоп, Вы говорите "журнал ZFS не полагается" Вы не сказали *ZFS не журналируемая файловая система* (что корректно, ибо она транзакционная, но все транзакции точно также хранятся в *журнале*)
Δαρθ
Ну толку от журнала, если старые данные уже переписаны поверх? как спасёт журнал?
собсно и зфс не спасет. напрмер прога записывает данные за 2 прохода. между 1 и 2 случился флаш дерева а после 2ого- креш и все - данные частично перезаписаны с тз проги
Vladislav
что за гопстоп тут? =) Я сказал, что сказал: zfs не полагается на журнал, т.к она cow
В случае когда она ломается - полагается, чтобы откатить транзакции
Δαρθ
что за гопстоп тут? =) Я сказал, что сказал: zfs не полагается на журнал, т.к она cow
полагается. в журнал идут синкованные записи между флашами дерева. при креше журнал применится к последней версии дерева.
Δαρθ
где журнал в zfs?
zil, slog -- оно
Alex
нет, это не журнал
Станислав
Vladislav
нет, это не журнал
SLOG - synchronous log (journal)
Vladislav
Нууу, давайте посмотрим на его расширофку
Станислав
Vladislav
P.S. С одной стороны, человек пытается привести нас к TXG (которые являются группой транзакций), но забывает, что TXG это тот же лог\журнал операций, (просто в профиль), а CoW позволяет проигрывать журнал не только вперёд, но и назад
Vladislav
Но это моё ИМХО
Alex
SLOG - synchronous log (journal)
Почему тогда не SLOJ ?
Vladislav
Что на самом деле несёт Alex - я хрен его знаю
Vladislav
А, ну Владислав как обычно всё знает за всех наперед. Чтож, ему и отвечать =)
)))) Только если Вы согласны с тем, что журнал в ZFS есть)
Vladislav
Alex
Хрен не уберу
ну и хрен с тобой =))
Vladislav
Почему тогда не SLOJ ?
??? Тогда уже скорее SJOURNAL, LOG в SLOG от Log
Vladislav
Нет, это не так. имхо
То есть в итоге Вы просто считаете что правильно по Вашему без опоры на... что-либо?
Vladislav
Что по Вашему пишется в SLOG?
Alex
Что по Вашему пишется в SLOG?
Вы опять с какого-то перепугу решили, что будете меня экзаменовать .
Vladislav
Δαρθ
журнал в ехт4 тоже intent log такто
Alex
журнал в ехт4 тоже intent log такто
нуу.. да, вероятно. Но принципы разные. cow vs journal.
Alex
ок , да они преследуют одну цель и похожи. Но slog идут append only для синхронных write, а журнал в ext это фиксация шагов изменений структуры фс. т.е по сути меты
Alex
хотя вы на меня накинулись , что я и засомневался . Бывает меня клинит, давайте погуглю
Alex
=)
Alex
* journal mode data=journal mode provides full data and metadata journaling. All new data is written to the journal first, and then to its final location. In the event of a crash, the journal can be replayed, bringing both data and metadata into a consistent state. This mode is the slowest except when data needs to be read from and written to disk at the same time where it outperforms all others modes. Enabling this mode will disable delayed allocation and O_DIRECT support.
Alex
fuck :)
Vladislav
Ну самое банальное, 1) A physical journal logs an advance copy of every block that will later be written to the main file system. Physical journals impose a significant performance penalty because every changed block must be committed twice to storage. 2) A logical journal stores only changes to file metadata in the journal, and trades fault tolerance for substantially better write performance. May allow unjournaled file data and journaled metadata to fall out of sync with each other 3) CoW FS avoid in-place changes to file data by writing out the data in newly allocated blocks, followed by updated metadata that would point to the new data and disown the old, followed by metadata pointing to that, and so on up to the superblock, or the root of the file system hierarchy. This has the same correctness-preserving properties as a journal, without the write-twice overhead.
Vladislav
Просто открыл journal vs transaction file system
Alex
physical journal logs - я не знаю что это за physical. Это как ?
Alex
ну или скажем, не-physical - это как?
Vladislav
physical journal logs - я не знаю что это за physical. Это как ?
Первое, это просто наименование такое, принцип, что используется полная копия и меты и данных, прежде чем оно окажется на устройстве Второе, лог ext4 можно вынести на другое устройство
Alex
Не, я всё же вовсе не уверен, что ext с journal=data будет равносильно cow по fault tolerance . В случае, когда идет перезапись файла, ext4 будет перезаписывать. И если уже произойдет перезапись данных, то никакой журнал не поможет. А старых данных у нее нет, иначе она была бы полноценной cow, а это не так
Vladislav
Не, я всё же вовсе не уверен, что ext с journal=data будет равносильно cow по fault tolerance . В случае, когда идет перезапись файла, ext4 будет перезаписывать. И если уже произойдет перезапись данных, то никакой журнал не поможет. А старых данных у нее нет, иначе она была бы полноценной cow, а это не так
? У Вас есть данные, которые надо записать и мета к ним на диске 1 Пока она не окажется целиком на диске 2 - данные с диска 1 никуда не денутся. Если у нас фейл по питанию - диск 2 продолжит восстанавливать данные с диска 1 CoW использует схожий принцип, просто данные не пишутся дважды, у Вас просто меняется указатель (Деление на диски условное, это может быть один диск, просто с двумя нагляднее)
Станислав
я же привел пример когда и cow может пролюбить старые данные *приложения*
Так это вопрос к работе приложения, а не сохранности данных в ФС
Vladislav
Это немного однонаправленная операция насколько мне известно
Станислав
А каким образом у Вас данные качуют между дисков-журналом (диск 1) и диском-файловая система (диск 2) в обратную сторону?
Так вопрос к Вам, т.к. с вашего описания я понял, что диск с журналом это диск 2, а с данными - первый
Vladislav
Так вопрос к Вам, т.к. с вашего описания я понял, что диск с журналом это диск 2, а с данными - первый
"У Вас есть данные, которые надо записать и мета к ним на диске 1"
Vladislav
Не *записаны*
Станислав
Аааа, теперь понял, что имелось ввиду
Станислав
Я про случай отключения питания
Vladislav
Тогда вопрос. Что будет с данными, если Диск 1 на самом деле не записал их на себя, а придержал в буфере, но при этом ФС уже начала переписывать данные на диске 2?
Ничего? Система просто не увидит ничего и ФС и приложения на диске 2 будет цела, просто на моменте *до пропажи питания*
Vladislav
ext4, если у Вас в журнале данные отсутствуют - они не будут записаны на диск данных
Vladislav
По умолчанию - существует ситуация, что мета старая, а данные уже частично перезаписаны, потому что данные не кладутся в журнал
Vladislav
Еще раз: перезапись. Данные перезаписались, а журнал не обновился => потеря старых данных
В режиме Ordered да, в режиме Journal - у Вас буквально данные сперва целиком в журнале будут
Alex
Если бы ext не перезаписывала данные, она была бы cow.
Vladislav
Если бы ext не перезаписывала данные, она была бы cow.
Там не совсем CoW как таковой, но штраф на запись дважды есть
Станислав
Вы не поняли. 1) Данные просятся в ФС 2) ФС попутно создает мету и отправляет с данными на диск 1 (журнал). Диск берет их себе, кладёт в буфер у себя (ОЗУ), но сообщает, что записал на ПЗУ. 3) ФС считает, что всё ок, начинает писать данные на диск 2, но не успевает закончить, т.к. пропало питание. 4) Питание появилось, ФС запустилась. Смотрит, мета есть, а данные не сходятся ни в журнале, ни на диске 2. 5) Упс
Станислав
Или данные положил, или мету. А может ни то, ни другое. Кто знает их логику, кроме разработчиков? А т.к. это не PLP, как у Вас evo 860, то никто ничего гарантировать не должен
Vladislav
Или данные положил, или мету. А может ни то, ни другое. Кто знает их логику, кроме разработчиков? А т.к. это не PLP, как у Вас evo 860, то никто ничего гарантировать не должен
И да, там был фикс на эту тему для SMR дисков, что бы мета и данные оказывались на самом диске, а не в буфере диска
Vladislav
https://github.com/tytso/ext4-patch-queue/blob/master/series
Станислав
Vladislav
Т.е. Вы согласны, что такие случаи бывали, а значит могут быть и в будущем?
Точно так же как и BTRFS превращается в кашу, как и XFS если диск игнорирует fsync