文件共享服务---nfs

author author     2022-08-09     719

关键词:

文件共享服务---NFS

=============================================================================

概述:






NFS介绍

nfsNetwork File System

RPC:Remote Procedure Call 远程过程调用

NFS: 属于sun公司, 是一种协议;

版本:

  • NFSv1,

  • NFSv2, NFSv3, 

  • NIS:Network Information Service(网络信息服务)

nfsd:借助nfsd监听在 tcp的2049端口,2049/tcp

辅助类的服务:rpc (portmap)

  • rpc.mountd:认证;

  • rpc.lockd:加锁

  • rpc.statd:状态


NFS安装与配置管理

nfs server:

  • 安装:

       确保内核空间有内核模块nfsd,一般都会提供;

       只需安装用户空间的工具程序:nfs-utils(# yum install nfs-utils)

  • 主程序文件:

       Unit File:/usr/lib/systemd/system/nfs.service

  • 主配置文件:

       /etc/exports, /etc/exports.d/*

管理共享的nfs文件系统

  • /etc/exports文件,或者/etc/exports.d/*目录下任何文件中新创建一个导出文件即可;

  • 配置文件每一行定义一个共享文件系统

  • 定义格式:

  /PATH/TO/SOME_DIR   CLIENTS_1(export_options,...)  CLIENTS_2(export_options,...) 

  • CLIENTS:

       single host: IPv4, IPv6, FQDN

       IP networks:network/netmask,支持两种格式的掩码;

       wildcards:在主机名字符串中使用通,*.magedu.com,

       anonymous(匿名):*,表示所有的客户端主机;

  • General Options

       ro:只读;

       rw:读写;

       sync:同步

       async:异步 大多数的写操作都是异步的

  • User ID Mapping:主要是做id映射的

       root_squash:压缩root用户的权限,默认行为;nfsnobody

       no_root_squash:不压缩root用户的权限;

       all_squash:压缩所有用户的权限; 

       anonuid and anongid:将压缩的用户映射为此处指定的用户


NFS Client:

  挂载格式:

  • mount -t nfs NFS_SERVER:/PATH/TO/EXPORTED_DIR  /MOUNT_POINT  [-rvVwfnsh] [-o OPTIONS]


示例:

  共享一个文件系统

   1.首先创建一个要共享的目录

[[email protected] ~]# mkdir /nfs/data -pv
mkdir: created directory ‘/nfs’
mkdir: created directory ‘/nfs/data’

  2.编辑配置文件/etc/exports,定义导出/nfs/data文件至10.1.0.0/16这个网络,但仅10.1.252.153有rw权限,其余的都为只读(ro)权限

[[email protected] ~]# vim /etc/exports
 /nfs/data  10.1.252.153(rw)  10.1.0.0/16(ro)
 
 # 保存退出,这里没有定义其他的,则默认管理员(root_squash)是被压缩的

  3.启动nfs服务,并查看端口2049

[[email protected] ~]# systemctl start nfs
[[email protected] ~]# ss -tnl
State       Recv-Q Send-Q                                      Local Address:Port                                                     Peer Address:Port              
LISTEN      0      50                                                      *:445                                                                 *:*                  
LISTEN      0      64                                                      *:2049                                                                *:*                  
LISTEN      0      128                                                     *:43108                                                               *:*                  
LISTEN      0      50                                                      *:139                                                                 *:*                  
LISTEN      0      128                                                     *:111                                                                 *:*                  
LISTEN      0      128                                                     *:20048                                                               *:*                  
LISTEN      0      64                                                      *:50897                                                               *:*                  
LISTEN      0      128                                                     *:22                                                                  *:*                  
LISTEN      0      128                                             127.0.0.1:631                                                                 *:*                  
LISTEN      0      100                                             127.0.0.1:25                                                                  *:*                  
LISTEN      0      128                                             127.0.0.1:6010                                                                *:*                  
LISTEN      0      50                                                     :::445                                                                :::*                  
LISTEN      0      64                                                     :::2049                                                               :::*

   4.以CentOS 6 作为客户端挂载nfs服务的/nfs/data到本地的/mnt目录上

[[email protected] ~]# mount -t nfs 10.1.252.161:/nfs/data  /mnt
[[email protected] ~]# mount
/dev/mapper/vg0-root on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda1 on /boot type ext4 (rw)
/dev/mapper/vg0-usr on /usr type ext4 (rw)
/dev/mapper/vg0-var on /var type ext4 (rw)
/dev/sda5 on /home type ext4 (rw,usrquota,grpquota)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
10.1.252.161:/nfs/data on /mnt type nfs (rw,vers=4,addr=10.1.252.161,clientaddr=10.1.252.153)

    5.进到挂载点/mnt中,执行写操作

[[email protected] ~]# cd /mnt
[[email protected] mnt]# ls
[[email protected] mnt]# cp /etc/fstab ./
cp: cannot create regular file `./fstab‘: Permission denied

    6.发现管理员是没有权限的,这是因为管理员被映射为nfsnobody,没有写权限,那我们在nfs服务端有一个tao用户,赋予tao用户对/nfs/data的rwx权限,然后在客户端,同样创建一个和tao用户id号相同的用户,看能否完成id映射

[[email protected] ~]# setfacl -m u:tao:rwx /nfs/data/
[[email protected] ~]# getfacl /nfs/data/
getfacl: Removing leading ‘/‘ from absolute path names
# file: nfs/data/
# owner: root
# group: root
user::rwx
user:tao:rwx
group::r-x
mask::rwx
other::r-x

[[email protected] ~]# id tao
uid=1000(tao) gid=1000(tao) groups=1000(tao),2003(distro)

[[email protected]~]# su - tao
[[email protected] ~]$ cd /nfs/data/
[[email protected] data]$ echo "taotaoxiuixu" > test.txt 
[[email protected] data]$ ls
test.txt    # 可见在nfs服务端tao用户可执行写操作

====================================================================================

# 在客户端创建一个同tao用户id(1000)相同的用户tom
[[email protected] ~]# useradd -u 1000 tom
[[email protected] mnt]# id tom
uid=1000(tom) gid=1000(tom) groups=1000(tom)
[[email protected] mnt]# ll
total 4
-rw-rw-r-- 1 tom tom 13 Oct 20  2016 test.txt  # 因为id相同,所以这里已经映射成为tom用户

[[email protected] mnt]# echo "zaiyiqi" >> test.txt 
-bash: test.txt: Permission denied  # 管路员没有权限,原因是被映射为nfsnobody

[[email protected] mnt]# su - tom # 切换到tom用户
[[email protected] ~]$ cd /mnt
[[email protected] mnt]$ ls
test.txt
[[email protected] mnt]$  echo "zaiyiqi" >> test.txt  # 可以执行写操作
[[email protected] mnt]$ cat test.txt
taotaoxiuixu
zaiyiqi
[[email protected] mnt]$ cp /etc/issue ./
[[email protected] mnt]$ ll
total 8
-rw-r--r-- 1 tom tom 90 Oct 20  2016 issue
-rw-rw-r-- 1 tom tom 21 Oct 20  2016 test.txt

======================================================================================
# 再切换到服务端
[[email protected] data]$ ll
total 8
-rw-r--r-- 1 tao tao 90 Oct 20 12:35 issue  # 在客户端属主为tom的在服务端为tao,可见他们仅通过id进行映射
-rw-rw-r-- 1 tao tao 21 Oct 20 12:25 test.txt

  7.我们在nfs服务端还定义了其他网络中的客户机只有读权限,这里我使用ip为10.1.249.203 的主机,同样挂载,访问,验证是否为只读权限;

[[email protected] ~]# mount -t nfs 10.1.252.161:/nfs/data  /mnt
[[email protected] ~]# mount
10.1.252.161:/nfs/data on /mnt type nfs4 (rw,relatime,vers=4.0,rsize=131072,wsize=131072,
namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=10.1.249.203,
local_lock=none,addr=10.1.252.161)  # 挂载成功

[[email protected] home]# useradd -u 1000 xiu # 创建一个同nfs服务端tao用户id相同的用户xiu
[[email protected] home]# id xiu
uid=1000(xiu) gid=1000(xiu) groups=1000(xiu)
[[email protected] home]# su - xiu  # 切换到xiu用户
[[email protected] ~]$ cd /mnt 
[[email protected] mnt]$ ls
issue  test.txt
[[email protected] mnt]$ rm - issue  # 执行删除操作
rm: cannot remove ‘-’: No such file or directory
rm: remove write-protected regular file ‘issue’? y
rm: cannot remove ‘issue’: Read-only file system   # 文件为只读,没有写权限
[[email protected] mnt]$ ls
issue  test.txt

 # 这里虽然对文件系统有写权限,但服务没有写权限,所以,不能执行写操作


 所有的文件共享服务都遵循的法则:

  • 一是服务权限,

  • 二是文件系统权限,

  • 只有二者同时满足才可以执行其操作,


 2)showmount命令

-show mount information for an NFS server 

        查看指定的nfs服务相关的挂载信息

选项:

  •  -e or --exports

       Show the NFS server‘s export list. 

         查看NFSserver共享了哪些可挂载的信息

  •  -d or --directories

      List only the directories mounted by some client.

         仅列出被某些客户端挂载上的文件系统

 命令演示:

[[email protected] ~]$ showmount -e 10.1.252.161
Export list for 10.1.252.161:
/nfs/data 10.1.0.0/16
[[email protected] ~]$ exit
logout
[[email protected] mnt]# showmount -e 10.1.252.161
Export list for 10.1.252.161:
/nfs/data 10.1.0.0/16

[[email protected] mnt]# showmount -d 10.1.252.161
Directories on 10.1.252.161:


 3)exportfs命令

 -maintain table of exported NFS file systems

选项:

  • -aExportor unexport all directories.

     导出或取消导出所有文件系统,取决于操作选项

  •  -r: Reexport all  directories, synchronizing/var/lib/nfs/etab with /etc/exports and files under /etc/exports.d.  

     重新导出文件系统

  • -u: Unexportone or more directories.

     关闭导出文件系统

 

 假如我在/nfs/下又创建了一个mydata的目录,想共享给10.1.0.0/16整个网络并且都有rw权限,我们修改完配置文件/etc/exports后,要想生效就要重启服务,但远程其他的文件还在挂载共享,重启服务的话显然是不合适的,这时就要用到exports命令,

  演示如下:

[[email protected] nfs]# pwd/nfs
[[email protected] nfs]# mkdir mydata
[[email protected] nfs]# ls
data  mydata
[[email protected] data]# vim /etc/exports 
  /nfs/data  10.1.252.153(rw)  10.1.0.0/16(ro)   
  /nfs/mydata  10.1.0.0/16(rw)  # 新添加的共享文件系统

 # 如上,保存退出后,在客户端查看共享的文件系统
[[email protected] mnt]# showmount -e 10.1.252.161
Export list for 10.1.252.161:/nfs/data 10.1.0.0/16   
  # 发现共享的仍然只有/nfs/data目录

    要想不用重启NFS服务,又在客户端显示出来使用exports -ra 命令

# 在服务端执行命令
[[email protected] nfs]# exportfs -ra

# 在客户端再次执行showmount -e 10.1.252.161
[[email protected] mnt]# showmount -e 10.1.252.161
Export list for 10.1.252.161:
/nfs/mydata 10.1.0.0/16  # 新创建的共享
/nfs/data   10.1.0.0/16
=====================================================================================

[[email protected] nfs]#  exportfs -ua # 服务端关闭导出所有文件系统
 
[[email protected] mnt]# showmount -e 10.1.252.161  # 客户端查看
Export list for 10.1.252.161:
[[email protected] mnt]# ls  
ls: cannot open directory .: Permission denied  # 没有权限

 

4)开机自动挂载:写到/etc/fstab文件中







nfs文件共享服务

NFS简介NFS(NetworkFileSystem)中文叫网络文件系统,主要功能是通过网络(一般是局域网)让不同的主机之间可以共享文件或目录。NFS客户端可以通过挂载的方式将NFS服务器共享出来的目录挂载到本地进行使用。NFS网络文件系统很像Wi... 查看详情

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

...务端(nfs-server)配置客户端(web-client)NFS服务简单执行流程NFS文件访问权限NFS服务端配置客户端地址的表示方法/etc/exports参数/etc/exports生效创建共享目录NFS服务端配置小结NFS客户端配置查看远端共享目录挂载共享目录 查看详情

nfs服务部署共享文件

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

nfs网络共享文件服务搭建

一.NFS(networkfilesystem)1.概念:NFS(networkfilesystem)网络共享文件系统2.作用:类似于windows系统网络共享,但无法部署在windows中,适用于中小型企业共享部署,大型网站不适合(Moosefs,FASTdfs)windows网络共享FTP(linux),samba(linux),... 查看详情

企业级nfs网络文件共享服务

...操作系统:CentOSrelease6.8(Final)虚拟机:VMware任务:NFS网络文件共享服务默认是没有安装NFS软件包,NFS主要功能是通过网络让不同的主机系统之间可以共享文件或目录。NFS网络文件系统很像Windows系统的网络共享、安全功能、网络驱... 查看详情

文件共享:nfs

NFS共享概述:NetworkFileSystem:网络文件系统--用途:为客户机提供共享使用的文件夹--协议:NFS(TCP/UDP2049)、RPC(TCP/UDP111)所需软件包:nfs-utils系统服务:nfs-server配置NFS共享目录的记录格式:文件夹绝对路径客户机地址(ro或rw... 查看详情

第九章网络文件共享服务之nfs

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

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

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

nfs文件共享

文件共享服务1、NFS    NetworkFileSystem/Server    网络文件服务2、作用:用于在类Unix系统间进行文件共享3、应用:常用于集群式盘阵 安装1、系统一般自带该项服务,无需额外安装,如果系统中无此... 查看详情

搭建企业级nfs网络文件共享服务

...简介     NFS是Network FileSystem(网络文件系统)。主要功能是通过网络让不同的服务器之间可以共享文件或者目录。NFS客户端一般是应用服务器(比如web,负载均衡等),可以通过挂载的方式将NFS服务器端共... 查看详情

nfs企业级网络文件共享(代码片段)

企业级NFS网络文件共享服务1、NFS介绍什么是NFS?NFS是networkfilesystem的缩写,中文意思是网络文件系统。它的主要功能是通过网络(一般是局域网)让不同的主机系统之间可以共享文件或者目录。NFS客户端(一般为应用服务器,例... 查看详情

nfs企业级网络文件共享(代码片段)

企业级NFS网络文件共享服务1、NFS介绍什么是NFS?NFS是networkfilesystem的缩写,中文意思是网络文件系统。它的主要功能是通过网络(一般是局域网)让不同的主机系统之间可以共享文件或者目录。NFS客户端(一般为应用服务器,例... 查看详情

redhat下部署nfs文件共享

挂载安装服务编辑exports服务配置文件创建共享文件夹关闭防火墙重启nfs服务访问另一个Linux服务器备注:两个服务器同时进行(客户端,服务端) 查看详情

nfs共享存储服务

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

nfs共享存储服务

...集群架构的工作场景中,特别是中小型网络公司,NFS网络文件系统一般被用来存储共享视频、图片等静态资源文件,把用户上传的文件放到HFS共享里,通过网络共享目录,让网络上的其他服务器能够挂载访问共享目录内的数据。... 查看详情

nfs文件共享配置

安装NFS服务,需要安装nfs-utils和rpcbind,NFS的RPC服务,在Centos5.X下名称为portmap,在Centos6.X下名称为rcpbind。1.查询nfs服务和rpc服务是否安装[[email protected] ~]# rpm -qa|grep nfs [[email protected]&nbs 查看详情

nfs共享存储

...储NFS(N-twork File System)是一种基于TCP/IP传输的网络文件系统协议,最初由SUN公司开发。通过使用NFS 协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源。对于大多数负载均衡群集来说,使用NFS协议来共... 查看详情

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

NFS服务NFS:NetworkFileSystem网络文件系统,基于内核的文件系统。Sun公司开发,通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件,基于RPC(RemoteProcedureCallProtocol远程过程调用)实现RPC:采用C/S模式。客户机... 查看详情