首页 > 其他分享 >NFS服务搭建

NFS服务搭建

时间:2022-11-25 21:22:53浏览次数:37  
标签:nfsShare 服务 server NFS nfs root junwu 搭建

NFS介绍

网络文件系统,英文Network File System(NFS),是基于UDP/IP协议的应用,可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件。

RPC服务

RPC(Remote Procedure Call)即远程过程调用,记录NFS服务器使用的端口号,在NFS客户端发送请求时,将对应的端口号信息传递给客户端,确保客户端与服务端能连接上。

注意:在启动NFS服务之前,必须先启动PRC服务,在Centos7中叫做rpcbind服务,否则NFS Server无法向RPC注册信息,另外,如果RPC服务重启,原来注册的NFS服务端的信息也就失效了,也必须重启NFS服务。

特别要注意的是,修改NFS配置⽂件后不需要重启NFS,只需要执⾏ exportfs -rv 命令即可或是systemctl reload nfs。

原理

(1)服务端启动RPC服务,并开启111端口

(2)然后服务器端启动NFS服务,并向RPC注册端口信息

(3)客户端启动RPC(portmap服务),向服务端的RPC(portmap)服务请求服务端的NFS端口

(4)服务端的RPC(portmap)服务反馈NFS端口信息给客户端。

(5)客户端通过获取的NFS端口来建立和服务端的NFS连接并进行数据的传输。
【NFS服务部署】

NFS属于C/S模式,准备两天linux机器,一个server端,一个client端

Server端

1、安装nfs服务,需要安装如下软件包

nfs-utils:NFS服务的主程序,包括了rpc.nfsd、rpc.mountd这两个守 护进程以及相关⽂档,命令 rpcbind:是centos7/6环境下的RPC程序 ##安装软件包 [root@junwu_server ~]# yum install nfs-utils rpcbind -y ##检查安装情况

[root@junwu_server ~]# rpm -qa nfs-utils rpcbind
rpcbind-0.2.0-49.el7.x86_64
nfs-utils-1.3.0-0.68.el7.2.x86_64

2、创建用于NFS共享的文件夹,并设置好权限

[root@junwu_server ~]# mkdir /opt/nfsShare
[root@junwu_server ~]# chmod -Rf 777 /opt/nfsShare/

3、修改NFS服务默认配置文件

[root@junwu_server ~]# cat /etc/exports
/opt/nfsShare/ *(insecure,rw,sync,root_squash)

*表示所有网段的机器都可以进行访问

##exports配置文件语法 NFS共享目录  NFS客户端地址(参数1、2、....) 客户端地址2(参数1、2、....) 举例: /opt/public  10.0.0.11(rw)  10.0.0.12(rw,no_root_squash) ##语法解释 (1)NFS共享⽬录:为NFS服务器要共享的实际⽬录,必须绝对路径 (2)NFS客户端地址,也就是NFS服务器端授权可以访问共享⽬录的客户端地址 (3)权限参数,对授权的NFS客户端访问权限设置 ##NFS客户端地址配置
客户端地址 具体地址 说明
单一客户端  10.0.0.10 用的少
整个网端 10.0.0.10/24 指定网段,常用
授权域名客户端 nfs.cnblogs.com 弃用
授权整个域名客户端 *.nfs.com 弃用
##权限参数  ro                    只读访问 
 rw                   读写访问 
 sync                所有数据在请求时写入共享 
 async              NFS在写入数据前可以相应请求 
 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_squas         root用户具有根目录的完全管理访问权限 
 anonuid=xxx            指定NFS服务器/etc/passwd文件中匿名用户的UID

4、启动rpcbind、nfs-server服务

[root@junwu_server nfsShare]# systemctl restart rpcbind

[root@junwu_server nfsShare]# systemctl restart nfs-server

5、在客户端做一个简单的测试,创建文件并进行挂载,检查是否存在

[root@junwu_server ~]# cd /opt/nfsShare/
[root@junwu_server nfsShare]# touch nfs_test.txt

#检查服务端NFS挂载情况,查看NFS服务端默认挂载的参数

[root@junwu_server nfsShare]# showmount -e
Export list for junwu_server:
/opt/nfsShare *

[root@junwu_server nfsShare]# cat /var/lib/nfs/etab
/opt/nfsShare *(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)

##把本地机器当作客户端挂载到本地目录测试

[root@junwu_server nfsShare]# mount -t nfs 10.0.0.10:/opt/nfsShare/ /mnt/

[root@junwu_server nfsShare]# ls /mnt/
nfs_test.txt

6、检查挂载情况

[root@junwu_server nfsShare]# df -h|tail -1
10.0.0.10:/opt/nfsShare 20G 2.3G 17G 12% /mnt

[root@junwu_server nfsShare]# mount |tail -1
10.0.0.10:/opt/nfsShare on /mnt type nfs4 (rw,relatime,vers=4.1,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.0.0.10,local_lock=none,addr=10.0.0.10)

服务端配置完毕

Client端

1、安装软件包,并开启服务,nfs-server默认开启

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

[root@junwu_client ~]# systemctl start rpcbind

2、检查远程挂载情况(注意:需要服务端关闭防火墙,或是配置了规则)

[root@junwu_client ~]# showmount -e 10.0.0.10
clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)

##server端关闭防火墙

[root@junwu_server nfsShare]# systemctl stop firewalld 

##client端再进行访问

[root@junwu_client ~]# showmount -e 10.0.0.10
Export list for 10.0.0.10:
/opt/nfsShare *

3、以nfs协议挂载

[root@junwu_client ~]# mount -t nfs 10.0.0.10:/opt/nfsShare /mnt/

##进入挂载目录,查看远程NFS服务端的文件夹
[root@junwu_client ~]# ls /mnt/
nfs_test.txt

如果挂载出现错误

(1)检查服务端防火墙是否开启

【配置开机自动挂载】

##将挂载命令写入到

[root@junwu_client ~]# tail -2 /etc/fstab
10.0.0.10:/opt/nfsShare /mnt nfs defaults 0 0

【Autofs自动挂载服务】

Autofs和mount的不同点在于,Autofs是⼀种守护进程。它在后台检测⽤户是否要访问⼀个还没有挂载的⽂件系统,autofs会⾃动检查该⽂件系统是否存在,存在则⾃动挂载。且autofs检测到已经挂载的⽂件系统有⼀段时间没⽤,则会⾃动将其卸载,省去了⼈⼒维护挂载设备的成本,以及不会造成服务器资源浪费。 autofs的缺点: autofs特点是只有⽤户请求时才执⾏挂载,所以当⾼并发访问时,开始请求的瞬间需要执⾏挂载,性能较差,因此在⾼并发业务场景下,宁愿保持挂载也不使⽤autofs⾃动挂载。 

1、安装autofs

##我们应该在需要挂载的机器上执行

[root@junwu_client ~]# yum install autofs -y

2、修改autofs配置文件如下

[root@junwu_client ~]# grep -v '^#' /etc/auto.master
/misc /etc/auto.misc
/net -hosts
+dir:/etc/auto.master.d
+auto.master
/opt/nfsShare /etc/auto.home  ##在/etc/auto.home 自定义挂载动作

3、自定义子配置文件挂载内容(将共享目录挂载到本地/mnt/nfs_autofs)

[root@junwu_client ~]# cat /etc/auto.home
/mnt/nfs_autofs rw,soft,intr 10.0.0.10:/opt/nfsShare  

4、检查系统文件挂载情况

[root@junwu_client ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 475M 0 475M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 7.7M 479M 2% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/mapper/centos-root 17G 1.8G 16G 11% /
/dev/sda1 1014M 138M 877M 14% /boot
tmpfs 98M 0 98M 0% /run/user/0
10.0.0.10:/opt/nfsShare 20G 2.3G 17G 12% /mnt

[root@junwu_client ~]# umount /mnt/

5、启动autofs

[root@junwu_client ~]# systemctl restart autofs

6、当我们进入/mnt/nfs_autofs目录后,检查有没有自动挂载

[root@junwu_client ~]# cd /mnt/nfs_autofs/
[root@junwu_client nfs_autofs]# ls
[root@junwu_client nfs_autofs]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 475M 0 475M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 7.7M 479M 2% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/mapper/centos-root 17G 1.8G 16G 11% /
/dev/sda1 1014M 138M 877M 14% /boot
tmpfs 98M 0 98M 0% /run/user/0

并没有,这是为什么啊!!

标签:nfsShare,服务,server,NFS,nfs,root,junwu,搭建
From: https://www.cnblogs.com/junwured/p/16924028.html

相关文章

  • [Linux高并发服务器]进程间通信简介
    [Linux高并发服务器]进程间通信简介摘自​​牛客项目课Linux高并发服务器​​概念进程间通信IPC:InterProcessesCommunication为什么需要进程间通信进程是一个独立的资......
  • [Linux 高并发服务器] exec函数族
    [Linux高并发服务器]exec函数族exec函数族exec函数族的作用是根据指定的文件名找到可执行文件,并用它来取代调用进程的内容,换句话说,就是在调用进程内部执行一个可执行文件......
  • [Linux 高并发服务器] 进程创建以及GDB多进程调试
    [Linux高并发服务器]进程创建进程创建系统允许一个进程创建新进程,新进程就是子进程,子进程还可以创建子进程,形成树结构模型我们可以使用​​fork​​函数创建子进程/*#......
  • [Linux 高并发服务器] 进程状态的转换
    [Linux高并发服务器]进程状态的转换根据​​牛客的c++项目课程​​做笔记,图片和知识点均摘录自该课程进程的状态转换进程状态反映进程执行过程的变化,这些状态随着进程的执......
  • [Linux 高并发服务器] 进程概述
    [Linux高并发服务器]进程概述程序和进程程序程序是包含一系列信息的文件,这些信息描述了如何在运行时创建一个进程二进制格式表示,用于描述可执行文件格式的元信息,内核利用......
  • [Linux 高并发服务器]文件IO
    [Linux高并发服务器]文件IO此博客是根据牛客的项目课写的,使用了pdf里的资料​​​各位可以去牛客官网学习一下​​另外注意,本博客和牛客的教程以32位系统为例,如果记忆一些......
  • [Linux高并发服务器]模拟实现 ls -l 指令
    [Linux高并发服务器]模拟实现ls-l指令参考:​​牛客LINUX高并发服务器教程​​利用state函数模拟实现ls-l命令使用​​ls-l​​命令返回了以下信息文件类型文件权限连接......
  • [Linux 高并发服务器]GDB调试
    [Linux高并发服务器]GDB调试[Linux高并发服务器]GDB调试​​[Linux高并发服务器]GDB调试​​​​GDB是什么​​​​预先准备​​​​基本命令​​​​例子​​​​进入和......
  • [Linux 高并发服务器]Makefile
    [Linux高并发服务器]Makefile[Linux高并发服务器]Makefile​​[Linux高并发服务器]Makefile​​​​什么是Makefile​​​​文件命名和规则​​​​Makefile工作原理​​......
  • [Linux 高并发服务器]制作静态库与动态库
    [Linux高并发服务器]制作静态库与动态库[Linux高并发服务器]制作静态库与动态库​​[Linux高并发服务器]制作静态库与动态库​​​​什么是库​​​​静态库的制作和使用......