文件传输工具

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

最新文章

  1. delphi中break,continue, exit,abort, halt, runerror的异同
  2. hdu 4965 Fast Matrix Calculation
  3. Linux shell 常用
  4. linux tomcat自启动设置
  5. Java FutureTask理解
  6. java和javascript获取word文档的书签位置对比
  7. DbModel
  8. js获取url中的参数方法
  9. STM32驱动OV7725摄像头颜色识别
  10. linux视频之media媒体框架
  11. 中国象棋游戏Chess(3) - 实现走棋规则
  12. @EnableTransactionManagement注解理解
  13. win7系统内网共享打印机设置
  14. 【高速接口-RapidIO】1、RapidIO协议概述
  15. javaWeb中使用ajax上传文件
  16. MongoDB 4.6.1 c++ driver 编译
  17. Linux关机&重启命令
  18. (转)Elasticsearch分析聚合
  19. android中配置文件property的用途以及使用<转>
  20. Sublime Text3之安裝Emmet及使用技巧

热门文章

  1. 技巧:如何区分dll程序集的编译目标平台(同样适用于查看程序集的其它依赖)
  2. 基于gin的golang web开发:认证利器jwt
  3. chrome浏览器查看当前页面cookie
  4. od中低位地址和高位的顺序,以及数据的存放读写
  5. 数据库:Flask-SQLAlchemy
  6. 问题:PyCharm调试方法smart step into的用途
  7. PyQt学习随笔:Qt Designer的Edit Buddies功能
  8. PyQt(Python+Qt)学习随笔:Qt Designer中图像资源的使用及资源文件的管理
  9. MDX非常规百分比算法-过滤数据后的百分比
  10. 【Docker】 CentOS7 安装 Docker 及其使用方法 ( 一 )