Файловая система Linux автоматически поддерживается на диске, но полностью хранится в памяти? - PullRequest
7 голосов
/ 18 июля 2009

Мне нужно сделать много небольших случайных обращений к целой пачке файлов. У меня более чем достаточно основной памяти для хранения всех данных.

Когда я копирую данные во временную файловую систему ramfs и обрабатываю их там, это займет лишь небольшую долю времени, которое займет ожидание доступа к диску.

Существует ли файловая система Linux, которая хранит все свои данные в основной памяти, записывает какие-либо изменения на резервный диск, но никогда не касается диска для каких-либо операций чтения?

Если нет, скажем, можно ли настроить кэши ext3 таким образом, чтобы они гарантированно содержали 100% данных и метаданных?

Ответы [ 3 ]

8 голосов
/ 18 июля 2009

Если вы только читаете данные, то вы действительно можете настроить кэширование так, чтобы все данные были кэшированы в ОЗУ - см. /Usr/src/linux/Documentation/sysctl/fs.txt vm.txt для деталей о том, что вы можете настроить здесь. Проблема возникает, когда вы пишете данные, особенно если вы используете fsync () или подобное, чтобы гарантировать, что данные были записаны на фактический диск.

Поскольку операционная система имеет для обновления диска в случае fsync(), вы ничего не можете сделать, если по-прежнему хотите убедиться, что ваши данные непротиворечивы и не будут потеряны в отключение питания.

Одной из проблем, с которыми вы можете столкнуться, является atime или время доступа - по умолчанию при каждом обращении к файлу время доступа обновляется в inode. Это приведет к записи на диск, даже если вы думаете, что просто выполняете чтение. Это может быть особой проблемой в вашем сценарии, когда вы получаете доступ ко многим маленьким файлам. Если вам не нужно отслеживать время доступа, вы можете смонтировать свою файловую систему с помощью noatime, чтобы отключить эту «функцию».

1 голос
/ 18 июля 2009

Почему бы вам не попытаться создать зеркало RAID между виртуальным диском и физическим диском?

Не уверен, что это эффективно, хотя. Если зеркало всегда должно синхронизироваться, ему все равно придется ждать диска, когда вы пишете, но для чтения вы должны получить что-то. Но да, для меня это выглядит очень сложным, кеширование квадратного ввода-вывода заново изобретено:)

Был бы хороший эксперимент, хотя.

0 голосов
/ 20 августа 2012

взгляните на это:

http://freecode.com/articles/virtual-filesystem-building-a-linux-filesystem-from-an-ordinary-file

Вы можете смонтировать файл как FS на RAM-диск, а затем сделать его резервную копию как файл.

Не уверен, что вы хотите часто выполнять резервное копирование, но это хорошее решение для сохранения всего виртуального диска всего за один раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...