Алгоритм ротации indexdb
Первоначальное создание indexdb каталога:
-
После initial-запуска vmstorage, в каталоге
{storageDataPath}/indexdb
создаются три каталога с именами в виде хеша. -
Каталоги предназначены для хранения indexdb.
-
Один из каталогов, назовём его Previous, предназначен для хранения «Предыдущего» indexd- Второй — Current, то есть хранит «Актуальную» indexd. Третий — Next, обычно это пустой каталог. Далее будет объяснена ротация indexdb в этих каталогах.
Предположим, что на данный момент |
Сейчас состояние каталогов в indexdb-директории такое:
-
Previous-директория — пустая.
-
Current-директория — содержит огромный растущий indexdb.
-
Next-директория — пустая.
Например, через месяц, за час до retention-события:
-
Previous-директория — пустая.
-
Current-директория — содержит огромный indexdb, рост которого прекращается.
-
В Next-директории — начинается создание нового indexdb.
Наступило retention-событие:
-
Пустая Previous-директория удаляется.
-
Current-директория, содержащая огромный, но уже статичный, indexdb, становится Previous-директорией.
-
Next-директория, с маленьким новым растущим indexdb, становится Current-директорией.
-
Создаётся новая пустая Next-директория.
Через несколько месяцев после retention-собятия:
-
Previous-директория — содержит статичный indexdb с "историческими" данными.
-
Current-директория — содержит подросший и увеличивающийся "актуальный" indexdb.
-
Next-директория — пустая.
После второго retention-события:
-
Цикл повторится и indexdb в Previous-директории пропадёт вместе с директорией.
-
Current-директория c новым статичным, теперь «историческим», indexdb станет Previous-директорией.
-
А Next-каталог с новым растущим indexdb превратится в Current-директорию.
|