待整理
转自:
http://blog.csdn.net/yuanbinquan/article/details/51734705
简介
CIFS (Common Internet File System)
通用Internet文件系统
在windows主机之间进行网络文件共享是通过使用微软公司自己的CIFS服务实现的。
功能
CIFS 可以使您达到以下功能:
1.访问服务器本地文件并读写这些文件
2.与其它用户一起共享一些文件块
3.在断线时自动恢复与网络的连接
4.使用统一码(Unicode)文件名:文件名可以使用任何字符集,而不局限于为英语或西欧语言设计的字符集。
优点
一般来说,CIFS使用户得到比FTP更好的对文件的控制。它提供潜在的更直接地服务器程序接口,这比使用HTTP协议的浏览器更好。CIFS最典型的应用是windows用户能够从“网上邻居”中找到网络中的其他主机并访问其中的共享文件夹。
CIFS 是开放的标准而且已经被作为Internet应用程序标准被提交到IETF。
用于Java与DCom通信的开源第三方库J-Interop就是利用CIFS协议实现的。
CIFS和NFS的对比
(1)CIFS面向网络连接的共享协议,对网络传输的可靠性要求高,常使用TCP/IP;NFS是独立于传输的,可使用TCP或UDP;
(2)NFS缺点之一,是要求client必须安装专用软件;而CIFS集成在OS 内部,无需额外添加软件;
(3)NFS属无状态协议,而CIFS属有状态协议;NFS受故障影响小,可以自恢复交互过程,CIFS不行;从传输效率上看,CIFS优于NFS,没用太多冗余信息传送;
(4)两协议都需要文件格式转换,NFS保留了unix的文件格式特性,如所有人、组等等;CIFS则完全按照win的风格来作。
使用
在实际应用中,当linux需要挂载window上的目录上,大家首先想到的是samba和VM tools等工具,其实cifs是最简单用法,它不需要你安装任何工具,是windows和linux自带功能。
window端:
首先在你windows上建立共享文件夹,目录 E:\nfs, 用户: Everyone , 权限:所有权限 ,详细信息如下:
这样windows端设置完成。
Linux端:
x86:
这里以ubuntu为例,默认时支持cifs文件系统的,不需要做任何配置。直接使用mount命令挂载即可
在确保linux系统可以ping通windows系统的前提下,使用一下命令。
#mount -t cifs -o username=Everyone,password=‘‘ //192.168.88.77/nfs /mnt
用户名:username与windows设置一致Everyone,密码password为空, 192.168.88.77为你的windows系统的ip地址, mnt 为你linux系统下的挂载目录位置
#ls /mnt
即可查看到windows上的共享目录了。
arm:
这里以arm9+linux系统为例
在嵌入式设备上,默认的内核是不支持cifs文件系统的,所以在编译内核时需要是能cifs文件系统的支持,方法如下:
这样内核就支持cifs文件系统了,接下来可以直接使用mount命令,当然有同样的前提,你的arm板必须能够ping通你的windows系统ip。
#mount -t cifs -o username=Everyone,password=‘‘ //192.168.88.77/nfs /mnt
用户名:username与windows设置一致Everyone,密码password为空, 192.168.88.77为你的windows系统的ip地址, mnt 为你linux系统下的挂载目录位置
#ls /mnt
即可查看到windows上的共享目录了。
如果在ls时,报如下错误:
ls: can‘t open ‘.‘: Value too large for defined data type
发现在mount的时候加上“nounix,noserverino”选项后,就不再出现这个问题了,因此完整的mount命令可能如下:
#mount -t cifs -o username=Everyone,password=‘‘,nounix,noserverino //192.168.88.77/nfs /mnt