文件传输工具

NFS服务

  • ftp vsftpd

  • Samba linux和Windows之间进行文件共享

  • 专用于linux和linux之间的专门的文件共享服务 (NFS服务),network,filesystem网络文件系

    NFS服务可以把远程linux机器上面的文件目录数据,通过挂载的形式,映射在用户本地机器

    (linux用户在自己本地有一个文件夹,通过NFS服务把本地这个文件夹,远程挂载到网络中一台机器的文件夹)

本地/mnt -----------------------远在广东的一台服务器/chaogedir

NSF特点

NFS很想Windows的网络共享,Samba服务

Samba服务主要用于办公室的局域网共享服务

NFS发展有30年,代表一个稳定的网络文件共享系统,中小型企业最佳的文件共享选择

共享存储的形式

分为软件,硬件共享存储的形式

软件共享存储 -------NFS服务搭建

硬件共享存储

中小型企业一般不会购买硬件存储设备,成本太高,大公司业务发展特别快,想要购买硬件设备分散网站的压力,如果网站的压力持续增长,硬件存储设备就得继续扩展,成本过高

因此主流的企业都会选择开源的软件替代硬件设备,比如NFS集群服务的搭建

NFS和RPC的概念

NFS通过port传输数据,NFS服务在传输数据的时候,端口是随机选择的(自己重启NFS服务,查看端口是否在变化)

答案就是NFS是通过RPC服务,进行一个端口注册,实现告知用户,NFS的工作端口是哪一个

什么是RPC

RPC(远程过程调用)

linux上使用NFS服务,必须启动2个服务

  • NFS服务

  • RPC服务

    NFS服务通过RPC注册自己的端口功能

    RPC服务功能就是记录每个NFS功能对应的一个端口号,并且RPC保证了NFS客户端发出请求的时候,把该功能对应的端口信息告知NFS客户端,保证客户端能够正确连接到NFS服务端的端口,达到数据传输的目的

RPC好比是一个中介,处于客户端和服务端之间

RPC服务如何知道NFS服务端的端口信息呢

答案是:NFS服务器启动的时候,会随机采用若干个端口,并且主动在RPC服务中进行注册

如此一来,RPC服务就正确知道所有NFS服务端的端口功能了,RPC夫妇默认使用linux的111端口和NFS客户端,进行一个交流,并且通过111端口将正确的NFS服务端的端口信息,告知给NFS客户端。

因此NFS客户端就能够正确找到NFS服务端的端口信息了

RPCBIND

RPC在centos7系统平台下,实现的软件,RPCBIND服务

NFS服务的配置,必须先运行好RPCBIND服务才行

如果RPCBIND服务重启了,原本注册的NFS服务端的信息也就失效了,你还得再重启NFS服务端,重新注册信息才行

如果你仅仅修改了NFS配置文件,不需要重启NFS服务端,因为重启之后,端口的信息就更新了还得重新注册,只需要执行如下命令,重新读取NFS配置文件即可

exrpotfs -rv
systemctl reload nfs

安装配置NFS

  • nfs-utils: NFS服务的主程序,包括了rpc.nfsd.rpc.mountd这两个守护进程,相关的配置文件信息

  • rpcbind:centos7,是一个RPC服务进程

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

环境配置

NFS是c/s模式,client,server准备一个NFS客户端,两天linux机器

在NFSserver端 创建一个共享的文件夹,且设置相应的读写权限

[root@lzyunv ~]# mkdir /nfsalex
[root@lzyunv ~]# ls /nfsalex/
[root@lzyunv ~]# chmod -Rf 777 /nfsalex/

修改NFS服务的配置文件

/etc/exports

nfs配置文件,想要遵守如下的规矩

NFS服务端共享目录, NFS客户端地址(参数1,参数2....) NFS客户端地址2(参数1,参数2....)

例如
#把nfs服务端的根目录共享出去,且允许两个主机名为clientl client2的机器,进行一个rw,读写权限
/ clientl(rw) client2(rw)
#允许任意的客户端,都能够挂载到此NFS服务端的 /public目录下
/public *(rw)

#只允许指定IP地址的服务器,能够挂载此NFS服务端的/home/alex文件夹 且是只读的
/home/alex 192.168.124.42(ro)

nfs语法参数解释

1.nfs共享目录:是NFS服务器需要共享出去的实际目录,文件夹,必须写绝对路径,且注意目录的读写本地权限,如果你允许客户端读写操作,other有一个读写的权限(user,group,other 三个身份)

2.NFS客户端地址,也就是NFS服务器授权可以访问共享目录的地址,可以写主机名,可以写通配符,IP地址

3.权限参数,对NFS授权的客户端,进行权限控制的参数,详细见下面的案例

nfs客户端地址形式

单一客户端               192.168.124.113 用的很少

允许整个网段访问 192.168.124.0/24 指定局域网网段,用的还是很多的

授权整个域名客户端 nfs.alex.com 用的很少
授权子域名客户端 *.alex.com 用的很少

nfs客户端的权限参数

ro      只读
rw 读写
root_squash 当nfs客户端以root账号访问,NFS服务端共享目录数据的时候,把该root映射为NFS服务端的一个匿名用户,该用户的UID,GID会变成nfsnobody的信息
no_root_squash 几乎和上面一样 root账户会映射为root账户,非常不安全,禁用
all_squash 所有nfs客户端的用户映射为匿名用户很安全,生产环境常用

sync 数据同步写入到内存和磁盘,优点是保证内存数据安全,但是效率太低
async 数据先写入到内存,再持久化到磁盘,效率非常高,但是可能会有数据丢失的隐患

启动NFS服务端的文件目录共享

NFS服务都是基于RPC的111通讯端口,必须确保先启动RPC服务

如果RPCBIND服务停止了,111端口也不会挂掉,因为centos7还提供了一个rpcbind.socket服务运行着

1.保证rpcbind服务正常运行
systectl status rpcbind

NFS服务端部署

1. 确保rpcbind服务正常启动

2.创建nfs服务端共享的目录,且进行权限修改
[root@localhost ~]# mkdir -p /nfsalex/
[root@localhost ~]# chmod -Rf 777 /nfsalex/
[root@localhost ~]# id nfsnobody
uid=65534(nfsnobody) gid=65534(nfsnobody) 组=65534(nfsnobody)
[root@localhost ~]# chown -R nfsnobody.nfsnobody /nfsalex/

3.在nfs共享目录中,创建测试的文件[root@localhost ~]# touch /nfsalex/alex你是个天才.txt
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# touch /nfsalex/alex爱丽魔力转圈圈.txt

4.修改nfs服务端的配置文件,进行客户端授权
[root@localhost ~]# cat /etc/exports
/nfsalex *(insecure,rw,sync)   #参数解释,允许客户端大于1024的端口发请求

5.重新加载nfs,读取配置文件
[root@localhost ~]# systemctl restart nfs

6检查本地的nfs服务挂载情况
[root@localhost ~]# showmount -e 127.0.0.1
Export list for 127.0.0.1:
/nfsalex *

7.再次检查nfs服务端的共享参数
[root@localhost ~]# cat /var/lib/nfs/etab
/nfsalex *(rw,sync,wdelay,hide,nocrossmnt,insecure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,rw,insecure,root_squash,no_all_squash)

8.此时可以把nfs服务端本地,当做一个客户端,模拟挂载访问试试
[root@localhost ~]# mount -t nfs 127.0.0.1:/nfsalex /mnt/
[root@localhost ~]# mount -l |grep mnt #查看挂载情况
[root@localhost ~]# ls /mnt/
alex爱丽魔力转圈圈.txt alex你是个天才.txt
[root@localhost ~]# cd /mnt/
[root@localhost mnt]# ls
alex爱丽魔力转圈圈.txt alex你是个天才.txt
[root@localhost mnt]# touch mnt到此一游.txt #表示nfs目录共享是可读,可写的
[root@localhost mnt]# ls
alex爱丽魔力转圈圈.txt alex你是个天才.txt mnt到此一游.txt
[root@localhost /]# ls /mnt/
[root@localhost /]# ls /nfsalex/
alex爱丽魔力转圈圈.txt alex你是个天才.txt mnt到此一游.txt

9.如果不用nfs目录共享了,可以直接取消挂载
[root@localhost /]# umount /mnt/

nfs客户端远程挂载使用

1.准备一个新的linux客户端机器,并且安装nfs相关的软件
[root@localhost ~]# yum -y install nfs-utils rpcbind

2.确保rpcbind服务正常
[root@localhost ~]# systemctl start rpcbind
[root@localhost ~]# systemctl status rpcbind
● rpcbind.service - RPC bind service
  Loaded: loaded (/usr/lib/systemd/system/rpcbind.service; enabled; vendor preset: enabled)
  Active: active (running) since 五 2020-07-17 09:19:52 CST; 1h 30min ago
Process: 668 ExecStart=/sbin/rpcbind -w $RPCBIND_ARGS (code=exited, status=0/SUCCESS)
Main PID: 674 (rpcbind)
  Tasks: 1
  CGroup: /system.slice/rpcbind.service
          └─674 /sbin/rpcbind -w

7月 17 09:19:47 localhost.localdomain systemd[1]: Starting RPC ...
7月 17 09:19:52 localhost.localdomain systemd[1]: Started RPC b...
Hint: Some lines were ellipsized, use -l to show in full.
[root@localhost ~]#

3.可以远程的检查,nfs服务端的共享情况
[root@localhost ~]# showmount -e 192.168.124.46
Export list for 192.168.124.46:
/nfsalex *

4.进行以nfs协议的挂载使用了
[root@localhost ~]# mount -t nfs 192.168.124.46:/nfsalex /lz888/

5.检查nfs客户端本地的挂载情况
[root@localhost ~]# mount -l |tail -1
192.168.124.46:/nfsalex on /lz888 type nfs4 (rw,relatime,vers=4.1,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.124.45,local_lock=none,addr=192.168.124.46)

6.进入本地挂载的目录,尝试访问远程的NFS服务端数据
root@localhost ~]# cd /lz888/
[root@localhost lz888]# touch 大碗宽面.txt
[root@localhost lz888]# ls
alex爱丽魔力转圈圈.txt mnt到此一游.txt
alex你是个天才.txt     大碗宽面.txt

7,如果不想用了,可以卸载目录挂载
[root@localhost ~]# umount /lz888/

8,。如果挂载,取消挂载出现问题,怎么办
#取消挂载失败, 注意, 不要呆在挂载点中
[root@localhost lz888]# umount /lz888/
umount.nfs4: /lz888: device is busy
[root@localhost lz888]# cd
[root@localhost ~]# umount /lz888/


如果挂载都失败,检查服务端的配置,以及防火墙是否打开

nfs自动挂载服务

配置开机挂载服务,每次开机都能使用nfs
1把挂载目录写入到,开机自动挂载文件中
/etc/fsrab文件
[root@localhost ~]# tail -1 /etc/fstab
192.168.124.46:/nfsalex /lz888 nfs defaults 0 0

autofs自动挂载服务

如果开机就强制挂载很多内容,但是又不经常使用,会给服务器造成很大的压力

因此一些具有动态特性的文件系统,可以选择进行动态挂载

比如
光盘,软盘,u盘,移动硬盘,NFS,SMB等文件系统

autofs特点

autofs和mount命令的不同点在于

autofs是一个守护进程,他会在后台检测用户是否需要访问某一个还未挂载文件系统,autofs会自动检测该文件系统是否存在,如果存在如果用户过则进行挂载,如果用户过了一段时间没有使用该文件系统。autofs自动将其卸载,节省人力维护的成本,以及节省服务器资源。

缺点

autofs特点是,当用户请求时才挂载文件系统,如果是高并发的业务场景,大量的用户并发访问文件系统

autofs突然进行大量的挂载,会给服务器造成很大的压力,因此在一些高并发场景下,宁愿保存持续挂载也不用autofs

安装autofs工具

[root@localhost ~]# yum -y install autofs
修改autofs配置文件
打开autofs配置文件,找到第七行,添加如下代码
vim /etc/anto.master
/misc   /etc/auto.misc
/- /etc/auto.home #添加这里的配置参数
修改自定义的自动挂载配置文件
[root@localhost ~]# cat /etc/auto.home

启动autofs

systemctl start autofs

检查本地文件系统情况

1.检查现有的本地挂载文件系统情况
root@localhost ~]# df -h
文件系统                 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root   17G 6.0G   12G   35% /
devtmpfs                 471M     0 471M   0% /dev
tmpfs                   488M     0 488M   0% /dev/shm
tmpfs                   488M 8.6M 479M   2% /run
tmpfs                   488M     0 488M   0% /sys/fs/cgroup
/dev/sda1               1014M 157M 858M   16% /boot
tmpfs                     98M 8.0K   98M   1% /run/user/42
tmpfs                     98M   40K   98M   1% /run/user/0
/dev/sr0                 4.2G 4.2G     0 100% /run/media/root/CentOS 7 x86_64

文件共享NFS&&autofs的更多相关文章

  1. Linux_LDAP+NFS+autofs

    目录 目录 前言 Ldap LDAPNFSautofs ServerPost 前言 LDAP+NFS+Autofs也是一种网络用户集中管理解决方案,相对于NIS+NFS+Autofs而言,有着更可靠的 ...

  2. Linux_NIS+NFS+Autofs

    目录 目录 前言 NIS NFS Autofs 搭建NISNFSAutofs Setup NNA environment Setup ServerSite Setup client 前言 NIS+NF ...

  3. Nis+Nfs+Autofs

    Nis: NIS服务的应用结构中分为NIS服务器和NIS客户机两种角色 NIS服务器集中维护用户的帐号信息(数据库)供NIS客户机进行查询 用户登录任何一台NIS客户机都会从NIS服务器进行登录认证, ...

  4. Linux nfs+autofs 环境搭建

    两台服务器环境为centos 6.6 1.安装配置nfs 安装portmap 和  nfs [root@node0 ~]# yum install portmap [root@node0 ~]# yu ...

  5. 【嵌入式开发】嵌入式 开发环境 (远程登录 | 文件共享 | NFS TFTP 服务器 | 串口连接 | Win8.1 + RedHat Enterprise 6.3 + Vmware11)

    作者 : 万境绝尘 博客地址 : http://blog.csdn.net/shulianghan/article/details/42254237 一. 相关工具下载 嵌入式开发工具包 : -- 下 ...

  6. Linux基础学习-NFS网络文件系统实时文件共享

    NFS网络文件系统 如果大家觉得Samba服务程序的配置太麻烦了,那么你共享文件的主机都是Linux系统,那么推荐大家在客户端部署nfs服务来共享文件.nfs(网络文件系统)服务可以将远程Linux系 ...

  7. 网络共享存储服务NFS

    网络共享存储服务NFS 作者:Eric 微信:loveoracle11g 环境准备 服务器系统 角色 IP RHEL 7.5 x86-64 NFS服务端 192.168.10.201 RHEL 7.5 ...

  8. linux下搭建NFS服务器

    服务端:10.6.191.183 客户端:10.6.191.182 NFS 是Network File System的缩写,即网络文件系统.一种使用于分散式文件系统的协定,由Sun公司开发,于1984 ...

  9. NFS 部署

    目录 NFS 部署 NFS简介 NFS应用 NFS工作流程图 NFS部署 服务端 客户端 测试NFS文件同步功能 NFS配置详解 NFS部分参数案例 统一用户 搭建考试系统 搭建步骤 配合NFS实现文 ...

随机推荐

  1. Ajax原理与图解

    Ajax原理 Ajax 的全称是Asynchronous JavaScript and XML. Ajax的原理简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后 ...

  2. dubbo ChannelHandler

    记得我们在做服务暴露的bind和服务调用的connect都有一个ExchangeHandler的实例作为入参: 这个handler最终会利用装饰者模式被封装若干层,Dubbo中提供了大量的Handle ...

  3. 区块链V1版本实现之三

    部分程序代码(区块链的定义及遍历打印): 1 //创建区块链,使用Block数组模拟 2 type BlockChain struct { 3 Blocks []*Block 4 } 5 6 //实现 ...

  4. 六. Vue CLI详解

    1. Vue CLI理解 1.1 什么是Vue CLI 如果你只是简单写几个Vue的Demo程序, 那么你不需要Vue CLI,如果你在开发大型项目那么你需要它, 并且必然需要使用Vue CLI. 使 ...

  5. C语言const和define的区别

    const 定义的是变量不是常量,只是这个变量的值不允许改变是常变量!带有类型.编译运行的时候起作用存在类型检查. define 定义的是不带类型的常数,只进行简单的字符替换.在预编译的时候起作用,不 ...

  6. Django 在test.py 中测试文件的配置

    import os import sys if __name__ == "__main__": os.environ.setdefault("DJANGO_SETTING ...

  7. 17.java设计模式之观察者模式

    基本需求: 气象站可以将每天测量到的温度,湿度,气压等等,以公告的形式发布出去(比如发布到自己的网站或第三方) 需要设计开放型API,便于其他第三方也能接入气象站获取数据 提供温度.气压和湿度的接口 ...

  8. Vmware无法生成本地连接

    打开Vmware使用乌班图 结果发现没有办法连接本地连接,那就是注册表出现了问题 今天推荐一个好软件 然后使用进行清理缓存,重新注册表 然后直接点击虚拟机里面的编辑->虚拟网络编辑器->把 ...

  9. Unity使用transform.Rotate进行三维旋转角度出现偏差

    Unity使用transform.Rotate进行三维旋转角度出现偏差 情形 最开始遇到该问题的情况比较复杂,另写了一个例子.情形如下: 一个立方体上挂载脚本: transform.Rotate(25 ...

  10. Spring Cloud Alibaba 初体验(一) Nacos 配置中心

    一.Nacos 下载与初始化配置 本文使用1.2.0,下载地址:https://github.com/alibaba/nacos/releases Nacos 单机模式支持持久化配置到 MySQL 数 ...