Learning together

Learning together with open source fans. QQ群:8021887


  • 网站首页

  • 站内留言

  • 关于本站

  • 我的相册

  • 联系羽飞

  • 内容订阅
  • 第六章:NFS服务全攻略略

    作者: 羽飞 | 发布时间: 星期六, 02/06/2010 - 00:10 |

    内容简介
    NFS服务的概述
    NFS服务的配置
    启动和停止NFS服务
    测试NFS服务
    NFS客户端的使用
    案例详解

    NFS服务的概述
    NFS最早是由Sun公司于1984年开发出来的,其目的就是让不同计算机不同操作系统之间可以彼此共享文件。由于NFS使用起来非常方便,因此很快得到了大多数的UNIX/Linux系统的广泛支持,而且还被IETE(国际互联网工程组)制定为RFC1904、RFC1813和RFC3010标准。

    NFS服务的概述
    NFS采用客户/服务器工作模式。在NFS服务器上将/nfs/public目录设置为输出目录(即共享目录)后,其他客户端就可以将这个目录挂载到自己系统中的某个目录下,这个目录可以与服务器上的输出目录和其他客户机中的目录不相同,例如图中的客户机PC1与PC2的挂载目录就不相同。
    如果某用户登录到客户机PC1并进入/mnt/nfs目录,那么他就可以看到NFS服务器内/nfs/public目录下的所有子目录及文件,只要具有相应的权限,就可以使用cp、cd、mv、rm和df等命令对磁盘或文件进行相应的操作。

    NFS服务的概述(图1)

    图片1.png

    Remote Procedure Call
    NFS 本身的服务并没有提供资料传递的协议,但是 NFS 却能让我们进行档案的分享,这其中的原因,就是 NFS 使用到一些其它相关的传输协议!而这些传输的协议,就是使用到这个所谓的 RPC
    NFS 主要在管理分享出来的目录,而至于资料的传递,就直接将他给 RPC 的协议来运作
    主机的IP、服务的端口、与对应到的服务的PID 等等管理工作由RPC负责人

    NFS服务的概述
    使用NFS服务,至少需要启动以下3个系统守护进程。
    (1)rpc.nfsd
    (2)rpc.mountd
    (3)portmap

    NFS相关进程的作用(图2)

    图片2.png

    NFS服务的安装
    可使用下面的命令来检查系统中是否已经安装了这两个包
    rpm -q nfs-utils portmap
    下面的命令安装portmap服务
    rpm -ivh portmap
    下面的命令安装NFS服务
    rpm -ivh nfs-utils

    NFS服务的配置
    exports文件的格式
    exprots文件中每一行提供了一个共享目录的设置
    其命令格式为:
    <输出目录> [客户端1(选项1,选项2,…)][客户端2(选项1,选项2,…)]

    客户端常用的指定方式
    客户端 说明
    192.168.16.20 指定IP地址的主机
    192.168.16.0/24(或192.168.16.*) 指定子网中的所有主机
    pc1.vpn.net 指定域名的主机
    *.vpn.net 指定域中的所有主机
    *(或缺省) 所有主机

    访问权限选项
    访问权限选项 说明
    ro 设置输出目录只读
    rw 设置输出目录可读写

    用户映射选项
    用户映射选项 说明
    all_squash 将远程访问的所有普通用户及所属用户组都映射为匿名用户或用户组(一般均为nfsnobody)
    no_all_squash 不将远程访问的所有普通用户及所属用户组都映射为匿名用户或用户组(默认设置)
    root_squash 将root用户及所属用户组都映射为匿名用户或用户组(默认设置)
    no_root_squash 不将root用户及所属用户组都映射为匿名用户或用户组
    anonuid=xxx 将远程访问的所有用户都映射为匿名用户,并指定该匿名用户账户为本地用户账户(UID=xxx)
    anongid=xxx 将远程访问的所有用户组都映射为匿名用户组账户,并指定该匿名用户组账户为本地用户组账户(GID=xxx)

    常用的其他选项
    其他选项 说明
    secure 限制客户端只能从小于1024的TCP/IP端口连接NFS服务器(默认设置) insecure 允许客户端从大于1024的TCP/IP端口连接NFS服务器
    sync 将数据同步写入内存缓冲区与磁盘中,虽然这样做效率较低,但可以保证数据的一致性
    async 将数据先保存在内存缓冲区中,必要时才写入磁盘
    wdelay 检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可提高效率(默认设置)
    no_wdelay 若有写操作则立即执行,应与sync配合使用
    subtree_check 若输出目录是一个子目录,则NFS服务器将检查其父目录的权限(默认设置)
    no_subtree_check 即使输出目录是一个子目录,NFS服务器也不检查其父目录的权限,这样做可提高效率

    NFS服务配置实例
    /nfs/public 192.168.16.0/24(rw,async) *(ro)
    /nfs/liu 192.168.16.20(rw,sync)
    /nfs/root *.gdvcp.net(ro,no_root_squash)
    /mnt/cdrom 192.168.16.*(ro)

    维护NFS服务的输出目录列表
    exportfs命令就是用来维护NFS服务的输出目录列表
    的,命令的基本格式如下。
    exportfs [选项]
    其选项有以下几个。
    -a:输出在/etc/exports文件中所设置的所有目录。
    -r:重新读取/etc/exports文件中的设置,并使设置立即生效,而不需重新启动NFS服务。
    -u:停止输出某一目录。
    -v:在输出目录时将目录显示到屏幕上

    启动和停止NFS服务
    1.启动NFS服务
    /etc/init.d/portmap start
    /etc/init.d/nfs start
    2.停止NFS服务
    /etc/init.d/nfs stop
    /etc/init.d/portmap stop
    3.重新启动NFS服务
    /etc/init.d/nfs restart
    4.检查portmap和nfs服务的状态
    /etc/init.d/portmap status
    /etc/init.d/nfs status
    5.设置自动启动NFS服务
    chkconfig –level 35 portmap on
    chkconfig –level 35 nfs on
    ntsysv启动服务配置程序,找到”nfs”和”portmap”服务,分别在其前面加上”*”

    测试NFS服务
    1.检查输出目录所使用的选项
    在配置文件/etc/exports中,即使在命令行中只设置了一两个选项,但在真正输出目录时,实际上还带有很多默认的选项。通过查看/var/lib/nfs/etab文件,就可以了解到真正输出目录时,到底使用了什么选项 。
    2.使用showmount命令测试NFS服务器的输出目录状态
    showmount命令的基本格式为:
    showmount [选项] NFS服务器名称或地址
    常用的选项有:
    -a:显示指定的NFS服务器的所有客户端主机及其所连接的目录;
    -d:显示指定的NFS服务器中已被客户端连接的所有输出目录;
    -e:显示指定的NFS服务器上所有输出的共享目录。


    NFS客户端的使用
    查看NFS服务器信息
    【例】如果NFS服务器的IP地址为192.168.85.128,那么可使用下面的命令来查看。
    showmount -e 192.168.85.128
    连接NFS服务器
    挂载NFS服务器上的输出目录的命令格式为:
    mount -t NFS服务器名或IP地址:输出目录 本地挂载目录

    【例】将NFS服务器(192.168.85.128)上的/nfs/public共享目录挂载到本机上的/mnt/nfs目录。
    具体的步骤如下。
    ① 使用下面的命令来建立/mnt/nfs目录。
    mkdir /mnt/nfs
    ② 使用下面的命令来挂载NFS服务器上的输出目录。
    mount -t nfs 192.168.85.1128:/nfs/public /mnt/nfs
    卸载NFS服务器
    要卸载前面挂载的/mnt/nfs目录,可使用下面的命令。
    umount /mnt/nfs

    启动时自动连接NFS
    要想让系统在启动时自动挂载NFS服务器上的输出目录,应编辑文件/etc/fstab,在该文件中加入如下格式的语句。
    NFS服务器名或IP地址:输出目录 本地挂载目录 nfs defaults 0 0

    【例】要将NFS服务器(192.168.85.128)上的/nfs/public共享目录,在计算机Fedora4启动时自动挂载到该机上的/mnt/nfs目录,可在/etc/fstab文件中加入下面的语句。
    192.168.85.129:/nfs/public /mnt/nfs nfs defaults 0 0

    mount nfs的其它可选参数
    soft #当服务器端没回应时,会在timeout后重新连接,传回错误信息
    hard #当服务器端没回应时持续在后台尝试连接
    intr #当正在进行 NFS 请求时,允许用键 盘中断
    nointr #当正在进行 NFS 请求时,不允许用键盘中断
    timeo #超时时间

    案例详解
    【案例1】架设一台NFS服务器,并按照以下要求配置输出目录
    (1)开放/nfs/shared目录,供所有用户查阅资料。
    (2)开放/nfs/upload目录作为192.168.85.0/24网段的数据上传目录,并将所有用户及所属的用户组都映射为nfs-upload,其UID与GID均为210。
    (3)将/home/tom目录仅共享给192.168.85.129这台主机,并且只有用户tom可以完全访问该目录。

    # mkdir -p /nfs/shared
    # mkdir -p /nfs/upload
    # chmod 777 /nfs/upload
    # useradd tom
    # useradd -u 600 test
    # vim /etc/exports
    /nfs/shared *(ro) /nfs/upload 192.168.85.0/24(rw,all_squash,anonuid=210,anongid=210)
    /home/tom 192.168.85.128(rw)
    注意一点:这里要注意tom两边的UID必需要一致否则不能实现第3个要求

    ★★★★★★★★★★★★★★★★★视频观看地址★★★★★★★★★★★★★★★★★★
    http://www.boobooke.com/v/bbk3355
    http://www.boobooke.com/v/bbk3356

    相关文章

    发表评论