При 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 ГБ пространства. В общих чертах я думаю, что я знаю, как это сделать:
- Unmap файл
- стремиться к концу
- добавить 64 МБ нулей
- re -карте файла
, но я очень опасаюсь, что при перезапуске я испорчу журнал, если не выполню это должным образом. (Обратите внимание, что у меня в Кубернетесе есть работающие службы, которые собирают данные круглосуточно и без выходных.) Это правильный подход? Можете ли вы безопасно расширить файл в области mmap во время работы?