2016-03-20 3 views
2

Использование memcached с сокетами домена unix, есть ли файловая система для чтения/записи? Если это так: разве это не сторона вниз для инструментов, которые пытаются уменьшить или полностью очистить работу любой файловой системы?does unix domain socket выполняет любую файловую систему читать запись?

Или по-другому спросить, есть ли возможность использовать только память для сокета домена unix?

Я до сих пор не уверен, использует ли Unix Domain Sockets файловую систему или нет, я не парень C, но мало обзор о реализации https://github.com/torvalds/linux/blob/master/net/unix/af_unix.c, что я вижу, что есть использование файловой системы. Так разве это не просто работа над памятью?

Редактировать: После прочтения моего вопроса и описания, я знаю, что я задал много вопросов, и сам вопрос почти отличается от описания. Я хочу заполнить информационные пробелы в моем сознании, извините за смешанный вопрос.

ответ

2

Ядро linux per-se не сохраняет никаких внутренних данных или данных приложения. Вы можете использовать все функции ядра без установки диска вообще.

Вы должны различать файловую систему и диски. Файловая система может быть полностью виртуальной, она может находиться в памяти или в сети.

Некоторые операции POSIX используют пути как уникальные идентификаторы, включая UNIX-сокеты. Путь присутствует только в качестве идентификатора. Вы можете поместить его в tmpfs, например, чтобы избежать использования диска. В современной Linux-системе /tmp/ обычно устанавливается на tmpfs.

Обратите внимание, что даже если конечная точка вашего сокета лежит внутри файловой системы, находящейся на диске, использование диска по-прежнему незначительно. Поскольку путь используется только для идентификации/поиска самого сокета, ни одна из фактических данных никогда не записывается на диск. И ядро ​​также будет кэшировать путь в памяти.

+0

спасибо @ypnos, я думаю, что пропустил некоторые базовые точки, в моем локальном Linux, я вижу, что есть 5 'tmpfs filesystem' и несколько путей, установленных на. Например: '/ run', но я вижу, что есть файл сокета, который находится в'/var/run/libvirt/libvirt-sock', но '/ var/run' не установлен на tmpfs, что означает, что он, вероятно, находится в/dev/sda3, так это значит, что файл сокета точно записывается на диск? или существует ли какая-либо базовая концепция? – FZE

+0

Я отредактировал свой ответ всего минуту назад, чтобы прояснить эту проблему. См. Последний абзац. – ypnos

+0

Я вижу благодарность за дальнейшее разъяснение: «Ядро linux per-se не сохраняет никаких внутренних данных или данных приложения». Тогда это эмпирическое правило! – FZE