用于python的nfs客户端。

libnfs的Python项目详细描述


此模块是一个用于python的nfs客户端。
此项目托管在https://github.com/sahlberg/libnfs python

此模块取决于libnfs库。
在使用此模块之前,必须先安装libnfs。
libnfs可以在https://github.com/sahlberg/libnfs上找到nfs和nfsfh。
nfs表示一个描述装入点的nfs上下文。
nfsfh是实现nfs文件类文件对象的主要类。




license
===
此模块在lgpl版本2.1下分发。
请参阅复制以获取此许可证的全文。



context full在context full模式下,首先需要装载nfs共享并创建nfs上下文,然后才能访问任何文件。然后,此nfs上下文将用于
将来对该装入点中文件的所有访问。


此模式的好处是,由于执行实际的nfs装入非常昂贵,因此只需执行一次,在创建nfs对象时
,并且可以对以后要访问的任何文件重新使用装载。


在此模式下,绝对路径相对于nfs对象的装载点。


示例:
--
import libnfs
nfs=libnfs.nfs('nfs://127.0.0.1/data/tmp/')
a=nfs.open('/foo test',,mode='w+')
a.write(“test string”)
a.close()
print nfs.open('/foo test',mode='r').read()



context free access
=====
此模块还提供了一种模式,您可以直接打开和访问类似文件的对象,而无需首先实例化nfs装载。
在这种情况下,类似文件的对象将在文件类对象的生命周期内,在内部创建一个nfs mount
函数。

在此模式下,使用指向文件的nfs url


调用libnfs.open()函数示例:
--
import libnfs
a=libnfs.open('nfs://127.0.0.1/data/tmp/foo test',mode='w+')
a.write(“测试字符串”)
a.close()
print libnfs.open('nfs://127.0.0.1/data/tmp/foo test',mode='r').read()

首先,我们创建并写入文件,第二次读取并打印文件。然而,这既昂贵又可能性能不佳。
原因是,当我们使用类似于无上下文文件的对象时,我们必须为每个对象在内部创建一个nfs装载,这很昂贵。

基本上,在创建nfs装载时,nfs协议要求我们执行以下操作/往返:

发送portmapper getport命令以获取mount daemon在哪个端口上运行。
关闭TCP连接。
4、建立到mount daemon的TCP连接
5、发送mount null命令以验证mount daemon是否活动。
6、发送mount mnt命令以获取装入点的nfs文件句柄。
关闭TCP连接。
7,建立到服务器上端口映射器(TCP端口111)的TCP连接。
8,发送一个端口映射器空命令,以验证我们是否连接到真正的端口映射器,并且它是否处于活动状态。
9,发送portmapper getport命令以获取守护进程
正在运行的端口。
关闭TCP连接。
10、建立到nfs守护进程的TCP连接
11、发送nfs空命令以验证nfs守护进程是否活动。
12、发送nfs fsinfo命令以获取有关
文件系统的一些基本信息我们只是已装入。
13,发送nfs getattr命令以获取有关此装入的根目录的一些信息。

使用无上下文句柄时,我们必须在每次创建一个新的类文件对象时执行这些步骤,这会使其非常昂贵。

缺点是每个上下文无关的句柄都必须在内部执行自己的nfs挂载。如果您计划访问多个/多个文件,则应考虑使用上下文完整句柄。




欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java使用唯一的按钮标签单击按钮   代码生成如何使用Java codeModel为数组的特定索引赋值   java如何批量执行Camel SQL插入   java iText 7将ltv添加到现有签名   内存管理Java应用程序突然停止几天后(810)   带MySQL的java注册表单JavaFX在intellij中失败   如何使用eclipse为windows azure java项目启用远程调试   一种通用的java输入输出设计模式   java Android XML(RSS)忽略引号(“”)   java帮助:安卓中的8 X 10 2维按钮数组   java启动Android项目   JWrapper构建java应用程序   java如何在Android应用程序中设置基于日期/时间的默认页面加载?   java循环程序在完成后返回到起点   java Hibernate:更好的整体类还是多类映射?   回溯数独解算器的递归问题[Java]   java查找类用法   java如何在SpringWebFlow中将多个模型绑定到一个视图?