zoukankan      html  css  js  c++  java
  • 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:windowssystem32driversetclmhosts.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_MACHINESOFTWAREMicrosoftClientForNFSCurrentVersiondefault,增加两项:AnonymousUid,AnonymousGid,然后重启客户端,再mount。

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

         Client for NFS Service Failure

    解决方法:

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

    HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlNetworkProvider

    三,通过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的版本信息。

  • 相关阅读:
    替换指定串函数
    实现超级链接
    面向对象的关系数据库设计
    SQL语句的添加、删除、修改多种方法
    InfoWorld2008最佳开源软件大奖
    判断字符是否是汉字
    delphi指针
    项目经理要“三心二意”
    Linq查询Specified cast is not valid异常的常见原因
    SQL SERVER数据库同步示例
  • 原文地址:https://www.cnblogs.com/zxc2man/p/3459538.html
Copyright © 2011-2022 走看看