Title here
Summary here
[00:00:00] [фоновая речь, неразборчиво]
[00:00:01] Истине синтаксические, так сказать, категории не всех, так сказать, Ну по сути это есть
[00:00:08] Так.
[00:00:11] Это кто?
[00:00:13] Это не надо.
[00:00:16] На микросхемке точно.
[00:00:17] [фоновая речь, неразборчиво]
[00:00:23] Прикольно.
[00:00:24] [фоновая речь, неразборчиво]
[00:00:48] Максим?
[00:00:50] Максим?
[00:00:51] Ну вот попробуешь?
[00:00:53] Долго зарядка держит?
[00:00:55] Я не знаю.
[00:00:58] Это что было?
[00:00:59] Не знаю.
[00:01:01] Ну.
[00:01:09] Может 4 часа?
[00:01:11] Ой, что-то мало.
[00:01:13] Ему уже год.
[00:01:15] А?
[00:01:15] Ему уже год.
[00:01:17] Ну год, это год тоже.
[00:01:19] так довольно молодой.
[00:01:29] Сколько?
[00:01:30] У schon два года.
[00:01:32] Странно.
[00:01:36] Наверное старого.
[00:01:38] [фоновая речь, неразборчиво]
[00:01:48] Не могу.
[00:01:50] Понимаешь проблему.
[00:01:54] [фоновая речь, неразборчиво]
[00:02:08] [шорох]
[00:02:15] [шорох]
[00:02:19] Да ну не может.
[00:02:20] [фоновая речь, неразборчиво]
[00:02:28] Здравствуйте.
[00:02:30] Ну...
[00:02:31] [фоновая речь, неразборчиво]
[00:02:34] Так.
[00:02:36] [фоновая речь, неразборчиво]
[00:02:55] Ну не знаю.
[00:02:56] Мне не идёт.
[00:03:07] А, вот...
[00:03:09] Да, ещё.
[00:03:11] Да.
[00:03:14] [фоновая речь, неразборчиво]
[00:03:42] Где-то я уже это видел.
[00:03:45] Нет, это самый... ручной, да.
[00:03:48] Я прям не знаю.
[00:03:49] У меня максимум... три просто.
[00:03:51] так зашёл...
[00:03:54] Нет, аналогия есть.
[00:03:57] что Макс взял?
[00:03:58] Максимум.
[00:04:00] стой...
[00:04:02] [фоновая речь, неразборчиво]
[00:04:09] Я сам...
[00:04:11] Надо...
[00:04:12] У меня сами...
[00:04:15] то, что ты видишь, и она была точкой, которая двигалась, она вообще...
[00:04:24] [фоновая речь, неразборчиво]
[00:04:45] Ключ взял?
[00:04:46] Ключ взял?
[00:04:47] Да.
[00:04:49] Да, я...
[00:04:50] [неразборчиво]
[00:04:52] О, Богдан.
[00:04:54] Привет.
[00:04:56] [фоновая речь, неразборчиво]
[00:04:58] В смысле?
[00:05:01] Нормально.
[00:05:04] [фоновая речь, неразборчиво]
[00:05:10] Что, у меня было?
[00:05:12] Ну вот. Я ушёл чуть раньше, оставил ключ в 303.
[00:05:15] Андрей оставил Максиму. Максим звонит...
[00:05:18] Звонит мне, говорит...
[00:05:19] пред ключ не забрал.
[00:05:21] [фоновая речь, неразборчиво]
[00:05:23] Здравствуйте.
[00:05:24] Спасибо, что выручил.
[00:05:25] Даже так! Йоу, спасибо!
[00:05:29] Ключ на базе?
[00:05:30] А, да.
[00:05:31] Я не знаю.
[00:05:32] Ну ладно. Ну, в принципе, там преподаватель пришёл, он, скорее всего...
[00:05:37] У нас было так, что препод ключ не забрал.
[00:05:39] Да?
[00:05:40] У нас так.
[00:05:41] Нет, он он в кабинете.
[00:05:43] Ну всё.
[00:05:44] Нормально.
[00:05:47] [фоновая речь, неразборчиво]
[00:05:54] Максим?
[00:05:54] [фоновая речь, неразборчиво]
[00:05:58] Так.
[00:05:59] [фоновая речь, неразборчиво]
[00:06:20] Просто странно выглядит.
[00:06:22] [фоновая речь, неразборчиво]
[00:06:34] Видишь? Так заманчиво.
[00:06:36] [фоновая речь, неразборчиво]
[00:06:47] Ну он...
[00:06:49] [фоновая речь, неразборчиво]
[00:07:06] Давно не сломался.
[00:07:08] [фоновая речь, неразборчиво]
[00:07:41] Я...
[00:07:42] А че я оставил?
[00:07:43] [фоновая речь, неразборчиво]
[00:08:10] Дмитрий Валентинович.
[00:08:12] Знаешь что?
[00:08:14] Дмитрий Валентинович, а шоколадка?
[00:08:16] Нет шоколадки.
[00:08:18] Понял.
[00:08:20] [фоновая речь, неразборчиво]
[00:08:23] Пожалуйста.
[00:08:24] [фоновая речь, неразборчиво]
[00:08:49] То есть, которого могут... они могут методы, но они специально этого не сделали.
[00:08:53] Как? Ну, взяли фигуру...
[00:08:57] [фоновая речь, неразборчиво]
[00:09:00] ёмкость, ёмкость специально.
[00:09:02] А Максим будет?
[00:09:04] Он вообще...
[00:09:05] [фоновая речь, неразборчиво]
[00:09:08] не идти сказать.
[00:09:09] Так, прошу прощения.
[00:09:11] [фоновая речь, неразборчиво]
[00:09:18] Так, вот сейчас мы, на самом деле, находимся в довольно забавной ситуации.
[00:09:23] А, потому что я у нас, так сказать, предыдущую лекцию, как вы помните, читал не я.
[00:09:30] Поэтому мне интересен вопрос, о чём прочитал и на чём остановился.
[00:09:37] Файловые системы читал.
[00:09:39] Файловые системы? Мм, что именно он вам рассказал?
[00:09:43] Есть журнальные файловые системы.
[00:09:44] Что?
[00:09:45] И журнальные файловые системы.
[00:09:46] О, даже до журнальных дошёл?
[00:09:48] Ну, чуть-чуть.
[00:09:49] А, так. И что чуть-чуть? И что же он рассказал про журнальные файловые системы?
[00:09:55] У них есть журнал.
[00:09:56] Что? Логично. Поэтому я думаю, что это...
[00:10:00] я как раз узнал довольно интересная тема,
[00:10:02] что вроде как над, как там вот пермзавод.
[00:10:05] Кто?
[00:10:05] Или я что-то путаю.
[00:10:06] Так, наверное, что-то путаете.
[00:10:08] Там пример приводился, какая журнальная.
[00:10:10] Нет, ну, на самом деле, сейчас почти всё, с чем вы имеете дело, это журнальная файловая система.
[00:10:17] Но тем не менее, зачем вообще файловой системе нужен журнал?
[00:10:22] Чтобы можно было восстанавливать после смерти
[00:10:26] Э-э, после смерти кого?
[00:10:29] После смерти э-э сервера, на котором файл.
[00:10:32] Ну, допустим, сервер. Э-э, так, и что же там надо восстанавливать?
[00:10:37] Операция началась, но не закончилась, допустим.
[00:10:39] Э-э, но тем не менее, э-э
[00:10:43] ну что же надо это как бы
[00:10:46] после с скажем так, сочетание событий, после которого надо восстанавливать.
[00:10:51] Но что восстанавливать-то надо?
[00:10:59] Может быть, транзакции?
[00:11:00] Э-э, ну, скажем так, э-э транзакции - это, э-э
[00:11:06] Ну, ска- да, э-э когда мы делаем журналы, то один из э Кстати, опять же, вы не дошли, как я понимаю, до ещё одного интересного
[00:11:15] э типа журналов, в котором восстанавливаются не транзакции.
[00:11:21] А тем не менее, да, транзакция - это, скажем так, один из
[00:11:25] э-э промежуточных понятий, которое сильно может помочь нам
[00:11:30] в восстановлении.
[00:11:33] Э-э
[00:11:35] но всё-таки это не ответ на вопрос, что мы восстанавливаем.
[00:11:43] Запрос?
[00:11:44] Э-э, запрос мы не можем восстановить, скорее всего.
[00:11:47] Консистентность?
[00:11:49] О! Да.
[00:11:51] Консистентность.
[00:11:54] Э, то есть почти все файловые системы, с которыми вы имеете дело,
[00:11:58] э это достаточно сложная структура данных,
[00:12:03] э у которых есть некоторые критерии э-э консистентности.
[00:12:09] Вот. При этом э-э, на самом деле, есть две э истории. Первая история, что, в общем-то, с файловой системой в норме у вас работает только одна нить.
[00:12:19] И эта нить принадлежит драйверу файловой системы.
[00:12:24] Вот. И вроде бы как э-э консистентность ему э-э, так сказать, та консистентность, которую мы проходили в многопоточности, вроде бы как ни при чём.
[00:12:33] Да?
[00:12:35] Вот. Тем не менее, э-э когда э-э у вас, например, выключается электричество,
[00:12:41] э или садится батарейка,
[00:12:43] э или, например, э если это USB-флешка, то вы её выдёргиваете из
[00:12:49] компьютера э не отключив.
[00:12:53] Или э когда у вас сетевое присы- э-э как это? Э-э Storage Access Network,
[00:13:00] э и вы до- доступаетесь к э-э
[00:13:03] диску через какую-то коммутационную инфраструктуру.
[00:13:07] Э эта инфраструктура может сломаться.
[00:13:11] Э и работа с диском прекратится внезапно.
[00:13:15] Вот. И у вас э-э структуры данных на диске могут остаться в неконсистентном состоянии.
[00:13:22] Э какой вариант неконсистентности наиболее вероятен и при этом достаточно опасен?
[00:13:29] Надо перевод банковский.
[00:13:30] Нет, перевод банковский не имеет отно- не делается через файловую систему.
[00:13:35] Я запись не завершилась.
[00:13:37] Чего, чего, чего, чего?
[00:13:38] Частичная запись метаданных.
[00:13:39] Нет. Э записи э пользовательских данных файловые системы обычно их консистентность сами не обеспечивают.
[00:13:47] Э те приложения, которым нужна консистентность данных внутри файла, делают собственные журналы
[00:13:55] э и занимаются этим самостоятельно.
[00:13:58] Как это делают большинство баз данных, с которыми вы сталкиваетесь.
[00:14:02] Запись на диск может?
[00:14:03] Нет, запись на диск сама по себе э не приводит к неконсистентности.
[00:14:08] Перемещение.
[00:14:10] Чего куда?
[00:14:12] Ну, файл удалить там.
[00:14:13] Нет, удалить файл - это не самая частая операция.
[00:14:17] Какая самая частая операция э-э над файлом, которая приводит к модификации структур данных файловой системы?
[00:14:24] Открыть?
[00:14:25] Э нет.
[00:14:26] Изменить параметры?
[00:14:27] Нет. Открытие файла, кстати, может не приводить к модификации метаданных
[00:14:32] э-э само по себе.
[00:14:36] Перемещение.
[00:14:36] Перемещение?
[00:14:37] Что?
[00:14:37] Перемещение.
[00:14:38] Перемещение файла э-э довольно редкая операция.
[00:14:45] Переименование?
[00:14:46] Э ещё Ну, перемещение и переименование - это вроде одно и то же.
[00:14:51] А в пределах одной файловой системы. Что?
[00:14:53] Редактирование файла.
[00:14:54] Э редактирование файла - это не операция над его метаданными.
[00:15:00] Это операция над его содержимым.
[00:15:03] Ну, обновление последнего апдейта - это тоже метаданные.
[00:15:04] Нет, ну тем не менее, его как бы
[00:15:09] э даже если вы его потеряете, то э-э это не сильно страшно. И самое главное, это время оно лежит в одном месте.
[00:15:17] Э то есть вы не можете Что?
[00:15:19] Создание файла?
[00:15:20] Э я утверждаю, что на каждое создание файла может приходиться от десятков до миллионов
[00:15:26] тех операций, про которые я говорю.
[00:15:31] Поиск?
[00:15:32] Нет.
[00:15:33] Поиск - это не модификация.
[00:15:36] Ну
[00:15:41] Какая самая частая операция над файлом,
[00:15:44] Чтение?
[00:15:45] э чтение не приводит к модификации метаданных.
[00:15:48] Просто не могу другую частую операцию вспомнить.
[00:15:51] Э-э, ну почему же? Э-э, можете. Ну, чтение вообще не приводит к никакой модификации.
[00:15:58] Изменение прав?
[00:15:59] Э изменение э не всякое, потому что э изменение содержимого не обязательно влечёт изменение метаданных. Мы это уже разбирали.
[00:16:08] Прав доступа?
[00:16:10] Нет. Пра- права доступа тоже меняют редко.
[00:16:13] Тем не менее, я говорю об операциях, многие из которых проводятся э тысячами и миллионами над над каждым диском канала.
[00:16:20] Что?
[00:16:21] Может что-нибудь с диском связано?
[00:16:22] Дак нет, ну все операции файловой системы связаны с диском.
[00:16:27] Исполнение?
[00:16:28] э испо- э опять же, исполнение, с точки зрения самой файловой системы, мало чем отличается от чтения.
[00:16:34] Файл не модифицируется.
[00:16:39] Вроде бы говорили, что мы когда LS используем, что-то же меняется?
[00:16:41] Нет, э когда LS, ещё раз, когда LS вы смотрите, когда вы смотрите, ничего менять не надо.
[00:16:49] Ну мы как будто все уже операции назвали.
[00:16:53] Нет, э почему-то э вы вокруг неё тщательно обходите. И это даже уже начинает выглядеть как обман.
[00:17:00] Открытие?
[00:17:01] Было уже. Было.
[00:17:04] Удаление?
[00:17:04] Было. Было.
[00:17:07] А слово близкое было?
[00:17:08] Э-э, ну нет, близкое я не его не называл. Э-э,
[00:17:13] Я назвал самое близкое.
[00:17:16] Э-э
[00:17:21] Запись.
[00:17:23] Самый близкий.
[00:17:25] В каком случае запись приводит к э глобальным модифи- может приводить к глобальным модификациям метаданных?
[00:17:32] Изменение размера?
[00:17:33] Да.
[00:17:35] Э обычно это запись в конец, но опять же, мы с вами проходили разреженные файлы.
[00:17:41] Записи в середину тоже могут приводить. Выделение места под файл.
[00:17:47] А то есть и в Юниксе, и в Виндовсе, э, то есть во всех операционных системах, к которым вы привыкли,
[00:17:53] э файл можно увеличивать э на ходу.
[00:17:57] Увеличение на ходу - это помечание блока как свободного
[00:18:02] и одновременное выделение его файлу.
[00:18:05] Как хранятся свободные блоки в большинстве современных файловых систем?
[00:18:14] Э по идее, Хлевков вам должен был бы это рассказать.
[00:18:18] Ну, в суперблоке они.
[00:18:18] Нет, в суперблоке э-э в них может храниться их количество, но их список в суперблок очевидно не влезет.
[00:18:28] file system?
[00:18:30] Э-э, как ни странно, мимо. Хотя э-э, скажем так, видал я и такое.
[00:18:38] Таблица?
[00:18:39] Э-э, теплее. Э какая какую таблицу логично для этого использовать? Какого формата?
[00:18:45] Вектор может быть?
[00:18:46] Как?
[00:18:47] Вектор?
[00:18:48] Кто?
[00:18:49] Ну, как как вектор, да, растущая там таблица.
[00:18:51] Нет, не понял. Я понял, возможно, просто не расслышал.
[00:18:54] У нас там айноды, таблицы, ноды.
[00:18:56] Нет, айноды - это э-э, так сказать, айноды - это сами файлы, а я спрашиваю, как свободные блоки хранить.
[00:19:04] То есть свободные блоки по определению не принадлежат никаким файлам.
[00:19:08] Bitmap?
[00:19:09] Да. Э-э, почти все файловые системы, с которыми вы вы имеете дело, хранят свободные блоки в виде битмапа.
[00:19:18] А занятые блоки хранятся в инодах в виде каких-то там развесистых деревьев.
[00:19:23] Как сейчас? Bitmap?
[00:19:24] Э, битовая карта. Э, то есть на каждый э блок есть битик, и если он э единица, то он свободен, если ноль, то он занят. Или или наоборот.
[00:19:34] Вот. Соответственно, э-э, да, у вас как бы информация о занятых и свободных блоках лежит, мало того, что в разных местах,
[00:19:44] а ещё и в разных форматах.
[00:19:46] Вот. И э как раз вот тут неконсистентность, ну, самая страшная, конечно, неконсистентность, если вы посчитаете, умудритесь посчитать блок одновременно
[00:19:55] как свободный и как э принадлежащий файлу. Да?
[00:19:55] Потому что тогда у вас при попытке создать другой файл, у вас получится так называемый крос-линкед файл.
[00:20:01] То есть блок, который принадлежит двум файлам.
[00:20:06] И очевидно, что, по крайней мере, в одном файле данные будут испорчены.
[00:20:10] С высокой вероятностью в обоих.
[00:20:12] Вот. Э-э, и, э-э, второй вариант тоже плохой, когда у вас блок считается и не занятым, и не свободным.
[00:20:20] Просто потерянный.
[00:20:22] Как это возможно?
[00:20:23] Очень просто. То есть вы его пометили как свободный, файл добавить не успели, и тут всё померло.
[00:20:30] ровно в этот момент.
[00:20:32] Это очень возможно.
[00:20:34] Вот. И, э-э, в принципе, э-э, это, а, ну опять же, я опять же не знаю, насколько вам это рассказывал Хаверко, но вообще
[00:20:43] диски, особенно диски, которые экие шпиндели, они умеют развлекаться тем, что они делают так называемое переупорядочение записи, э переупорядочение операций,
[00:20:55] потому что они пытаются оптимизировать передвижение головок.
[00:21:00] Вот, там есть всякие там элеваторные сортировки, всякие другие фокусы,
[00:21:05] в результате которых
[00:21:08] а-а, операции могут переставиться. И если у вас переставятся операции модификации, то даже если вы вроде бы порядком операций э-э гарантируете, что у вас будут только потерянные блоки,
[00:21:19] вы всё равно можете получить кросс-линкед файл.
[00:21:23] Вот. Э, то есть, в общем-то, эта проблема, она была известна с шестидесятых годов.
[00:21:29] Э, в принципе, есть разные направления борьбы с ней. Э, в частности, есть одно из направлений - это
[00:21:37] э, пытаться строить файловую систему так, чтобы она от этого не страдала. На самом деле,
[00:21:44] вот FAT, файловая система, э, она интересна не только тем, что её изобрёл лично Билл Гейтс.
[00:21:51] Она интересна тем, что у неё информация о занятых и свободных блоках лежит в одном месте, в этом так называемом FATе.
[00:21:59] И операция выделения э-э блока файлу, она в некотором роде транзакционная. Точнее, она не транзакционная, но атомарная.
[00:22:08] Поэтому FAT, э-э, одним из его, так сказать, причин популярности был то, что он мало страдает от
[00:22:17] э-э, аварийных выключений.
[00:22:21] Вот.
[00:22:22] Э-э, но у него куча других недостатков.
[00:22:25] Поэтому э-э от него отказались.
[00:22:28] Э тем не менее, в общем-то, опять же, я не знаю, насколько вам господин Хаверко это рассказывал, но в общем-то, до э-э массового распространения журнальных файловых систем
[00:22:37] э-э, была
[00:22:39] э техника,
[00:22:41] э которая э-э, в общем-то, тоже с ней народ жил,
[00:22:47] и которая в Юниксе называется FSCK, File File System Check.
[00:22:52] Вот. И, наверное, я, э, как бы это сказать, проведу э рекап, как это учат делать и перескажу её
[00:23:06] Так, а она у меня немножко не там лежит, она у меня лежит, у меня эти презентации лежат не в папке, а
[00:23:12] блин.
[00:23:14] Не ленись сходить.
[00:23:16] Э вот, э она у меня лежит, к сожалению, в корне э файловой системы, э вот, и
[00:23:24] э на самом деле я умудрился куда-то деть нередактируемый документ.
[00:23:29] Вот. Но тем не менее, э вот восстановление файловой системы, э, то есть, на самом деле, довольно, ну да, вот как раз то, о чём я пытался рассказать.
[00:23:37] И как раз тут у меня приводится пример, который меня больше всего заинтересовал.
[00:23:43] Так, так, я могу её сказать? Э-э, нет, я могу сказать вот это.
[00:23:48] Вот, то есть у нас, э, на самом деле, там есть и другие, э-э, операции, но тем не менее, вот потеря блоков или кросс-линкед блоки,
[00:23:57] э, это две наиболее типовые
[00:24:01] э проблемы.
[00:24:03] Вот. Ну и вот э-э точно так же, в общем-то, сервера баз данных, они могут и и и играть роль мониторного процесса и сериализовать транзакции.
[00:24:13] Э, но при выключении питания, э, вся эта сериализация не будет иметь эффекта.
[00:24:20] Вот. Ну и вот, э-э, три подхода. Первый подход - это так называемый традиционный, э Dirty Flag называется он или э Check Disk.
[00:24:31] Э, то есть идея э в том, что мы ставим где-то в заголовке файловой системы, обычно всё-таки в том же самом суперблоке,
[00:24:39] э какой-то флажок, который э по-английски называется Dirty Flag.
[00:24:46] Э, по-русски флаг загрязнения звучит не так красиво и длиннее, но суть та же самая.
[00:24:52] То есть если мы монтируем файловую систему на чтение-запись,
[00:24:57] э, то мы этот флажок взводим.
[00:25:00] Если мы её чисто размонтируем,
[00:25:03] э то э мы его
[00:25:06] убираем.
[00:25:07] Э бывают некоторые извращения, то есть, например, э как вот э эти самые на гибких дисках моторы раскручивают.
[00:25:16] Э то есть, например, если драйвер файловой системы видит, что у него нету никаких изменений, он этот флажок
[00:25:23] гасит.
[00:25:24] Потом, когда идут изменения, он флажок обратно взводит и, так сказать, это самое.
[00:25:31] Вот. Э это как бы э спорная идея, э вот, и она, в общем-то, мало что добавляет к сути дела.
[00:25:39] Э два других варианта. Один известен как журнальные файловые системы, второй известен как Copy-on-Write или Log-structured файловые системы.
[00:25:47] Э и, кстати, на самом деле, оба подхода имеют аналоги в базах данных.
[00:25:54] Вот. Э поэтому я вам про них расскажу, хотя в ба- то, как это делается в базах данных, вы будете систематически проходить
[00:26:03] э в следующем году.
[00:26:05] учебном, я имею в виду.
[00:26:07] Вот. Ну и вот Dirty Flag и Check Disk, э-э, то есть идея, в принципе, э-э, простая,
[00:26:13] в основе своей. То есть в заголовке системы есть вот этот самый Dirty Flag.
[00:26:18] И когда мы начинаем монтировать файловую систему и видим, что он там стоит,
[00:26:24] э то мы запускаем некую утилиту под названием Check Disk в Виндоусе или FSCK, File System Check в Юниксе,
[00:26:33] которая её чинит.
[00:26:36] Э что она, собственно, собственно, чинит?
[00:26:38] Э, на самом деле, то, что она делает, реально похоже на, э-э, знакомую нам процедуру сборок мусора алгоритма Мартин Свип.
[00:26:47] Э то есть она просто игнорирует весь старый список свободных блоков.
[00:26:53] Э вот, она просто строит, э проходит по всем инодам
[00:26:58] и строит э-э карту занятых блоков.
[00:27:02] Всё, что останется, она объявляет свободными блоками и э-э, так сказать, на этом эта фаза кончается.
[00:27:10] Э на самом деле, кстати, опять же, на на этапе прохождения по инодам возникают ещё приколы, что, например, у вас могут быть
[00:27:17] э симлинки, хардлинки. Ну, симлинки она как бы игнорирует, а хардлинки
[00:27:22] э-э, то есть, например, та та же история. То есть хардлинк создали в каталоге, а счётчики нодов не счётчик в ноде не обновили.
[00:27:31] Можете будут? Можете.
[00:27:33] Э называется это э-э а, ну это ещё не страшно.
[00:27:37] Э страшно наоборот, когда вы имя в каталоге удалили, а инод стёртым не считается.
[00:27:44] Э это называется потерянный файл. И, кстати, во многих юниксовых фреймворках вы можете найти в корне папочку,
[00:27:51] э которая называется Lost+Found. Вот у кого есть тут Unix, э или Linux, вы можете такие папочки там найти.
[00:27:59] И таким образом, кстати, вы можете определить, что это не просто каталог, а файловая система, если в нём есть такая подпапочка.
[00:28:07] Вот. Э на самом деле, там есть ещё некоторые приколы, которые я детально рассматривать не буду, но тем не менее, все они решаются одним путём, то есть вот этим аналогом Марк-энд-Свипа.
[00:28:17] Э то есть мы проходим про по всем объектам, считаем, сколько ссылок на самом деле.
[00:28:22] Э всё, что осталось, э-э, с ним придумываем, что делать.
[00:28:26] Ну, в случае блоков объявляем просто мусором, в случае файлов э линкуем в Lost+Found.
[00:28:34] Ну, то есть концептуально, на самом деле, просто.
[00:28:37] Э, в чём с этим проблема? Ну, первая проблема, что это очевидно долго.
[00:28:41] То есть это примерно пропорционально количеству файлов на диске.
[00:28:46] Да? И их общему объёму.
[00:28:51] Вот.
[00:28:53] Второе, может быть, ещё весёлая ситуация, когда у вас памяти мало, а диск большой.
[00:28:59] Э, вот. И у вас все промежуточные данные, которые вам надо сохранить, они не влезают в память.
[00:29:06] А свопинг вы подключить не можете, потому что у вас своп-файл лежит на этом же диске.
[00:29:12] Вот тут начинается настоящая веселуха, э-э, которая, ну, на самом деле, опять же, народ эти проблемы решает.
[00:29:20] Э тем не менее, все решения, которые тут можно придумать, они страшно сажают производительность.
[00:29:25] Поэтому, если у вас машина с большими дисками и э-э
[00:29:32] э-э маломощная, какими часто бывают файловые сервера,
[00:29:37] то вас ждёт
[00:29:39] очень длинный чек.
[00:29:42] То есть и причём, на самом деле, э как бы, понятно, что что считается очень большим диском и что считается очень маленькой памятью,
[00:29:51] э-э, так сказать, от исторического периода сильно.
[00:29:51] немного.
[00:29:52] Э, тем не менее, в общем-то, всегда в эксплуатации были такие машины, на которых вы могли увидеть вот начек э после аварийного выключения
[00:30:00] очень даже запросто.
[00:30:01] Ну вот. И, в общем-то, всех это доставало.
[00:30:05] Вот.
[00:30:15] Э, ну и вот, да, как раз те самые проблемы. Ну и вот, э, как восстанавливать корневую файловую систему. На самом деле, это отдельная весёлая тема, э, которую, э, проще показать на живую.
[00:30:26] Э, на самом деле, довольно забавный такой танец на диске исполняется, э, вот, который, в принципе, в Юниксе даже можно глазами наблюдать.
[00:30:34] скриптик, который его делает.
[00:30:38] Э, вот.
[00:30:39] Но, собственно, проблема в чём, что э все утилиты FSCK, они лежат в корневой файловой системе.
[00:30:46] Спрашивается загадка, как до них добраться, э
[00:30:49] если мы не можем смонтировать саму корневую файловую систему?
[00:30:54] Ну, ответ, на самом деле, состоит в том, что мы просто монтируем как редумле.
[00:30:58] Её можно в таком состоянии чекать, и в таком состоянии её, в общем-то, никто не испортит.
[00:31:03] Поэтому мы монтируем редумле,
[00:31:05] запускаем с неё все эти чеки.
[00:31:09] Э, вот, и, так сказать, э-э, вот, это как бы
[00:31:13] вот.
[00:31:14] Э, тем не менее, в общем-то, это всех достало.
[00:31:16] Э, и, э, в общем-то, как я думаю, как Нерка вам рассказывал,
[00:31:20] Э-э, в общем-то, э-э, первые, кто это сделал по-нормальному, это были, э-э, разработчики баз данных.
[00:31:28] Вот, потому что у них проблема та же самая,
[00:31:32] а только хуже.
[00:31:34] Вот.
[00:31:34] Ну и вот, э-э, решение состоит в том, что мы вводим понятие транзакции.
[00:31:38] Э, то есть транзакция, э-э, с одной стороны, я вас пытался научить определению,
[00:31:43] что это группа операций, которая используется, э-э, как это, выполняется либо все вместе, либо не исполняются совсем.
[00:31:51] Э, тем не менее, э, транзакция, в данном случае, это имеется в виду группа операций,
[00:31:56] э, до и после начала которой у нас данные целостны.
[00:32:02] Внутри неё они могут быть не целостны, а до начала и после конца они целостны.
[00:32:09] Вот.
[00:32:09] И мы такие группы операций вводим.
[00:32:12] Э, на самом деле, вот тут главная трагедия, которую, в принципе, пытался, э, объяснить, и которую, как, э, моё объяснение, как я понимаю, многие не понимают,
[00:32:23] э, что понятие целостности - это категория, э, в общем случае не формализуемая.
[00:32:31] То есть единственное, кто может выделить критерии целостности и, соответственно, выделить транзакцию в вашем в вашей логике - это программист.
[00:32:41] С одной стороны, он может это сделать неправильно.
[00:32:44] Э, вот, но тем не менее, если он сделает это неправильно, то у нас будут проблемы.
[00:32:48] И у вас поэтому, так сказать, движок транзакции сам по себе
[00:32:53] целостности обеспечить не может.
[00:32:55] Вот, но, э-э, он её, так сказать, э, если он это делает правильно, то это это первый шаг к решению проблемы.
[00:33:03] Э, кстати, обратите внимание, что логика определения кода, э, тогда, который выполняет транзакцию,
[00:33:11] э, оно очень похоже на понятие, э-э,
[00:33:14] Критической секции. Критической секции.
[00:33:17] Вот.
[00:33:17] Но, э, как бы для критической секции, э-э, у нас не гарантируется, э-э, атомарность, э, за
[00:33:24] на уровне, так сказать, выключений системы в целом.
[00:33:28] Да?
[00:33:29] Ну да.
[00:33:30] А для транзакции нам её надо гарантировать.
[00:33:33] И, собственно, если у нас транзакции не э-э, так сказать, сериализованы, то есть исполняются последовательно,
[00:33:40] А-а, то, в общем-то, э-э,
[00:33:43] нам только это и надо обеспечить.
[00:33:44] Но, собственно, а как?
[00:33:46] Блокировки-то тут нам не помогут.
[00:33:49] Потому что выключение питания выключит вам, э-э, всё вместе с блокировками, да?
[00:33:55] По журналу пройтись.
[00:33:56] Вот.
[00:33:56] Ну да, то есть тут и вот тут возникает понятие журнала.
[00:34:01] Соответственно, журнал, э, мы, э, делаем, э, некое дополнительное, выделяем некую дополнительную область.
[00:34:08] Э, в современных файловых системах это обычно делают на том же диске.
[00:34:16] Э, ну и по понятной причине, эта область, она должна быть статическая.
[00:34:19] То есть обычно делают кольцевой журнал
[00:34:22] фиксированного размера.
[00:34:24] Э, хотя тоже есть всякие интересные варианты.
[00:34:27] Вот.
[00:34:29] Э, бывают, кстати, решения, когда этот, э, журнал
[00:34:32] кладут в другой диск.
[00:34:35] В том числе, например, на более быстрый носитель.
[00:34:39] Вот.
[00:34:39] Э, но это в наше время экзотика, потому что как бы уход за этим, м, это приколов, другие есть способы.
[00:34:48] Вот.
[00:34:49] Э, вот, дальше мы, э-э, транзакции делаем в два этапа.
[00:34:54] То есть сначала мы пишем описание транзакции в журнал,
[00:34:58] сами данные не трогаем.
[00:35:02] Потом мы убеждаемся, что, э-э, данные легли на диск.
[00:35:07] Э, то есть вот, э-э,
[00:35:10] И, э-э, потом только, когда убеждаемся, что они все находятся на диске,
[00:35:15] Э, мы начинаем её делать, так называемый накат,
[00:35:21] э, то есть, э, вносим изменения в рабочие данные.
[00:35:26] Вот.
[00:35:26] На самом деле, тут есть, э, как бы тоже два варианта, э-э, как бы журналы бывают двух типов, бывают, э, называется rollback и redo.
[00:35:37] Э, то есть вот то, что я описываю, это redo журнал.
[00:35:41] Ну, то есть понятно, rollback - это значит, что мы можем восстановить данные, как были.
[00:35:46] Да?
[00:35:48] А redo - это значит, что мы можем доделать, но в процессе мы можем потерять, э, исходное состояние.
[00:35:54] Да?
[00:35:56] Вот.
[00:35:57] Ну и вот, э, журналы, которые redo, они по некоторым причинам логически проще, если вы задумаетесь.
[00:36:04] Вот.
[00:36:04] И, э-э, они, э-э, они, они, они, э-э, это самое,
[00:36:12] Они, э-э,
[00:36:14] кстати, для файловых систем они выглядят вроде логичнее.
[00:36:19] Э, вот.
[00:36:19] Тем не менее, и опять же, redo операции, они интересны тем, что, э, когда вы делаете rollback,
[00:36:26] э, то вам надо сохранять именно состояние данных.
[00:36:31] Да.
[00:36:32] Вот.
[00:36:32] Когда вы делаете redo, вы можете сохранять список операций.
[00:36:37] Если вы делаете короткую операцию над большим объёмом данных, это может быть выгоднее.
[00:36:45] Э, то есть на самом деле, ну, как бы вот в файловых системах это немножко упрощается тем, что у вас э там очень ограниченный тип наборов транзакций.
[00:36:55] Э, то есть считается, что в транзакцию входят только те, только операции над метаданными файловой системы.
[00:37:01] Все метаданные, все операции над метаданными делает драйвер файловой системы.
[00:37:06] Его разработчики знают, какие у них могут быть типы транзакций.
[00:37:09] И, как я уже говорил, их, э, в общем-то,
[00:37:13] ну, их там порядка десятка, но их, в общем-то, не так много.
[00:37:18] Вот.
[00:37:19] А в базах данных вы можете в транзакцию, в общем-то, написать что угодно.
[00:37:23] То есть буквально что угодно, на том, на чём будет висеть.
[00:37:26] Да?
[00:37:28] Вот.
[00:37:28] Поэтому там, э-э, журнал, э, по необходимости должен быть устроен сложнее.
[00:37:35] Вот.
[00:37:35] Э, на самом деле, более интересная задачка, что так, как всё это описал, оно, э, работает, когда у вас, э-э, так сказать, транзакции сериализуются.
[00:37:45] Э, самое, конечно, интересная ситуация - это когда у вас транзакции, э, так сказать, э, сериализуют, ну, на самом деле исполняются параллельно.
[00:37:54] То есть у вас одновременно может быть несколько ненакаченных транзакций, которые перекрываются.
[00:37:59] Э, тут, на самом деле, начинается большая веселуха, э, которую, наверное, мы, э, тем не менее, вы её немножко пообсуждаете
[00:38:08] опять же, на третьем курсе с Сергеем Чурицким.
[00:38:13] Вот.
[00:38:14] Ну если у вас взрывает многих мозга то, что я вам рассказываю сейчас, то подумайте, что вас ждёт на третьем курсе.
[00:38:21] Правильно, можно их можно.
[00:38:22] Э, ну, я думаю, что как раз э нет, я думаю, что вот как раз именно поэтому, как сказать,
[00:38:30] Поэтому важно слушать то, что я вам рассказываю, потому что э потом вам будет легче.
[00:38:34] То есть это сработает, во-первых, как разминка и как некая подготовка, потому что вы услышите на самом деле.
[00:38:41] Вам же редко книжку после этого почитать.
[00:38:43] Э, книжку можно почитать, да.
[00:38:45] Книжек, на самом деле, про это много.
[00:38:46] То есть, в общем-то, и про журнальные файловые системы, и про
[00:38:51] э-э, обработку транзакций в базах данных, в общем-то, литература довольно обширная.
[00:38:56] Э, единственное, что проблема в том, что она, э, в общем-то, очень много там литературы, оно, ну, довольно продвинутое.
[00:39:03] Вот.
[00:39:04] Э-э, но тем не менее, в общем, кстати, ну, вообще, я не знаю, на самом деле,
[00:39:09] я вот тоже, в общем-то, выглядит как довольно э такой грубый наброс.
[00:39:14] Тем не менее, вот э я не так давно одному своему коллеге помогал
[00:39:20] э-э собеседовать э кандидатов на роль лотус-администратора.
[00:39:26] Вот.
[00:39:26] И заметил странную закономерность, что вот э на самом деле, потом целый опросник разработали, там, гоняли по нему.
[00:39:33] Вот.
[00:39:34] А э заметил я э простую вещь, что если человек э знает, что такое журнал транзакций в Лотусе, зачем он нужен?
[00:39:43] Обычно человек на все остальные вопросы тоже отвечает нормально, и, в общем, так сказать, как-то попадает в категорию годных.
[00:39:50] Если человек этого не знает, то обычно у него, э, так сказать, полная разруха в мозгах по всем остальным темам.
[00:39:58] Э, то есть на
[00:39:59] сам деле, вот обработка транзакций, э она как бы вы с одной стороны тоже мимо неё э не пройдёте в своей карьере.
[00:40:08] В том числе, даже если вы будете заниматься машинным обучением, тоже у вас эта проблема будет вылезать.
[00:40:13] Хотя немножко по-другому.
[00:40:15] Вот. И, в общем, э если она у вас как-то в голове не осядет, то у вас э как раз
[00:40:23] ждут очень много проблем на очень многих э-э хоть сколько-то продвинутых материалах.
[00:40:30] Причём, опять же, в зависимости от того, как в какую форму будет иметь у вас этот пробел, он э-э
[00:40:37] проблемы могут быть очень разнообразные.
[00:40:41] Вот. То есть на самом деле, э хотя как бы и она э может даже казаться немножко, ну и у нас как бы нету упражнений на это.
[00:40:51] Вот. Э-э, и ну и вообще, на самом деле, э как бы сам сами мониторы транзакций вообще э в наше время мало кто пользуется, кто пишет.
[00:41:01] Да, то есть обычно, если вам нужно традиционное хранилище, вы берёте какую-нибудь там э библиотеку, там, даже, может быть, банальный SQLite,
[00:41:10] который, в общем-то, как ни странно, это тоже умеет при всей его хрупкости.
[00:41:14] Или какой-нибудь там MDB, или там какой-нибудь Volt, или там какой-нибудь ETCD.
[00:41:20] Вот. И э просто вы, так сказать, в неё всё пихаете и верите к ней.
[00:41:24] Что там происходит под капотом, э-э, можно сказать, в основном
[00:41:29] Тем не менее, когда что-то идёт не так
[00:41:31] с этими хранилищами, то вам придётся э-э с этим разбираться.
[00:41:36] Вот. Тем не менее, вот эти журналы, как видим, в общем-то, саму идею журнала можно сформулировать довольно легко, довольно коротко.
[00:41:44] Я вот не особо понимаю, зачем запись commit нужна.
[00:41:49] Ну затем, что э-э как бы транзакция - это группа операций, которая определяет обладает определёнными свойствами, да?
[00:41:56] Угу.
[00:41:57] Кусок транзакции этими свойствами не обладает.
[00:42:00] Да.
[00:42:01] Поэтому мы должны уметь отличать кусок транзакции, запись куска транзакции незаконченную от записи полной транзакции.
[00:42:10] Ну то есть, соответственно, с коммитом, без коммита.
[00:42:12] Ну да, то есть если запись транзакции без записи коммит в конце,
[00:42:17] э то значит, что это битая запись, и ну это значит, что эта транзакция не будет исполнена вовсе.
[00:42:24] Мы понимаем, какие мы изменения в файловую систему внесли посредством синка?
[00:42:28] Если синка нет.
[00:42:29] Ну да, то есть записи синка, они как раз говорят о том, докуда мы довели синхронизацию, то есть что.
[00:42:35] В рамках транзакции.
[00:42:36] При этом, кстати, действительно, многие параллельные мониторы транзакций, у них эти синки, они ставят не по транзакциям.
[00:42:43] Угу.
[00:42:44] Понимаете?
[00:42:46] То есть они могут засинкать часть описания транзакции, э-э, и это не страшно.
[00:42:51] Если у нас само описание транзакции корректно.
[00:42:54] Вот. Э, то есть, на самом деле, э опять же, как должны быть устроены записи описания транзакции - это тоже весёлая, интересная тема.
[00:43:02] Вот опять же Негинский вас будет мучить страшным словом идемпотентная операция.
[00:43:10] Э вы а вы это слово уже проходили?
[00:43:13] одинаковых запусках она должна давать.
[00:43:17] Э-э, не совсем.
[00:43:19] То есть, с одной стороны, э идемпотентная операция, или сама категория этой самой и идемпотентности, она имеет смысл только для операций, имеющих побочный эффект.
[00:43:32] Вот. Но, да, и побочный э как бы эта операция имеет побочный эффект, но он таков, что если вы делаете эту операцию много раз, он будет точно таким же.
[00:43:42] Как если бы вы сделали один раз.
[00:43:45] Понимаете?
[00:43:47] Вот. Э, то есть, на самом деле, э-э как бы введение этого понятия, так же как с целостностью критическими секциями, нам не очень-то помогает, потому что
[00:43:57] э, ну, например, очевидно, что, например, присваивание э переменной целочисленные значения 10 - это идемпотентная операция, да?
[00:44:07] С другой стороны, увеличение э целочисленной переменной на единицу - это
[00:44:13] Неидемпотентная.
[00:44:14] Неидемпотентная операция, да?
[00:44:16] Э с третьей стороны, если вы выполняете поток идемпотентных операций, но переставляете их,
[00:44:24] у вас э последствия могут поменяться, да?
[00:44:27] М-м, да.
[00:44:30] Вот. Э то есть на самом деле, э-э, в общем-то, если вы можете описать вашу транзакцию как набор идемпотентных операций, то вы можете делать вот такую штуку, потому что если вы каждую операцию делаете два раза,
[00:44:42] один раз при накате, второй раз при
[00:44:46] э-э, так сказать, восстановлении, то ничего страшного не произойдёт.
[00:44:50] Но опять же, э как переделать заданную последовательность изменений в идемпотентные операции - это творческая задача.
[00:44:59] Э в общем случае, ну насчёт того, что она не алгоритмизуема, не доказана.
[00:45:06] Вот, но тем не менее, если вы это сделаете, вы, кстати, можете много других интересных вещей делать, например, можно конфликты
[00:45:14] и делать всякие другие чудеса.
[00:45:15] Тем не менее, э в эту тему мы, наверное, сейчас не полезем.
[00:45:20] Ну и вот, э когда мы восстанавливаем журнал,
[00:45:24] ну самая приятная ситуация - это когда последняя запись в журнале - это синк. Это означает,
[00:45:28] что все э-э транзакции, какие были, они все накачены.
[00:45:33] То есть мы попали в ситуацию, когда файловая система уже целостна, и мы можем, так сказать, э-э сказать: "Ура!" и э-э
[00:45:42] загружаться дальше.
[00:45:45] Вот. Ну и вот э второй вариант - это когда последняя запись не закончена, то есть нету ни синк, да, ни синк, ни коммит записи.
[00:45:53] Это вот как раз та ситуация, когда мы писали описание транзакций и не дописали.
[00:45:59] Такую транзакцию мы вынуждены выкинуть.
[00:46:02] Ну как я опять же, определение, которое вам давали, что это последовательность операций, которые либо выполняются вовсе, либо не ой, выполняются вся, либо не выполняются вовсе.
[00:46:12] То есть вот выкинутая транзакция - это транзакция, которая не выполнилась
[00:46:16] вовсе.
[00:46:19] Вот. И э-э последний вариант - это законченная, но не засиньканная транзакция. Ну, значит, мы её просто должны засинькать.
[00:46:27] Ну и если их там несколько, то мы должны засинькать все.
[00:46:32] Вот. То есть, э видите, с одной стороны, концептуально это сложнее, чем чек, э с другой стороны, э-э как бы в ней есть большое достоинство,
[00:46:42] э что это происходит за не очень большое время.
[00:46:46] Потому что как бы агрессивно вы не распараллеливали транзакции, у вас их одновременно много быть не может.
[00:46:53] Да?
[00:46:54] Ну и даже если вы их распараллеливаете, всё равно у вас, наверное, есть какой-то лимит на то, сколько вы их можете распараллелить.
[00:47:01] Э вот. Поэтому, э-э, так сказать, объём журнала, э, так сказать, полезный объём журнала ограничен.
[00:47:09] И э-э, так сказать, э-э он восстанавливается за фиксированное время.
[00:47:14] Вот. И э-э, в общем-то, с э, так сказать, ну, в общем-то, я думаю, действительно, никто из вас почти никогда не видел этот чек во всей его мощи и красоте.
[00:47:24] Ну, когда При том, что у вас и батарейки, я думаю, постоянно садятся, и всякое такое, да?
[00:47:31] Но при этом вы включаете компьютер, и он работает. Э-э, ну, там чуть-чуть там, может быть, что-нибудь там покрутится на э-э, ну, буквально это занимает какие-то секунды. Если вы даже не успеваете отрефлексировать, что у вас происходит.
[00:47:44] А при запуске Windows есть эта штука?
[00:47:47] Нет, при запуске Windows, э вы можете нарваться на длинную фазу установки апдейта.
[00:47:52] Нет, а если чекдиск. Чекдиск может 2-3 часа длиться.
[00:47:57] А?
[00:48:00] Вот. Э ну, на самом деле, опять же, это, э если он длится 2-3 часа, то это либо у вас э большие диски при маломощном компьютере,
[00:48:09] э либо у вас э-э диск неисправен физически.
[00:48:14] Скорее первое.
[00:48:15] Э-э ну, э всякие в жизни бывают. Э тем не менее, э, в общем-то, да, когда у вас, ну и, кстати, сам факт, что, ну, то есть, вообще, действительно, можно увидеть и в случае Windowsa,
[00:48:28] э можно увидеть ситуации, когда э-э чекдиск подозревает, что в журнале написано что-то не то.
[00:48:36] Угу.
[00:48:37] И он э делает фолбэк на полный чек.
[00:48:41] И э на самом деле это обычно сигнализирует либо о баге в драйвере файловой системы,
[00:48:47] э либо о, опять-таки, об аппаратной неисправности, что у вас э-э какие-то сектора пишутся э-э или читаются из них совсем не то, что операционная система ожидает.
[00:49:00] Вот. Э и это э тоже плохой знак, и это э на самом деле может означать, что вы в какой-то момент просто потеряете диск.
[00:49:10] Вот. Э-э
[00:49:12] Вот. И э вот таким образом.
[00:49:15] Вот. Ну и вот, э как я уже говорил, э главное преимущество, э на самом деле преимуществ тут два, и с одной стороны, первое, что у вас фиксированное время восстановления.
[00:49:26] Э второе, что оно немножко более неожиданное, но на самом деле э-э тоже э значимое.
[00:49:33] С одной стороны, вроде бы вы все изменения пишете на диск два раза, да?
[00:49:39] Поэтому, казалось бы, они должны сажать производительность при нормальной работе.
[00:49:43] Э на практике это неправда, потому что вы благодаря журналу вы можете гораздо агрессивнее кэшировать данные на записи.
[00:49:52] И поэтому журнальные файлухи, они часто, в общем-то, дают э очень значительное наблюдаемое
[00:49:53] повышение прибыли.
[00:49:57] Вот. Из проблем.
[00:49:59] Ну вот одно и сказал, что данные пишутся на диск два раза.
[00:50:03] кстати, ещё одна ситуация, когда это значимо, это на ССДках, у которых ограниченное количество циклов чтения записи.
[00:50:12] Вот. второе - это усложняется логика драйвера, и чем больше кода, тем больше вероятность ошибок.
[00:50:21] Но при этом есть сценарий э-э
[00:50:26] как сказать, ошибки.
[00:50:27] То есть, например, э-э есть такой неприятный сценарий, э что у вас как бы сами данные в файловой системе правильные,
[00:50:38] но описание транзакции в журнале пишется с ошибкой.
[00:50:41] Просто в силу бага.
[00:50:44] Поймать этот баг сложно, потому что надо, чтобы эти этот журнал с ошибкой попал на сбой э-э
[00:50:52] аппаратуры.
[00:50:53] Чтобы именно в этот момент выключилось. Да?
[00:50:57] Ну и вот на самом деле, когда начиналось внедрение журнальных файловых систем, э то, в общем-то, были были чудеса.
[00:51:05] Ну вот я верю, как это, я я был 1000 лет назад, вот в Виндовсе эта фаза была пройдена примерно к NT4 Service Pack 6.
[00:51:15] Но до того тоже была типовая ситуация. Чувак пишет в форум: "Вот у меня винда упала в синий экран,
[00:51:21] загружается и загружается только в синий экран".
[00:51:25] Я загружаюсь с CD-ROMа, он говорит: "Чувак, у тебя вообще-то стоит раздел типа NTFS, но NTFS я там не нахожу".
[00:51:35] То есть э при накате журнала
[00:51:38] она накатила что-то такое, после после чего результат вообще не выглядит как файловая система.
[00:51:45] Ни для каких утилит.
[00:51:47] Причём это был довольно масс... э-э довольно массовый, либо один баг, либо несколько.
[00:51:54] Но ты верю, я довольно хорошо помню момент, когда это вылеменение прекратилось.
[00:52:00] И прекратилось это уже где-то примерно так, э-э, ну то есть э-э NT NTFS вообще его, так сказать, начало жизни надо отсчитывать от девяносто первого года.
[00:52:10] Прекратилось это году в девяносто где-то восьмом-девяносто девятом.
[00:52:18] Э, то есть, ну и, кстати, как раз э-э в этот период, в общем-то, внедрение шло довольно э-э удручающим темпом.
[00:52:28] Вот, потом они это починили.
[00:52:30] Э, в принципе, на э-э вот с X3FS-ом.
[00:52:35] Кстати, и вот как раз вот этот опыт, он спровоцировал такую забавную, была волна, э-э, так сказать, так называемых гибридных журнальных файловых систем.
[00:52:45] То есть, вот, например, тоже, опять же, у кого старые Линуксы или видели список поддерживаемых файлух,
[00:52:52] есть там такое интересное явление под названием X3.
[00:52:56] То есть, ну, была старая вот линуксовая файловая система X2, не журнальная.
[00:53:02] Она была, народ ей пользовался, потом они к ней, так сказать, пришлёпнули сверху журнал.
[00:53:08] То есть вся структура осталась такая же, но просто появился журнал.
[00:53:12] Они это назвали X3. И, в общем-то, где-то тоже с середины девяностых до примерно
[00:53:20] середины десятых, это была такая, в общем-то, рабочая лошадка
[00:53:25] во всех Линуксах и серверах, и в рабочих станциях.
[00:53:29] Вот. Э-э, почему это было, так сказать, э-э,
[00:53:33] народ в это хорошо покупался?
[00:53:37] Потому что, э-э, во-первых, как бы драйвер-то сам по себе отработан, ошибок в нём нету.
[00:53:42] Да?
[00:53:43] Поэтому ему можно верить.
[00:53:45] Так, ну давайте, э-э, так сказать, э-э, сделаем перерыв.
[00:53:50] Более сложные ФС - это почему усложняет?
[00:53:54] Ну как, почему? Потому что её чинить не надо.
[00:53:58] То есть действительно необходимость починки, она, в общем-то, как бы её необходимо было держать в голове
[00:54:05] разработчику системы.
[00:54:10] А вот этот вот журнал, более сложный способ его организации и ведения, это опять разработчик файла должен делать?
[00:54:18] Разраб?
[00:54:21] шестого.
[00:54:25] Ну я видел, это очень редко происходит.
[00:54:28] Ну да, тоже верно.
[00:54:31] Тем не менее,
[00:54:32] Иногда есть целые группы по
[00:54:35] там лежал студент.
[00:54:37] NTFS, XFS,
[00:54:38] Всё, у меня уже всё.
[00:54:39] GFS.
[00:54:40] Всё готово, отработано.
[00:54:41] Которые с самого начала разрабатывались как журнал.
[00:54:44] Я дошёл до нужного момента сейчас будем.
[00:54:46] Да, как хочешь.
[00:54:47] У меня есть шаблон.
[00:54:48] И они э несколько, ну там
[00:54:50] У меня
[00:54:52] до сессии.
[00:54:53] У меня тоже до сессии.
[00:54:55] Ладно, я не буду.
[00:54:56] Так что, придётся тебе забыть про ректор.
[00:54:59] Типа
[00:55:03] Я запомнил твой код базовый и всё.
[00:55:06] Что?
[00:55:07] А?
[00:55:10] Что, я думал, мы вдвоём будем?
[00:55:12] Можно вдвоём.
[00:55:13] Ну и камеру заодно включу.
[00:55:15] OBS у меня вроде есть.
[00:55:16] А, ну хорошо, тогда запись.
[00:55:19] Да.
[00:55:20] у тебя же есть
[00:55:24] Код, да.
[00:55:26] Пишешь прикольно, да?
[00:55:28] Ну, я пишу.
[00:55:29] А, можно будет
[00:55:33] Настрой код просто.
[00:55:34] Я не я его не могу.
[00:55:37] Так, подожди, лекция заканчивается в 4.
[00:55:41] 4.
[00:55:42] Да.
[00:55:52] Чего?
[00:55:53] автомат
[00:55:59] Я не помню, как его назвали?
[00:56:03] автомат картошка.
[00:56:06] О, да, вот этот.
[00:56:08] Купите картошку, пожалуйста.
[00:56:16] Почему? Зачем?
[00:56:20] Поэтому на потоке?
[00:56:23] Да ладно, уж как получится.
[00:56:25] Понятно.
[00:56:26] Картошка.
[00:56:28] олимпиада
[00:56:31] Дай бог пройти.
[00:56:36] Как звул пока?
[00:56:39] Одна картошка?
[00:56:40] Да.
[00:56:41] Одна картошка - это грамм 200-300, да?
[00:56:45] Ну, там доплатить.
[00:56:47] Прямо на самолёте?
[00:56:49] Вот, э-э
[00:56:50] очень плохие.
[00:56:54] Блин. Не, ну ладно, зато будет.
[00:56:59] Слушай, а можно
[00:57:02] Это багаж?
[00:57:03] А, нет, багаж надо платить.
[00:57:07] Багаж можно.
[00:57:21] не просто
[00:57:25] Я вручную понял.
[00:57:28] Ну вот.
[00:57:30] Всегда пол.
[00:57:36] У нас 60, да, на потоке?
[00:57:43] То есть 18 потоков.
[00:57:45] Нормально.
[00:57:51] А что мне извещение?
[00:57:56] Чемодан?
[00:58:02] Нормально.
[00:58:05] Картомат картошка есть.
[00:58:08] Просто картошка.
[00:58:16] Надо пройти.
[00:58:18] Надо.
[00:58:19] Да. Я хочу
[00:58:25] У меня там
[00:58:26] есть дядя, тётя,
[00:58:28] , да.
[00:58:29] Бабушка.
[00:58:30] двоюродная.
[00:58:35] Могу показать?
[00:58:38] Ну да.
[00:58:40] С.
[00:58:42] есть.
[00:58:45] .
[00:58:53] тут очень.
[00:58:55] .
[00:58:56] .
[00:58:56] Нет.
[00:58:57] Не, килограмм вообще.
[00:59:00] Там, по-моему, пачка только раз в семестр. На восьмом.
[00:59:03] Нет, по-моему, на этом, на восьмом семестре.
[00:59:08] У одного есть.
[00:59:09] Шёл, конечно.
[00:59:09] Ну, наверное.
[00:59:19] Так, ладно. Э-э, вот. Ну и вот, э-э, на самом деле,
[00:59:23] Э-э, журнальные файловые системы, э-э, как бы сейчас большинство из них относятся, так сказать, к рабочим лошадкам.
[00:59:31] Э-э, таким, то есть, э-э, почти всё, с чем вы имеете дело, то есть и NTFS
[00:59:37] в Виндовсе, который
[00:59:39] основной, и X4 или XFS, которые
[00:59:44] вот сейчас широко используются в Линуксе, они
[00:59:48] э-э, в общем-то, к этому типу относятся.
[01:00:00] тем не менее,
[01:00:05] тем не менее, они, в общем-то,
[01:00:08] есть ещё некоторые приколы.
[01:00:11] Вот.
[01:00:11] А, ну вот главный прикол, что
[01:00:15] всё-таки в транзакцию у журнальных файловых систем включаются только
[01:00:21] э, данные файловой системы.
[01:00:24] То есть так называемые метаданные.
[01:00:27] Э, почему?
[01:00:28] Я этому изведу причины.
[01:00:31] Одна причина довольно жёсткая,
[01:00:34] и её надо понимать,
[01:00:36] что
[01:00:38] чтобы э сделать транзакции, надо понимать их границы.
[01:00:43] Да?
[01:00:44] Для пользовательских данных мы не понимаем их границ.
[01:00:49] И, скажем, в IP кодексом для работы с файлами
[01:00:55] вообще-то нету набора операций, которые позволяют выделять начало и конец транзакции.
[01:01:01] Вот.
[01:01:02] И поэтому, во-первых, существующие приложения этим пользоваться не смогут.
[01:01:06] А если мы не будем выделять э границы транзакций,
[01:01:11] э то мы не так сказать, не сможем гарантировать, что
[01:01:16] данные целостны,
[01:01:18] и вся затея потеряет смысл.
[01:01:21] Э тем не менее, в общем-то, пользователи э иногда хотят э границы транзакций иметь.
[01:01:28] Ну, один подход, конечно, это заставить их делать это самих.
[01:01:32] И, в общем-то, большинство серверов баз данных
[01:01:35] э реально это и делает.
[01:01:37] Причём, на самом деле, тоже они точно так же делают журналы свои.
[01:01:42] Э точно так же вставляют вы, ну, на самом деле, да, из Юзерленда вам надо ещё вставлять системный вызов FSync,
[01:01:49] который мы, кстати, с вами проходили в прошлом семестре, но упражнений у нас на него не было.
[01:01:55] Кто помнит, что делает системный вызов FSync?
[01:01:59] записать всё, что
[01:02:01] Э, ну, на самом деле, не столько записать, сколько дождаться, пока оно запишется.
[01:02:07] Тем не менее, он это делает.
[01:02:09] Э, вот.
[01:02:10] И таким образом вы можете
[01:02:13] его использовать для выполнения вот этой вот фазы, которую я писал, убедиться, что
[01:02:19] э данные легли на устройство.
[01:02:23] Вот.
[01:02:24] Э вы это делаете и э-э, то есть, в общем, всё вроде бы решаемо.
[01:02:30] Э тем не менее, э есть некоторые приколы.
[01:02:33] А, ну, самый интересный из приколов - это резервное копирование.
[01:02:40] Представим себе, что у вас работает монитор транзакций, например, тот же самый сервер базы данных,
[01:02:46] и вам его надо забэкапить, да?
[01:02:49] Ваши действия?
[01:02:55] журнал скопировать?
[01:02:56] Э, не, ну смотрите,
[01:02:57] э-э, вам мало скопировать журнал, вам надо скопировать и сами данные, да?
[01:03:03] То есть э-э, данный журнал без данных и данные без журнала э-э бесполезны.
[01:03:08] А теперь у вас возникает такая весёлая ситуация.
[01:03:11] То есть это сама транзакция?
[01:03:13] Не совсем.
[01:03:14] Ну, то есть как раз наоборот, сделать это мгновенно вы не можете, потому что сами данные - это довольно много данных.
[01:03:22] То есть вы получаете состояние журнала транзакций на один момент, а состояние самих данных на другой.
[01:03:29] Да?
[01:03:30] Что произойдёт, если вы попытаетесь на какие-нибудь такую журнал?
[01:03:36] Катастрофа.
[01:03:38] Э, вот.
[01:03:38] Э, причём, на самом деле, катастрофа как раз вот того рода, какую я э вам пытался описать на примере падения ФФСа.
[01:03:47] То есть, когда у вас вообще просто все данные превращаются в фарш,
[01:03:50] бесполезный.
[01:03:52] Вот.
[01:03:53] Э и э как быть?
[01:03:55] Э-э Остановить приём новых транзакций?
[01:03:57] Э один вариант, да, это остановить, э положить сервер.
[01:04:02] И, в общем-то, во многих гайдах так и рекомендуют, но опять же, это э тоже э решение
[01:04:09] не всегда приемлемое.
[01:04:11] То есть, опять же, есть такое э коротко формулируемое э требование под названием 24.7.
[01:04:18] или круглосуточная доступность,
[01:04:21] которая для, в общем-то, очень многих сервисов актуальна.
[01:04:26] Э и для, причём, для многих сервисов она необходима,
[01:04:30] а для некоторых сервисов, ну, скажем так,
[01:04:33] э тоже, если уж мы научимся это делать, то тоже это, на самом деле, многие захотят.
[01:04:38] Вот.
[01:04:39] Во-вторых, ну, опять же, бэкап больших данных - это долго, то есть вам придётся его класть надолго.
[01:04:45] Это тоже как-то скучно.
[01:04:47] Вот.
[01:04:48] На самом деле у меня вот в этих слайдах этого нету, но
[01:04:50] вообще есть такая фишка.
[01:04:53] Э причём в некоторых э, например, в Виндовсе она сделана на уровне драйвера файловой системы NTFS.
[01:05:00] А называется она спшоты или моментальные снимки.
[01:05:05] Или ещё чекпоинты ещё называют.
[01:05:08] Э то есть, на самом деле, э идея тоже довольно проста, и она, в общем-то, перекрывается с э знакомым нам словом Copy on Write.
[01:05:18] Э то есть, э смотрите, мы берём, э-э, вот, допустим, сказали, что причём скриншот делается, скажем, на уровне файловой системы.
[01:05:28] то есть мы его делаем, и у нас появляется как бы вторая файловая система, ещё одна буковка диска в случае Windows,
[01:05:35] э которая отражает состояние снятой файловой системы на какой-то момент времени.
[01:05:42] При этом исходная файловая схема, она продолжает модифицироваться.
[01:05:47] Э как такое можно сделать?
[01:05:50] На самом деле, вы уже знаете достаточно, чтобы догадаться.
[01:05:56] В смысле, как их в соответствие привести?
[01:05:58] Нет, как раз наоборот, нам нужно несоответствие.
[01:06:02] Нам нужно, чтобы вы с файловой системы продолжали работать как раньше, то есть вносить в неё изменения.
[01:06:07] Но чтобы у вас было нечто, что выглядит как копия этой файловой системы на какой-то момент времени.
[01:06:14] Копи он?
[01:06:15] Ну да, копи он.
[01:06:16] То есть вам надо все данные, которые вы модифицируете,
[01:06:20] их где-то сохранять оригинальное состояние.
[01:06:24] Немножко напоминает э-э этот самый, rollback журнал.
[01:06:30] Единственное, что у вас как бы нету естественной точки его окончания, у вас нету коммита.
[01:06:36] Поэтому он может создаваться долго, вы можете сохранить много данных.
[01:06:40] Э тем не менее, да, вам надо где-то найти свободное место.
[01:06:44] Э причём НТФС, например, когда эти снимки делает, он э их э-э
[01:06:51] он их э хранит просто в свободном месте на том же томе.
[01:06:57] И э-э, пока у вас свободное место не кончится, вы можете иметь копию именно вот мгновенный снимок,
[01:07:05] то есть состояние файловой системы на момент делания снимка.
[01:07:10] Вот.
[01:07:10] И вы, например, можете его спокойно забэкапить.
[01:07:16] Вы его можете забэкапить, э и, в общем-то, э, скажем, большинство утилит бэкапа виндоса, они именно так и работают.
[01:07:25] Если вы посмотрите, э, так сказать, э что что реально происходит.
[01:07:30] Э то есть, на самом деле, в Виндовсе нету нормального пользовательского интерфейса для создания этих снимков.
[01:07:36] Поэтому через Restore его такую сделать не можете,
[01:07:39] а вот бэкапы это делают.
[01:07:42] Вот.
[01:07:43] Э ну и вот, э соответственно, тем не менее, вот эта фишка, она как бы э популярна, она вот, но тем не менее, э так как её делать на традиционных файловых системах,
[01:07:54] э в общем, в общем-то, в этом есть некоторая костыльность.
[01:07:58] То есть это получается дорого, это сажает производительность.
[01:08:02] Вот.
[01:08:02] И, в общем-то, народ задумался, что как-то её, так сказать, э может быть, её можно было бы улучшить.
[01:08:10] Вот.
[01:08:11] И вот второе направление этого улучшения, то есть вторая задача, которую можно таким образом решить, э это, как ни странно, тоже обеспечение целостности.
[01:08:21] Вот.
[01:08:22] На самом деле вот опять же, поскольку тут лекция немножко не тот, который делал на эти презентации.
[01:08:27] Э файловую систему ISO 9660 ка я вам не рассказывал?
[01:08:32] Нет.
[01:08:33] Вот.
[01:08:34] Ну и на самом деле, э в общем-то, с Сидеомами вы дело не имели.
[01:08:39] Вот.
[01:08:39] И тем не менее, классический CDROM, ну, первый CDROM, а, как раз наоборот, просто CD,
[01:08:44] компакдиски, они были вообще в домашних условиях их записать нельзя было.
[01:08:51] То есть их печатали на фабрике, и вам привозили готовые.
[01:08:55] Вот.
[01:08:55] Потом появились так называемые записываемые CD или CDромы,
[01:09:01] которые только записывают?
[01:09:02] Э, да.
[01:09:03] Э, на которых, э, ну, на самом деле, потом они тоже появились со стиранием.
[01:09:09] А, но тем не менее, э-э, как бы проблема, э-э
[01:09:13] точнее как?
[01:09:15] Сам диск, э
[01:09:16] да,
[01:09:16] тем не менее, да, вот классический
[01:09:19] сидром, вы в него можете писать, э-э, но, э, запись - операция необратимая.
[01:09:27] То есть переписать его чем-то другим вы не можете.
[01:09:32] Ну вот классический подход, то есть была такая утилита, называется MK ISO FS,
[01:09:38] которая э создаёт э такой здоровенный файл.
[01:09:43] Кстати, такие файлы вы до сих пор можете видеть.
[01:09:45] Например, когда вы скачиваете откуда-нибудь дистрибутив Линукса,
[01:09:50] то он, скорее всего, там лежит в виде файла с расширением ISO.
[01:09:54] Да?
[01:09:55] Вот.
[01:09:55] И вот это именно образ этого CD Фса.
[01:09:59] Вот.
[01:09:59] тем не менее,
[01:10:00] э сначала их просто заранее делали,
[01:10:02] один раз прошивали,
[01:10:03] и э опять же тот же диск,
[01:10:05] даже если вы его использовали не весь,
[01:10:08] то вы остаток места на диске использовать никак не могли.
[01:10:12] Да?
[01:10:13] Вот.
[01:10:14] Э тем не менее, э идея, э как их использовать,
[01:10:18] она э возникла,
[01:10:19] э и её, в общем-то, довольно по историческим масштабам рано реализовали.
[01:10:25] Э то есть возможность э записывать на существующий э пустой диск,
[01:10:30] она э была придумана.
[01:10:32] Но как она была сделана?
[01:10:35] значит, ну вообщеS,
[01:10:36] и опять же, не знаю, вам э Коверка рассказывал про R11 и унитарные архивы?
[01:10:42] Точно нет?
[01:10:43] Точно нет.
[01:10:44] Э, ну, это плохо,
[01:10:45] потому что тем не менее вот самые простые файловые системы,
[01:10:49] э, в них файлы лежат подряд.
[01:10:54] Вот, в них файлы лежат подряд и э занимают непрерывное место на диске.
[01:11:00] Вот.
[01:11:01] И в частностиС она устроена таким же образом.
[01:11:04] То есть она в этом смысле похожа внутри на архив.
[01:11:08] Единственное, чем она отличается от архива,
[01:11:10] что там как бы внутри этого архива есть каталоги и подкаталоги.
[01:11:15] Вот, и которые содержат ссылки на начало файлов.
[01:11:18] Но каталоги - это тоже файлы специального типа.
[01:11:21] Но всё равно все файлы лежат как бы подряд,
[01:11:23] и они э лежат э друг за другом.
[01:11:28] Вот.
[01:11:29] Теперь, э спрашивается загадка.
[01:11:31] Мы хотим переписать какой-то файл.
[01:11:35] Во-первых, мы у нас проблема с тем, что у него длина может поменяться,
[01:11:39] и нам надо под него искать новое место.
[01:11:41] Да?
[01:11:43] Ну либо всё двигать.
[01:11:44] Нет, а как двигать?
[01:11:46] Э мы же у нас устройство однократной записи.
[01:11:49] А, ну.
[01:11:49] Мы ничего никуда двигать не можем.
[01:11:53] две копии.
[01:11:54] Э да,
[01:11:54] получается две копии.
[01:11:55] То есть мы начинаем,
[01:11:57] находим начало свободного места,
[01:11:59] пишем туда новую версию файла.
[01:12:01] Но теперь нам надо проаблить каталог.
[01:12:05] Потому что в каталоге лежит ссылка на начало файла.
[01:12:08] Правильно?
[01:12:09] Ну да.
[01:12:10] А каталог тоже записан?
[01:12:10] Да.
[01:12:11] каталог уже записан,
[01:12:12] то есть с ним та же история.
[01:12:15] То есть мы можем сделать, э, ну мы можем сделать то же самое.
[01:12:18] То есть мы можем переложить каталог в новое место.
[01:12:22] Проапдейтить ссылку на э родительский каталог в родительском каталоге.
[01:12:29] Тогда и родительский каталог.
[01:12:30] Тогда и родительский каталог надо записывать,
[01:12:33] и э в какой-то момент мы дойдём до корневого каталога.
[01:12:36] Но мы весь диск получается переписали.
[01:12:38] Нет, почему?
[01:12:39] Мы э смотрите,
[01:12:40] мы переписываем только те каталоги,
[01:12:42] причём ведь перемещение каталога требует перемещения только каталога.
[01:12:47] Сами файлы не меняются,
[01:12:48] которые в нём лежат.
[01:12:50] Те файлы, которые не менялись,
[01:12:51] мы просто перекладываем каталог.
[01:12:54] Вот.
[01:12:54] Э дальше нам просто надо переместить в родительское в новое место родительский каталог.
[01:13:01] И тогда мы получим нормальное содержимое,
[01:13:04] как будто оно всё с самого начала так и лежало.
[01:13:08] И понять, что тут что-то не то,
[01:13:09] может быть, э, ну, надо тщательно анализировать структуру файловой системы,
[01:13:14] чтобы увидеть,
[01:13:15] что в некоторых каталогах файлы лежат не подряд.
[01:13:19] Да?
[01:13:19] Угу.
[01:13:20] Вот.
[01:13:21] Э, ну и вот, на самом деле, вот э как раз идея,
[01:13:24] которая была реализована в Седеромах,
[01:13:27] э она называется мультисессионный диск.
[01:13:31] И попросту говоря,
[01:13:32] она состоит в том,
[01:13:32] что там зарезервировано место под 256 корневых каталогов.
[01:13:38] И опять же стоит требование,
[01:13:42] что если вы поддерживаете мультисессионные диски,
[01:13:45] вы должны брать последний из них.
[01:13:49] Ну, как раз-таки из-за вот этого.
[01:13:51] Да, вот.
[01:13:52] И э на самом деле, опять же понятно,
[01:13:55] что как бы создавать сессию на каждый файл неудобно.
[01:13:59] То есть вы точно так же,
[01:14:00] когда хотите дописать,
[01:14:01] вы собираете все файлы,
[01:14:02] которые хотите дописать и поменять в одну пачку.
[01:14:06] Их таким образом дописываете,
[01:14:08] в дереве каталогов перестраиваете,
[01:14:10] получаете новую сессию.
[01:14:12] То есть те файлы, которые остались в старой сессии,
[01:14:15] не меняются и лежат на тех же местах.
[01:14:20] И каталоги, возможно, переезжают,
[01:14:22] но опять же, часть их содержимого тоже сохраняется.
[01:14:26] Вот, то есть идея,
[01:14:28] на самом деле, э она как бы немножко расточительна в плане места.
[01:14:32] Очень.
[01:14:33] Не сказать бы,
[01:14:34] но учитывая, что как раз на сидеромы,
[01:14:36] даже в моментах появления,
[01:14:38] они в расчёте на килобайт были дешевле,
[01:14:41] чем жёсткие диски.
[01:14:43] Вот, поэтому,
[01:14:44] в общем-то, это оказалось оправданным,
[01:14:46] тем более, что, в общем-то,
[01:14:47] очень во многих случаях допись,
[01:14:50] она предполагала не изменение старых файлов,
[01:14:52] а выкладывание новых.
[01:14:54] Это как в тетрадке заголовок записывать.
[01:14:56] Ну, э, в принципе,
[01:14:59] я не знаю, как в тетрадках,
[01:15:00] но, в принципе, тем не менее, да.
[01:15:02] То есть, по сути, получается,
[01:15:03] что вы э сохраняете старые данные,
[01:15:07] какие-то новые данные пишете,
[01:15:09] э и потом просто меняете корневой заголовок,
[01:15:13] который на них на всех указывает.
[01:15:15] Вот.
[01:15:16] Э, соответственно, э и как бы бонус,
[01:15:19] ещё один бонус всей этой хрени в том,
[01:15:21] что, в общем-то, если у вас во время этой записи что-то пойдёт не так,
[01:15:26] то старые-то данные у вас останутся.
[01:15:29] Вот.
[01:15:30] и это хорошо.
[01:15:32] То есть опять же, это к вопросу о консистентности.
[01:15:35] Вот.
[01:15:35] Ну и вот я, честно говоря, не очень помню точную хронологию,
[01:15:38] в каком порядке народ это придумал.
[01:15:44] То есть что придумали первым?
[01:15:45] мультисессионный CD или э вот логструктурную запись.
[01:15:51] Тем не менее, вот логструктурная запись,
[01:15:54] она использует этот же подход для э
[01:15:59] записи на диск нормальной файловой системы,
[01:16:02] ну, точнее, в штуке,
[01:16:02] которая ведёт себя как нормальная файловая система.
[01:16:07] Вот.
[01:16:07] то есть, э, ну, первая популярная хрень такого рода - это была такая,
[01:16:12] есть до сих пор такая компания NetApp.
[01:16:16] Э и они её назвали немножко странным для русского э уха названием вафл.
[01:16:23] Right and layer.
[01:16:25] Вот.
[01:16:26] И э они её запатентовали,
[01:16:28] и все девяностые годы,
[01:16:30] э все, кто пытался делать э эти самые,
[01:16:35] э не файловые системы такого типа,
[01:16:39] натыкались на нетаповские патенты и э бросали это занятие.
[01:16:44] Вот.
[01:16:45] И тем не менее, э идея,
[01:16:47] она, в общем-то, по-своему красивая,
[01:16:49] хотя, э, на самом деле, э тоже порождает некоторые подводные камни.
[01:16:55] то есть, э э, ну, первое название - это Raight и Copy on Wright.
[01:17:01] В принципе, понятно, откуда они берутся.
[01:17:04] Да?
[01:17:05] Э, то есть у вас как бы есть, э состояние файловой системы на какой-то момент времени.
[01:17:12] Э файловая система,
[01:17:13] ну вот конкретно,
[01:17:14] так, вот я сейчас смотрю,
[01:17:15] есть ли у меня э слайды.
[01:17:20] Так, э на самом деле,
[01:17:22] слайды у меня там есть в другой презентации.
[01:17:25] Сейчас я попытаюсь найти, э
[01:17:29] Вот.
[01:18:30] э так, ну-ка, э-э
[01:18:33] Так, э-э
[01:18:40] Ну вот, э, кстати, да,
[01:18:42] вот как раз ещё одна штука - это этот, э, так, э где он у меня?
[01:18:47] Э
[01:18:53] Так, ну да,
[01:18:54] тут тут картинки, э
[01:19:01] Тут нет картинок,
[01:19:03] нет тут картинок.
[01:19:04] Э-э, точнее,
[01:19:06] картинки-то есть,
[01:19:07] но
[01:19:10] Use FS?
[01:19:12] Э-э, ну, так,
[01:19:15] э-э,
[01:19:21] Сейчас, сейчас тут была хорошая картинка,
[01:19:23] э, так.
[01:19:24] А, ну вот.
[01:19:27] Ну, то есть, на самом деле,
[01:19:29] картинка не оригинальная,
[01:19:30] но она, э-э, как бы отражает всё дело.
[01:19:37] Вот.
[01:19:37] То есть вот, э, как происходит,
[01:19:40] э, купля Write,
[01:19:41] э-э,
[01:19:44] транзакция.
[01:19:46] Э, то есть, на самом деле,
[01:19:47] э-э, реально,
[01:19:48] э-э, реально происходит такая структура,
[01:19:51] что, э, во-первых,
[01:19:53] есть э такое понятие,
[01:19:54] называется корневой нот.
[01:19:58] Корневой нот
[01:19:58] структура, которая похожа на нот по структуре, то есть она содержит
[01:20:04] э-э какие-то метаданные и содержит дерево блоков, которые принадлежат
[01:20:10] этому объекту, да?
[01:20:13] Причём дерево в данном случае это именно дерево, э-э, причём дерево не как в X13 указателях
[01:20:22] и не дерево экстентов. То есть с деревьями экстентов на э-э copy-on-write файловых системах
[01:20:29] э обычно не связываются. Почему? э-э, наверное, сейчас, возможно, станет понятно.
[01:20:34] Вот. Ну и вот, э-э, соответственно, это дерево блоков, э-э, указателей на блоки,
[01:20:41] того, что в 13 указателях называется косвенными блоками.
[01:20:45] Вот. Почему этот нод называется корневым? Потому что он описывает раскладку по диску таблицы нодов.
[01:20:53] Понятно. То есть у него нету имени, как у нормального файла, и он сам частью таблицы нодов
[01:20:59] не является, строго говоря.
[01:21:02] Но он описывает, как она разложена по диску.
[01:21:05] Понятие таблицы нодов вам знакомо, да?
[01:21:09] Э, то есть, ну и понятно, что эта таблица, она как бы теперь уже не таблица, она, э, теперь просто какой-то, э, фрагментированное пространство,
[01:21:18] которое вот этим деревом организовано в логическую линейную структуру.
[01:21:24] Вот. Дальше в этой таблице нодов лежат э ноды, похожие на ноды, какие к каким мы привыкли.
[01:21:32] Э, вот, но тоже там вместо экстентов или тринадцати указателей, там тоже просто идёт древовидный индекс
[01:21:39] э-э, отдельных блоков.
[01:21:42] Ну, опять же, почему нету экстентов, тоже, наверное, сейчас догадаемся.
[01:21:47] Вот, то есть каждый файл описан такой древовидной структурой.
[01:21:51] Теперь представим себе, что мы меняем какой-то блок файла.
[01:21:58] Э-э, то есть даже, причём неважно, выде- даже если мы не выделяем файлу новый блок,
[01:22:05] мы всё равно пишем новое содержимое блока в новое место.
[01:22:13] При этом нам надо проапдейтить инод, которому этот блок принадлежит, да?
[01:22:17] Ну и также со всеми каталогами. Да, и точно Нет, на самом деле самое смешное, что каталоги-то апдейтить не надо, потому что номер иноды остаётся тем же самым.
[01:22:27] А.
[01:22:28] Просто физически меняется положение иноды.
[01:22:31] Вот это изменение, оно вот как тут нарисовано по картинке, но по дереву распространяется до корневого инода.
[01:22:37] Да? Угу.
[01:22:39] Вот. И, соответственно, э-э, дальше мы этот корневой инод, э-э, ну, дальше опять возникает та же самая история, что
[01:22:47] с мультисессионными дисками. То есть при изменении каждого сектора в каждом файле создавать новый корневой инод как-то дороговато, да?
[01:22:54] Да.
[01:22:55] Вот. Поэтому, э-э, делается какая вещь?
[01:23:00] Делаются э-э А, ну, а другая сторона - это, что есть э-э то есть, естественно, нам нам надо каким-то образом изменения объединять в пачки.
[01:23:10] Но теперь спрашивается загадка. Э-э если мы объединяем э-э изменения в пачки,
[01:23:17] э-э то э-э пока мы не накатим корневой не поставим новый корневой нод, мы эти изменения после аварии не увидим.
[01:23:24] Да? Да.
[01:23:25] То есть изменения будут пачками теряться. Это как-то тоже скучно, да?
[01:23:30] Да.
[01:23:31] Вот. Поэтому, э-э, как раз и вот тут и появляются журналы.
[01:23:35] Но э журнал, он совсем другой. Журнал, в него просто валятся все операции записи
[01:23:42] с указанием, в какой сектор, какого файла их надо сделать.
[01:23:46] Угу.
[01:23:48] То есть вот тут буквально все данные, сколько мы их пишем, они все пишутся э на диск в этот журнал.
[01:23:55] Вот. Дальше, э-э, когда у нас журнал кончается, э и причём параллельно с этим мы создаём вот это вот дерево модифицированных блоков, которое тут
[01:24:04] зелёненьким условно. Создаём, создаём, но новый корневой нод держим в памяти.
[01:24:10] Потом, когда у нас журнал достигает какого-то размера,
[01:24:15] Это типа пачка. Это типа пачка, мы пишем новый корневой нод.
[01:24:19] э-э всю секцию журнала просто выкидываем,
[01:24:23] потому что она уже вся на диске есть.
[01:24:26] Ну, логично. Логично.
[01:24:28] Вот. то есть, ну и вот, э опять же, простейшая форма такой штуки - это, кстати, не ZFS.
[01:24:34] Это, кстати, вот я не знаю, кто изучал. Э, в общем-то, Microsoft э долго обещал какую-то файловую систему нового поколения.
[01:24:42] И в 2012 сервере он её выкатил под названием ReFS,
[01:24:47] Resilient FS.
[01:24:49] Вот. и она устроена таким образом, но у неё всего два корневых нода.
[01:24:56] Они друг с другом. И они друг с другом меняются, примерно похоже на на этот больше всего похоже на копирующий сборщик мусора.
[01:25:03] Угу. Да?
[01:25:05] То есть мы тоже вот так вот дня половинками щёлкаем и э это самое.
[01:25:10] Вот, мы это делаем, и э-э вот, на самом деле, э ну, кстати, на самом деле, как-то народ ей не очень
[01:25:19] э не очень увлекается. Э то есть, в общем-то, даже из продвинутых виндузовых администраторов, я вот на курсах время от времени такие экспресс
[01:25:27] исследования провожу. В общем-то, мало кто её знает.
[01:25:31] Вот. Тем не менее, она с 2012 года, то есть ей уже 12 лет.
[01:25:37] Вот. Ну и, кстати, она в основном, как бы её главное достоинство не числят, что она э хорошо умеет работать с большими файлами.
[01:25:46] Большие файлы - это, например, образа виртуалок.
[01:25:49] Вот. тем не менее, вот эта штука, э вот. Ну и вот дальше, в принципе
[01:25:56] опять вопрос. то есть два корневых нода - это как бы немножко, оно как бы, так сказать, позволяет эту штуку взлететь
[01:26:05] и использовать, но это как-то скучно.
[01:26:09] А почему скучно? Э, ну потому что, например, э, смотрите, вот я вам пропагандировал такую функциональность, как, э, снэпшоты, моментальные снимки.
[01:26:18] Угу. То есть вот
[01:26:20] возможность хранить состояние файловой системы на какой-то момент времени.
[01:26:24] Да.
[01:26:25] Вот. А
[01:26:28] в общем-то, вам может захотеться, во-первых, делать таких снимков много.
[01:26:34] Во-вторых, вам может захотеться делать такие снимки, э-э, доступные на запись.
[01:26:45] Мм, и Вот, и для этого надо много корневых каталогов.
[01:26:50] А тут их два. Тут их два. Вот. На самом деле, э, на самом деле, в принципе, понятно, что если делать много корневых каталогов, то э самая главная проблема, которая у вас вылезает, она
[01:27:02] вылезает совсем с другой стороны.
[01:27:04] Это каким образом вы будете управлять свободным пространством.
[01:27:10] Потому что, э, как бы, понятно, что в каждом снэпшоте, э, свободное пространство - это вроде бы всё, что в него не входит, да?
[01:27:18] Но на диске в целом, свободное место - это только то, что не входит ни в один активный снэпшот.
[01:27:25] Да? Угу.
[01:27:27] Вот. Во-вторых, если у вас снэпшотов много, э, то всё равно вам в какие-то моменты их надо, э, убирать, да?
[01:27:34] И вот тут-то вас ожидает настоящее веселье.
[01:27:39] Потому что вам надо просканировать, э, вообще в худшем случае вам надо будет просканировать все снэпшоты
[01:27:45] и убрать из них, э-э, ну, то есть, э, барконфликты прогнать по всем активным снэпшотам.
[01:27:52] Вот. Э, ну и вот как раз вот эту механику, э, NetApp и запатентовал.
[01:27:59] Механику управления свободным пространством.
[01:28:03] Вот. Ну и вот, э, у NetApp эта механика, она состояла в чём?
[01:28:08] Она состояла в том, что кроме вот этих инодов, каждый каждый снэпшот создавал, имел bitmap занятого пространства.
[01:28:18] Занятого в нём.
[01:28:21] Причём этот bitmap, он точно так же управлялся по той же логике, то есть тоже по логике copy-on-write. То есть потом мы делаем
[01:28:27] и на все битмапы. Вот. Ну да, но как раз дело в том, что э-э как бы э и на все битмапы делаются только в памяти.
[01:28:37] То есть когда драйвер файловой системы монтирует всё это free, он считывает эти битмапы всех снэпшотов
[01:28:43] Угу. и делает на них э.
[01:28:46] И получает карту свободных блоков, но она есть только в памяти.
[01:28:52] С другой стороны, поско- и с то есть, с одной стороны, это означает, что это требует много памяти.
[01:29:00] Потому что и на эту карту надо объединить и в памяти держать. Ну да.
[01:29:04] Вот. С другой стороны, это обеспечивало быструю работу и, э-э, и и и
[01:29:10] и в том числе быстрое удаление снэпшотов.
[01:29:13] Поскольку все вот эти операции над мапами происходили в памяти.
[01:29:17] Вот. И они это запатентовали.
[01:29:21] Вот. И, э-э, на самом деле, вот решение, э, в принципе, вот, э, а, ну, как раз сам, э, со своим ZFSом,
[01:29:31] э они придумали немножко более сложную схему управления.
[01:29:36] Э доказали не тапку, что они не нарушают его патент, и выпустили хрень под названием ZFS,
[01:29:43] э, которую, в общем-то, мы с вами, например, на нашем солярисе, она в качестве корневой файловой системы и используется.
[01:29:53] Алло.
[01:29:54] Я думаю, что
[01:29:55] [Sound of person clearing throat]
[01:30:28] Так, прошу прощения. Э, вот, тем не менее.
[01:30:32] Вот, то есть мы вот, э-э, тем не менее, вот как бы, э, вот ЗТФСы, они как бы пробили этот барьер,
[01:30:40] э, который не таб ставил. То есть это заняло, ну, порядка 15 лет.
[01:30:47] Вот. Ну и вот они его пробили, поэтому появились, э, во-первых, кстати, вот в Макосе современной, тоже я не особо разбирался, как оно устроено,
[01:30:56] э, но по многим признакам, то, что Макось использует в качестве дисковых томов, оно тоже как-то похоже устроено.
[01:31:04] То есть там есть тоже все эти, э-э, так сказать, и спшоты там есть, и
[01:31:10] э, тоже у них вместо файловых систем используется странное понятие дискового пула.
[01:31:15] Э, вот, но оно не оно не является ЗТФСом.
[01:31:19] Вот, то есть вот два два наиболее известных опенсорсных решения - это ZFS,
[01:31:26] э, с который используется в Солярисе и есть для Линукса.
[01:31:31] Но поскольку он не под GPL, то его в лайн ядра не включают.
[01:31:37] Но сами себе скачать, собрать ZFS под Linuxом вы можете. Кстати, Oracle её
[01:31:43] Oracle Linux ZFS подддержки нет.
[01:31:46] Вот. И есть вот линксовый GPLный проект - это BTRFS.
[01:31:51] GPL - это какая-то лицензия?
[01:31:53] Э, GPL - это General Public License, под которой, э-э, распространяется ядро Линукса.
[01:32:00] И, э, в общем-то, весь код, который, э, вы обязаны включать в ядро Линукса, он тоже обязан быть.
[01:32:08] Вот. Ну, на самом деле, там есть всякие хитрости на эту тему, тем не менее, вот всё, что идёт в так называемом мейнлайн ядре Линукса, оно всё ГПЛное.
[01:32:20] Вот. А, кстати, на самом деле, хи-хи, вот насчёт него картинки, видите, логотипчик?
[01:32:25] Сан. Сан.
[01:32:26] Вот, э-э, то есть это из Сановской презентации слайдик, я вот где-то её потерял эту конкретную эту презентацию.
[01:32:33] Она у меня есть.
[01:32:37] Но не исходники.
[01:32:39] Ужас ситуации в том, что когда Oracle купил Sun, он закрыл домен sun.com.
[01:32:46] Я не очень понимаю зачем.
[01:32:47] Вот. А тем не менее, вот э в Линуксе есть проект BTRFS. Не помню, как расшифровывается, но тоже этот самый BTRFS, он, э-э
[01:32:57] Ну он тоже, на самом деле, э, как бы с этими штуками, э, с ними, э, есть, э, то есть с одной стороны
[01:33:05] э, ну, так сказать, первая фишка, что они, э, действительно, это как бы альтернативная логика по сравнению с журнальными файлуками.
[01:33:14] Э, и как бы одно достоинство у них, что как бы у вас старые данные, они всегда живы.
[01:33:20] Да?
[01:33:22] Э, то есть, в принципе, вероятность убить данные, э, у вас гораздо ниже.
[01:33:27] Вот. С другой стороны, э, у вас возникают, э-э, что? А, ну, кстати, опять же, вот если рассказать, как оно устроено,
[01:33:35] то есть, например, вот у у Нетапа, у него это выглядит примерно так, что у него есть 256 этих спшотов.
[01:33:43] Э потом там у него есть, э какая из этих 256, у них есть, э спшоты, которые делаются
[01:33:52] э либо каждые 5 секунд, либо по заполнению журнала, что произойдёт раньше.
[01:33:59] Вот, то есть эти спшоты живут порядка нескольких минут.
[01:34:02] И когда доживают, сами удаляются.
[01:34:05] Потом есть спшоты, там, по-моему, ежеминутные, которые живут несколько часов.
[01:34:12] Ну, точнее, не ежеминутные, они там тоже где-то, по-моему, порядка 5-10 минут делаются и живут несколько часов.
[01:34:19] Э потом есть спшоты ежедневные, которые живут там порядка месяца.
[01:34:25] Вот, то есть у вас есть такая вот, э-э, как бы она грубо логарифмическая история старых состояний,
[01:34:32] которые вы можете на какое-то время сохранять.
[01:34:35] Второе, что вы можете делать, это вы можете делать, э-э, эти
[01:34:42] спшоты сами.
[01:34:43] То есть говорить, что вот это вот состояние, ты мне сохрани, э пока я не скажу.
[01:34:49] Вот. Причём это состояние, это, по сути, получается даже не спшот, а именно форк.
[01:34:54] То есть вы можете в него вносить изменения, какие хотите, и э он будет реить.
[01:35:01] Э это, кстати, на самом деле, опять же, кто плотно работал с гитом,
[01:35:06] похоже на гитовую ветку.
[01:35:09] Только делается, во-первых, на уровне секторов диска, а не содержимого файлов.
[01:35:14] Во-вторых, оно немножко универсальнее по содержимому, но главная в нём проблема, э, что в нём нету этого.
[01:35:23] Мёржа.
[01:35:24] Мёржа в нём нет.
[01:35:27] Вот, что немножко их обесценивает и не позволяет их заменять как, э, этих
[01:35:33] не позволяет их использовать как замену системы управления версиями.
[01:35:38] Э дальше вы можете делать клоны отдельных каталогов.
[01:35:42] тоже, опять же, полезная фишка.
[01:35:44] Кстати, на самом деле, вот клоны каталогов, они э приобрели некую популярность в контекстах контейнеров и виртуальных машин.
[01:35:53] Да?
[01:35:55] Потому что с виртуальной машиной и с контейнером вы часто хотите, э-э, сделать такой же, но другой, да?
[01:36:04] Возникает такое желание, да?
[01:36:06] Ну и причём, скажем, вот э VirtualBox он умеет это делать, э у него просто на уровне вот этого драйвера работы с
[01:36:14] томами виртуальными, он тоже такую имеет. Связанные клоны, связанные копии, видели такое?
[01:36:21] Да.
[01:36:22] Вот. А вот имея ZFS или BTRFS, вы это можете делать прямо на уровне файловой системы, просто планирование файлов.
[01:36:30] И привет.
[01:36:31] Вот. Э-э, ну и вот, э-э, на самом деле, там есть, правда, вторая тема, э есть всякие попытки строить на этих штуках так называемую дедупликацию.
[01:36:43] Э то есть дедупликация, э, кстати, на FS она заявлена, и на э NetApp её тоже пытаются делать.
[01:36:52] То есть понимаете, когда ну же как бы у вас нету, но тем не менее, э делается какая-то примочка,
[01:37:00] которая бегает по всем различающимся блокам и смотрит, а вдруг они совпадают.
[01:37:06] Да?
[01:37:08] И если совпадают,
[01:37:10] она их
[01:37:11] дедуплицирует.
[01:37:13] Вот. Ну и вот, на самом деле, вот это, кстати, тема, которая, как бы сказать, тоже для современных э систем хранения данных - это такой
[01:37:21] священный грааль. То есть все это пытаются сделать, но ни у кого оно почему-то не работает.
[01:37:27] Поэтому, если у кого-то, так сказать, руки чешутся вложить, э-э, так сказать, сделать прорыв
[01:37:34] в файловых системах, то вот вам один из советов,
[01:37:39] как это можно сделать.
[01:37:42] Вот. тем не менее, вот действительно, э как А, ну вот а, ну, кстати, вот у Санна, на самом деле, э у них есть вообще такая весёлая фишка.
[01:37:51] Э, то есть э как ставить апдейт.
[01:37:54] То есть, например, вот когда обйте операционную систему, она э что-то может пойти не так, да?
[01:38:01] Угу.
[01:38:02] Вот, и вы можете захотеть откатиться.
[01:38:04] Э вот. Но, э если у вас есть ZFS,
[01:38:09] то Солярис он как апдейтится? Он говорит: "Я создаю так называемый бутмент.
[01:38:15] То есть он делает спшот вашей корневой файловой системы на э момент начала апдейта.
[01:38:22] Угу. Делает спшот, в новую версию ставят апдейт.
[01:38:27] Потом бутлодер настраивает так, чтобы можно было выбрать.
[01:38:30] С какого с какой из корневых систем загрузиться?
[01:38:35] Ну да.
[01:38:36] Вот. Если после апдейта что-то пойдёт не так, вы, так сказать, загружаетесь со старого.
[01:38:43] Можете опять же подмонтировать новый, что-то починить.
[01:38:46] Э-э, то есть, ну, в общем, хихикание над того, что Линуксы и и Линуксы вообще оптимизированы под установку апдейтов.
[01:38:55] Кстати, вот интересно, что на самом деле даже те дистрибутивы Линукса, которые ставятся на BTRFS,
[01:39:03] они, по-моему, так не умеют.
[01:39:06] Из коробки, по крайней мере.
[01:39:08] То есть руками тоже воспроизвести можно, но э из коробки сложнее.
[01:39:12] Вот. И тем не менее, вот э самые слабые места журнальных вот таких вот файловых систем,
[01:39:19] Вот, э что они, во-первых, очень любят память,
[01:39:23] потому что они объёмные и на большие структуры данных держать в оперативной памяти при работе.
[01:39:29] И вот BTRFS он очень сильно страдает, что на нём э удалять э пространство дорого.
[01:39:36] То есть тоже типовая жалоба. Вот у меня место кончилось, я удаляю, удаляю, удаляю, удаляю.
[01:39:43] А оно всё никак не появляется.
[01:39:46] Вот. Э-э, то есть, причём это, честно говоря, не очень понимаю, почему именно там проблема, но э действительно в том, что они свободно место
[01:39:47] хранят не так, как
[01:39:49] э как как, так сказать, это было на в точности, либо идти патент, э
[01:39:54] идти по тем этапам.
[01:39:57] Вот. Ну я не знаю, на самом деле у нас осталось не так много времени до конца пары, поэтому если есть вопросы, то, наверное, это хороший момент их задать.
[01:40:05] А вообще, вы говорили про транзакции, вот мы выделили были две причины, почему в транзакциях используют только метаданные?
[01:40:13] Ну я я же вам назвал главную причину,
[01:40:16] что границу транзакции может установить только разработчик.
[01:40:20] Нет, да.
[01:40:21] Поэтому разработчик транзак если транзакция делает драйвер файловой системы,
[01:40:27] он ничего не может знать про то, где границы транзакции с содержимым файла.
[01:40:32] Да, мы это проговорили.
[01:40:33] Это проговорили. Что?
[01:40:34] Я помню, что вы были причины. Назвали только одну.
[01:40:37] Э ну одна причина вот, вторая причина, что э поскольку э это самое
[01:40:44] э как бы
[01:40:46] стоимость транзакции, она примерно пропорциональна объёму данных, которые в неё включены.
[01:40:53] Спасибо.
[01:40:55] Э-э, ну, да, хорошо, что вы это заметили.
[01:40:58] Соответственно, если мы меняем только метаданные, у нас транзакции будут маленькие. Если мы вносим э в транзакции пользовательские данные,
[01:41:07] то нам реально придётся писать, ну, кстати, опять же, копи файловой системы это и так.
[01:41:13] Потому что журнал, и они тоже вынуждены вести, потому что им надо где-то сохранить то то состояние, которое ещё не вошло в текущий сп.
[01:41:24] А как вот всё-таки помечается место, которое
[01:41:27] Ну, опять же, э тут читать надо, то есть, ну, действительно
[01:41:33] э в общем-то логика, она тоже везде одинакова. То есть хранится какая-то отдельная структура данных с описанием занятого места.
[01:41:41] Э, и это занятое место потом уже в памяти, так сказать,
[01:41:47] через множественные операции объединяется, чтобы получить э настоящее свободное место.
[01:41:54] Угу.
[01:41:54] Вот. И именно поэтому оно э, так сказать, выходит дорого.
[01:42:00] И именно поэтому оно, э требует много памяти.
[01:42:05] Угу.
[01:42:09] Ещё вопросы?
[01:42:11] А можно про флаги вот у журнала, коммиты?
[01:42:14] У нас же получается транзакция состоит из многих операций.
[01:42:18] Так? Да?
[01:42:19] У нас коммит происходит только после того, как все операции произошли в транзакции.
[01:42:24] Э, подождите, э они не завершились.
[01:42:26] Коммит э происходит после того, как мы записали описание всех транзакций в журнал.
[01:42:32] В этот момент никакая из этих операций даже ещё не начиналась.
[01:42:37] А мы изначально предполагаем, что там много транзакций, в каждой из них много операций.
[01:42:41] Да.
[01:42:43] Э то есть каждая э там, на самом деле, если вы посмотрите, как он журнал в реальный. У меня вот есть попытки это описать
[01:42:49] на примере GFS. Э
[01:42:52] то есть там реально идёт так, что каждая запись имеет есть дополнительная пуля и транзакции.
[01:42:57] Угу.
[01:42:58] То есть вот как появился новый транзакция, которого раньше не было, это считается началом транзакции.
[01:43:05] Вот. И потом т - это отдельная запись, которая символизирует конец. Но записи разных транзакций могут быть.
[01:43:14] Ну вот, э по крайней мере, как? Ну, кстати, на самом деле в базах данных чем тоже такой подход?
[01:43:22] Вот.
[01:43:23] А Синк тоже возникает на одну транзакцию?
[01:43:25] Или он на каждую операцию?
[01:43:26] Нет, нет. А как раз Синк делаются на каждую операцию.
[01:43:30] То есть мы можем засинкать часть операции транзакции, э но до конца транзакции не дойти.
[01:43:36] Поэтому когда мы будем накатывать, мы часть операции пере..
[01:43:41] Угу.
[01:43:42] Ой, ну, э как-то, не знаю, не хватит много времени на вопросы, но давайте до.
[01:43:52] (шум аудитории, стулья)
[01:44:03] (бип бип)
[01:44:10] (разговоры, шум) I'm saying