Расширение файла с отображением в памяти в Python (Ma c & Linux) - PullRequest
0 голосов
/ 01 мая 2020

При Windows mmap'd файлы могут автоматически расширяться при открытии, но это не поддерживается в UNIX -подобных системах:

https://docs.python.org/3.7/library/mmap.html

У меня есть существующий набор классов, которые предоставляют журнал только для добавления в Python с использованием mmap, но размер файла установлен на 64 МБ:

https://github.com/cloudwall/serenity/blob/master/src/serenity/tickstore/journal.py

Я хотел бы изменить

    def _check_space(self, add_length: int):
        if self.mm.get_pos() + add_length >= self.max_size:
            raise NoSpaceException()

, чтобы автоматически расширить базовый файл и добавить еще 64 ГБ пространства. В общих чертах я думаю, что я знаю, как это сделать:

  1. Unmap файл
  2. стремиться к концу
  3. добавить 64 МБ нулей
  4. re -карте файла

, но я очень опасаюсь, что при перезапуске я испорчу журнал, если не выполню это должным образом. (Обратите внимание, что у меня в Кубернетесе есть работающие службы, которые собирают данные круглосуточно и без выходных.) Это правильный подход? Можете ли вы безопасно расширить файл в области mmap во время работы?

...