Я хочу создать виртуальный диск Linux фиксированного размера, который никогда не будет перезаписываться на диск. Обратите внимание, что мой вопрос не в том, «почему», я хочу это сделать (скажем, например, для образовательных целей или для исследований): вопрос в том, как это сделать.
Как я понимаю, ramfs
размер не может быть ограничен, поэтому он не соответствует моему требованию иметь виртуальный диск фиксированного размера.
Также кажется, что это tmpfs
может быть заменено на диск. Так что это не соответствует моему требованию никогда не обмениваться на диск.
Как создать виртуальный диск Linux фиксированного размера, который никогда не будет заменен на диск?
Можно ли, например, создать tmpfs
внутри ramfs
(будет ли такое решение соответствовать моим требованиям) и если да, то как?
Обратите внимание, что производительность не является проблемой, и виртуальный диск заполняется и вызывает ошибки «диск заполнен» также не проблема.
источник
ram
устройстваdev
. Если нет, попробуйтеmodprobe rd
.Ответы:
Это всего лишь мысль, и у нее больше одного недостатка, но в любом случае ее вполне можно использовать.
Как насчет создания файла образа и файловой системы внутри него поверх ramfs, а затем монтирования образа как устройства цикла? Таким образом, вы можете ограничить размер виртуального диска, просто ограничив размер файла изображения. Например:
В приведенном выше (несколько слишком длинном) примере файл изображения создается размером 2 мегабайта, и при попытке записать на него более 2 мегабайт запись просто завершается сбоем, поскольку файловая система заполнена.
Одно очевидное сокращение всего этого, конечно, заключается в том, что здесь есть много дополнительной сложности, но, по крайней мере, для академических целей этого должно быть достаточно.
источник
В (датированной!) Книге «Драйверы устройств Linux» Корбета, Рубини и Кроа-Хартмана есть пример драйвера, который просто выделяет фиксированную область памяти для дурачения. Не файловая система, но ...
источник
Не может быть сделано Вся оперативная память подлежит разбиению по страницам как на аппаратную часть процессора, так и на структуру микроядра Linux. НЕТ законных причин обращаться с памятью иначе. ВСЕ программные алгоритмы МОГУТ быть адаптированы для использования схемы кэширования файлов и страничной памяти. Виртуальные ВСЕГДА лучше и эффективнее.
RAM-диски ограниченного размера идут вразрез с основополагающими принципами виртуального мира. Вы должны предположить, что к файловой системе хоста отправляются только полезные запросы файлов и что все такие запросы имеют одинаковую важность и приоритет в виртуальном мире (единственная модель, которая учитывается).
Математически доказано, что даже процессы в реальном времени соответствуют этому правилу. Если у вас возникла проблема со скоростью, она НИКОГДА не может быть решена путем использования ОЗУ в качестве хранилища == вся хост-система должна работать быстрее от процессора до шины ввода-вывода и до постоянного запоминающего устройства. Все проблемы, кроме искусственных вырожденных вычислений, имеют достаточные ветки и требования к вводу / выводу файлов, чтобы среднее увеличение скорости кэширования ОЗУ было лучшим, что вы можете сделать.
источник
mlock()
,mlock2()
иmlockall()
заблокируйте часть или все виртуальное адресное пространство вызывающего процесса в ОЗУ, предотвращая перенос этой памяти в область подкачки».