nfs(代码片段)

author author     2022-12-20     484

关键词:

NFS

1.1NFS定义:

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

1.2NFS作用

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

1.3nfs的体系组成

一台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服务之前,必须关闭防火墙

‘开机不启动防火墙‘
[[email protected] ~]# systemctl disable firewalld  
‘查看firewalld防火墙是否开启‘
[[email protected] ~]# 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防火墙‘
[[email protected] ~]# 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防火墙的状态‘
[[email protected] ~]# getenforce 
Enforcing
‘临时关闭selinux防火墙‘
[[email protected] ~]# setenforce 0
[[email protected] ~]# getenforce
Permissive

‘永久关闭selinux防火墙,但是必须设置完毕之后重启系统‘
[[email protected] ~]# vim /etc/selinux/config 
*将SELINUX=enforcing修改成---->SELINUX=disabled*

3.3安装NFS-server

‘安装nfs服务主程序‘
[[email protected] ~]# yum install nfs-utils rpcbind -y

3.4启动NFS-Server

‘启动rpcbind服务‘
[[email protected] ~]# systemctl start rpcbind
‘加入开机自启动‘
[[email protected] ~]# systemctl enable rpcbind
‘启动nfs服务‘
[[email protected] ~]# systemctl start nfs-server
‘加入开机自启动‘
[[email protected] ~]# systemctl enable nfs-server
‘查看rpc注册信息‘
[[email protected] ~]# 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相关进程

[[email protected] ~]# ps -ef |egrep "rpc|nfs"
rpc       17208      1  0 15:09 ?        00:00:00 /sbin/rpcbind -w
rpcuser   17271      1  0 15:13 ?        00:00:00 /usr/sbin/rpc.statd
root      17272      2  0 15:13 ?        00:00:00 [rpciod]
root      17282      1  0 15:13 ?        00:00:00 /usr/sbin/rpc.mountd
root      17283      1  0 15:13 ?        00:00:00 /usr/sbin/rpc.idmapd
root      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,可读写‘
[[email protected] ~]# vim /etc/exports
[[email protected] ~]# cat /etc/exports
/gongxiang 192.168.228.21(rw,async)
‘创建需要共享的目录‘
[[email protected] ~]# mkdir -p /gongxiang
‘重启nfs服务‘
[[email protected] ~]# systemctl restart nfs-server
‘查看NFS分享出来的目录的完整权限设置值的配置文件‘
[[email protected] ~]# 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属于哪个用户‘
[[email protected] ~]# grep "65534" /etc/passwd
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin

‘递归赋予/gongxiang目录属主nfsnobody‘
[[email protected] ~]# chown -R nfsnobody.nfsnobody /gongxiang/

‘给共享/gongxiang目录权限777‘
[[email protected] ~]# chmod 777 /gongxiang/

‘重启nfs-server服务生效‘
[[email protected] ~]# systemctl restart nfs-server.service 

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

‘先安装showmount‘
[[email protected] ~]# yum install showmount -y
[[email protected] ~]# showmount -e 192.168.228.20
Export list for 192.168.228.20:
/gongxiang 192.168.228.21

3.6挂载NFS文件系统

[[email protected] ~]# mount -t nfs 192.168.228.20:/gongxiang /mnt
[[email protected] ~]# df -h
Filesystem                           Size  Used Avail Use% Mounted on
/dev/mapper/centos_yaoxiaorong-root   17G  1.7G   16G  10% /
devtmpfs                             478M     0  478M   0% /dev
tmpfs                                489M     0  489M   0% /dev/shm
tmpfs                                489M   13M  476M   3% /run
tmpfs                                489M     0  489M   0% /sys/fs/cgroup
/dev/sda1                           1014M  125M  890M  13% /boot
tmpfs                                 98M     0   98M   0% /run/user/0
192.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

客户端卸载

[[email protected] ~]# 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 -y
systemctl enable autofs
systemctl start autofs
直接挂载方式:本地的挂载点要写绝对路径
名称后缀必须是autofs,/-代表这是一个直接挂载定义,根据/etc/auto.nfs_direct进行挂载全写

[[email protected] ~]# vim /etc/auto.master.d/nfs.autofs

/-   /etc/auto.nfs_direct

填写挂载配置
[[email protected] ~]# vim /etc/auto.nfs_direct

/mnt -rw,sync,soft 192.168.228.20:/data
重启autofs服务
[[email protected] ~]# systemctl restart autofs
[[email protected] ~]# 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客户端在共享的目录中创建文件,服务端查看是否能创建目录

‘客户端:‘
[[email protected] ~]# cd /mnt
[[email protected] mnt]# touch abc
‘服务端:‘
[[email protected] ~]# cd /gongxiang/
[[email protected] gongxiang]# ls
abc

4.1shell脚本来搭建nfs服务器

‘在服务端运用ssh,使服务端远程访问客户端免密码‘
[[email protected] ~]# ssh-keygen -t rsa
[[email protected] ~]# ls .ssh
id_rsa  id_rsa.pub
[[email protected] ~]# ls .ssh
id_rsa  id_rsa.pub
[[email protected] ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
[[email protected] ~]# vim nfs.sh

#!/bin/bash
setenforce 0
systemctl stop firewalld
yum install nfs-utils -y
yum install rpcbind -y
systemctl start rpcbind
systemctl start nfs-server
echo "/data 192.168.228.21(rw,async)" >/etc/exports && mkdir -p /data
chmod 777 /data
chown -R nfsnobody.nfsnobody /data/
systemctl restart nfs-server

ssh [email protected] ‘yum install showmount -y‘
ssh [email protected] ‘showmount -e 192.168.228.20‘
ssh [email protected] ‘mount -t nfs 192.168.228.20:/dat
a /mnt && mkdir mnt/123‘

[[email protected] ~]# chmod +x nfs.sh
[[email protected] ~]# ./nfs.sh

nfs架构(代码片段)

title:NFS架构tags:nfs,rpc,rpcbindgrammar_cjkRuby:trueNFS架构1.NFS简述NFS(NetworkFileSystem)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明... 查看详情

nfs(代码片段)

 NFS:networkfilesystem一、NFS服务介绍NFS是NetworkFileSystem的缩写,顾名思义就是网络文件存储系统,它最早是由Sun公司发展出来的,也是FreeBSD支持的文件系统中的一个,它允许网络中的计算机之间通过TCP/IP网络共享资源。通过NFS... 查看详情

nfs服务搭建与配置(代码片段)

NFS服务搭建与配置NFS介绍NFS服务端安装配置NFS配置选项exportfs命令NFS客户端问题NFS介绍NFS是NetworkFileSystem的缩写NFS最早由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4.0开始Netapp公司参与并主导开发,最新为4.1版本NFS数据... 查看详情

3-nfs-共享存储(代码片段)

一,NFS概述1.什么是nfs?  NFS(NetworkFileSystem)即网络文件系统。NFS共享存储2.nfs能干什么?  主要功能:通过网络(局域网)让不同的主机系统之间可以共享文件或目录。3.为什么要使用nfs?  NFS网络文件系统一般被用来存储... 查看详情

nfs-网络文件共享服务(代码片段)

目录NFS介绍什么是NFS(NetworkFileSystem)搭建NFS服务需要的软件包极简步骤搭建NFS服务准备两台机器配置服务端(nfs-server)配置客户端(web-client)NFS服务简单执行流程NFS文件访问权限NFS服务端配置客户端地址的表示方法/etc/exports参数/etc/exp... 查看详情

nfs(代码片段)

NFS在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。安装yuminstallnfs-utilsrpcbind-y创建共享目录:data/data设置存储路径访问权限;(*可以设置访问的ip地址)/etc/exports[[email ... 查看详情

nfs(代码片段)

(1)nfs简介作用:通过网络的不同的主机之间共享资源,支持多节点挂载并发写入特点:单台,适合小型网络集群架构,非常稳定;大型公司使用(mfs,glusterfs,fastdfs)nfs优点:部署和维护简单;数据是在文件系统之上,是能看... 查看详情

nfs(代码片段)

NFS1.1NFS定义:NFS(NetworkFileSystem)网络文件系统,它的工作机制是基于rpc来实现网络文件系统共享的。1.2NFS作用‘1.通过局域网让不同的主机系统之间可以共享文件或目录2.节省本地存储空间,本地终端将可以减少自身存储空间的使... 查看详情

nfs(代码片段)

使用roles实现一键部署nfs环境准备主机名安装服务wanlanweb01nfs客户端10.0.0.7172.16.1.7web02nfs客户端10.0.0.8172.16.1.8nfsnfs服务端10.0.0.9172.16.1.9backupbackup服务端10.0.0.41172.16.1.41流程分析1.安装ansible2.优化ansible3.推送公钥4.开启防火墙5.开启8044 查看详情

nfs(代码片段)

NFS全称net-file-system是一款网络文件系统。它的功能就是可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件(NFS一般用来存储共享视频,图片等静态数据)。而在客户端看来,共享的目录就是其本身的目录。网络... 查看详情

nfs服务部署(代码片段)

NFS简介NFS(NetworkFileSystem)网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文... 查看详情

nfs共享存储(代码片段)

nfs共享文件存储networkfilesystem;为什么要使用nfs?如果userA上传文件通过负载均衡器上传到了web01,这个时候userB去下载file1又被负载均衡器分配到了web02上面就找不到userA上传的资源了。使用了共享存储nfs之后,userA上传的文件到nf... 查看详情

nfs(networkfilesystem)(代码片段)

文章目录nfs(NetworkFileSystem)应用场景优点NFS的工作原理RPCNFS工作机制NFS工作流程:配置方法/etc/exports文件的编写格式实例要求配置步骤服务端安装启动nfs并关闭防火墙和selinux编辑/etc/exports文件创建映射用户和共享目... 查看详情

nfs介绍,配置(上)(代码片段)

NFS介绍1.NFS不监听任何端口,rpcbind监听111端口2.NFS服务需要借助于rpc协议NFS服务端安装配置1.服务端安装两个服务:[[email protected]~]#yuminstall-ynfs-utilsrpcbind2.客户端安装一个服务:[[email protected]~]#yuminstall-ynfs-utils3.服务端编... 查看详情

nfs网络文件共享服务(代码片段)

一、NFS工作原理NFS原理:相当于一块网络硬盘被多个PC挂载,如何获得网络磁盘的端口号? 首先NFS是一个共享目录,例,他共享了data目录,这时候客户端通过IP远程挂载这个目录,也需要知道NFS的端口号。 二、NFS工作流... 查看详情

nfs挂载文件(代码片段)

1.安装必备插件 以防centos7默认没有启动nfs服务   yum-yinstallnfs-utilsrpcbind   servicerpcbindstart  servicenfsstart[[email protected]nfs]#ps-ef|grepnfsroot55982010:08 查看详情

nfs(代码片段)

首先关闭防火墙----NFS---(默认情况,已经安装!!)yum-yinstallnfs-utils---端口:netstat-tunlp(端口除了nfs是2049以外,其他的都是随机的!!!)---主配置文件:/etc/exports/etc(ro,sync)(共享/etc/文件,号的位置是允许访问服务器的主机的I... 查看详情

nfs(代码片段)

防火墙都是关闭的服务端[root@localhost~]#yum-yinstallrpcbindnfs-utils编辑/etc/exportsp配置文件配置共享目录(配置文件默认可能没有)root@ubuntu:~#cat/etc/exports#共享目录允许访问的IP或网段(参数)/nfs192.168.6.0/24(rw,sync,no_root_squash先启动rpcbin... 查看详情