0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一文读懂NFS服务器

阿铭linux 来源:阿铭linux 2023-01-11 09:09 次阅读

NFS服务会经常用到,它用于在网络上共享存储。举例来说,假如有3台机器A、B和C,它们需要访问同一个目录,且目录中都是图片。传统的做法是把这些图片分别放到A、B、C中,但若使用NFS,只需要把图片放到A上,然后A共享给B和C即可。访问B和C时,是通过网络的方式去访问A上的那个目录的。

63c59f4a-913f-11ed-bfe3-dac502259ad0.png

18.1服务端配置NFS

在Rocky8上使用NFS服务需要安装两个包(nfs-utils和rpcbind),不过当使用yum工具安装nfs-utils时会一并安装rpcbind,如下所示:

# yum install -y nfs-utils
早期的CentOS版本是需要安装portmap包的,从CentOS 6开始,就改为安装rpcbind包了。配置NFS比较简单,只需要编辑配置文件/etc/exports。下面阿铭就先创建一个简单的NFS服务器。 首先修改配置文件(默认该文件为空),如下所示:
# vim /etc/exports //写入如下内容:
/home/nfstestdir 192.168.72.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)
这个配置文件就一行,共分为三部分。第一部分是本地要共享出去的目录,第二部分是允许访问的主机(可以是一个IP,也可以是一个IP段),第三部分就是小括号里面的一些权限选项。关于第三部分,阿铭简单介绍一下。

rw:表示读/写。

ro:表示只读。

sync:同步模式,表示内存中的数据实时写入磁盘。

async:非同步模式,表示把内存中的数据定期写入磁盘。

no_root_squash:加上这个选项后,root用户就会对共享的目录拥有至高的权限控制,就像是对本机的目录操作一样。但这样安全性降低。

root_squash:与no_root_squash选项对应,表示root用户对共享目录的权限不高,只有普通用户的权限,即限制了root。

all_squash:表示不管使用NFS的用户是谁,其身份都会被限定为一个指定的普通用户身份。

anonuid/anongid:要和root_squash以及all_squash选项一同使用,用于指定使用NFS的用户被限定后的uid和gid,但前提是本机的/etc/passwd中存在相应的uid和gid。

介绍了NFS的相关权限选项后,阿铭再来分析一下刚刚配置的/etc/exports文件。假设要共享的目录为/home/nfstestdir,信任的主机为192.168.72.0/24这个网段,权限为读/写,同步模式,限定所有使用者,并且限定的uid和gid都为1000。 编辑好配置文件后创建相关目录并启动NFS服务,如下所示:

# mkdir /home/nfstestdir
# systemctl start rpcbind
# systemctl start nfs-server
# systemctl enable rpcbind
# systemctl enable nfs-server
在启动NFS服务之前,需要先启动rpcbind服务(CentOS的老版本中为portmap)。

18.2客户端挂载NFS

做本节课实验最好是打开另外一台虚拟机,如果你的计算机资源吃紧,也可以在一台机器上操作,即客户端、服务端为一台机器。阿铭的两台虚拟机IP地址分别为192.168.72.128和192.168.72.129,其中提供NFS服务的是192.168.72.128。在客户端挂载NFS之前,我们需要先查看服务端共享了哪些目录。客户端(72.129)安装nfs-utils包后,可以使用showmount命令查看,如下所示:
# showmount -e 192.168.72.128
Export list for 192.168.72.128:
/home/nfstestdir 192.168.72.0/24
使用命令showmount -e IP就可以查看NFS的共享情况,从上例我们可以看到192.168.72.128的共享目录为/home/nfstestdir,信任主机为192.168.72.0/24这个网段。 然后在客户端上(72.129)挂载NFS,如下所示:
# mount -t nfs 192.168.72.128:/home/nfstestdir /mnt/
# df -h
文件系统 容量  已用  可用 已用% 挂载点
devtmpfs 888M     0  888M    0% /dev
tmpfs 904M     0  904M    0% /dev/shm
tmpfs 904M  8.7M  895M    1% /run
tmpfs 904M     0  904M    0% /sys/fs/cgroup
/dev/sda3 28G  6.2G   22G   23% /
/dev/sda1 190M  127M   49M   73% /boot
tmpfs 181M     0  181M    0% /run/user/0
192.168.72.128:/home/nfstestdir 28G  6.2G   22G   23% /mnt
使用命令df -h可以看到增加了一个/mnt分区,它就是NFS共享的目录了。进入到/mnt/目录下,并创建测试文件:
# cd /mnt/
# touch aminglinux.txt
touch: 无法创建"aminglinux.txt": 权限不够
这是因为在服务端(72.128)上创建的/home/nfstestdir目录权限不合适,挂载后相当于被限制为uid为1000的用户,解决该问题需要在服务端(72.128)上修改/home/nfstestdir目录权限:
# chmod 777 /home/nfstestdir/
然后再到客户端上(188.129)创建测试文件:
# cd /mnt/
# touch aminglinux.txt
# ls -l
总用量 0
-rw-r--r-- 1 mysql mysql 0 7月 1 22:16 aminglinux.txt
# id aming
uid=1000(mysql) gid=1000(mysql) 组=1000(mysql)
可以看到创建的新文件aminglinux.txt所有者和所属组为mysql,其uid和gid都为1000。

18.3命令exportfs

exportfs命令的常用选项为-a、-r、-u和-v,各选项的含义如下。

-a:表示全部挂载或者卸载。

-r:表示重新挂载。

-u:表示卸载某一个目录。

-v:表示显示共享的目录。

当改变/etc/exports配置文件后,使用exportfs命令挂载不需要重启NFS服务。接下来阿铭做一个试验,首先修改服务端(72.128)的配置文件,如下所示:

# vim /etc/exports #增加一行:
/tmp/ 192.168.72.0/24(rw,sync,no_root_squash)
然后在服务端(72.128)上执行如下命令:
# exportfs -arv
exporting 192.168.72.0/24:/tmp
exporting 192.168.72.0/24:/home/nfstestdir
在上一节用到了mount命令。其实用mount命令来挂载NFS服务是有讲究的,它要用-t nfs来指定挂载的类型为nfs。另外在挂载NFS服务时,常用-o nolock选项(即不加锁)。例如在客户端(72.129)上执行如下命令:
# mkdir /aminglinux
# mount -t nfs -o nolock 192.168.72.128:/tmp/ /aminglinux/
你还可以把要挂载的NFS目录写到客户端上的/etc/fstab文件中,挂载时只需要执行mount -a命令。例如在/etc/fstab文件里增加一行,如下所示:
192.168.72.128:/tmp/ /aminglinux     nfs     defaults,nolock         0 0
由于刚刚已挂载了NFS,需要先卸载,执行如下命令:
# umount /aminglinux
然后重新挂载,执行如下命令:
# mount -a
这样操作的好处是以后开机会自动挂载NFS。刚刚挂载的/aminglinux/目录在服务端设置为了no_root_squash,它并不会限制root用户,也就是说使用root用户创建文件时,跟在客户端本机上创建的一样。下面是实验过程:
# cd /aminglinux/
# touch 1.txt
# ls -l 1.txt
-rw-r--r-- 1 root root 1113 7月 1 22:19 1.txt
可以看到1.txt的所有者和所属组全部为root。





审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 虚拟机
    +关注

    关注

    1

    文章

    855

    浏览量

    27379
  • NFS
    NFS
    +关注

    关注

    1

    文章

    52

    浏览量

    25958
  • UUID
    +关注

    关注

    0

    文章

    22

    浏览量

    8026

原文标题:一篇文章学会NFS

文章出处:【微信号:aming_linux,微信公众号:阿铭linux】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Linux开发_CentOS7.4服务器搭建NFS、NGINX服务器,安装ffmpeg、Qt环境

    在CentOS7.4服务器版本的环境下搭建NFS服务器、安装ffmpeg、安装nginx服务器、部署Qt编译环境。
    的头像 发表于 07-14 13:45 963次阅读
    Linux开发_CentOS7.4<b class='flag-5'>服务器</b>搭建<b class='flag-5'>NFS</b>、NGINX<b class='flag-5'>服务器</b>,安装ffmpeg、Qt环境

    【AWorks试用体验】+NFS服务器搭建

    NFS服务器NFS服务启动后,可以在Linux主机上进行自测。测试的基本方法为:将已经设定好的NFS共享目录mount(挂载)到另外
    发表于 08-18 15:51

    第四课:NFS服务器的配置

    NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件样。介绍NFS安装步骤1、执行命令:sudo apt-get
    发表于 09-07 07:18

    【OK210试用体验】之(4)——NFS服务器的搭建

    。$ sudoapt-get install nfs-kernel-server2.设置NFS-Server目录。修改/etc/exports文件,在其中增加NFS服务器目录。
    发表于 09-09 00:34

    TQ210 NFS服务器的配置和使用

      这讲将介绍怎么在虚拟机的Linux系统上安装NFS服务器,然后在TQ210v6开发板上的Linux上挂载nfs共享文件夹,实现虚拟机和开发板的文件共享,方便把编译好的程序复制到开
    发表于 11-23 15:35

    4412开发板学习笔记-NFS服务器的搭建

    /exports,使用 vi 命令打开/etc/exports在其中增加NFS服务器目录。 NFS服务器可以共享多个
    发表于 06-20 14:29

    Linux 配置 NFS进行服务器端配置,重启NFS时报错,请问这是为什么?

    -utils rpcbind 完成了nfs-utills 和 rpcbind(Centos5版本下是portmap)完成了相关的安装。2、接下来进行服务器端配置,重启NFS时报错:重启失败!求各位大神有谁可以帮帮我,比较急,不胜
    发表于 06-21 20:00

    ubuntu下搭建NFS服务器

    ubuntu下搭建NFS服务器如何在ubuntu下搭建NFS服务器,是困扰很多人的个问题,下面是ubuntu下搭建
    发表于 11-02 16:08

    百度云服务器怎么使用nfs ,tftp

    我自己买了个百度云服务器来学习嵌入式使用,云服务器上有两个ip地址,个公网的个内网的,在服务器上配置好了
    发表于 04-24 15:30

    如何配置NFS文件存储服务器

    配置NFS文件存储服务器的方法步骤
    发表于 11-05 06:10

    读懂什么是NEC协议

    读懂什么是NEC协议?
    发表于 10-15 09:22

    迅为龙芯2K1000开发板虚拟机ubuntu安装nfs服务器

    服务器共享的目录挂载到本地端的文件系统中, 而在本地端的系统中来看, 那个远程主机的目录就好像是自己的个磁盘分区样, 在使用上相当便利;NFS
    发表于 11-23 10:06

    在windows下也可以搭建nfs和tftp服务器为开发板提供服务

    Windows下TFTP的服务器软件有哪些?在windows下也可以搭建nfs和tftp服务器为开发板提供服务吗?
    发表于 12-27 06:40

    AIO-3399J NFS服务器实现挂载

    服务器安装1. 安装NFS服务器sudo apt-get install nfs-kernel-server安装过程中可能会出现下面的错
    发表于 06-10 15:02

    瑞芯为RK3568开发板搭建NFS服务器

    瑞芯为RK3568开发板搭建NFS服务器
    的头像 发表于 05-24 14:10 810次阅读
    瑞芯为RK3568开发板搭建<b class='flag-5'>NFS</b><b class='flag-5'>服务器</b>