安装NFS文件系统时,所有数据处理都通过nfs客户端进行。如何编写自己的处理程序以使用NFS之外的其他东西?
另一种选择是本地主机NFS服务器,但接缝非常低效
修改
应该发生什么的例子
通常使用文件系统:app读取/写入文件系统,Solaris查看它的安装位置,如果是磁盘则读取/写入磁盘。如果是软件镜像,它会读取和写入镜像软件。如果它是NFS,它会读取和写入远程NFS服务器。我希望它能够读取和写入自定义存储软件,而不是任何上述选项。
我们的存储软件用于存储应用程序使用的文件,它适用于未存储在数据库中的大量或经常更换的数据块。它还包括我们公司特定的一定灵活性。
旧/现有应用程序不了解我们的新软件。他们所知道的只是读/写一个目录。我们可以告诉Solaris该目录是在NFS上托管的,然后NFS服务器会转换并连接到存储软件。我们更愿意告诉Solaris我们从未听过的新程序,然后教Solaris如何与我们的程序对话。
答案 0 :(得分:1)
对我而言,这听起来像你必须创建一个伪文件系统。 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
答案 1 :(得分:0)
您可能想要查看一些CIFS服务器。 Alfresco有JCIFS,它是Java中的CIFS服务器库。它允许您将资源显示为文件,就像它们在Windows系统上一样。因此,这意味着程序可以“挂载”这些CIFS服务器,您可以通过该机制从数据库发布数据。
我没有使用它,但这听起来像你想要做的事情,也许你可能想要了解它。
还有FUSE,它允许您以“用户模式”创建自定义文件系统,而不必破解内核。它适用于Unix和Mac OS,也可能有Windows版本。从理论上讲,这可以做任何事情。
例如,有些实例允许您使用FUSE系统通过SSH挂载远程系统。这些往往是用C / C ++编写的。
答案 2 :(得分:0)
NFS不是在软件上安装目录,而是在目录上安装远程共享。无论存储设备是否是远程存储设备并不重要,它仍然通过内核软件层。 Solaris使用VFS提供第一层。你应该实现底层的。对于已经熟悉VFS的人来说,这将是一项相当困难的任务。由于你显然不熟悉编写内核代码,我对你的项目非常悲观......
我建议你做的是一种更简单,风险更小的方法。实现一个插入库,拦截应用程序I / O代码(打开,读取,写入,关闭等等,或者可能是libc fopen,fwrite,你必须弄清楚插入的最佳位置)并调用你的存储软件代替。
以下是该过程的一个简单示例: http://developers.sun.com/solaris/articles/lib_interposers.html