开发者社区> 海鸥爱上鱼> 正文

⚡超容易的NFS存储服务搭建流程⚡

简介: ⚡超容易的NFS存储服务搭建流程⚡
+关注继续查看

文章目录

一、NFS存储服务概念介绍

NFS是Network File System的缩写,中文意思是网络文件系统,它的主要功能是通过网络(一般是局域网)让不同的主机系统之间可以共享文件或目录

NFS服务器只支持linux服务器之间共享数据存储。

PS:windows服务器和linux服务器都存在:尽量不要使用nfs,建议使用samba ftp

二、NFS服务软件的基本作用

1)可以实现数据信息统一一致
2)可以节省磁盘硬件设备成本

三、NFS服务存储数据原理

1.什么是NFS
  NFS中文名字:网络共享存储,就是通过网络共享目录,让网络上的其他服务器能够挂载访问共享目录的数据(NFS一般都是用来存放视频、附件、图片等静态数据的).
NFS是通过网络来进行服务端和客户端数据传输的,那么只要是通过网络的就一定会有端口,那NFS的端口是什么呢?很失望的是NFS的端口是随机的,每次重启服务端口都会改变.
那么客户端是怎样知道服务端的端口的呢?其实NFS服务器是通过远程过程调用(RPC)协议/服务来实现的,也就是说RPC服务会统一管理NFS的端口,客户端和服务端通过RPC来确定端口,进行数据传输.
PS:(原来RPC管理服务端的NFS端口分配,客户端要传数据,那客户端的RPC会先跟服务端的RPC去要服务器的端口,要到端口后再建立连接,然后传输数据)。

2.什么是RPC
  RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。
RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了  传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。
RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。

3.RPC和NFS之间的关系
  NFS服务端需要先启动RPC,在启动NFS,这样NFS才能到RPC注册端口信息,客户端的RPC可以通过向服务端的RPC请求获取服务端的NFS端口信息,获取到端口后,就可以以获取到的实际端口来进行数据传输了 

4.RPC和NFS启动顺序
 ① 先启动RPC服务
 ② 在启动NFS服务
 ③ 客户端只启动RPC服务就OK 

四、服务端NFS服务部署流程

🔅1.检查相应存储软件是否安装

nfs-utils rpcbind(centos6)

#rpcbind服务属于nfs-utils 软件的一个依赖包

[root@nfs01 ~]rpm -qa|grep -E 'nfs|rpc'
[root@nfs01 ~]yum install nfs-utils rpcbind 
#对nfs,rpc服务进行安装
[root@nfs01 ~]rpm -ql nfs-utils  #查看nfs服务是否安装
/etc/rc.d/init.d/nfs
/usr/sbin/showmount

[root@nfs01 ~]rpm -ql rpcbind    #查看rpc服务是否安装
/etc/rc.d/init.d/rpcbind
/sbin/rpcbind
/usr/sbin/rpcinfo   --- 查看nfs服务是否已经进行了注册

🔅2.编写配置文件

[root@nfs01 ~] vim /etc/exports
/data 172.16.1.0/24(rw,sync)
  ①        ②           ③
第一列:定义nfs服务的功能项目录信息
第二列:定义哪些网段的主机可以访问共享目录
第三列:定义配置共享目录的一些权限或功能目录
sync:同步传输数据
Async:异步传输数据

🔅3.创建共享目录信息,目录授权

[root@nfs01 ~] mkdir /data -p (加p可以重复创建目录)
[root@nfs01 ~] id nfsnobody    ---共享目录管理用户
uid=65534(nfsnobody) gid=65534(nfsnobody) groups=65534(nfsnobody)
[root@nfs01 ~] chown -R nfsnobody.nfsnobody /data/
#修改/data目录的用户的用户组为nfsnobody

🔅4.启动nfs相关服务

1.先启动rpc服务
[root@nfs01 ~] /etc/init.d/rpcbind start  #启动rpc服务
[root@nfs01 ~] ps -ef|grep rpcbind    #查看进程是否启动rpc服务
rpc        2957      1  0 13:20 ?        00:00:00 rpcbind
root       2961   2915  0 13:22 pts/3    00:00:00 grep rpcbind

[root@nfs01 ~]# netstat -lntup|grep rpc   #查看rpc端口信息
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      2957/rpcbind        
tcp        0      0 :::111                      :::*                        LISTEN      2957/rpcbind  
    
2.再启动nfs
[root@nfs01 ~] /etc/init.d/nfs start   #启动nfs服务进程
[root@nfs01 ~] ps -ef|grep nfs    #查看进程是否启动
root       3021      2  0 13:28 ?        00:00:00 [nfsd4]
root       3022      2  0 13:28 ?        00:00:00 [nfsd4_callbacks]
root       3023      2  0 13:28 ?        00:00:00 [nfsd]
root       3024      2  0 13:28 ?        00:00:00 [nfsd]
root       3025      2  0 13:28 ?        00:00:00 [nfsd]
root       3026      2  0 13:28 ?        00:00:00 [nfsd]
root       3027      2  0 13:28 ?        00:00:00 [nfsd]
root       3028      2  0 13:28 ?        00:00:00 [nfsd]
root       3029      2  0 13:28 ?        00:00:00 [nfsd]
root       3030      2  0 13:28 ?        00:00:00 [nfsd]
root       3065   2915  0 13:29 pts/3    00:00:00 grep nfs
    
[root@nfs01 ~] rpcinfo -p localhost --- 检查本地nfs服务是否想rpc服务进行注册
    

五、客户端NFS服务部署流程

🔅1.检查安装软件服务

[root@backup ~]rpm -qa|grep -E 'nfs|rpc'
检查nfs,rpc服务是否安装
[root@nfs01 ~] yum install nfs-utils rpcbind    
#对nfs,rpc服务进行安装
[root@backup ~] rpm -ql nfs-utils  #查看nfs服务是否安装
[root@backup ~] rpm -ql rpcbind    #查看rpc服务是否安装

🔅2.进行共享目录挂载使用

[root@backup ~] mount -t nfs 172.16.1.31:/data /mnt  #测试挂载目录命令
[root@backup ~] df -h     #查看磁盘挂载情况
Filesystem         Size  Used Avail Use% Mounted on
/dev/sda3           48G  1.8G   44G   4% /
tmpfs              491M     0  491M   0% /dev/shm
/dev/sda1          190M   35M  146M  19% /boot
172.16.1.31:/data   48G  1.8G   44G   4% /mnt
可以看到172.16.1.31:/data的目录已经挂载成功

如果挂载不成功,在服务端上使用以下命令
[root@nfs01 ~]# showmount -e localhost
查看是否有目录可以供挂载,如果没有地址则查看配置文件是否按要求修改

🔅3.进行存储测试

服务端 客户端都添加一些目录或文件,看是否能相互之间查看    

补充:当存储服务挂载遇到问题,如何排查

rpcinfo -p nfs服务端地址信息 --查看rpc服务中是否有nfs服务注册信息

showmount -e nfs服务端地址信息 --查看nfs服务端可以使用共享目录信息

补充:根据自己需求配置映射关系,上述内容是最基本的映射关系

在nfs服务端到底如何配置映射信息比较合理

1)希望www用户来管理存储共享目录

2)希望root用户做了映射之后,也能向共享目录中存储数据

企业案例:修改nfs默认映射用户

将默认nfsnobody用户装变为www用户

企业案例:修改nfs默认映射用户

服务端操作流程:

1.创建新的映射用户
[root@nfs01 ~]# useradd -M -s /sbin/nologin www
设置虚拟用户,只能用于登陆
[root@nfs01 ~]# id www
uid=500(www) gid=500(www) groups=500(www)

2.修改nfs配置文件
[root@nfs01 ~]# vim /etc/exports 
/data 172.16.1.0/24(rw,sync,no_all_squash,root_squash,anonuid=500,anongid=500)
    
3.修改目录权限信息
[root@nfs01 ~]# chown -R www.www /data
检查是否修改完成
[root@nfs01 ~]# ll /data -d
drwxr-xr-x 2 www www 4096 Sep  2 18:52 /data

4.重启nfs服务
[root@nfs01 ~]# /etc/init.d/nfs restart

客户端部署流程:

1.创建新的映射用户
[root@backup ~]# useradd www -u 500
为了方便使用,创建一个普通用户,为了保证创建的www用户和服务端的用户uid一致,-u参数 可以实现指定创建uid

2.挂载目录
[root@backup ~]# mount -t nfs 172.16.1.31:/data /mnt

3.进行测试
[root@backup mnt]# touch root.txt
[www@backup mnt]$ touch www.txt
[fu@backup mnt]$ touch fu.txt
touch: cannot touch `fu.txt': Permission denied
#使用不同的用户登陆可以发现,只有root用户和www用户可以在/mnt内创建数据

客户端补充:

如果客户端创建指定uid用户发生冲突,可以参考以下信息

[root@backup ~]# useradd www -u 500
useradd: UID 500 is not unique  #已经有用户占用uid
[root@backup ~]# grep 500 /etc/passwd
 #查看那个用户占用uid
则需要在客户端和服务端修改www用户的uid
    
服务端删除www用户重新创建
[root@nfs01 ~]# userdel -r www  #删除
[root@nfs01 ~]# useradd www -u 666 -M -s /sbin/nologin #创建虚拟用户
修改配置文件中的uid
root@nfs01 ~]# vim /etc/exports
/data 172.16.1.0/24(rw,sync,no_all_squash,root_squash,anonuid=666,anongid=666)
修改挂载目录/data的管理用户和管理组,因为重新创建过用户后,/data目录的管理人还是之前的用户,没有更新

客户端创建指定uid 666
[root@backup ~]# useradd www -u 666
[root@backup ~]# id www
uid=666(www) gid=666(www) groups=666(www)

服务端重启后可以正常使用nfs服务方法:

确保rpcbind服务 nfs服务可以开机自启
chkconfig nfs on 
chkconfig rpcbind on
    
查看nfs和rpc服务是否开启开机自启
[root@nfs01 ~]# chkconfig --list|grep -E  'rpc|nfs'

客户端重启后可以正常使用nfs服务方法:(重启后挂载目录可能会丢失,需重新挂载)

步骤:/etc/rc.local
echo 'mount -t nfs 172.16.1.31:/data/ /mnt' >>/etc/rc.local

PS:nfs服务存储原理

服务端干了三件事
1)启动rpc服务
2)启动nfs服务
3)向rpc服务进行注册
客户端干了三件事
1)建立网络连接(rpc 111)
2)利用mount命令进行挂载
3)实现数据网络存储  


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器ECS登录用户名是什么?系统不同默认账号也不同
阿里云服务器Windows系统默认用户名administrator,Linux镜像服务器用户名root
15287 0
如何设置阿里云服务器安全组?阿里云安全组规则详细解说
阿里云安全组设置详细图文教程(收藏起来) 阿里云服务器安全组设置规则分享,阿里云服务器安全组如何放行端口设置教程。阿里云会要求客户设置安全组,如果不设置,阿里云会指定默认的安全组。那么,这个安全组是什么呢?顾名思义,就是为了服务器安全设置的。安全组其实就是一个虚拟的防火墙,可以让用户从端口、IP的维度来筛选对应服务器的访问者,从而形成一个云上的安全域。
18580 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
27723 0
阿里云服务器安全组设置内网互通的方法
虽然0.0.0.0/0使用非常方便,但是发现很多同学使用它来做内网互通,这是有安全风险的,实例有可能会在经典网络被内网IP访问到。下面介绍一下四种安全的内网互联设置方法。 购买前请先:领取阿里云幸运券,有很多优惠,可到下文中领取。
21933 0
使用OpenApi弹性释放和设置云服务器ECS释放
云服务器ECS的一个重要特性就是按需创建资源。您可以在业务高峰期按需弹性的自定义规则进行资源创建,在完成业务计算的时候释放资源。本篇将提供几个Tips帮助您更加容易和自动化的完成云服务器的释放和弹性设置。
20878 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
16589 0
+关注
海鸥爱上鱼
热爱生活 享受生活 爱上生活
31
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载