运维百科

RedHat7下NFS服务搭建

一、简介

    NFS为网络文件系统(Network file system)的缩写,由Sun公司开发,通过网络,NFS支持在不同的文件系统之间共享文件.用户不必关心计算机的型号,以及使用的操作系统,如果想使 用远程计算机上的文件,只要用mount命令将远程的目录挂接在本地文件系统下,就可以如同使用本地文件一样使用这个资源.

二、安装NFS服务器
RedHat 7 操作系统,使用以下命令安装 NFS 支持
    yum install nfs-utils nfs-utils-lib   #在RHEL7中lib包的文件名为libnfsidmap

安装完以后先不急着启动,先来了解一下nfs服务运行在哪些端口上,它默认需要使用5个端口,其中有4个端口是动态的,所以如果服务器和客户端之间有iptables,就要先把这4个动态端口设置成静态的,然后加入进防火墙规则里,需要修改的端口有如下四个(端口可以根据需求改,不一定就和我这一样): 

#编辑nfs配置文件 
    vi /etc/sysconfig/nfs
    LOCKD_TCPPORT=30001 #TCP锁使用端口 
    LOCKD_UDPPORT=30002 #UDP锁使用端口
    MOUNTD_PORT=30003 #挂载使用端口
    STATD_PORT=30004 #状态使用端口


改好以后保存退出,除了以上四个端口要通过iptables,还有nfs协议端口2049以及rpc的111端口,这样才能顺利的使用nfs服务。

    #往iptables里写入规则,让需要的端口通过
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 111 -j ACCEPT
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 2049 -j ACCEPT
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 30001 -j ACCEPT
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 30002 -j ACCEPT
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 30003 -j ACCEPT
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 30004 -j ACCEPT


服务器端设置NFS卷输出,即编辑 

    vim /etc/exports 

添加:

    /server    192.168.10.0/24(rw,sync,no_root_squash,no_subtree_check)


主配置文件:/etc/exports

配置文件的格式为:[共享目录] [主机名或IP(参数,参数)]
共享目录:服务器上需要共享的目录路径;
主机名或IP:如果主机名或IP地址为空,则表示共享给所有客户机;
参数:NFS共享的常用参数如下:
    ro:只读
    rw:读写
    sync:同步写入资料到内存与硬盘中
    async:资料会先暂存于内存中,而非直接写入硬盘
    secure:NFS通过1024以下的安全TCP/IP端口发送
    insecure:NFS通过1024以上的端口发送
    wdelay:如果多个用户要写入NFS目录,则归组写入(默认)
    no_wdelay:如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。
    hide:在NFS共享目录中不共享其子目录
    no_hide:共享NFS目录的子目录
    subtree_check:如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认)
    no_subtree_check:同上,但不检查父目录权限
    all_squash:共享文件的UID和GID映射匿名用户anonymous,适合公用目录。
    no_all_squash:保留共享文件的UID和GID(默认)
    root_squash:root用户的所有请求映射成如anonymous用户一样的权限(默认)
    no_root_squash:root用户具有根目录的完全管理访问权限
    anonuid=xxx:指定NFS服务器/etc/passwd文件中匿名用户的UID
    anongid=xxx:指定NFS服务器/etc/passwd文件中匿名用户的GID


当将同一目录共享给多个客户机,但对每个客户机提供的权限不同时,可以这样:

[共享目录] [主机名1或IP1(参数1,参数2)] [主机名2或IP2(参数3,参数4)]
示例 :  
cat /etc/exports
  /server 192.168.10.10(rw,no_root_squash) *(ro)
共享目录/server 允许192.168.10.10客户机读写并且root用户有管理权限。其他机器只有可读权限。


设置nfs相关服务在操作系统启动时启动

    systemctl enable rpcbind
    systemctl enable nfs-server
    systemctl enable nfs-lock
    systemctl enable nfs-idmap
启动nfs服务
    systemctl start rpcbind
    systemctl start nfs-server
    systemctl start nfs-lock
    systemctl start nfs-idmap  


如果修改了/etc/exports文件后不需要重新激活nfs,只要使用exportfs命令重新扫描一次/etc/exports文件,且重新将设定加载即可。

    exportfs –arv
exportfs命令用法:
    exportfs [-aruv]
参数说明如下:
    -a:全部挂载(或卸载)/etc/exports文件内的设定。
    -r:重新挂载/etc/exports中的设置,此外同步更新/etc/exports及/var/lib/nfs/xtab中的内容。
    -u:卸载某一目录。
    -v:在export时将共享的目录显示在屏幕上。

 

确认NFS成功运行:
rpcinfo -p | grep nfs
    100003    2   udp   2049  nfs
    100003    3   udp   2049  nfs
    100003    4   udp   2049  nfs
    100003    2   tcp   2049  nfs
    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs


三、NFS客户端挂载

显示NFS服务器的共享目录
    showmount -e 192.168.10.10
Export list for 192.168.10.10:

/server   192.168.10.10/24


Linux挂载NFS的客户端非常简单的命令,先创建挂载目录,然后用 -t nfs 参数挂载就可以了
    mount -t nfs  192.168.10.10:/server /client


客户端查看挂载情况
    mount
192.168.10.10:/server on /client type nfs (rw,addr=192.168.1.5)
或者
    df -h
Filesystem            Size  Used Avail Use% Mounted on

192.168.1.5:/server  9.7G  1.8G  7.4G  20% /client


客户端卸载NFS文件命令

    umount /client


客户机开机自动挂载
客户端可以设置系统启动时自动挂载NFS文件,需要将NFS的共享目录挂载信息写入/etc/fstab/文件,以实现对NFS共享目录的自动挂载。
编辑/etc/fstab文件:
    vi /etc/fstab
在最后加入如:  
    192.168.10.10:/server /client nfs defaults 0 0
或者

    echo "192.168.10.10:/server /client nfs defaults 0 0" >>/etc/fstab 

然后在客户端简单使用以下命令就可以挂载
    mount /server
至此,CentOS配置NFS服务器教程完成


本站部分资源收集于网络,纯个人收藏,无商业用途,如有侵权请及时告知!

0
分享到:

评论 0

取消
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址