host与guest间共享文件夹的三种方法(原创)

一,用samba实现host与guest共享文件

Samba简介:SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。

 

1,在host上创建共享文件夹,并设置权限。

Mkdir /var/share

Chmod 777 /var/share

我们访问该共享文件夹都是以others用户来访问的,所以others组权限要设置为7.也就是对应的最后一个7。

2,  检查是否已安装samba: rpm -qa | grep samba

samba-common-3.6.9-151.el6_4.1.x86_64
samba-3.6.9-151.el6_4.1.x86_64
samba-winbind-clients-3.6.9-151.el6_4.1.x86_64
samba-client-3.6.9-151.el6_4.1.x86_64
samba-winbind-3.6.9-151.el6_4.1.x86_64      

   Samba安装包说明:

   samba-common-xx //主要提供samba服务器的设置文件与设置文件语法检验                      程序

   samba-client-xx//客户端软件,主要提供linux主机作为客户端时,所需要                     的工具指令集

   samba-xx       //服务器端软件,主要提供samba服务器的守护程序,共享                     文档,日志的轮替,开机默认选项

否则,安装samba软件包:

       Yum install samba

3,设置配置文件,添加一个共享文件夹,并设置权限。

 vi smb.conf,在配置文件中添加如下内容:

       [share]

       path = /var/share  //指定共享目录

       available = yes

        browseable = yes  //设置为no表示所有Samba用户的宿主目录不能被看到,                    只有登录用户才能看到自己的宿主目录共享;这样设置                        可以加强Samba服务器的安全性。

       public = yes                //该目录对所有samba用户可见

       writeable =yes           //设置共享目录是否可写

 

4,创建账户

Touch  /etc/samba/smbpasswd

Useradd  test1

Passwd   test

Smbpasswd –a test1.

OK,创建好账户test1.

注意:smb账户首先必须是系统账户。所以先创建系统账户。

5,修改客户机(例如xp)的C:\windows\system32\drivers\etc\lmhosts.sam

在文件最后添加如下内容:

10.0.2.4 smbserver

该操作可以增加访问smb的IP。默认是10.0.2.2;

注:该步骤可省略。

6,重启主机的samba服务。Service smb restart

7,  在host端通过命令启动虚拟机,增加选项:-smb  /var/share

8,  在客户机运行中输入: \\10.0.2.4或10.0.2.2访问主机共享文件夹。

 

二,通过NFS来访问主机端共享文件夹

NFS简介:NFS,是Network File System的简写,即网络文件系统。网络文件系统是FreeBSD支持的文件系统中的一种,也被称为NFS. NFS允许一个系统在网络上与他人共享目录和文件。通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件。

NFS最显而易见的好处:

       1>本地工作站使用更少的磁盘空间,因为通常的数据可以存放在一台机器上而且可以通    过网络访问到。

       2>用户不必在每个网络上机器里头都有一个home目录。Home目录 可以被放在NFS         服务器上并且在网络上处处可用。

       3>诸如软驱,CDROM,和 Zip(是指一种高储存密度的磁盘驱动器与磁盘)之类的存储    设备可以在网络上面被别的机器使用。这可减少整个网络上的可移动介质设备的数量。

 

1,首先检查NFS是否安装

 rpm -qa | grep nfs

nfs-utils-1.2.3-15.el6.x86_64

nfs-utils-lib-1.1.5-4.el6.x86_64  负责NFS命令与监控程序

rpcbind-0.2.0-8.el6.x86_64     支持安全NFS RPC服务的连接

注:centos5和redhat早期版本都是portmap服务,后期版本改名为rpcbind。

默认装系统时会自动安装。

若没有安装用yum install安装。

简单介绍NFS系统守护进程:

 •nfsd:它是基本的NFS守护进程,主要功能是管理客户端是否能够登录服务器;

 •mountd:它是RPC安装守护进程,主要功能是管理NFS的文件系统。当客户端顺利通过nfsd登录NFS服务器后,在使用NFS服务所提供的文件前,还必须通过文件使用权限的验证。它会读取NFS的配置文件/etc/exports来对比客户端权限。

 •rpcbind:主要功能是进行端口映射工作。当客户端尝试连接并使用RPC服务器提供的服务(如NFS服务)时,rpcbind会将所管理的与服务对应的端口提供给客户端,从而使客户可以通过该端口向服务器请求服务。

2,配置NFS服务:

/etc/exports                 NFS服务的主要配置文件

/usr/sbin/exportfs            NFS服务的管理命令

/usr/sbin/showmount         客户端的查看命令

/var/lib/nfs/etab              记录NFS分享出来的目录的完整权限设定值

/var/lib/nfs/xtab              记录曾经登录过的客户端信息

   创建共享文件夹 /var/share;

   配置/etc/exports:

/var/share  *(rw,no_root_squash)

第一项是共享文件夹路径

   *表示所有IP段可以访问;也可以指定具体IP或IP段

   Rw表示可读写。RO表示只读

   No_root_squash表示root权限访问文件夹

3,启动NFS服务

Service nfs  restart

showmount -e  //默认查看自己共享的服务,前提是要DNS能解析自己,                                        不然容易报错

showmount -a  //显示已经与客户端连接上的目录信息

4,在windos端挂载nfs文件服务。默认windos是不支持该服务,

我们需要下载Microsoft Windows Services for UNIX 3.5 免费插件。下载地址如下:

http://download.microsoft.com/download/a/1/c/a1ca7af1-a6e3-46e7-874a-4c5d8c0fb3b7/SFU35SEL_EN.exe

   解压该程序到C:/SFU35SEL_EN,执行SFU_SETUP。这样只会安装Clien for NFS.

5, 检查客户端nfs for client服务是否启动,否则启动该服务。

6, 检查客户端user mapping服务是否启动,否则启动该服务。

  通过计算机-管理-服务  来查看。

7,  打开Services for UNIX Administrator

* 设定User Name Mapping

  在Configuration选项卡中选择User Password and Group files

  把要挂载的系统的文件夹中的/etc/passwd, /etc/group文件拷贝到C:

  导入到Configuration中

* 设定Maps

在Advanced maps中选择 Show User Maps

点击List Windows User , List UNIX User(因为我们已经把passwd和group文件导入进来了)

      在List中选择Windows和UNIX下的用户名。点击Add后如下图:.

8, 打开CMD,我们终于可以挂载共享文件夹了:

Cd  C:/SFU/common

mount 192.168.16.xx:/var/share  d:

d盘是将共享文件夹挂载到客户端的盘符。

9, 注意:主机端共享文件夹权限设置要合理。默认是others只读。客户端访问共享文件夹时都是以others用户权限访问,所以必要时给others用户组写权限。否则无法创建文本文档等。

若以上步骤执行后还是不可写,修改客户端注册表:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\default,增加两项:AnonymousUid,AnonymousGid,然后重启客户端,再mount。

 

10,        在系统启动时如果出现如下错误:

     Client for NFS Service Failure

解决方法:

修改客户端注册表:添加RestoreConnection项并设置为0.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\NetworkProvider\

 

三,通过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。如下图是已经支持9p的:

   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的版本信息。

转载于:https://www.cnblogs.com/zxc2man/p/3459538.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值