用于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第三方库


热门话题
javajexcel包装文本问题   EclipseJavaEnum缩进超过左括号。如何让它看起来更正常?   java有办法包含Tomcat 6 catalina。out和localhost。在网络应用的日志文件中记录内容?   java如何永久性地阻止JavaFX代码在eclipse中被突出显示为错误?   如何在java中优化两个for循环(for循环中的for循环)   java如何在我的windows机器上从jar文件创建mac osx的可执行文件   使用记忆化/动态规划的Java组合学   Java中的游荡对象垃圾收集   java为什么我在JSP和JDBC和MySQL中遇到连接失败错误   java轮询Pod的就绪状态   如何创建电子邮件并将其发送到Java中的特定地址?   java如何修复Dagger 2错误“。。。无法提供[…]”?   java Android单选按钮看起来太轻   Android Studio:开发在应用程序之间共享的通用java库