博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NFS
阅读量:6969 次
发布时间:2019-06-27

本文共 8682 字,大约阅读时间需要 28 分钟。

NFS

1.1NFS定义:

NFS(Network File System) 网络文件系统,它的工作机制是基于rpc来实现网络文件系统共享的。

1.2NFS作用

'1.通过局域网让不同的主机系统之间可以共享文件或目录2.节省本地存储空间,本地终端将可以减少自身存储空间的使用3.用户不需要在网络中的每个机器都建有Home目录,home目录可以放在NFS服务器,可以在网络上被访问4.减少整个网络上可移动介质设备的数量(存储设备:软驱、COROM、zip(一种高储存密度的磁盘驱动器与磁盘)等可以在网络上被别的机器使用。'

1.3nfs的体系组成

一台nfs服务器若干台客户机

如图:

NFS

2.1RPC

RPC(Remote  Procedure  Call Protocol),远程过程调用协议,通过网络从远程计算机程序上请求服务,在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC采用客户机/服务器模式。请求程序就是客户机,而服务提供程序就是一个服务器。

2.2NFS系统原理

'Rpc.nfsd:它是基本的NFS守护进程,主要功能是管理客户端是否能够登录服务器''Rpc.mount: 主要功能是管理NFS的文件系统。当客户端顺利通过nfs登录NFS服务器后,在使用NFS服务所提供的文件前,还必须通过文件使用权限的验证。             它会读取NFS的配置文件/etc/exports来对比客户端权限Portmap:主要功能是进行端口映射工作’

3.1搭建nfs服务器环境准备

服务器系统 NFS服务端(nfs-serverA) NFS客服端(nfs-clientB)
Centos 192.168.228.20 192.168.228.21

3.2基础环境配置

开启nfs服务之前,必须关闭防火墙

'开机不启动防火墙'[root@yaoxiaorong ~]# systemctl disable firewalld  '查看firewalld防火墙是否开启'[root@yaoxiaorong ~]# systemctl status firewalld● firewalld.service - firewalld - dynamic firewall daemon   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)   Active: active (running) since Mon 2018-07-30 08:39:34 HKT; 1 weeks 0 days ago     Docs: man:firewalld(1) Main PID: 693 (firewalld)   CGroup: /system.slice/firewalld.service           └─693 /usr/bin/python -Es /usr/sbin/firewal...Jul 30 08:39:28 yaoxiaorong systemd[1]: Starting firew...Jul 30 08:39:34 yaoxiaorong systemd[1]: Started firewa...Jul 30 08:39:36 yaoxiaorong firewalld[693]: WARNING: I...Jul 30 08:39:36 yaoxiaorong firewalld[693]: WARNING: b...Jul 30 08:39:36 yaoxiaorong firewalld[693]: WARNING: I...Jul 30 08:39:36 yaoxiaorong firewalld[693]: WARNING: f...Jul 30 08:39:36 yaoxiaorong firewalld[693]: WARNING: I...Jul 30 08:39:36 yaoxiaorong firewalld[693]: WARNING: r...Hint: Some lines were ellipsized, use -l to show in full.'关闭firewalld防火墙'[root@yaoxiaorong ~]# systemctl stop firewalld.service

关闭selinux防火墙

'Selinux(Security-Enhanced Linux)是美国国家安全局(NSA)对于强制访问控制的实现,是linux历史上最杰出的新安全子系统。Selinux默认安装在Fedora和Red  Hat  Enterprise Linux上,也可以作为其他发行版上容易安装的包得到。强制访问控制(MAC)安全系统,Selinux支持三种模式:''#Enforcing:强制模式,代表SElinux运作中,已经正确的开始限制domain/type''#Permissive:宽容模式,代表SElinux运作中,不过仅会有警告讯息并不会实际限制domain/type的存取。这种模式可以运来作为selinux的debug只用''#Disabled:关闭'
'查看selinux防火墙的状态'[root@yaoxiaorong ~]# getenforce Enforcing'临时关闭selinux防火墙'[root@yaoxiaorong ~]# setenforce 0[root@yaoxiaorong ~]# getenforcePermissive'永久关闭selinux防火墙,但是必须设置完毕之后重启系统'[root@yaoxiaorong ~]# vim /etc/selinux/config *将SELINUX=enforcing修改成---->SELINUX=disabled*

3.3安装NFS-server

'安装nfs服务主程序'[root@yaoxiaorong ~]# yum install nfs-utils rpcbind -y

3.4启动NFS-Server

'启动rpcbind服务'[root@yaoxiaorong ~]# systemctl start rpcbind'加入开机自启动'[root@yaoxiaorong ~]# systemctl enable rpcbind'启动nfs服务'[root@yaoxiaorong ~]# systemctl start nfs-server'加入开机自启动'[root@yaoxiaorong ~]# systemctl enable nfs-server'查看rpc注册信息'[root@yaoxiaorong ~]# 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

查看系统中运行的NFS相关进程

[root@yaoxiaorong ~]# ps -ef |egrep "rpc|nfs"rpc       17208      1  0 15:09 ?        00:00:00 /sbin/rpcbind -wrpcuser   17271      1  0 15:13 ?        00:00:00 /usr/sbin/rpc.statdroot      17272      2  0 15:13 ?        00:00:00 [rpciod]root      17282      1  0 15:13 ?        00:00:00 /usr/sbin/rpc.mountdroot      17283      1  0 15:13 ?        00:00:00 /usr/sbin/rpc.idmapdroot      17293      2  0 15:13 ?        00:00:00 [nfsd4_callbacks]root      17299      2  0 15:13 ?        00:00:00 [nfsd]root      17300      2  0 15:13 ?        00:00:00 [nfsd]root      17301      2  0 15:13 ?        00:00:00 [nfsd]root      17302      2  0 15:13 ?        00:00:00 [nfsd]root      17303      2  0 15:13 ?        00:00:00 [nfsd]root      17304      2  0 15:13 ?        00:00:00 [nfsd]root      17305      2  0 15:13 ?        00:00:00 [nfsd]root      17306      2  0 15:13 ?        00:00:00 [nfsd]root      17332  16143  0 15:16 pts/0    00:00:00 grep -E --color=auto rpc|nfs

3.4配置/etc/exports文件

'/etc/exports'     主配置文件,文件中的项格式相当简单,要共享一个文件系统nfs主配置文件中的常用选项:'secure'   缺省项,它使用了1024以下的TCP/IP端口实现NFS的连接,指定insecure可以禁用这个选项'rw'   允许客户机进行读/写访问'async'           此选项可以改进性能,但如果没有完全关闭NFS守护进程就重启了NFS服务器,但可能会造成数据丢失'no_wdelay'    选项关闭延时,如果设置了async,那么NFS就会忽略此选项'nohide'     若将一个目录挂载到另一个目录之上,则原来的目录通常就被隐藏起来,或看起来像空的一样,要禁用这种行为,需启动hide选项'no_subtree_check'  此选项关闭子树检查,子树检查会执行一些不想忽略的安全性检查。缺省选项是启用子树检查'no_auth_nlm'   此选项可作为insecure_locks指定,它告诉NFS守护进程不要对锁请求进行认证。若关心安全性问题,就要避免使用此选项,缺省选项是auth_nlm或secure_locks'mp(mountpoint=path'     通过显式的声明此选项,NFS要求挂载所导出的目录'fsid=num'   此选项通常在NFS故障恢复时使用
'编辑nfs主配置文件,共享/gongxiang目录至192.168.228.21,可读写'[root@yaoxiaorong ~]# vim /etc/exports[root@yaoxiaorong ~]# cat /etc/exports/gongxiang 192.168.228.21(rw,async)'创建需要共享的目录'[root@yaoxiaorong ~]# mkdir -p /gongxiang'重启nfs服务'[root@yaoxiaorong ~]# systemctl restart nfs-server'查看NFS分享出来的目录的完整权限设置值的配置文件'[root@yaoxiaorong ~]# cat /var/lib/nfs/etab /gongxiang  192.168.228.21(rw,async,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,secure,root_squash,no_all_squash)'查看65534属于哪个用户'[root@yaoxiaorong ~]# grep "65534" /etc/passwdnfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin'递归赋予/gongxiang目录属主nfsnobody'[root@yaoxiaorong ~]# chown -R nfsnobody.nfsnobody /gongxiang/'给共享/gongxiang目录权限777'[root@yaoxiaorong ~]# chmod 777 /gongxiang/'重启nfs-server服务生效'[root@yaoxiaorong ~]# systemctl restart nfs-server.service

3.5客户端查看NFS服务器端共享的文件系统

'先安装showmount'[root@yaoxiaorong ~]# yum install showmount -y[root@yaoxiaorong ~]# showmount -e 192.168.228.20Export list for 192.168.228.20:/gongxiang 192.168.228.21

3.6挂载NFS文件系统

[root@yaoxiaorong ~]# mount -t nfs 192.168.228.20:/gongxiang /mnt[root@yaoxiaorong ~]# df -hFilesystem                           Size  Used Avail Use% Mounted on/dev/mapper/centos_yaoxiaorong-root   17G  1.7G   16G  10% /devtmpfs                             478M     0  478M   0% /devtmpfs                                489M     0  489M   0% /dev/shmtmpfs                                489M   13M  476M   3% /runtmpfs                                489M     0  489M   0% /sys/fs/cgroup/dev/sda1                           1014M  125M  890M  13% /boottmpfs                                 98M     0   98M   0% /run/user/0192.168.228.20:/gongxiang            5.0G  1.6G  3.5G  31% /mnt

永久挂载

'开机自动挂载nfs:编辑/etc/fatab文件,添加如下格式的内容:'192.168.228.20:/gongxiang /mnt nfs  defautls 0 0

客户端卸载

[root@yaoxiaorong ~]# umount /mnt'注意:卸载的时候如果提示“umount.nfs: /mnt: device is busy'1.退出挂载目录在卸载2.NFS Server 宕机,强制卸载umount  -lt  /mnt mount -a

自动挂载

自动挂载服务autofs,挂载方式如下两种:直接:direct /-子配置文件必须写本地绝对路径间接:indirect /path子配置文件写相对于/path的子目录客户端安装autofs自动挂载yum install autofs -ysystemctl enable autofssystemctl start autofs
直接挂载方式:本地的挂载点要写绝对路径名称后缀必须是autofs,/-代表这是一个直接挂载定义,根据/etc/auto.nfs_direct进行挂载全写[root@yaoxiaorong ~]# vim /etc/auto.master.d/nfs.autofs/-   /etc/auto.nfs_direct填写挂载配置[root@yaoxiaorong ~]# vim /etc/auto.nfs_direct/mnt -rw,sync,soft 192.168.228.20:/data重启autofs服务[root@yaoxiaorong ~]# systemctl restart autofs[root@yaoxiaorong ~]# mount/etc/auto.nfs_direct on /mnt type autofs (rw,relatime,fd=18,pgrp=16781,timeout=300,minproto=5,maxproto=5,direct,pipe_ino=43596)192.168.228.20:/data on /mnt type nfs4 (rw,relatime,sync,vers=4.1,rsize=131072,wsize=131072,namlen=255,soft,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.228.21,local_lock=none,addr=192.168.228.20)

3.8客户端在共享的目录中创建文件,服务端查看是否能创建目录

'客户端:'[root@yaoxiaorong ~]# cd /mnt[root@yaoxiaorong mnt]# touch abc'服务端:'[root@yaoxiaorong ~]# cd /gongxiang/[root@yaoxiaorong gongxiang]# lsabc

4.1shell脚本来搭建nfs服务器

'在服务端运用ssh,使服务端远程访问客户端免密码'[root@yaoxiaorong ~]# ssh-keygen -t rsa[root@yaoxiaorong ~]# ls .sshid_rsa  id_rsa.pub[root@yaoxiaorong ~]# ls .sshid_rsa  id_rsa.pub[root@yaoxiaorong ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.228.21
[root@yaoxiaorong ~]# vim nfs.sh#!/bin/bashsetenforce 0sed -ri 's/(SELINUX=).*/\1disabled/g' /etc/selinux/configsystemctl stop firewalldyum install nfs-utils -yyum install rpcbind -ysystemctl start rpcbindsystemctl start nfs-serverecho "/data 192.168.228.21(rw,async)" >/etc/exports && mkdir -p /datachmod 777 /datachown -R nfsnobody.nfsnobody /data/systemctl restart nfs-serverssh root@192.168.228.21 'yum install showmount -y'ssh root@192.168.228.21 'showmount -e 192.168.228.20'ssh root@192.168.228.21 'mount -t nfs 192.168.228.20:/data /mnt && mkdir mnt/123'[root@yaoxiaorong ~]# chmod +x nfs.sh[root@yaoxiaorong ~]# ./nfs.sh

转载于:https://blog.51cto.com/13835001/2155367

你可能感兴趣的文章
BZOJ 1010: [HNOI2008]玩具装箱toy
查看>>
django之路由分发
查看>>
51nod1832 先序遍历与后序遍历
查看>>
MD5 带salt 加密
查看>>
13 用Css做下拉菜单
查看>>
homework-01
查看>>
修改WAMPServer中MySql中文乱码的方法
查看>>
【下载】推荐一款免费的人脸识别SDK
查看>>
不定参数
查看>>
浏览器各种距离
查看>>
使用Python读取Google Spreadsheet的内容并写入到mangodb
查看>>
DOM操作和jQuery实现选项移动操作
查看>>
[emuch.net]MatrixComputations(1-6)
查看>>
ByteArrayOutputStream用法
查看>>
Floyed那些事~~~~~
查看>>
Python 学习笔记1 安装和IDE
查看>>
H5新增标签
查看>>
日志分析
查看>>
Extract Datasets
查看>>
递归加法运算
查看>>