LINUX.ORG.RU

Как скрестить ...


0

0

ежа с ужом ramfs и какую-либо «нормальную» ФС?

Никакого практического смысла или приложения вопрос не имеет, но любопытства ради и забавы для. %-)

Положим, что нужно выделить под раздел с временными данными определённый объём. При этом, часть системы разместить в памяти, а часть на диске. Памяти мало. Поэтому, ограничить используемый объём памяти сверху, причём, пока он не достигнут, использовать только память. И, если память не используется, предпочтительно возвращать её системе.

Возможно ли такое сделать и как?

Как пример с ramdisk и LVM:
1. Создавать группу и тома, при загрузке из /dev/ramdisk и /dev/hda, например.
2. Отключить распределение на томе, входящем в группу, чтобы использовался только ramdisk.
3. Затем, проверять как-либо, сколько места осталось на ramdisk. Если мало - включать распределение. Если слишком много - выключать распределение. Возможно делать pvmove.

Правда так и останется проблема: ramdisk будет занимать свои мегабайты. Частично это возможно решить использованием нескольких мелких ramdisk. И чтение будет происходить с диска, в некоторых случаях, если ФС была заполнена, затем, частично почищена.

Но есть ramfs (по аналогии с tmpfs), которая не свопируется, причём, растёт по мере необходимости. И её рост ограничится заданным объёмом. Возможно ли скрестить ramfs с ФС на диске, используя штатные средства?

P.S.: Это не нужно ни для чего. Вопрос возник в связи с темой, но интерес только теоретический, я такого делать не собираюсь.


Ответ на: комментарий от AITap

Ммм... Не слышал про такое. Оно тоже само растёт?
Сейчас почитаю.

a_n
() автор топика
Ответ на: комментарий от AITap

Въехал. Т.е., достаточно просто смонтировать то, что на диске на чтение, а то, что в памяти - на запись. И перемонтировать, по мере необходимости?

a_n
() автор топика
Ответ на: комментарий от AITap

Автоматически? Офигеть. Оказывается, всё просто.

a_n
() автор топика
Ответ на: комментарий от AITap

Перемонтировать, в том смысле, что, когда почти кончится место на системе в памяти, подмонтировать ФС на диске. Когда занятое место, в сумме, будет меньше, чем выделенный объём RAM, хм... Придётся переносить всё с ФС на диске в ФС в памяти каким-либо образом. И отмонтировать ФС, которая на диске. Чего-то, кажется, не то...

a_n
() автор топика
Ответ на: комментарий от AITap

Т.е., как-бы сделать такое, чтобы, при превышении выделенного объёма памяти, подключалась ФС на диске для записи. При уменьшении объёма данных до объёма памяти, в ФС на диске, по крайней мере, прекращалась бы запись.

a_n
() автор топика
Ответ на: комментарий от a_n

Остаётся вопрос что делать с данными, которые остаются на диске. Переносить в ФС, которая в RAM? %-)

a_n
() автор топика
Ответ на: комментарий от AITap

Всё-таки, unionfs немного для другой цели. Вряд ли подойдёт... Не представляю.

a_n
() автор топика
Ответ на: комментарий от a_n

100% MhddFS:
http://svn.uvw.ru/mhddfs/trunk/README.ru.UTF-8
Как раз для такого подходит. Безо всяких lvm, рейдов, перемонтирований и хитрожопых отслеживаний изменения размеров. Надо только смонтировать ramfs в некий каталог и объединить, используя mhdd, задав лимиты.

Спасибо, AITap за ссылки на unionfs. Так бы я, может, и не узнал.

a_n
() автор топика

чувак, а ты вообще в курсе про кэширование? Может ты ищешь то, что у тебя уже давно есть и используется?

gorilych ★★
()
Ответ на: комментарий от system-root

Хм... Немного не то, поскольку оперативки оно всегда занимает фиксированный объём, как я понял. Просто использует сжатие для данных.
Но идея интересная. Спасибо за наводку. :-)
В принципе, ничто не мешает извратиться и использовать её, как RAM диск.
Но вот для сжатого swap'а, как они и рекомендуют, - лучше подходит (к тому же, возможно, что они как-то оптимизировали его для этого).
Если, действительно, взять два swap: один на диске, другой в RAM, приоритеты им разные поставить, то заполняться вначале будет swap в памяти, который сжат. Т.е., память будет использоваться экономнее... Правда, процессор будет сильнее нагружаться. :-(

a_n
() автор топика
Ответ на: комментарий от a_n

>В принципе, ничто не мешает извратиться
если под словом извращение подразумевается прочтение официальной документации, где прямо так и говорят: «вы можете использовать как ramfs»

Правда, процессор будет сильнее нагружаться

интересные выводу вы делаете даже не проверяя, не говоря уже о тестах.

system-root ★★★★★
()
Ответ на: комментарий от gorilych

> чувак, а ты вообще в курсе про кэширование?
В общем. Что сейчас понаделали я не знаю...

Может ты ищешь то, что у тебя уже давно есть и используется?

Вряд ли, в том виде в каком я спрашиваю, это где-то у меня используется. :-)

В общем-то, я уже выше написал, что с помощью MhddFS это возможно просто реализовать. Но про MhddFS я узнал только вчера - после того, как задал вопрос.

В любом случае, почитаю, что ещё напишут по этому поводу.

a_n
() автор топика
Ответ на: комментарий от system-root

> если под словом извращение подразумевается прочтение официальной документации, где прямо так и говорят: «вы можете использовать как ramfs»
Ну официальную документацию, я пока ещё не прочитал.
Я посмотрел несколько примеров использования и вот это:
http://code.google.com/p/compcache/
Везде её предлагают использовать под swap (даже на картинках). Потому и сделал выводы о том, что именно на это они рассчитывали.

интересные выводу вы делаете даже не проверяя, не говоря уже о тестах.

Ну, как-бы, не нужно быть телепатом, чтобы понять: на выполнение сжатия нужны дополнительные ресурсы. Другое дело, что CPU, обычно, используется не очень интенсивно. И я не делал никаких оценок того насколько сильно его использует compcache.

a_n
() автор топика
Ответ на: комментарий от abraziv_whiskey

Он, самый, wi...^W неужто Linux?

a_n
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.