精华内容
下载资源
问答
  • NFS,全称是 Network File System,用于在不同的服务器之间建立文件共享的通道,使得从其他服务器上访问共享目录时,就如同访问服务器自己本地的文件夹一样方便,这在分布式系统上得到广泛的应用。比如, k8s 集群,...
  • nfs samba 文件共享

    2017-08-15 13:24:54
    通过实战的部署文件共享服务来更加深入的了解Samba服务中每一行参数的作用,并在实验最后分别使用Windows系统和Linux系统访问文件共享资源,为今后生产环境中灵活使用文件共享服务打下实战基础。 通过配置NFS网络...

    首先会通过比较文件传输和文件共享两种资源交换方式来引入Samba服务的理论知识,介绍SMB协议和Samba服务程序的来由和发展过程。通过实战的部署文件共享服务来更加深入的了解Samba服务中每一行参数的作用,并在实验最后分别使用Windows系统和Linux系统访问文件共享资源,为今后生产环境中灵活使用文件共享服务打下实战基础。

    通过配置NFS网络文件系统服务使得Linux系统之间共享文件的工作变得更加简单,实战部署NFS服务来实现多台Linux系统之间的资源挂载使用,然后学习Autofs服务来更好的管理设备挂载信息,不仅能够正常的满足设备挂载使用的需求,还能进一步降低服务器带宽和CPU计算资源不必要的浪费开销。


    Samba服务程序的配置方法跟以前学习过的服务很相似,首先需要先通过yum软件仓库来安装samba服务程序,这款软件也恰巧是软件包的名字,很好记吧~:

    [root@linuxprobe ~ ]# yum install samba
    Loaded plugins: langpacks, product-id, subscription-manager
    ………………省略部分输出信息………………
    Installing:
     samba x86_64 4.1.1-31.el7 rhel 527 k
    Transaction Summary
    ================================================================================
    Install 1 Package
    Total download size: 527 k
    Installed size: 1.5 M
    Is this ok [y/d/N]: y
    Downloading packages:
    Running transaction check
    Running transaction test
    Transaction test succeeded
    Running transaction
     Installing : samba-4.1.1-31.el7.x86_64 1/1 
     Verifying : samba-4.1.1-31.el7.x86_64 1/1 
    Installed:
     samba.x86_64 0:4.1.1-31.el7 
    Complete!
    

    安装后打开Samba服务程序的主配置后发现竟然有320行呢!有没有被吓到?但仔细一看发现其实大多都是以#(井号)开头的注释信息行,既然您手中已经拥有了刘遄老师的经验之书,就肯定不会让您去“死啃”这些东东的~:

    [root@linuxprobe ~]# cat /etc/samba/smb.conf 
    # This is the main Samba configuration file. For detailed information about the
    # options listed here, refer to the smb.conf(5) manual page. Samba has a huge
    # number of configurable options, most of which are not shown in this example.
    #
    # The Official Samba 3.2.x HOWTO and Reference Guide contains step-by-step
    # guides for installing, configuring, and using Samba:
    # http://www.samba.org/samba/docs/Samba-HOWTO-Collection.pdf
    #
    # The Samba-3 by Example guide has working examples for smb.conf. This guide is
    # generated daily: http://www.samba.org/samba/docs/Samba-Guide.pdf
    #
    # In this file, lines starting with a semicolon (;) or a hash (#) are
    # comments and are ignored. This file uses hashes to denote commentary and
    # semicolons for parts of the file you may wish to configure.
    #
    # Note: Run the "testparm" command after modifying this file to check for basic
    # syntax errors.
    #
    ………………省略部分输出信息………………

    由于这次配置文件中的注释信息行实在太多,不便于分析里面的重要参数,因此咱们可以先把配置文件改个名字,然后使用cat命令读入主配置文件内容后通过grep命令-v参数(反向选择)分别去掉所有以#(井号)和;(分号)开头的注释信息行,对于剩余的空白行可以再用^$来表示并反选过滤,最后把过滤后的可用参数信息通过重定向符覆盖写入到原始文件名称中即可。samba服务程序过滤后的参数并不复杂,为了更方便同学们查阅参数功能,刘遄老师在重要参数行后面都写上了注释说明:

    [root@linuxprobe ~]# mv /etc/samba/smb.conf /etc/samba/smb.conf.bak
    [root@linuxprobe ~]# cat /etc/samba/smb.conf.bak | grep -v "#" | grep -v ";" | grep -v "^$" > /etc/samba/smb.conf
    [root@linuxprobe ~]# cat /etc/samba/smb.conf
    [global]   #全局参数。
      workgroup = MYGROUP #工作组名称。
      server string = Samba Server Version %v #服务器介绍信息,参数%v为显示SMB版本号。
      log file = /var/log/samba/log.%m #定义日志文件存放位置与名称,参数%m为来访的主机名。
      max log size = 50 #定义日志文件最大容量为50Kb。
      security = user #安全验证的方式,总共有4种。
      #share:来访主机无需验证口令,更加方便,但安全性很差。
      #user:需由SMB服务验证来访主机提供的口令后才可建立访问,更加的安全。
      #server:使用独立的远程主机验证来访主机提供的口令(集中管理帐号)。
      #domain:使用PDC来完成验证
      passdb backend = tdbsam #定义用户后台的类型,共有3种。
      #smbpasswd:使用SMB服务的smbpasswd命令给系统用户设置SMB密码。
      #tdbsam:创建数据库文件并使用pdbedit建立SMB独立的用户。
      #ldapsam:基于LDAP服务进行帐户验证。
      load printers = yes #设置是否当Samba服务启动时共享打印机设备。
      cups options = raw #打印机的选项
    [homes]   #共享参数
      comment = Home Directories #描述信息
      browseable = no #指定共享是否在“网上邻居”中可见。
      writable = yes #定义是否可写入操作,与"read only"相反。
    [printers]   #打印机共享参数
      comment = All Printers  
      path = /var/spool/samba #共享文件的实际路径(重要)。
      browseable = no  
      guest ok = no #是否所有人可见,等同于"public"参数。
      writable = no  
      printable = yes  

    12.1.1 配置共享资源

    Samba服务程序的配置文件与前面学习过的Apache服务很相似,包括有全局配置参数和局部配置参数。全局配置参数是Samba服务程序对整体共享环境的设置,是对里面每个独立的共享资源都生效的参数,而区域配置参数指的则是一个个独立可用的共享资源,共享资源的创建方法很简单,只需要按照下面参数格式写入配置文件后重启服务程序即可~

    参数 作用
    [linuxprobe] 共享名称为linuxprobe
    comment = Do not arbitrarily modify the database file 警告用户不要随意修改数据库
    path = /home/database 共享文件夹在/home/database
    public = no 关闭所有人可见
    writable = yes 允许写入操作

    第1步:创建用于访问共享资源的帐户信息,在红帽RHEL7系统中Samba服务程序默认使用的是用户口令认证模式(user),可以做到仅让有密码、受信任的用户访问共享资源,验证的过程也十分的简单。不过咱们需要为Samba服务程序建立独立的用户密码数据库后才能登陆使用,另外Samba服务的数据库要求帐号必须是当前系统中已经存在的用户,否则日后创建文件将产生权限属性的混乱错误。

    pdbedit命令用于管理SMB服务的帐户信息数据库,格式为:“pdbedit [选项] 帐户”,第一次把用户信息写入到数据库时需要使用-a参数,以后修改用户密码、删除用户等等操作就不再需要了:

    参数 作用
    -a 用户名 建立Samba用户
    -x 用户名 删除Samba用户
    -L 列出用户列表
    -Lv 列出用户详细信息的列表

    [root@linuxprobe ~]# id linuxprobe
    uid=1000(linuxprobe) gid=1000(linuxprobe) groups=1000(linuxprobe)
    [root@linuxprobe ~]# pdbedit -a -u linuxprobe
    new password:此处输入该用户在Samba服务数据库中的密码
    retype new password:再次输入密码进行确认
    Unix username: linuxprobe
    NT username: 
    Account Flags: [U ]
    User SID: S-1-5-21-507407404-3243012849-3065158664-1000
    Primary Group SID: S-1-5-21-507407404-3243012849-3065158664-513
    Full Name: linuxprobe
    Home Directory: \\localhost\linuxprobe
    HomeDir Drive: 
    Logon Script: 
    Profile Path: \\localhost\linuxprobe\profile
    Domain: LOCALHOST
    Account desc: 
    Workstations: 
    Munged dial: 
    Logon time: 0
    Logoff time: Wed, 06 Feb 2036 10:06:39 EST
    Kickoff time: Wed, 06 Feb 2036 10:06:39 EST
    Password last set: Mon, 13 Mar 2017 04:22:25 EDT
    Password can change: Mon, 13 Mar 2017 04:22:25 EDT
    Password must change: never
    Last bad password : 0
    Bad password count : 0
    Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

    第2步:创建用于共享资源的文件目录,不光要考虑到文件访问和写入权限的问题,而且由于/home目录是系统中普通用户的家目录,因此还需要考虑到文件上面SELinux安全上下文的监管控制。实际上刚刚过滤掉的注释信息中就提醒有了相关的SELinux安全上下文策略的说明,咱们只需要按照给的值进行修改即可,最后再记得执行下restorecon命令让目录文件上面新设置的SELinux安全上下文立即生效下哦~

    [root@linuxprobe ~]# mkdir /home/database
    [root@linuxprobe ~]# chown -Rf linuxprobe:linuxprobe /home/database
    [root@linuxprobe ~]# semanage fcontext -a -t samba_share_t /home/database
    [root@linuxprobe ~]# restorecon -Rv /home/database
    restorecon reset /home/database context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:samba_share_t:s0

    第3步:设置SELinux服务对Samba程序访问个人用户家目录的允许策略,过滤筛选出所有与samba服务程序相关的SELinux域策略,根据策略的名称和经验选择出合适的策略条目进行开启即可:

    [root@linuxprobe ~]# getsebool -a | grep samba
    samba_create_home_dirs --> off
    samba_domain_controller --> off
    samba_enable_home_dirs --> off
    samba_export_all_ro --> off
    samba_export_all_rw --> off
    samba_portmapper --> off
    samba_run_unconfined --> off
    samba_share_fusefs --> off
    samba_share_nfs --> off
    sanlock_use_samba --> off
    use_samba_home_dirs --> off
    virt_sandbox_use_samba --> off
    virt_use_samba --> off
    [root@linuxprobe ~]# setsebool -P samba_enable_home_dirs on

    第4步:在Samba服务程序的主配置文件中根据前面所提到的格式写入共享信息,在原始的配置文件中[homes]参数为共享该用户的家目录数据,[printers]参数为共享打印机设备,这两项如果您今后的工作中不需要,可以像刘遄老师一样手动的删除掉,没有问题的~

    [root@linuxprobe ~]# vim /etc/samba/smb.conf 
    [global]
     workgroup = MYGROUP
     server string = Samba Server Version %v
     log file = /var/log/samba/log.%m
     max log size = 50
     security = user
     passdb backend = tdbsam
     load printers = yes
     cups options = raw
    [database]
     comment = Do not arbitrarily modify the database file
     path = /home/database
     public = no
     writable = yes

    第5步:把上述步骤完成后也就基本完成了Samba服务程序的配置工作了,Samba服务程序叫做smb,因此重启一下smb服务,清空下iptables防火墙就可以来检验配置效果了:

    [root@linuxprobe ~]# systemctl restart smb
    [root@linuxprobe ~]# systemctl enable smb
     ln -s '/usr/lib/systemd/system/smb.service' '/etc/systemd/system/multi-user.target.wants/smb.service'
    [root@linuxprobe ~]# iptables -F
    [root@linuxprobe ~]# service iptables save
    iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
    
    12.1.2 Windows挂载共享

    在Windows系统中不论是在使用由Windows系统还是Linux系统提供的共享资源步骤和方法都是一致的,所以估计同学们以前都会误以为共享资源都是由Windows系统提供的呢~Samba共享服务器和Windows客户端主机的IP地址可以参考下表来设置,在Windows系统中使用共享资源只需在运行中输入两个反斜杠后加服务器主机IP地址即可,如图12-2所示:

    主机名称 操作系统 IP地址
    Samba共享服务器 红帽RHEL7操作系统 192.168.10.10
    Linux客户端 红帽RHEL7操作系统 192.168.10.20
    Windows客户端 微软Windows7操作系统 192.168.10.30

    第12章 使用Samba或NFS实现文件共享。第12章 使用Samba或NFS实现文件共享。

    图12-2 在Windows系统中访问共享资源

    只要iptables防火墙已经清空就应该能看到Samba共享资源的登陆界面了,刘遄老师先使用linuxprobe用户的系统本地密码尝试登陆一下,结果会出现如图12-3一样的报错,这就是为了验证果然在红帽RHEL7系统中Samba服务程序使用的是独立的用户数据库信息了,所以即便linuxprobe的用户名称是相同的,同学们也一定要分清是那个密码才行~

    第12章 使用Samba或NFS实现文件共享。第12章 使用Samba或NFS实现文件共享。
    图12-3 访问Samba共享资源提示出错

    正确输入linuxprobe帐号以及pdbedit命令设置的密码后就可以登陆到共享界面中了,如图12-4所示。咱们还可以尝试正常的查看、写入、更名、删除文件等等操作,不过由于Windows系统的缓存原因,有可能您第二次登陆的时候依然会报错,这时需要重新启动一下您的真机电脑就一定没问题了(如果依然报错请检查上述步骤是否有做错的地方~)。

    第12章 使用Samba或NFS实现文件共享。第12章 使用Samba或NFS实现文件共享。

    图12-4 正常使用Samba服务共享的资源

    12.1.2 Linux挂载共享

    刚刚可能不小心让大家产生了一些小误解,认为Samba服务只是为了解决Linux系统和Windows系统的资源共享问题而设计的,其实Samba服务程序还可以实现Linux系统之间的文件共享哦~同学们可以参考下表来配置下Linux客户端的网卡IP地址,然后在客户端安装一下共享资源的支持软件包(cifs-utils):

    主机名称 操作系统 IP地址
    Samba共享服务器 红帽RHEL7操作系统 192.168.10.10
    Linux客户端 红帽RHEL7操作系统 192.168.10.20
    Windows客户端 微软Windows7操作系统 192.168.10.30

    [root@linuxprobe ~]# yum install cifs-utils
    Loaded plugins: langpacks, product-id, subscription-manager
    rhel | 4.1 kB 00:00 
    Resolving Dependencies
    --> Running transaction check
    ---> Package cifs-utils.x86_64 0:6.2-6.el7 will be installed
    --> Finished Dependency Resolution
    Dependencies Resolved
    ================================================================================
     Package Arch Version Repository Size
    ================================================================================
    Installing:
     cifs-utils x86_64 6.2-6.el7 rhel 83 k
    Transaction Summary
    ================================================================================
    Install 1 Package
    Total download size: 83 k
    Installed size: 174 k
    Is this ok [y/d/N]: y
    Downloading packages:
    Running transaction check
    Running transaction test
    Transaction test succeeded
    Running transaction
     Installing : cifs-utils-6.2-6.el7.x86_64 1/1 
     Verifying : cifs-utils-6.2-6.el7.x86_64 1/1 
    Installed:
     cifs-utils.x86_64 0:6.2-6.el7 
    Complete!
    

    在Linux系统客户端上面依次按照Samba服务用户名、密码、共享域的顺序写入到一个认证文件中,并为了保证不被其他人随意看到,最后再把其权限修改为仅root超级用户才能够读写:

    [root@linuxprobe ~]# vim auth.smb
    username=linuxprobe
    password=redhat
    domain=MYGROUP
    [root@linuxprobe ~]# chmod -Rf 600 auth.smb
    

    完成上述步骤后就可以在客户端上面创建一个用于挂载Samba服务共享资源的目录文件,并把挂载信息写入到/etc/fstab文件中,这样保证远程共享挂载信息在服务器重启后依然生效:

    [root@linuxprobe ~]# mkdir /database
    [root@linuxprobe ~]# vim /etc/fstab
    #
    # /etc/fstab
    # Created by anaconda on Wed May 4 19:26:23 2017
    #
    # Accessible filesystems, by reference, are maintained under '/dev/disk'
    # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
    #
    /dev/mapper/rhel-root / xfs defaults 1 1
    UUID=812b1f7c-8b5b-43da-8c06-b9999e0fe48b /boot xfs defaults 1 2
    /dev/mapper/rhel-swap swap swap defaults 0 0
    /dev/cdrom /media/cdrom iso9660 defaults 0 0 
    //192.168.10.10/database /database cifs credentials=/root/auth.smb 0 0
    [root@linuxprobe ~]# mount -a
    

    客户端成功挂载Samba远程共享资源,进入到挂载目录中后就可以看到刚刚Windows系统访问Samba服务共享留下来的文件啦~当然咱们也是可以读写保存的,是不是觉得很实用呢~

    [root@linuxprobe ~]# cat /database/Memo.txt
    i can edit it .


    12.2 NFS网络文件系统

    如果觉得Samba服务程序配置起来实在很麻烦,而且恰巧需要共享文件的主机都是Linux系统,那么刘遄老师非常推荐大家使用NFS服务来共享文件给客户端,NFS网络文件系统(Network Files System)是一个能够把Linux系统的远程文件共享资源挂载到本地目录的服务,NFS文件系统协议允许网络中的主机通过TCP/IP协议进行资源共享,能够让Linux客户端像使用本地资源一样读写远端NFS服务端的文件内容。另外由于NFS网络文件系统服务已经在红帽RHEL7系统中默认安装好,配置步骤也十分的简单,因此刘遄老师有时讲课会开玩笑说NFS是need for speed,接下来与大家分享下NFS服务配置起来的爽快体验~请大家先自行用yum软件仓库检查确认下NFS软件包是否已经安装好吧:

    [root@linuxprobe ~]# yum install nfs-utils
    Loaded plugins: langpacks, product-id, subscription-manager
    (1/2): rhel7/group_gz | 134 kB 00:00
    (2/2): rhel7/primary_db | 3.4 MB 00:00
    Package 1:nfs-utils-1.3.0-0.el7.x86_64 already installed and latest version
    Nothing to do
    

    第1步:为了检验NFS服务配置的效果,咱们本次实验需要使用到两台Linux主机,您可以参考下表对系统网卡IP地址进行设置,另外也不要忘记清空iptables防火墙,避免默认的策略禁止了正常的NFS共享服务:

    主机名称 操作系统 IP地址
    NFS服务端 红帽RHEL7操作系统 192.168.10.10
    NFS客户端 红帽RHEL7操作系统 192.168.10.20

    [root@linuxprobe ~]# iptables -F
    [root@linuxprobe ~]# service iptables save
    iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]

    第2步:在NFS服务端主机上面建立用于NFS文件共享的目录,设置较大的权限来保证其他人也一样有写入的权限:

    [root@linuxprobe ~]# mkdir /nfsfile
    [root@linuxprobe ~]# chmod -Rf 777 /nfsfile
    [root@linuxprobe ~]# echo "welcome to linuxprobe.com" > /nfsfile/readme
    

    第3步:NFS服务程序的配置文件为/etc/exports,默认里面是空白没有内容的,可以按照共享目录的路径 允许访问的NFS资源客户端(共享权限参数)的格式来写入参数,定义要共享的目录与相应的权限。例如想要把/nfsfile目录共享给所有属于192.168.10.0/24这个网段的用户主机,并且让这些用户拥有读写权限,自动同步内存数据到本地硬盘,以及把对方root超级用户映射为本地的匿名用户等等特殊权限参数,那么就可以按照下面的格式来写入配置文件:

    参数 作用
    ro 只读默认
    rw 读写模式
    root_squash 当NFS客户端使用root用户访问时,映射为NFS服务端的匿名用户。
    no_root_squash 当NFS客户端使用root用户访问时,映射为NFS服务端的root用户。
    all_squash 不论NFS客户端使用任何帐户,均映射为NFS服务端的匿名用户。
    sync 同时将数据写入到内存与硬盘中,保证不丢失数据。
    async 优先将数据保存到内存,然后再写入硬盘,效率更高,但可能造成数据丢失。

    [root@linuxprobe ~]# vim /etc/exports
    /nfsfile 192.168.10.*(rw,sync,root_squash)

    第4步:启动运行NFS共享服务程序,由于NFS服务在文件共享过程中是依赖RPC服务进行工作了,RPC服务用于把服务器地址和服务端口号等信息通知给客户端,因此要使用NFS共享服务的话,顺手也要把rpcbind服务程序启动,并且把这两个服务一起加入到开机启动项中吧:

    [root@linuxprobe ~]# systemctl restart rpcbind
    [root@linuxprobe ~]# systemctl enable rpcbind
    [root@linuxprobe ~]# systemctl start nfs-server
    [root@linuxprobe ~]# systemctl enable nfs-server
    ln -s '/usr/lib/systemd/system/nfs-server.service' '/etc/systemd/system/nfs.target.wants/nfs-server.service'
    

    配置NFS客户端的步骤也十分简单,首先用showmount命令查询NFS服务端的远程共享信息,输出格式为“共享的目录名称 允许使用客户端地址”:

    参数 作用
    -e 显示NFS服务端的共享列表
    -a 显示本机挂载NFS资源的情况
    -v 显示版本号

    [root@linuxprobe ~]# showmount -e 192.168.10.10
    Export list for 192.168.10.10:
    /nfsfile 192.168.10.*
    

    然后在客户端系统上面创建一个挂载目录,使用mount命令的-t参数指定挂载文件系统的类型,以及后面写上服务端的IP地址,共享出去的目录以及挂载到系统本地的目录。

    [root@linuxprobe ~]# mkdir /nfsfile
    [root@linuxprobe ~]# mount -t nfs 192.168.10.10:/nfsfile /nfsfile
    

    最后挂载成功后就应该能够顺利查看到刚刚写入文件内容了,当然如果同学们希望远程NFS文件共享能一直有效,还可以写入到fstab文件中:

    [root@linuxprobe ~]# cat /nfsfile/readme
    welcome to linuxprobe.com
    [root@linuxprobe ~]# vim /etc/fstab 
    #
    # /etc/fstab
    # Created by anaconda on Wed May 4 19:26:23 2017
    #
    # Accessible filesystems, by reference, are maintained under '/dev/disk'
    # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
    #
    /dev/mapper/rhel-root / xfs defaults 1 1
    UUID=812b1f7c-8b5b-43da-8c06-b9999e0fe48b /boot xfs defaults 1 2
    /dev/mapper/rhel-swap swap swap defaults 0 0
    /dev/cdrom /media/cdrom iso9660 defaults 0 0 
    192.168.10.10:/nfsfile /nfsfile nfs defaults 0 0
    12.3 AutoFs自动挂载服务

    不论咱们是想使用前面学习的Samba还是NFS服务,都要把挂载信息写入到/etc/fstab中,这样远程共享资源就会自动的随服务器开机而挂载,虽然这样一劳永逸确实很方便,但如果挂载的远程资源很多的话,毕竟会或多或少消耗着服务器的一定网络带宽和CPU计算性能。如果挂载后长期不去使用这些服务,那么无疑这笔损耗是白白被浪费掉了,当然还会有同学说可以每次使用前都执行下mount命令手动的挂载上,这虽然是个不错的选择,但每次都要去挂载一下再使用,这样是不是又很麻烦呢?

    AutoFs服务程序与Mount命令不同之处在于它是一种守护进程,只有检测到用户试图访问一个尚未挂载的文件系统时才自动的检测并挂载该文件系统。换句话说,把挂载信息填入/etc/fstab文件后系统将在每次开机时都自动把其挂载,而运行AutoFs服务后则是当用户需要使用该文件系统了才会动态的挂载,节约服务器的网络与系统资源。

    [root@linuxprobe ~]# yum install autofs
    Loaded plugins: langpacks, product-id, subscription-manager
    This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
    rhel | 4.1 kB 00:00 
    Resolving Dependencies
    --> Running transaction check
    ---> Package autofs.x86_64 1:5.0.7-40.el7 will be installed
    --> Processing Dependency: libhesiod.so.0()(64bit) for package: 1:autofs-5.0.7-40.el7.x86_64
    --> Running transaction check
    ---> Package hesiod.x86_64 0:3.2.1-3.el7 will be installed
    --> Finished Dependency Resolution
    Dependencies Resolved
    ================================================================================
     Package Arch Version Repository Size
    ================================================================================
    Installing:
     autofs x86_64 1:5.0.7-40.el7 rhel 550 k
    Installing for dependencies:
     hesiod x86_64 3.2.1-3.el7 rhel 30 k
    Transaction Summary
    ================================================================================
    Install 1 Package (+1 Dependent package)
    Total download size: 579 k
    Installed size: 3.6 M
    Is this ok [y/d/N]: y
    Downloading packages:
    --------------------------------------------------------------------------------
    Total 9.4 MB/s | 579 kB 00:00 
    Running transaction check
    Running transaction test
    Transaction test succeeded
    Running transaction
     Installing : hesiod-3.2.1-3.el7.x86_64 1/2 
     Installing : 1:autofs-5.0.7-40.el7.x86_64 2/2 
     Verifying : hesiod-3.2.1-3.el7.x86_64 1/2 
     Verifying : 1:autofs-5.0.7-40.el7.x86_64 2/2 
    Installed:
     autofs.x86_64 1:5.0.7-40.el7 
    Dependency Installed:
     hesiod.x86_64 0:3.2.1-3.el7 
    Complete!
    

    生产环境中一般都会同时管理着很多设备的挂载工作,如果把这些设备挂载信息都写入到autofs服务主配置文件中的话肯定无疑会让主配置文件臃肿不堪,不利于服务执行效率,也不利于日后修改里面的配置内容,所以在autofs服务程序的主配置文件中需要按照“挂载目录 子配置文件”的格式写入参数。挂载目录是设备要挂载位置的上一级目录,例如咱们的光盘设备一般是挂载到/media/cdrom目录中的,那么此处就应该写成/media即可,而对应的子配置文件则是对这个目录内挂载设备信息的进一步说明,子配置文件是需要用户自行定义的,文件名字没有严格要求,但后缀需以.misc结束,具体的配置参数如第7行加粗字所示。

    [root@linuxprobe ~]# vim /etc/auto.master
    #
    # Sample auto.master file
    # This is an automounter map and it has the following format
    # key [ -mount-options-separated-by-comma ] location
    # For details of the format look at autofs(5).
    #
    /media /etc/iso.misc
    /misc /etc/auto.misc
    #
    # NOTE: mounts done from a hosts map will be mounted with the
    # "nosuid" and "nodev" options unless the "suid" and "dev"
    # options are explicitly given.
    #
    /net -hosts
    #
    # Include /etc/auto.master.d/*.autofs
    #
    +dir:/etc/auto.master.d
    #
    # Include central master map if it can be found using
    # nsswitch sources.
    #
    # Note that if there are entries for /net or /misc (as
    # above) in the included master map any keys that are the
    # same will not be seen as the first read key seen takes
    # precedence.
    #
    +auto.master

    子配置文件中应按照“挂载目录 挂载文件类型及权限 :设备名称”的格式写入参数,例如想要把设备挂载到/media/iso目录中,则此时写iso即可,而-fstype为文件系统格式参数,iso9660为光盘系统设备格式,ro、nosuid及nodev为光盘设备具体的权限参数,最终/dev/cdrom则是定义要挂载的设备名称,配置完成后顺手再把autofs服务程序启动并加入到开机启动项中吧:

    [root@linuxprobe ~]# vim /etc/iso.misc
    iso   -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom
    [root@linuxprobe ~]# systemctl start autofs 
    [root@linuxprobe ~]# systemctl enable autofs 
    ln -s '/usr/lib/systemd/system/autofs.service' '/etc/systemd/system/multi-user.target.wants/autofs.service'

    接下来会就要发生一幕非常有趣的事情了,先来查看下当前的设备挂载情况,确认光盘设备目前是没有被挂载使用的,而且在/media目录中根本就没有一个iso子目录,但却可以通过cd命令切换进去,同时光盘设备会被立即自动挂载上,咱们也就能顺利的查看到光盘内的所有内容了。

    [root@linuxprobe ~]# df -h
    Filesystem Size Used Avail Use% Mounted on
    /dev/mapper/rhel-root 18G 3.0G 15G 17% /
    devtmpfs 905M 0 905M 0% /dev
    tmpfs 914M 140K 914M 1% /dev/shm
    tmpfs 914M 8.9M 905M 1% /run
    tmpfs 914M 0 914M 0% /sys/fs/cgroup
    /dev/sda1 497M 119M 379M 24% /boot
    [root@linuxprobe ~]# cd /media
    [root@linuxprobe media]# ls
    [root@linuxprobe media]# cd iso
    [root@linuxprobe iso]# ls -l
    total 812
    dr-xr-xr-x. 4 root root 2048 May 7 2017 addons
    dr-xr-xr-x. 3 root root 2048 May 7 2017 EFI
    -r--r--r--. 1 root root 8266 Apr 4 2017 EULA
    -r--r--r--. 1 root root 18092 Mar 6 2012 GPL
    dr-xr-xr-x. 3 root root 2048 May 7 2017 images
    dr-xr-xr-x. 2 root root 2048 May 7 2017 isolinux
    dr-xr-xr-x. 2 root root 2048 May 7 2017 LiveOS
    -r--r--r--. 1 root root 108 May 7 2017 media.repo
    dr-xr-xr-x. 2 root root 774144 May 7 2017 Packages
    dr-xr-xr-x. 24 root root 6144 May 7 2017 release-notes
    dr-xr-xr-x. 2 root root 4096 May 7 2017 repodata
    -r--r--r--. 1 root root 3375 Apr 1 2017 RPM-GPG-KEY-redhat-beta
    -r--r--r--. 1 root root 3211 Apr 1 2017 RPM-GPG-KEY-redhat-release
    -r--r--r--. 1 root root 1568 May 7 2017 TRANS.TBL
    [root@linuxprobe ~]# df -h
    Filesystem Size Used Avail Use% Mounted on
    /dev/mapper/rhel-root 18G 3.0G 15G 17% /
    devtmpfs 905M 0 905M 0% /dev
    tmpfs 914M 140K 914M 1% /dev/shm
    tmpfs 914M 8.9M 905M 1% /run
    tmpfs 914M 0 914M 0% /sys/fs/cgroup
    /dev/cdrom 3.5G 3.5G 0 100% /media/iso
    /dev/sda1 497M 119M 379M 24% /boot
    展开全文
  • NFS共享存储服务部署

    2021-01-04 15:21:13
    NFS系统和Windows网络共享、网络驱动器类似,只不过windows用于局域网,NFS用于企业集群架构中,如果是大型网站,会用到更复杂的分布式文件系统FastDFS,glusterfs,HDFS 为什么要使用NFS服务 实现多台服务器之间数据共享...
        

    NFS介绍

    NFS基本概述

    NFS(Network File System)网络文件系统
    主要功能是通过局域网络让不同的主机系统之间可以共享文件或目录。
    NFS系统和Windows网络共享、网络驱动器类似, 只不过windows用于局域网, NFS用于企业集群架构中, 如果是大型网站, 会用到更复杂的分布式文件系统FastDFS,glusterfs,HDFS

    为什么要使用NFS服务

    实现多台服务器之间数据共享
    实现多台服务器之间数据的一致

    NFS服务内容概述

    NFS优缺点以及生产建议
    RPC服务知识概念介绍说明
    NFS服务工作原理
    NFS共享文件系统使用原理
    NFS服务配罝文件exports编写格式及测试

    NFS存储小结

    nfs属于本地文件存储服务

    NFS存储优点

    NFS文件系统简单易用、方便部署、数据可靠、服务稳定、满足中小企业需求。
    NFS文件系统内存放的数据都在文件系统之上,所有数据都是能看得见。

    NFS存储局限

    存在单点故障, 如果构建高可用维护麻烦。
    NFS数据明文, 并不对数据做任何校验。
    客户端挂载无需账户密码, 安全性一般(内网使用)

    生产应用建议

    生产场景应将静态数据尽可能往前端推, 减少后端存储压力
    必须将存储里的静态资源通过CDN缓存(jpg\png\mp4\avi\css\js)
    如果没有缓存或架构本身历史遗留问题太大, 在多存储也无用

    NFS应用场景

    跨系统文件数据共享

    实现Windows与linux系统文件数据共享方法
    a.ftp(ftp服务部署)        b.samba服务

    共享存储的价值

    图解集群需要共享存储服务原因
    没有共享存储

    1. A用户传图片到WEB1服务器
    2. B用户访问这张图片,结果B用户访问的请求分发到了WEB2,因为WEB2上没有这张图片,结果B用户无法看到A用户传的图片。

    有共享存储
    1.如果有共享存储的情况, A用户上传图片无论分发到WEB1还是WEB2, 最终都存储至共享存储
    2.在当B用户访问图片时,无论分发到WEB1还是WEB2上,最终也都会去共享存储上访问,这样就可以访问到资源了

    NFS实现原理


    本地文件操作方式
    当用户执行mkdir命令, 该命令会通过shell解释器翻译给内核,由内核解析完成后驱动硬件,完成相应的操作。
    NFS实现原理
    需要先了解[程序|进程|线程]
    1.用户进程访问NFS客户端,使用不同的函数对数据进行处理
    2.NFS客户端通过TCP/IP的方式传递给NFS服务端。
    3.NFS服务端接收到请求后,会先调用portmap进程进行端口映射。
    4.nfsd进程用于判断NFS客户端是否拥有权限连接NFS服务端。
    5.Rpc.mount进程判断客户端是否有对应的权限进行验证。
    6.idmap进程实现用户映射和压缩
    7.最后NFS服务端会将对应请求的函数转换为本地能识别的命令,传递至内核,由内核驱动硬件。
    rpc是一个远程过程调用,那么使用nfs必须有rpc服务

    NFS服务安装

    服务器系统 角色 外网IP 内网IP
    CentOS 7.5 NFS服务端 eth0:10.0.0.31 eth1:172.16.1.31
    CentOS 7.5 NFS客户端 eth0:10.0.0.41 eth1:172.16.1.41

    注意: 检查关闭防火墙, 以免默认的防火墙策略禁止正常的NFS共享服务

    关闭Firewalld防火墙
    [root@nfsnobody ~]# systemctl disable firewalld
    [root@nfsnobody ~]# systemctl stop firewalld
    关闭selinux防火墙
    [root@nfsnobody ~]# sed -ri '#^SELINUX=#cSELINUX=Disabled' /etc/selinux/config
    [root@nfsnobody ~]# setenforce 0
    

    安装NFS

    [root@nfs ~]# yum -y install nfs-utils
    

    配置NFS

    配置内容

    NFS服务程序的配置文件为/etc/exports默认该文件里没有任何内容。
    按照共享目录的路径 允许访问的NFS客户端(共享权限参数)格式,定义要共享的目录与相应的权限。
    exports配置文件格式

    [root@nfs ~]# cat /etc/exports
    /data 172.16.1.0/24(rw,sync,all_squash)
    注意: NFS客户端地址与权限之间没有空格
    [root@nfs ~]# vim /etc/exports   
    /data   172.16.1.0/24(rw,sync,all_squash)
    在NFS服务器上建立用于NFS文件共享的目录,并设置对应权限
    [root@nfs ~]# mkdir /data
    [root@nfs ~]# chown -R nfsnobody.nfsnobody /data
    NFS共享目录会记录至/var/lib/nfs/etab,如果该目录不存在共享信息,请检查/etc/exports是否配置错误
    
    如果想要把/data目录共享给172.16.1.0/24网段内的所有主机
        1.主机都拥有读写权限
        2.在将数据写入到NFS服务器的硬盘中后才会结束操作,最大限度保证数据不丢失
        3.将所有用户映射为本地的匿名用户(nfsnobody)
    

    exports配置内容说明

    /data   172.16.1.0/24(rw,sync,all_squash)
    
    第一部分:/data            --指定共享目录信息
    第二部分:172.16.1.0/24  --指定了一个网段信息,表示允许指定的网段主机挂载到我本地的共享目录上
    第三部分:(rw,sync)       --表示定义共享参数信息,
      rw  表示读写 对共享目录设置的权限
    syn 同步,   数据会先写入到NFS服务器内存中,会立刻同步到磁盘里面==直接存储硬盘中
    

    创建对应的目录

    创建/data目录 
    并将所属用户和组修改成nfsnobody

    [root@nfs ~]# mkdir /data
    [root@nfs ~]# chown -R nfsnobody.nfsnobody /data
    
    NFS共享目录管理用户为nfsnobody,此用户不用创建,安装nfs软件时会自动创建
    

    启动服务

    在使用NFS服务进行文件共享之前,需要使用RPC(Remote Procedure Call远程过程调用, 服务将NFS服务器的IP地址和端口号信息发送给客户端。
    因此,在启动NFS服务之前,需要先重启并启用rpcbind服务程序,同时都加入开机自启动

    先启动rpcbind  再启动nfs-server  顺序不能颠倒
    
    [root@nfs-server ~]# systemctl restart rpcbind
    [root@nfs-server ~]# systemctl restart nfs-server
    [root@nfs-server ~]# systemctl enable rpcbind
    [root@nfs-server ~]# systemctl enable nfs-server
    

    检查服务

    上面都执行过后  检查 检查是必不可少的一个环节 
    有问题可以尽早发现

    检查端口
    [root@nfs ~]# netstat -lntp
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address      Foreign Address    State       PID/Program name                   
    tcp        0      0 0.0.0.0:2049            0.0.0.0:*     LISTEN      -                      
    tcp        0      0 0.0.0.0:111             0.0.0.0:*     LISTEN      653/rpcbind 
    检查共享的内容
    NFS服务开启后,默认的参数文件位置,注意:修改此文件,对nfs服务没有任何影响
    [root@nfs ~]# cat /var/lib/nfs/etab  
    /data	172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,secure,root_squash,all_squash)
    检查匿名用户对应的真实账户,并授权共享目录为nfsnobody
    [root@nfs ~]# grep "65534" /etc/passwd
    nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
    

    配置客户端

    客户端只启动rpcbind服务
    showmount -e查看远程服务器rpc提供的可挂载nfs信息
    客户端创建一个挂载目录, 使用mount命令并结合-t参数, 指定要挂载的文件系统的类型

    说明: 如果nfs软件不安装
               无法使用showmount 命令
               客户端无法识别nfs 文件系统类型
    NFS客户端的配置步骤 先使用showmount命令,查询NFS服务器的远程共享信息
    其输出格式为“共享的目录名称 允许使用客户端地址”。
    配置客户端   
    安装客户端工具,仅启动rpcbind服务
    [root@web01 ~]# yum install nfs-utils -y
    [root@web01 ~]# systemctl enable rpcbind
    [root@web01 ~]# systemctl start rpcbind
    使用showmount -e查看远程服务器rpc提供的可挂载nfs信息 showmount使用,需要安装nfs-utils软件
    [root@web01 ~]# showmount -e 172.16.1.31
    Export list for 172.16.1.31:
    /data 172.16.1.0/24
    配置客户端-创建挂载点目录,执行挂载命令
    在NFS客户端创建一个挂载目录, 使用mount命令并结合-t参数, 指定要挂载的文件系统的类型, 并在命令后面写上服务器的IP地址, 以及服务器上的共享目录, 最后需要写上要挂载到本地系统(客户端)的目录。
    [root@web01 ~]# mkdir /data
    [root@web01 ~]# mount -t nfs 172.16.1.31:/data /data/
    查看挂载信息
    [root@web01 ~]# df -h
    文件系统                 容量  已用  可用 已用% 挂载点
    172.16.1.31:/data         50G  2.6G   48G    6% /data
    

    测试客户端

    [root@web01 ~]# echo "123" > /data/test
    [root@web01 ~]# ll /data/
    总用量 4
    -rw-r--r-- 1 nfsnobody nfsnobody 4 9月   6 03:41 test
    挂载成功后可以进行增删改操作
    使用客户端往nfs存储写入
    [root@web01 ~]# echo "nfs-client" >> /mnt/test.txt 
    检查nfs服务端是否存在客户端创建的新文件
    [root@nfs ~]# cat /data/test.txt
    nfs-client
    如果希望NFS文件共享服务能一直有效,则需要将其写入到fstab文件中
    [root@web01 ~]# vim /etc/fstab
    172.16.1.31:/data /nfsdir nfs defaults 0 0
    如果不希望使用NFS共享, 可进行卸载 umount
    [root@web01 ~]# umount /nfsdir 
    注意:卸载的时候如果提示”umount.nfs: /nfsdir: device is busy”  
    切换至其他目录, 然后在进行卸载。
    NFS Server宕机, 强制卸载umount -lf /nfsdir
    

    nfs参数详解

    NFS配置文件

    执行man exports命令,然后切换到文件结尾,可以快速查看如下样例格式:

    nfs共享参数 参数作用
    rw* 读写权限
    ro 只读权限
    root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户(不常用)
    no_root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员(不常用)
    all_squash 无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户(常用)
    no_all_squash 无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户(常用)
    sync* 同时将数据写入到内存与硬盘中,保证不丢失数据
    async 优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据
    anonuid* 配置all_squash使用,指定NFS的用户UID,必须存在系统
    anongid* 配置all_squash使用,指定NFS的用户UID,必须存在系统

    验证权限作用

    验证ro权限

    1.服务端修改rw为ro参数
    [root@nfs01 ~]# cat /etc/exports
    /data 172.16.1.0/24(ro,sync,all_squash)
    [root@nfs01 ~]# systemctl restart nfs-server
    
    2.客户端验证
    [root@backup ~]# mount -t nfs 172.16.1.31:/data /mnt
    [root@backup ~]# df -h
    Filesystem         Size  Used Avail Use% Mounted on
    172.16.1.31:/data   98G  1.7G   97G   2% /mnt
    # 无法写入文件
    [root@backup mnt]# touch file
    touch: cannot touch ‘file’: Read-only file system
    2.验证all_squash、anonuid、anongid权限
    //1.服务端配置
    [root@nfs01 ~]# cat /etc/exports
    /data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
    //2.服务端需要创建对应的用户
    [root@nfs01 ~]# groupadd -g 666 www
    [root@nfs01 ~]# useradd -u 666 -g 666 www
    [root@nfs01 ~]# id www
    uid=666(www) gid=666(www) groups=666(www)
    //3.重载nfs-server
    [root@nfs01 ~]# systemctl restart nfs-server
    [root@nfs01 ~]# cat /var/lib/nfs/etab 
    /data   172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=666,anongid=666,sec=sys,secure,root_squash,all_squash)
    //4.授权共享目录为www
    [root@nfs01 ~]# chown -R www.www /data/
    [root@nfs01 ~]# ll -d /data/
    drwxr-xr-x 3 www www 53 Sep  3 02:08 /data/
    //5.客户端验证
    [root@backup ~]# umount /mnt/
    [root@backup ~]# mount -t nfs 172.16.1.31:/data /mnt
    //6.客户端查看到的文件,身份是666
    [root@backup ~]# ll /mnt/
    drwxr-xr-x 2 666 666 6 Sep  3 02:08 rsync_dir
    -rw-r--r-- 1 666 666 0 Sep  3 02:08 rsync_file
    //7.客户端依旧能往/mnt目录下写文件
    [root@backup mnt]# touch fff
    [root@backup mnt]# mkdir 111
    [root@backup mnt]# ll
    drwxr-xr-x 2 666 666 6 Sep  3 03:05 111
    -rw-r--r-- 1 666 666 0 Sep  3 03:05 fff
    //8.建议:将客户端也创建一个uid为666,gid为666,统一身份,避免后续出现权限不足的情况
    [root@backup mnt]# groupadd -g 666 www
    [root@backup mnt]# useradd -g 666 -u 666 www
    [root@backup mnt]# id www
    uid=666(www) gid=666(www) groups=666(www)
    //9.最后检查文件的身份
    [root@backup mnt]# ll /mnt/
    total 4
    drwxr-xr-x 2 www www 6 Sep  3 03:05 111
    -rw-r--r-- 1 www www 0 Sep  3 03:05 fff
    

    NFS扩展项

    //1.扩展:无需重启NFS服务平滑加载配置文件
    [root@nfs01 r]# cat /etc/exports
    /data/r 172.16.1.0/24(ro)
    /data/p 172.16.1.0/24(ro)
    /data/w 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
    [root@nfs01 r]# exportfs -rv
    exporting 172.16.1.0/24:/data/w
    exporting 172.16.1.0/24:/data/p
    exporting 172.16.1.0/24:/data/r
    
    //2.扩展:nfs客户端挂载参数
    [root@backup-41 ~]# mount.nfs4 -o noatime,nodiratime,noexec,nodev,nosuid 172.16.1.31:/data/r /data/r/
    
    //3.扩展:nfs客户端永久挂载参数
    [root@backup-41 ~]# tail -2 /etc/fstab
    172.16.1.31:/data/r /data/r nfs defaults,noatime,nodiratime,noexec,nodev,nosuid 0 0
    172.16.1.31:/data/w /data/w nfs defaults,noatime,nodiratime,noexec,nodev,nosuid 0 0
    
    //4.扩展:客户端检查挂载参数是否生效
    [root@backup ~]# mount
    等于
    [root@backup ~]# cat /proc/mounts 
    
    展开全文
  • 本章讲解了如下内容: ➢ Samba 文件共享服务; ➢ NFS(网络文件系统); ➢ autofs 自动挂载服务。...式部署文件共享服务来深入了解 Samba 服务中相关参数的作用,并在实验最后分别使用 Windows 系统和 L...

    本章讲解了如下内容:
    ➢ Samba 文件共享服务;
    ➢ NFS(网络文件系统);
    ➢ autofs 自动挂载服务。
    本章首先通过比较文件传输和文件共享这两种资源交换方式来引入 Samba 服务的
    理论知识,并介绍 SMB 协议与 Samba 服务程序的起源和发展过程。然后通过实验的方
    式部署文件共享服务来深入了解 Samba 服务中相关参数的作用,并在实验最后分别使用
    Windows 系统和 Linux 系统访问共享的文件资源,确保读者彻底掌握文件共享服务的配
    置方法
    本章还讲解了如何配置网络文件系统(Network File System,NFS)服务来简化 Linux 系
    统之间的文件共享工作,以及通过部署 NFS 服务在多台 Linux 系统之间挂载并使用资源。在
    管理设备挂载信息时,使用 autofs 服务不仅可以正常满足设备挂载的使用需求,还能进一步
    提高服务器硬件资源和网络带宽的利用率。
    刘遄老师相信,当各位读者认真学习完本章内容之后,一定会深刻理解在 Linux 系统之
    间共享文件资源以及在 Linux 系统与 Windows 系统之间共享文件资源的工作机制,并彻底掌
    握相应的配置方法。

    上一章讲解的 FTP 文件传输服务确实可以让主机之间的文件传输变得简单方便,但是
    FTP 协议的本质是传输文件,而非共享文件,因此要想通过客户端直接在服务器上修改文件
    内容还是一件比较麻烦的事情。
    1987 年,微软公司和英特尔公司共同制定了 SMB(Server Messages Block,服务器消息
    块)协议,旨在解决局域网内的文件或打印机等资源的共享问题,这也使得在多个主机之间
    共享文件变得越来越简单。到了 1991 年,当时还在读大学的 Tridgwell 为了解决 Linux 系统
    与 Windows 系统之间的文件共享问题,基于 SMB 协议开发出了 SMBServer 服务程序。这是
    一款开源的文件共享软件,经过简单配置就能够实现 Linux 系统与 Windows 系统之间的文件
    共享工作。当时,Tridgwell 想把这款软件的名字 SMBServer 注册成为商标,但却被商标局以
    SMB 是没有意义的字符而拒绝了申请。后来 Tridgwell 不断翻看词典,突然看到一个拉丁舞蹈
    的名字—Samba,而且这个热情洋溢的舞蹈名字中又恰好包含了“SMB”,于是 Samba 服务

    程序的名字由此诞生(见图 12-1)。Samba 服务程序现在已经成为在 Linux 系统与 Windows 系
    统之间共享文件的最佳选择。

    Samba 服务程序的配置方法与之前讲解的很多服务的配置方法类似,首先需要先通过
    Yum 软件仓库来安装 Samba 服务程序(Samba 服务程序的名字也恰巧是软件包的名字):

    [root@www ~]# yum install samba

     安装完毕后打开 Samba 服务程序的主配置文件,发现竟然有 320 行之多!有没有被吓到?
    但仔细一看就会发现,其实大多数都是以井号(#)开头的注释信息行。有刘遄老师在,肯定
    是不会让大家去“死啃”这些内容的。

    [root@www ~]# cat /etc/samba/smb.conf
    # See smb.conf.example for a more detailed config file or
    # read the smb.conf manpage.
    # Run 'testparm' to verify the config is correct after
    # you modified it.
    
    [global]
            workgroup = SAMBA
            security = user
    
            passdb backend = tdbsam
    
            printing = cups
            printcap name = cups
            load printers = yes
            cups options = raw
    
    [homes]
            comment = Home Directories
            valid users = %S, %D%w%S
            browseable = No
            read only = No
            inherit acls = Yes
    
    [printers]
            comment = All Printers
            path = /var/tmp
            printable = Yes
            create mask = 0600
            browseable = No
    
    [print$]
            comment = Printer Drivers
            path = /var/lib/samba/drivers
            write list = @printadmin root
            force group = @printadmin
            create mask = 0664
            directory mask = 0775

    由于在 Samba 服务程序的主配置文件中,注释信息行实在太多,不便于分析里面的重
    要参数,因此先把主配置文件改个名字,然后使用 cat 命令读入主配置文件,再在 grep 命
    令后面添加-v 参数(反向选择),分别去掉所有以井号(#)和分号(;)开头的注释信息
    行,对于剩余的空白行可以使用^$参数来表示并进行反选过滤,最后把过滤后的可用参数
    信息通过重定向符覆盖写入到原始文件名称中。执行过滤后剩下的 Samba 服务程序的参
    数并不复杂,为了更方便读者查阅参数的功能,表 12-1 罗列了这些参数以及相应的注释
    说明。

     12.1.1 配置共享资源

    Samba 服务程序的主配置文件与前面学习过的 Apache 服务很相似,包括全局配置参数和
    区域配置参数。全局配置参数用于设置整体的资源共享环境,对里面的每一个独立的共享资
    源都有效。区域配置参数则用于设置单独的共享资源,且仅对该资源有效。创建共享资源的
    方法很简单,只要将表 12-2 中的参数写入到 Samba 服务程序的主配置文件中,然后重启该服
    务即可。

     第1 步:创建用于访问共享资源的账户信息。在 RHEL 7 系统中,Samba 服务程序默认
    使用的是用户口令认证模式(user)。这种认证模式可以确保仅让有密码且受信任的用户访问
    共享资源,而且验证过程也十分简单。不过,只有建立账户信息数据库之后,才能使用用户口
    令认证模式。另外,Samba 服务程序的数据库要求账户必须在当前系统中已经存在,否则日
    后创建文件时将导致文件的权限属性混乱不堪,由此引发错误

    pdbedit 命令用于管理 SMB 服务程序的账户信息数据库,格式为“pdbedit [选项] 账户”。
    在第一次把账户信息写入到数据库时需要使用-a 参数,以后在执行修改密码、删除账户等操
    作时就不再需要该参数了。pdbedit 命令中使用的参数以及作用如表 12-3 所示。

     

    [root@www samba]# pdbedit -a -u jingpan
    new password:
    retype new password:
    Unix username:        jingpan
    NT username:          
    Account Flags:        [U          ]
    User SID:             S-1-5-21-50729782-4100829890-1348835227-1000
    Primary Group SID:    S-1-5-21-50729782-4100829890-1348835227-513
    Full Name:            
    Home Directory:       \\www\jingpan
    HomeDir Drive:        
    Logon Script:         
    Profile Path:         \\www\jingpan\profile
    Domain:               WWW
    Account desc:         
    Workstations:         
    Munged dial:          
    Logon time:           0
    Logoff time:          三, 06 2月 2036 23:06:39 CST
    Kickoff time:         三, 06 2月 2036 23:06:39 CST
    Password last set:    四, 18 10月 2018 14:22:37 CST
    Password can change:  四, 18 10月 2018 14:22:37 CST
    Password must change: never
    Last bad password   : 0
    Bad password count  : 0
    Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

    第2步:创建用于共享资源的文件目录。在创建时,不仅要考虑到文件读写权限的问题,
    而且由于/home 目录是系统中普通用户的家目录,因此还需要考虑应用于该目录的 SELinux 安全
    上下文所带来的限制。在前面对 Samba 服务程序配置文件中的注释信息进行过滤时,这些过
    滤的信息中就有关于 SELinux 安全上下文策略的说明,我们只需按照过滤信息中有关 SELinux
    安全上下文策略中的说明中给的值进行修改即可。修改完毕后执行 restorecon 命令,让应用于
    目录的新 SELinux 安全上下文立即生效。

    [root@www ~]# mkdir /home/database
    [root@www ~]# chown -Rf jingpan:jingpan /home/database
    [root@www ~]# ls -Zd /home/database
    drwxr-xr-x. jingpan jingpan unconfined_u:object_r:home_root_t:s0 /home/database
    [root@www ~]# semanage fcontext -a -t samba_share_t /home/database
    [root@www ~]# ls -Zd /home/database
    drwxr-xr-x. jingpan jingpan unconfined_u:object_r:home_root_t:s0 /home/database
    [root@www ~]# restorecon -Rv /home/database
    restorecon reset /home/database context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:samba_share_t:s0
    [root@www ~]# ls -Zd /home/database
    drwxr-xr-x. jingpan jingpan unconfined_u:object_r:samba_share_t:s0 /home/database

    第3步:设置 SELinux 服务与策略,使其允许通过 Samba 服务程序访问普通用户家目
    录。执行 getsebool 命令,筛选出所有与 Samba 服务程序相关的 SELinux 域策略,根据策略的
    名称(和经验)选择出正确的策略条目进行开启即可:

    [root@www ~]# getsebool -a | grep samba
    samba_create_home_dirs --> off
    samba_domain_controller --> off
    samba_enable_home_dirs --> off
    samba_export_all_ro --> off
    samba_export_all_rw --> off
    samba_load_libgfapi --> off
    samba_portmapper --> off
    samba_run_unconfined --> off
    samba_share_fusefs --> off
    samba_share_nfs --> off
    sanlock_use_samba --> off
    tmpreaper_use_samba --> off
    use_samba_home_dirs --> off
    virt_use_samba --> off

    [root@www ~]# setsebool -P samba_enable_home_dirs on

    第4步:在 Samba 服务程序的主配置文件中,根据表 12-2 所提到的格式写入共享信息。
    在原始的配置文件中,[homes]参数为来访用户的家目录共享信息,[printers]参数为共享的打
    印机设备。这两项如果在今后的工作中不需要,可以像刘遄老师一样手动删除,这没有任何
    问题。

    [root@www ~]# vim /etc/samba/smb.conf
    # See smb.conf.example for a more detailed config file or
    # read the smb.conf manpage.
    # Run 'testparm' to verify the config is correct after
    # you modified it.
    
    [global]
            workgroup = SAMBA
            server string = Samba Server Version %v
            log file = /var/log/samba/log.$m
            max log size = 50
            security = user
            passdb backend = tdbsam
    
            printing = cups
            printcap name = cups
            load printers = yes
            cups options = raw
    [database]
            comment= Do not arbitrarily modifi the database file
            path =/home/database
            public = no
            writable = yes

    第5步:Samba 服务程序的配置工作基本完毕。接下来重启 smb 服务(Samba 服务程序
    在 Linux 系统中的名字为 smb)并清空 iptables 防火墙,然后就可以检验配置效果了。

    [root@www ~]# systemctl restart smb
    [root@www ~]# systemctl enable smb
    Created symlink from /etc/systemd/system/multi-user.target.wants/smb.service to /usr/lib/systemd/system/smb.service.
    [root@www ~]# iptables -F

    12.1.2 Windows 访问文件共享服务

    无论 Samba 共享服务是部署 Windows 系统上还是部署在 Linux 系统上,通过 Windows
    系统进行访问时,其步骤和方法都是一样的。下面假设 Samba 共享服务部署在 Linux 系统上,
    并通过 Windows 系统来访问 Samba 服务。

    要在 Windows 系统中访问共享资源,只需在 Windows 的“运行”命令框中输入两个反斜
    杠,然后再加服务器的 IP 地址即可。

    12.1.3 Linux 访问文件共享服务

    上面的实验操作可能会让各位读者误以为 Samba 服务程序只是为了解决 Linux 系统和
    Windows 系统的资源共享问题而设计的。其实,Samba 服务程序还可以实现 Linux 系统之间
    的文件共享。请各位读者按照表 12-5 来设置 Samba 服务程序所在主机(即 Samba 共享服务
    器)和 Linux 客户端使用的 IP 地址,然后在客户端安装支持文件共享服务的软件包(cifs-utils)。

     

    [root@localhost ~]# yum install cifs-utils

    在 Linux 客户端,按照 Samba 服务的用户名、密码、共享域的顺序将相关信息写入到一
    个认证文件中。为了保证不被其他人随意看到,最后把这个认证文件的权限修改为仅 root 管
    理员才能够读写:

    [root@localhost database]# vi /root/auth.smb
    username=jingpan
    password=jingpan
    domain=SAMBA

    现在,在 Linux 客户端上创建一个用于挂载 Samba 服务共享资源的目录,并把挂载信息

    写入到/etc/fstab 文件中,以确保共享挂载信息在服务器重启后依然生效:

    [root@localhost ~]# vi /etc/fstab 
    
    #
    # /etc/fstab
    # Created by anaconda on Thu Oct 18 16:44:03 2018
    #
    # Accessible filesystems, by reference, are maintained under '/dev/disk'
    # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
    #
    /dev/mapper/centos-root /                       xfs     defaults        0 0
    UUID=fd26c5a2-b864-4dca-95a4-88c0389b4150 /boot                   xfs     defaults        0 0
    /dev/mapper/centos-home /home                   xfs     defaults        0 0
    /dev/mapper/centos-swap swap                    swap    defaults        0 0
    //192.168.1.3/database /database cifs credentials=/root/auth.smb 0 0
    [root@localhost ~]# mount -a

     Linux 客户端成功地挂载了 Samba 服务的共享资源。进入到挂载目录/database 后就可以
    看到 Windows 系统访问 Samba 服务程序时留下来的文件了(即文件 Memo.txt)。当然,我们
    也可以对该文件进行读写操作并保存。

    [root@localhost ~]# cd /database/
    [root@localhost database]# vi Memo.txt
    i can edit it .
    "Memo.txt" [New] 1L, 16C written
    [root@localhost database]# 
    [root@localhost database]# cat Memo.txt 
    i can edit it .

    12.2 NFS(网络文件系统)

    如果大家觉得 Samba 服务程序的配置太麻烦,而且恰巧需要共享文件的主机都是 Linux
    系统,刘遄老师非常推荐大家在客户端部署 NFS 服务来共享文件。NFS(网络文件系统)服
    务可以将远程 Linux 系统上的文件共享资源挂载到本地主机的目录上,从而使得本地主机
    (Linux 客户端)基于 TCP/IP 协议,像使用本地主机上的资源那样读写远程 Linux 系统上的共
    享文件。
    由于 RHEL 7 系统中默认已经安装了 NFS 服务,外加 NFS 服务的配置步骤也很简单,因
    此刘遄老师在授课时会将 NFS 戏谑为 Need For Speed。接下来,我们准备配置 NFS 服务。首
    先请使用 Yum 软件仓库检查自己的 RHEL 7 系统中是否已经安装了 NFS 软件包:

    [root@www ~]# yum install nfs-utils

    第1 步:为了检验 NFS 服务配置的效果,我们需要使用两台 Linux 主机(一台充当 NFS
    服务器,一台充当 NFS 客户端),并按照表 12-6 来设置它们所使用的 IP 地址。

     主机名称 操作系统 IP地址
    NFS服务器 centos7 192.168.1.3
    NFS客户端 centos7 192.168.1.6

    另外,不要忘记清空 NFS 服务器上面 iptables 防火墙的默认策略,以免默认的防火墙策
    略禁止正常的 NFS 共享服务。

    [root@linuxprobe ~]# iptables -F

    第2步:在 NFS 服务器上建立用于 NFS 文件共享的目录,并设置足够的权限确保其他
    人也有写入权限。 

    [root@linuxprobe ~]# mkdir /nfsfile
    [root@linuxprobe ~]# chmod -Rf 777 /nfsfile
    [root@linuxprobe ~]# echo "welcome to linuxprobe.com" > /nfsfile/readme
    

    第3步:NFS 服务程序的配置文件为/etc/exports,默认情况下里面没有任何内容。我们
    可以按照“共享目录的路径 允许访问的 NFS 客户端(共享权限参数)”的格式,定义要共享
    的目录与相应的权限。
    例如,如果想要把/nfsfile 目录共享给 192.168.1.0/24 网段内的所有主机,让这些主机都
    拥有读写权限,在将数据写入到 NFS 服务器的硬盘中后才会结束操作,最大限度保证数据不
    丢失,以及把来访客户端 root 管理员映射为本地的匿名用户等,则可以按照下面命令中的格
    式,将表 12-7 中的参数写到 NFS 服务程序的配置文件中。

    请注意,NFS 客户端地址与权限之间没有空格。

    [root@www ~]# vi /etc/exports
    /nfsfile 192.168.1.*(rw,sync,root_squash)
    ~

     第4步:启动和启用 NFS 服务程序。由于在使用 NFS 服务进行文件共享之前,需要使
    用 RPC(Remote Procedure Call,远程过程调用)服务将 NFS 服务器的 IP 地址和端口号等信
    息发送给客户端。因此,在启动 NFS 服务之前,还需要顺带重启并启用 rpcbind 服务程序,
    并将这两个服务一并加入开机启动项中。

    [root@www ~]# systemctl restart rpcbind
    [root@www ~]# systemctl enable rpcbind
    [root@www ~]# systemctl start nfs-server
    [root@www ~]# systemctl enable nfs-server
    Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.

    NFS 客户端的配置步骤也十分简单。先使用 showmount 命令(以及必要的参数,见表 12-
    8)查询 NFS 服务器的远程共享信息,其输出格式为“共享的目录名称 允许使用客户端地址”。

    [root@localhost ~]# showmount -e 192.168.1.3
    Export list for 192.168.1.3:
    /nfsfile 192.168.1.*

     然后在 NFS 客户端创建一个挂载目录。使用 mount 命令并结合-t 参数,指定要挂载的文
    件系统的类型,并在命令后面写上服务器的 IP 地址、服务器上的共享目录以及要挂载到本地
    系统(即客户端)的目录。

    [root@linuxprobe ~]# mkdir /nfsfile
    [root@linuxprobe ~]# mount -t nfs 192.168.10.10:/nfsfile /nfsfile

    挂载成功后就应该能够顺利地看到在执行前面的操作时写入的文件内容了。如果希望
    NFS 文件共享服务能一直有效,则需要将其写入到 fstab 文件中:

    [root@localhost nfsfile]# cat /nfsfile/readme
    welcome to jinpgan.site
    
    [root@localhost ~]# vi /etc/fstab
    
    #
    # /etc/fstab
    # Created by anaconda on Thu Oct 18 16:44:03 2018
    #
    # Accessible filesystems, by reference, are maintained under '/dev/disk'
    # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
    #
    /dev/mapper/centos-root /                       xfs     defaults        0 0
    UUID=fd26c5a2-b864-4dca-95a4-88c0389b4150 /boot                   xfs     defaults        0 0
    /dev/mapper/centos-home /home                   xfs     defaults        0 0
    /dev/mapper/centos-swap swap                    swap    defaults        0 0
    //192.168.1.3/database /database cifs credentials=/root/auth.smb 0 0
    192.168.1.3:/nfsfile /nfsfile nfs defaults 0 0
    ~
    ~

    12.3 autofs 自动挂载服务

    无论是 Samba 服务还是 NFS 服务,都要把挂载信息写入到/etc/fstab 中,这样远程共享资
    源就会自动随服务器开机而进行挂载。虽然这很方便,但是如果挂载的远程资源太多,则会
    给网络带宽和服务器的硬件资源带来很大负载。如果在资源挂载后长期不使用,也会造成服
    务器硬件资源的浪费。可能会有读者说,“可以在每次使用之前执行 mount 命令进行手动挂
    载”。这是一个不错的选择,但是每次都需要先挂载再使用,您不觉得麻烦吗?
    autofs 自动挂载服务可以帮我们解决这一问题。与 mount 命令不同,autofs 服务程序是一
    种 Linux 系统守护进程,当检测到用户视图访问一个尚未挂载的文件系统时,将自动挂载该
    文件系统。换句话说,我们将挂载信息填入/etc/fstab 文件后,系统在每次开机时都自动将其挂载,
    而 autofs 服务程序则是在用户需要使用该文件系统时才去动态挂载,从而节约了网络资源和
    服务器的硬件资源。

    [root@localhost ~]# yum install autofs

    处于生产环境中的 Linux 服务器,一般会同时管理许多设备的挂载操作。如果把这些设
    备挂载信息都写入到 autofs 服务的主配置文件中,无疑会让主配置文件臃肿不堪,不利于服
    务执行效率,也不利于日后修改里面的配置内容,因此在 autofs 服务程序的主配置文件中需
    要按照“挂载目录 子配置文件”的格式进行填写。挂载目录是设备挂载位置的上一级目录。
    例如,光盘设备一般挂载到/media/cdrom 目录中,那么挂载目录写成/media 即可。对应的子
    配置文件则是对这个挂载目录内的挂载设备信息作进一步的说明。子配置文件需要用户自行
    定义,文件名字没有严格要求,但后缀建议以.misc 结束。具体的配置参数如第 7 行的加粗字
    所示。

    [root@localhost ~]# vi /etc/auto.master
    #
    # Sample auto.master file
    # This is a 'master' automounter map and it has the following format:
    # mount-point [map-type[,format]:]map [options]
    # For details of the format look at auto.master(5).
    #
    /media /etc/iso.misc
    /misc   /etc/auto.misc
    #
    # NOTE: mounts done from a hosts map will be mounted with the
    #       "nosuid" and "nodev" options unless the "suid" and "dev"
    #       options are explicitly given.
    #
    /net    -hosts
    #
    # Include /etc/auto.master.d/*.autofs
    # The included files must conform to the format of this file.
    #
    +dir:/etc/auto.master.d
    #
    # Include central master map if it can be found using
    # nsswitch sources.
    #
    # Note that if there are entries for /net or /misc (as
    # above) in the included master map any keys that are the
    # same will not be seen as the first read key seen takes
    # precedence.

    在子配置文件中,应按照“挂载目录 挂载文件类型及权限 :设备名称”的格式进行填写。例
    如,要把光盘设备挂载到/media/iso 目录中,可将挂载目录写为 iso,而-fstype 为文件系统格式参
    数,iso9660 为光盘设备格式,ro、nosuid 及 nodev 为光盘设备具体的权限参数,/dev/cdrom 则是
    定义要挂载的设备名称。配置完成后再顺手将 autofs 服务程序启动并加入到系统启动项中:

    [root@localhost ~]# vi /etc/iso.misc
    iso -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom
    [root@localhost ~]# systemctl start autofs
    [root@localhost ~]# systemctl enable autofs
    Created symlink from /etc/systemd/system/multi-user.target.wants/autofs.service to /usr/lib/systemd/system/autofs.service.

    接下来将发生一件非常有趣的事情。我们先查看当前的光盘设备挂载情况,确认光盘设备没
    有被挂载上,而且/media 目录中根本就没有 iso 子目录。但是,我们却可以使用 cd 命令切换到这
    个 iso 子目录中,而且光盘设备会被立即自动挂载上。我们也就能顺利查看光盘内的内容了。

    [root@localhost ~]# df -h
    文件系统                 容量  已用  可用 已用% 挂载点
    /dev/mapper/centos-root   50G  1.2G   49G    3% /
    devtmpfs                 899M     0  899M    0% /dev
    tmpfs                    911M     0  911M    0% /dev/shm
    tmpfs                    911M  9.6M  902M    2% /run
    tmpfs                    911M     0  911M    0% /sys/fs/cgroup
    /dev/sda1               1014M  142M  873M   14% /boot
    /dev/mapper/centos-home   47G   33M   47G    1% /home
    //192.168.1.3/database    22G  9.5G   12G   45% /database
    tmpfs                    183M     0  183M    0% /run/user/0
    192.168.1.3:/nfsfile      22G  9.5G   12G   45% /nfsfile
    [root@localhost ~]# cd /media
    [root@localhost media]# ls
    [root@localhost media]# cd iso
    [root@localhost iso]# ls -l
    总用量 678
    -rw-rw-r--. 1 root root     14 5月   2 19:28 CentOS_BuildTag
    drwxr-xr-x. 3 root root   2048 5月   4 04:34 EFI
    -rw-rw-r--. 1 root root    227 8月  30 2017 EULA
    -rw-rw-r--. 1 root root  18009 12月 10 2015 GPL
    drwxr-xr-x. 3 root root   2048 5月   4 04:44 images
    drwxr-xr-x. 2 root root   2048 5月   4 04:34 isolinux
    drwxr-xr-x. 2 root root   2048 5月   4 04:34 LiveOS
    drwxrwxr-x. 2 root root 655360 5月   4 04:52 Packages
    drwxrwxr-x. 2 root root   4096 5月   4 04:54 repodata
    -rw-rw-r--. 1 root root   1690 12月 10 2015 RPM-GPG-KEY-CentOS-7
    -rw-rw-r--. 1 root root   1690 12月 10 2015 RPM-GPG-KEY-CentOS-Testing-7
    -r--r--r--. 1 root root   2883 5月   4 04:55 TRANS.TBL
    [root@localhost iso]# df -h
    文件系统                 容量  已用  可用 已用% 挂载点
    /dev/mapper/centos-root   50G  1.2G   49G    3% /
    devtmpfs                 899M     0  899M    0% /dev
    tmpfs                    911M     0  911M    0% /dev/shm
    tmpfs                    911M  9.6M  902M    2% /run
    tmpfs                    911M     0  911M    0% /sys/fs/cgroup
    /dev/sda1               1014M  142M  873M   14% /boot
    /dev/mapper/centos-home   47G   33M   47G    1% /home
    //192.168.1.3/database    22G  9.5G   12G   45% /database
    tmpfs                    183M     0  183M    0% /run/user/0
    192.168.1.3:/nfsfile      22G  9.5G   12G   45% /nfsfile
    /dev/sr0                 4.2G  4.2G     0  100% /media/iso

     

    展开全文
  • 1 NFS介绍 1.1 什么是NFS? NFS是Network File System的缩写,中文名称是网络文件系统。它的主要功能是通过网络让不用...NFS网络文件系统很像Windows系统的网络共享、安全功能、网络驱动器映射,类似linux系统里的s...

    1 NFS介绍

    1.1 什么是NFS?

    NFS是Network File System的缩写,中文名称是网络文件系统。它的主要功能是通过网络让不用的主机系统之间可以共享文件或者目录。NFS客户端通过挂载(mount)的方式将NFS服务器端共享数据目录挂载到NFS客户端本地系统中。

    NFS网络文件系统很像Windows系统的网络共享、安全功能、网络驱动器映射,类似linux系统里的samba服务。一般情况下,Windows网络共享服务或者linux系统的samba服务用于办公局域网共享,而互联网中小型网站集群架构后端常用NFS进行数据共享,如果是大型网站,可能会用到分布式文件系统,如:Moosefs(mfs)、ClusterFS、FastDFSD等。

    1.2 NFS企业中应用场景

    1.2.1 企业集群架构工作场景

    NFS网络文件系统存储共享视频、图片、附件等静态资源文件,如:BBS产品的图片、附件、头像,前端所有的节点访问这些静态资源时都会读取NFS存储上的储存的静态资源

    1.3 什么是RPC(Remote Procedure Call)

    因为NFS支持的功能相当多,而不同的功能都会使用不同的程序来启动,每启动一个功能就会启用一些端口来传输数据,因此,NFS的功能所对应的端口无法固定,它会随机取用一些未被使用的端口来作为传输之用,所以需要通过RPC协议/服务来实现;其中CentOS5.x的随机端口都小于1024,而CentOS6.x的随机端口都是较大的

    1.4 NFS工作流程图

    clip_image002

    1.5 NFS的工作流程原理图

    clip_image004

    注意:

    Ø NFS客户端启动RPC服务即可,无需启动NFS服务

    Ø NFS的RPC服务,在CentOS5.x下名称为portmap,在CentOS6.x下名称为rpcbind

    1.6 主机IP地址规划

    服务器说明

    外网IP地址

    内网IP地址

    主机名规划

    Rsync备份服务器

    10.0.0.41/24

    172.16.1.41/24

    backup

    NFS存储服务器(client)

    10.0.0.31/24

    172.16.1.31/24

    nfs01

    2 NFS服务端安装过程

    2.1 查看NFS服务端操作系统及内核版本信息

    [root@nfs01 ~]# cat /etc/redhat-release

    CentOS release 6.9 (Final)

    [root@nfs01 ~]# uname -r

    2.6.32-696.el6.x86_64

    [root@nfs01 ~]# uname -m

    x86_64

    [root@nfs01 ~]# hostname

    nfs01

    2.2 查看NFS软件包是否安装

    [root@nfs01 ~]# rpm -qa | egrep "nfs-utils|rpcbind"

    2.3 安装NFS软件并查看

    [root@nfs01 ~]# yum install nfs-utils rpcbind -y

    [root@nfs01 ~]# rpm -qa nfs-utils rpcbind

    nfs-utils-1.2.3-78.el6.x86_64

    rpcbind-0.2.0-16.el6.x86_64

    2.4 安装基本常用工具软件

    [root@nfs01 ~]# yum install lrzsz nmap tree dos2unix nc –y

    [root@nfs01 ~]# rpm -qa lrzsz nmap tree dos2unix nc

    nmap-5.51-6.el6.x86_64

    dos2unix-3.1-37.el6.x86_64

    nc-1.84-24.el6.x86_64

    lrzsz-0.12.20-27.1.el6.x86_64

    tree-1.5.3-3.el6.x86_64

    2.5 保留yum源下载的软件

    [root@nfs01 ~]# sed -i 's#keepcache=0#keepcache=1#g' /etc/yum.conf

    [root@nfs01 ~]# grep "keepca*" /etc/yum.conf

    keepcache=1

    [root@nfs01 ~]# pwd

    /root

    [root@nfs01 ~]# tar zcvf nfs-rpm.tar.gz /var/cache/yum/x86_64/6/base/packages/

    tar: Removing leading `/' from member names

    /var/cache/yum/x86_64/6/base/packages/

    /var/cache/yum/x86_64/6/base/packages/nfs-utils-lib-1.1.5-13.el6.x86_64.rpm

    /var/cache/yum/x86_64/6/base/packages/dos2unix-3.1-37.el6.x86_64.rpm

    /var/cache/yum/x86_64/6/base/packages/libtirpc-0.2.1-15.el6.x86_64.rpm

    /var/cache/yum/x86_64/6/base/packages/nmap-5.51-6.el6.x86_64.rpm

    /var/cache/yum/x86_64/6/base/packages/libevent-1.4.13-4.el6.x86_64.rpm

    /var/cache/yum/x86_64/6/base/packages/nfs-utils-1.2.3-78.el6.x86_64.rpm

    /var/cache/yum/x86_64/6/base/packages/keyutils-1.4-5.el6.x86_64.rpm

    /var/cache/yum/x86_64/6/base/packages/nc-1.84-24.el6.x86_64.rpm

    /var/cache/yum/x86_64/6/base/packages/rpcbind-0.2.0-16.el6.x86_64.rpm

    /var/cache/yum/x86_64/6/base/packages/lrzsz-0.12.20-27.1.el6.x86_64.rpm

    /var/cache/yum/x86_64/6/base/packages/tree-1.5.3-3.el6.x86_64.rpm

    /var/cache/yum/x86_64/6/base/packages/libgssglue-0.1-11.el6.x86_64.rpm

    [root@nfs01 ~]# ls -ld nfs-rpm.tar.gz

    -rw-r--r-- 1 root root 3636275 Jul 22 22:15 nfs-rpm.tar.gz

    [root@nfs01 ~]# sz nfs-rpm.tar.gz #下载打包的压缩包到本地

    注意:yum源下载软件包缓存目录为cachedir=/var/cache/yum/$basearch/$releasever

    2.6 NFS服务端启动rpcbind服务并检查服务启动情况

    [root@nfs01 ~]# /etc/init.d/rpcbind start

    Starting rpcbind: [ OK ]

    [root@nfs01 ~]# /etc/init.d/rpcbind status

    rpcbind (pid 1202) is running...

    [root@nfs01 ~]# ps -ef | grep rpcbind | grep -v grep

    rpc 1202 1 0 22:03 ? 00:00:00 rpcbind

    [root@nfs01 ~]# netstat -lntup |grep rpcbind

    tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1609/rpcbind

    tcp 0 0 :::111 :::* LISTEN 1609/rpcbind

    udp 0 0 0.0.0.0:111 0.0.0.0:* 1609/rpcbind

    udp 0 0 0.0.0.0:936 0.0.0.0:* 1609/rpcbind

    udp 0 0 :::111 :::* 1609/rpcbind

    udp 0 0 :::936 :::* 1609/rpcbind

    2.7 打印rpc注册信息

    [root@nfs01 ~]# rpcinfo -p localhost

    program vers proto port service

    100000 4 tcp 111 portmapper

    100000 3 tcp 111 portmapper

    100000 2 tcp 111 portmapper

    100000 4 udp 111 portmapper

    100000 3 udp 111 portmapper

    100000 2 udp 111 portmapper

    2.8 启动NFS服务并检查服务启动状态

    [root@nfs01 ~]# /etc/init.d/nfs start

    Starting NFS services: [ OK ]

    Starting NFS quotas: [ OK ]

    Starting NFS mountd: [ OK ]

    Starting NFS daemon: [ OK ]

    Starting RPC idmapd: [ OK ]

    [root@nfs01 ~]# /etc/init.d/nfs status

    rpc.svcgssd is stopped

    rpc.mountd (pid 1287) is running...

    nfsd (pid 1303 1302 1301 1300 1299 1298 1297 1296) is running...

    rpc.rquotad (pid 1282) is running...

    2.9 再次打印rpc注册信息

    [root@nfs01 ~]# rpcinfo -p localhost

    program vers proto port service

    100000 4 tcp 111 portmapper

    100000 3 tcp 111 portmapper

    100000 2 tcp 111 portmapper

    100000 4 udp 111 portmapper

    100000 3 udp 111 portmapper

    100000 2 udp 111 portmapper

    100011 1 udp 875 rquotad

    100011 2 udp 875 rquotad

    100011 1 tcp 875 rquotad

    100011 2 tcp 875 rquotad

    100005 1 udp 43643 mountd

    100005 1 tcp 55853 mountd

    100005 2 udp 54618 mountd

    100005 2 tcp 58559 mountd

    100005 3 udp 44173 mountd

    100005 3 tcp 41536 mountd

    100003 2 tcp 2049 nfs

    100003 3 tcp 2049 nfs

    100003 4 tcp 2049 nfs

    100227 2 tcp 2049 nfs_acl

    100227 3 tcp 2049 nfs_acl

    100003 2 udp 2049 nfs

    100003 3 udp 2049 nfs

    100003 4 udp 2049 nfs

    100227 2 udp 2049 nfs_acl

    100227 3 udp 2049 nfs_acl

    100021 1 udp 41379 nlockmgr

    100021 3 udp 41379 nlockmgr

    100021 4 udp 41379 nlockmgr

    100021 1 tcp 33228 nlockmgr

    100021 3 tcp 33228 nlockmgr

    100021 4 tcp 33228 nlockmgr

    2.10 NFS、rpcbind服务设置开机自启动

    方法一(chkconfig命令):

    [root@nfs01 ~]# chkconfig rpcbind on

    [root@nfs01 ~]# chkconfig nfs on

    [root@nfs01 ~]# chkconfig | grep "3:on" | grep -Ew "nfs|rpcbind"

    nfs 0:off 1:off 2:on 3:on 4:on 5:on 6:off

    rpcbind 0:off 1:off 2:on 3:on 4:on 5:on 6:off

    方法二(添加启动命令到/etc/rc.d/rc.local文件中):

    [root@nfs01 ~]# echo "#start up nfs service and rpcbind service by wolf_dreams at 2018-07-28" >> /etc/rc.d/rc.local

    [root@nfs01 ~]# echo "/etc/init.d/rpcbind start" >> /etc/rc.d/rc.local

    [root@nfs01 ~]# echo "/etc/init.d/nfs start" >>/etc/rc.d/rc.local

    [root@nfs01 ~]# tail -3 /etc/rc.d/rc.local

    #start up nfs service and rpcbind service by wolf_dreams at 2018-07-28

    /etc/init.d/rpcbind start

    /etc/init.d/nfs start

    2.11 查看启动NFS后,系统运行的NFS相关进程

    [root@nfs01 ~]# ps -ef | egrep "nfs|rpc" | grep -v grep

    rpc 1204 1 0 16:29 ? 00:00:00 rpcbind

    rpcuser 1226 1 0 16:29 ? 00:00:00 rpc.statd #->检查文件一致性

    root 1275 2 0 16:29 ? 00:00:00 [rpciod/0]

    root 1284 1 0 16:29 ? 00:00:00 rpc.rquotad #->磁盘配额进程

    root 1289 1 0 16:29 ? 00:00:00 rpc.mountd#->权限管理验证等

    root 1296 2 0 16:29 ? 00:00:00 [nfsd4]

    root 1297 2 0 16:29 ? 00:00:00 [nfsd4_callbacks]

    root 1298 2 0 16:29 ? 00:00:00 [nfsd]

    root 1299 2 0 16:29 ? 00:00:00 [nfsd]

    root 1300 2 0 16:29 ? 00:00:00 [nfsd]

    root 1301 2 0 16:29 ? 00:00:00 [nfsd]

    root 1302 2 0 16:29 ? 00:00:00 [nfsd]

    root 1303 2 0 16:29 ? 00:00:00 [nfsd]

    root 1304 2 0 16:29 ? 00:00:00 [nfsd]

    root 1305 2 0 16:29 ? 00:00:00 [nfsd] #->NFS主进程

    root 1334 1 0 16:29 ? 00:00:00 rpc.idmapd #->name mapping daemon

    2.12 使用rpcinfo查看注册信息,出现报错解决方法

    报错提示:

    [root@nfs01 ~]# rpcinfo -p localhost

    rpcinfo: can't contact portmapper: RPC: Remote system error - Connection refused

    排查方法:

    1、检查rpcbind服务是否启动

    [root@nfs01 ~]# /etc/init.d/rpcbind status

    rpcbind is stopped

    2、检查端口是否启动

    [root@nfs01 ~]# lsof -i :111

    解决办法(启动rpcbind服务并检查rpc注册信息显示):

    [root@nfs01 ~]# /etc/init.d/rpcbind start

    Starting rpcbind: [ OK ]

    [root@nfs01 ~]# rpcinfo -p localhost

    program vers proto port service

    100000 4 tcp 111 portmapper

    100000 3 tcp 111 portmapper

    100000 2 tcp 111 portmapper

    100000 4 udp 111 portmapper

    100000 3 udp 111 portmapper

    100000 2 udp 111 portmapper

    3 NFS客户端安装过程

    3.1 查看NFS客户端操作系统及内核版本信息

    [root@backup ~]# cat /etc/redhat-release

    CentOS release 6.9 (Final)

    [root@backup ~]# uname -r

    2.6.32-696.el6.x86_64

    [root@backup ~]# uname -m

    x86_64

    [root@backup ~]# hostname

    backup

    3.2 查看NFS软件包是否安装

    [root@backup ~]# rpm -qa | egrep "nfs-utils|rpcbind"

    [root@backup ~]# yum grouplist | grep "NFS file server"

    NFS file server

    3.3 安装NFS软件并查看

    [root@backup ~]# yum install nfs-utils rpcbind –y

    [root@backup ~]# yum groupinstall "NFS file server" -y

    [root@backup ~]# rpm -qa | egrep "nfs-utils|rpcbind"

    nfs-utils-1.2.3-78.el6.x86_64

    nfs-utils-lib-1.1.5-13.el6.x86_64

    rpcbind-0.2.0-16.el6.x86_64

    3.4 NFS客户端启动rpcbind服务并检查服务启动情况

    [root@backup ~]# /etc/init.d/rpcbind start

    Starting rpcbind: [ OK ]

    [root@backup ~]# /etc/init.d/rpcbind status

    rpcbind (pid 1397) is running...

    [root@backup ~]# ps -ef | grep rpcbind | grep -v grep

    rpc 1397 1 0 17:01 ? 00:00:00 rpcbind

    [root@backup ~]# netstat -lntup | grep rpcbind

    tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1397/rpcbind

    tcp 0 0 :::111 :::* LISTEN 1397/rpcbind

    udp 0 0 0.0.0.0:724 0.0.0.0:* 1397/rpcbind

    udp 0 0 0.0.0.0:111 0.0.0.0:* 1397/rpcbind

    udp 0 0 :::724 :::* 1397/rpcbind

    udp 0 0 :::111 :::* 1397/rpcbind

    3.5 打印rpc注册信息

    [root@backup ~]# rpcinfo -p localhost

    program vers proto port service

    100000 4 tcp 111 portmapper

    100000 3 tcp 111 portmapper

    100000 2 tcp 111 portmapper

    100000 4 udp 111 portmapper

    100000 3 udp 111 portmapper

    100000 2 udp 111 portmapper

    3.6 rpcbind服务设置开机自启动

    方法一(chkconfig命令):

    [root@backup ~]# chkconfig rpcbind on

    [root@backup ~]# chkconfig --list rpcbind

    rpcbind 0:off 1:off 2:on 3:on 4:on 5:on 6:off

    方法二(添加至/etc/rc.d/rc.local配置文件中):

    [root@backup ~]# echo "#start up rpcbind service by wolf_dreams at 2018-07-28" >> /etc/rc.d/rc.local

    [root@backup ~]# echo "/etc/init.d/rpcbind start" >> /etc/rc.d/rc.local

    [root@backup ~]# tail -2 /etc/rc.d/rc.local

    #start up rpcbind service by wolf_dreams at 2018-07-28

    /etc/init.d/rpcbind start

    4 NFS服务端配置

    4.1 查看/etc/exports配置文件

    [root@nfs01 ~]# ls -l /etc/exports

    -rw-r--r--. 1 root root 0 Jan 12 2010 /etc/exports

    [root@nfs01 ~]# cat /etc/exports

    4.2 获取/etc/exports帮助文档

    [root@nfs01 ~]# man exports

    EXAMPLE

    # sample /etc/exports file

    / master(rw) trusty(rw,no_root_squash)

    /projects proj*.local.domain(rw)

    /usr *.local.domain(ro) @trusted(rw)

    /home/joe pc001(rw,all_squash,anonuid=150,anongid=100)

    /pub *(ro,insecure,all_squash)

    /srv/www -sync,rw server @trusted @external(ro)

    /foo 2001:db8:9:e54::/64(rw) 192.0.2.0/24(rw)

    /build buildhost[0-9].local.domain(rw)

    4.3 创建共享目录/data且查看NFS服务对应的进程用户

    [root@nfs01 ~]# mkdir /data -p

    [root@nfs01 ~]# id nfsnobody

    uid=65534(nfsnobody) gid=65534(nfsnobody) groups=65534(nfsnobody)

    4.4 授权/data目录属主属组权限

    [root@nfs01 ~]# ls -ld /data/

    drwxr-xr-x 2 root root 4096 Jul 21 16:31 /data/

    [root@nfs01 ~]# chown -R nfsnobody:nfsnobody /data/

    [root@nfs01 ~]# ls -ld /data/

    drwxr-xr-x 2 nfsnobody nfsnobody 4096 Jul 21 16:31 /data/

    4.5 编辑/etc/exports配置文件

    [root@nfs01 ~]# vi /etc/exports

    #share /data by wolf_dreams for software at 2018-07-21

    /data 172.16.1.0/24(rw,sync)直接将数据写入到硬盘小并发,大并发采用async

    [root@nfs01 ~]# cat /etc/exports

    #share /data by wolf_dreams for software at 2018-07-21

    /data 172.16.1.0/24(rw,sync)

    [root@nfs01 ~]# cat /var/lib/nfs/etab

    /data 172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,anonuid=65534,anongid=65534,sec=sys,rw,root_squash,no_all_squash)

    4.6 重启nfs服务

    [root@nfs01 ~]# /etc/init.d/nfs reload

    [root@nfs01 ~]# exportfs -rv

    exporting 172.16.1.0/24:/data

    提示:/etc/init.d/nfs reload 等价于exportfs –rv, 即平滑重启,意思就是把已经正在排队的任务处理完成后再重启nfs服务

    4.7 NFS服务端查看挂载信息

    [root@nfs01 ~]# showmount -e 172.16.1.31

    Export list for 172.16.1.31:

    /data 172.16.1.0/24

    4.8 NFS服务端验证测试

    [root@nfs01 ~]# ls -l /data/

    total 0

    -rw-r--r-- 1 nfsnobody nfsnobody 0 Jul 21 16:53 nfs.txt

    [root@nfs01 ~]# cat /data/nfs.txt

    welcome to wolf_dreams

    5 NFS客户端配置

    NFS客户端挂载参数说明表

    挂载命令

    挂载文件系统类型

    NFS服务端提供的共享目录

    NFS客户端的挂载点

    mount

    -t nfs

    172.16.1.31:/data

    /mnt(必须存在)

    完整挂载命令:mount -t nfs 172.16.1.31:/data /mnt,此命令在客户端上执行

    5.1 NFS客户端查看挂载信息

    [root@backup ~]# showmount -e 172.16.1.31

    Export list for 172.16.1.31:

    /data 172.16.1.0/24

    5.2 挂载NFS网络文件系统到本地/mnt目录(临时)

    [root@backup ~]# mount -t nfs 172.16.1.31:/data /mnt

    5.3 开机自动挂载网络文件系统NFS

    方法一(添加至/etc/rc.d/rc.local开机启动配置文件中):

    [root@backup ~]# echo "#Start up and mount automatically nfs by wolf_dreams at 2018-07-28" >> /etc/rc.d/rc.local

    [root@backup ~]# echo "/bin/mount -t nfs 172.16.1.31:/data /mnt" >> /etc/rc.d/rc.local

    [root@backup ~]# tail -2 /etc/rc.d/rc.local

    #Start up and mount automatically nfs by wolf_dreams at 2018-07-28

    /bin/mount -t nfs 172.16.1.31:/data /mnt

    方法二(添加至/etc/fstab配置文件中):

    [root@backup ~]# echo "172.16.1.31:/data /mnt nfs defaults 0 0" >> /etc/fstab

    [root@backup ~]# tail -1 /etc/fstab

    172.16.1.31:/data /mnt nfs defaults 0 0

    提示(使用/etc/fstab方式挂载nfs网络文件系统需要开机netfs服务):

    [root@backup ~]# /etc/init.d/netfs start

    NFS filesystems queued to be mounted

    Mounting filesystems: [ OK ]

    [root@backup ~]# chkconfig netfs on

    [root@backup ~]# chkconfig --list netfs

    netfs 0:off 1:off 2:on 3:on 4:on 5:on 6:off

    原因:linux操作系统开机启动的时候先加载/etc/fstab配置文件,然后才启动网络服务,使其网络正常,NFS网络文件系统在客户端挂载依赖于网络联通,只有网络正常才能挂载成功,故需要启动netfs服务才能实现开机自动挂载,/etc/fstab配置文件即使是本地文件系统,最后两列也要设置为0 0,否则可能会导致linux系统无法启动

    5.4 查看当前系统已挂载文件系统信息

    方法一(df -h):

    [root@backup ~]# df -h

    Filesystem Size Used Avail Use% Mounted on

    /dev/sda3 18G 1.6G 15G 10% /

    tmpfs 238M 0 238M 0% /dev/shm

    /dev/sda1 477M 35M 417M 8% /boot

    172.16.1.31:/data 18G 1.5G 15G 9% /mnt

    方法二(mount):

    [root@backup ~]# mount | grep mnt

    172.16.1.31:/data on /mnt type nfs (rw,vers=4,addr=172.16.1.31,clientaddr=172.16.1.41)

    方法三(/proc/mounts):

    [root@backup ~]# cat /proc/mounts | grep mnt

    172.16.1.31:/data/ /mnt nfs4 rw,relatime,vers=4,rsize=65536,wsize=65536,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=172.16.1.41,minorversion=0,local_lock=none,addr=172.16.1.31 0 0

    5.5 客户端测试

    [root@backup ~]# cd /mnt/

    [root@backup mnt]# ls

    [root@backup mnt]# touch nfs.txt

    [root@backup mnt]# ls -l

    total 0

    -rw-r--r-- 1 nfsnobody nfsnobody 0 Jul 21 16:53 nfs.txt

    [root@backup mnt]# echo "welcome to wolf_dreams" > nfs.txt

    6 搭建NFS集群共享更改用户

    6.1 NFS服务端配置

    [root@nfs01 ~]# mkdir /data1

    [root@nfs01 ~]# tail -2 /etc/exports

    #share /data1 by wolf_dreams at 2018-07-28

    /data1 172.16.1.0/24(rw,sync,all_squash,anonuid=888,anongid=888)

    [root@nfs01 ~]# useradd -u 888 -s /bin/bash -M nfs

    [root@nfs01 ~]# chown -R nfs:nfs /data1

    [root@nfs01 ~]# /etc/init.d/nfs reload

    [root@nfs01 ~]# cd /data1

    [root@nfs01 data1]# ls

    test.txt

    提示:all_squash参数含义:不管你访问NFS服务共享目录的用户身份如何,它的权限都会被压缩成匿名用户,同时它的UID和GID都会变成nfsnobody账号身份

    6.2 NFS客户端配置

    [root@backup ~]# useradd -u 888 -s /bin/bash -M nfs

    [root@backup ~]# showmount -e 172.16.1.31

    Export list for 172.16.1.31:

    /data1 172.16.1.0/24

    /data 172.16.1.0/24

    [root@backup ~]# mount -t nfs 172.16.1.31:/data1 /opt

    [root@backup ~]# df -h | grep opt

    172.16.1.31:/data1 18G 1.5G 15G 9% /opt

    [root@backup opt]# cd

    [root@backup ~]# cd /opt/

    [root@backup opt]# ls

    [root@backup opt]# touch test.txt

    7 故障排查案例

    7.1 案例一

    故障现象描述:

    [root@backup ~]# showmount -e 172.16.1.31

    clnt_create: RPC: Port mapper failure - Unable to receive: errno 111 (Connection refused)

    排查思路:

    1、检查防火墙是否关闭

    [root@nfs01 ~]# /etc/init.d/iptables status

    iptables: Firewall is not running.

    2、服务是否启动

    [root@nfs01 ~]# /etc/init.d/rpcbind status

    rpcbind is stopped

    3、端口是否开启

    [root@backup ~]# telnet 172.16.1.31 111

    Trying 172.16.1.31...

    telnet: connect to address 172.16.1.31: Connection refused

    解决办法:

    [root@nfs01 ~]# /etc/init.d/rpcbind start

    Starting rpcbind: [ OK ]

    [root@nfs01 ~]# /etc/init.d/rpcbind status

    rpcbind (pid 3386) is running...

    7.2 案例二

    故障现象描述:

    [root@backup ~]# showmount -e 172.16.1.31

    clnt_create: RPC: Program not registered

    排查思路:

    NFS服务端rpcbind、nfs服务的启动前后顺序有问题

    解决办法:

    [root@nfs01 ~]# /etc/init.d/nfs restart

    Shutting down NFS daemon: [ OK ]

    Shutting down NFS mountd: [ OK ]

    Shutting down NFS quotas: [ OK ]

    Shutting down NFS services: [ OK ]

    Shutting down RPC idmapd: [ OK ]

    Starting NFS services: [ OK ]

    Starting NFS quotas: [ OK ]

    Starting NFS mountd: [ OK ]

    Starting NFS daemon: [ OK ]

    Starting RPC idmapd: [ OK ]

    转载于:https://www.cnblogs.com/Wolf-Dreams/p/9459869.html

    展开全文
  • 2.作用:类似于windows系统网络共享,但无法部署在windows中,适用于中小型企业共享部署,大型网站不适合(Moosefs,FASTdfs)windows网络共享FTP(linux),samba(linux),NFS(linux) 3.NFS企业应用场景(1)...
  • Azure 文件共享可由云或者 Windows、Linux 和 macOS 的本地部署同时装载。 众所周知,前两年,由于病毒“坏兔子”来袭,国家互联网应急中心等安全机构建议用户及时关闭计算机以及网络设备上的445和139端口,所以...
  • 通过 NFS(由服务器、客户机软件和两者之间的协议组成),一台计算机就可以和同一网络中的其他计算机共享物理文件系统。NFS 隐藏服务器的文件系统的实现和类型。对于在 NFS 客户机上运行的应用程序,共享文件系统看...
  • 最近在研究通过docker的方式快速部署web项目,处理完单台服务器统一部署的问题后,简单集群搭建...之前已经使用过samba在linux与windows之间实现文件共享,这次选择了NFS。关于NFS的定义这里...
  • 如何通过WindowsServer2008R2建立NFS存储服务?通过WindowsServer2008R2,我们可以很容易地将其作为一台NFS存储服务器,得到一个NFS软存储,轻松解决某些环境下的问题。接下来以WindowsServer2008R2SP1企业版为例: ...
  • NFS部署

    2019-06-10 15:29:52
    NFS(Network File System),功能同Windows下的磁盘映射,通过网络为其他服务器提供文件读取和存储服务。 适用场景 数据备份 多客户端数据共享读取、写入 2.原理 客户端通过mount命令访问要...
  • 借助YUM软件仓库,可以完成安装,卸载,自动升级rpm软件包等任务,且可以自动查找并解决rpm包之间的依赖...另外,Samba共享服务虽然可以提供文件,但是Samba主要是为了和Windows共享,单从效率上来说NFS效率更高。 ...
  • 本文采用了私有化部署的方式向用户提供了文件共享存储服务。用NFS协议,搭建Windows环境NFS服务,为Windows系统下的云主机提供共享访问服务。存储格式都有哪些?文件、块和对象是三种以不同的方式来保存、整理和呈现...
  • nfs部署

    2016-11-29 17:39:19
    nfs==network file system (网络文件系统),可以用于网络文件共享,他允许网络中的计算机可以通过tcp/ip的网络共享资源。在NFS的应用中,服务端的NFS设置可以要挂载的客户端,给予其一定的权限;而客户端的应用可以...

空空如也

空空如也

1 2 3 4
收藏数 76
精华内容 30
关键字:

nfswindows文件共享部署