Solaris: монтирование файловой системы на обработчиках приложения - PullRequest
0 голосов
/ 06 декабря 2010

При монтировании файловой системы NFS вся обработка данных проходит через клиент nfs.Как я могу написать свои собственные обработчики, чтобы использовать что-то отличное от NFS?

Альтернативой может быть NFS-сервер localhost, но такой шов ужасно неэффективен

Редактировать

Пример того, что должно произойти

Обычно с файловой системой, которую вы получаете: приложение читает / записывает файловую систему, Solaris видит, где оно смонтировано и, если это диск, то читает / записывает диск.Если это программное зеркало, оно читает и пишет в программное обеспечение зеркала.Если это NFS, он читает и пишет на удаленный сервер NFS.Я хочу, чтобы он считывал и записывал в пользовательское программное обеспечение для хранения вместо любой из вышеупомянутых опций.

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

Старые / существующие приложения не знают о нашем новом программном обеспечении.Все, что они знают, это читать / писать каталог.Мы могли бы сказать Solaris, что каталог был размещен в NFS, а затем сервер NFS транслируется и подключается к программному обеспечению хранилища.Мы бы предпочли рассказать Solaris о нашей новой программе, о которой Solaris никогда не слышал, а затем научить Solaris разговаривать с нашей программой.

Ответы [ 3 ]

1 голос
/ 06 декабря 2010

Для меня это звучит так, как будто вам нужно создать псевдофайловую систему.Solaris использует VFS (виртуальную файловую систему), в которой вы можете использовать разные файловые системы, представленные как единая структура для пользовательского пространства.Когда вы монтируете файловую систему UFS или NFS или WHATEVER, пользователи и приложения могут использовать независимые от файловой системы инструменты для взаимодействия с VFS.

Это означает, что вам нужно создать псевдофайловую систему;файловая система, которая управляет операциями vnode и vfs (интерфейс системного вызова VFS), такими как read (), write () и т. д., и связывает их (решает, что делать, когда кто-то открывает конкретный файл и т. д.), с сервером базы данныхна ваш выбор.

Подробнее:

http://developers.sun.com/solaris/articles/solaris_internals_ch14_file_system_framework.pdf

Звучит как большая задача ...

С уважением, JGR

0 голосов
/ 07 декабря 2010

NFS - это не монтирование каталога в программном обеспечении, а монтирование удаленного общего ресурса в каталоге.Независимо от того, является ли устройство хранения удаленным или нет, это не имеет большого значения, оно все еще проходит через уровни программного обеспечения ядра.Solaris использует VFS для предоставления первого уровня.Вы должны реализовать основной.Это было бы довольно сложной задачей для тех, кто уже знаком с VFS.Поскольку вы, очевидно, не знакомы с написанием кода ядра, я был бы очень пессимистичен относительно вашего проекта ...

То, что я бы предложил вам сделать вместо этого, было бы более простым и менее рискованным подходом.Реализуйте библиотеку вставок, которая будет перехватывать код ввода-вывода приложения (открывать, читать, писать, закрывать и т. Д. Или, возможно, libc fopen, fwrite, вы должны выяснить, какое место лучше всего вставлять) и вызывать программное обеспечение для хранениявместо этого.

Вот простой пример процесса: http://developers.sun.com/solaris/articles/lib_interposers.html

0 голосов
/ 07 декабря 2010

Возможно, вы захотите взглянуть на некоторые серверы CIFS.У Alfresco есть JCIFS, который является библиотекой CIFS-сервера на Java.Это позволяет вам представлять ресурсы в виде файлов, как если бы они находились в системе Windows.Таким образом, это означает, что программы могут «монтировать» эти серверы CIFS, и вы можете публиковать данные из вашей базы данных с помощью этого механизма.

Я не использовал их, но это звучит как то, что вы хотите сделать и, возможно,Возможно, вы захотите посмотреть.

Существует также FUSE, который позволяет вам создавать собственные файловые системы в «пользовательском режиме», а не взламывать ядро.Работает на Unix и Mac OS, может быть и версия для Windows.Теоретически это может сделать что угодно.

Например, есть примеры, которые позволяют вам монтировать удаленную систему через SSH, используя систему FUSE.Они, как правило, написаны на C / C ++.

...