Linux和Windows共享文件的三种方法
第一种 samba共享
1、安装samba:可以先检查下是否已经安装:rpm -qa | grep samba,没有的话自己安装下,这里介绍下基于RPM包的一种在线安装模式yum yum是一种快速安装模式,它会自动解决软件安装时的依赖问题并自动去特定的服务器下载相应的软件进行安装,安装命令:yum install samba
2、创建共享文件夹 mkdir -m 777 /home/default/share
3、修改/etc/samba/smb.conf,这里面的参数就比较多,主要是
workgroup = WORKGROUP(这个就是windows工作组模式,还有一种是域模式)
hosts allow = 192.168.1.100(可以放问的IP地址,这里写的时windows地址)
然后在文件的结尾加上
[public](共享名,就是windows访问时会显示的名称)
comment = Public Stuff(注释)
path = /home/def/share(共享名)
public = yes(公开)
writable = yes(可写)
注:vim /etc/samba/smb.conf. 将security=share. 本人win7系统。
当然这里只是些基础的参数,还有其他的参数根据情况设置,比如会出现乱码,还要指定编码格式。
4、重启smb服务
service smb restart
5、创建samba客户
smbpasswd -a def,回车后会提示输入密码。这个就是将来远程主机登录时需要的密码,这里的def帐号必须是系统已经有的帐号,没有的话会报错,然后新输的密码就是远程登录密码,这样做的好处就是自己的密码和远程登录的密码分开。
6、windows下连接,启动运行,输入\\192.168.1.101,输入smb帐号密码就可以了
第二种 通过NFS来访问主机端共享文件夹
NFS简介:NFS,是Network File System的简写,即网络文件系统。网络文件系统是FreeBSD支持的文件系统中的一种,也被称为NFS. NFS允许一个系统在网络上与他人共享目录和文件。通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件。
NFS最显而易见的好处:
1>本地工作站使用更少的磁盘空间,因为通常的数据可以存放在一台机器上而且可以通过网络访问到。
2>用户不必在每个网络上机器里头都有一个home目录。Home目录 可以被放在NFS服务器上并且在网络上处处可用。
3>诸如软驱,CDROM,和 Zip(是指一种高储存密度的磁盘驱动器与磁盘)之类的存储设备可以在网络上面被别的机器使用。这可减少整个网络上的可移动介质设备的数量。
1、安装nfs服务器
Sudo apt-get install nfs-kernel-server
2、配置NFS服务器
Sudo vi /etc/exports
/source/rootfs *(rw,sync,no_subtree_check,no_root_squash)
Rw:具有读写权限
Sync:文件同步写入到内存和硬盘
no_subtree_check:如果共享的是根目录,则不检查子目录
No_root_squash:如果客户端是root的话,那么他对这个目录具有root的权限
3、重启NFS服务器
Sudo service nfs-kernel-server restart
4、进行挂载测试
Sudo mount -t nfs localhost:/source/rootfs /mnt
Ls -l /mnt
5、卸载
Sudo umount /mnt
第三种 通过9p-virtio来访问主机端共享文件夹
9p-virtio简介: 英文全称为:Plan 9 folder sharing over Virtio - I/O virtualization framework,是一种host和guest端共享文件夹的文件系统服务。目前guest端暂不支持windos系统(系统不支持virtio服务,且mount命令不支持挂载该格式的文件系统)。我测试guest端用的是ubuntu-13.10。
1, 检查host端是否支持9p-virtio。
lsmod | grep 9p
如果已经加载 9p.ko,9pnet_virtio.ko,9pnet.ko,说明已经支持virtio-9p。
如果不支持,需要重新编译kernel或9p对应的模块,并加载到host系统。编译前需要在kernel中添加如下配置选项:
CONFIG_NET_9P=y
CONFIG_NET_9P_VIRTIO=y
CONFIG_9P_FS=y
CONFIG_9P_FS_POSIX_ACL=y
注:如果是模块,将y换成m,建议编译为驱动模块,省时间,’安全性高’。
2,客户端安装linux系统, 我安装的是ubuntu13-10版本。
测试时需要用到root账户,所以先把root账户密码激活,
ubuntu默认root密码不启动,密码激活:sudo passwd root 输入你
装系统时用户的密码,设置root 密码。
将guest关机,通过host端命令启动guest。
3,Host端启动虚拟机命令参数如下:
qemu-kvm –cpu host -m 1024 -enable-kvm
-drive file=/var/lib/libvirt/images/zxc_linux1.img,cache=writeback,if=virtio -localtime
-fsdev local,id=test_dev,path=/var/share,security_model=none
-device virtio-9p-pci,fsdev=test_dev,mount_tag=testmount
-vnc 0.0.0.0:0 -vga cirrus -monitor stdio
启用9p的参数解释如下:
-fsdev fsdriver,id=[id],path=[pathtoshare]
,security_model=[mapped|passthrough|none][,writeout=writeout]
[,readonly][,socket=socket|sock_fd=sock_fd]
-device virtio-9p-pci,fsdev=[id],mount_tag=[mount tag]
Fsdriver: 该选项指定fs驱动端使用,目前支持”only”,”handle”,”proxy”文件 系统驱动。
Id: 用来关联fsdev
Path:host端用来共享的文件夹。
Security_model:应该是共享权限,官方解释是:有效选项被映射,一种是透传模式,一种是none。Proxy文件系统驱动时不需要指定该选项。
-device 指定设备virtio-9p-pci.
Mount-tag:一个标识,用来在guest端mount时的tag。
4,在host端创建要和guest端共享的文件夹
Mkdir /var/share
5,在客户端执行如下命令:
mount -t 9p -o trans=virtio testmount /tmp/shared/ -oversion=9p2000.L,posixacl,cache=loose
-t 标识mount 类型;
-o 标识共享传输方式;
Testmount是mount_tag;
/tmp/shared 是guest端将要挂载到host端共享文件夹的目录。
-oversion是标识9p的版本信息。