NFS - MIPS架构下构建NFS共享目录服务

2021-08-17 16:03:05 浏览数 (1)


常见的文件服共享方式比如FTP , FTP协议的本质是传输文件,而非共享文件。

Lin 和 Win 共享文件

1987年,微软公司和英特尔公司共同制定了SMB(Server Messages Block,服务器消息块)协议,旨在解决局域网内的文件或打印机等资源的共享问题。

Samba服务程序现在已经成为在Linux系统与Windows系统之间共享文件的最佳选择。 Samba服务程序还可以实现Linux系统之间的文件共享 。

如果觉得Samba服务程序的配置太麻烦,而且恰巧需要共享文件的主机都是Linux系统,推荐在客户端部署NFS服务来共享文件 。

NFS-Network FileSystem的缩写,NFS是由Sun开发并发展起来的一项用于在不同机器,不同操作系统之间通过网络互相分享各自的文件。

NFS server也可以看作是一个FILE SERVER,它可以让你的PC通过网络将远端得NFS SERVER共享出来的档案MOUNT到自己的系统中,在CLIENT看来使用NFS的远端文件就象是在使用本地文件一样。

NFS协议从诞生到现在为止,已经有多个版本,如NFS V2(rfc1094),NFS V3(rfc1813)(最新的版本是V4(rfc3010)。

NFS(网络文件系统)服务可以将远程Linux系统上的文件共享资源挂载到本地主机的目录上,从而使得本地主机(Linux客户端)基于TCP/IP协议,像使用本地主机上的资源那样读写远程Linux系统上的共享文件。


需求

集群环境下,三台机器A、B、C,没有文件服务器,但是还要访问同一个目录,目录中都是文件,传统的做法是把这些图片分别放到A、B、C。

所以需要搭建一个NFS服务,将NFS只需要放到A上,然后A共享给B和C,访问的时候,B和C是通过RPC的方式去访问A资源。


原理

网上找的图,大佬们凑合看看吧,实在是不想画了。。。。


环境信息

Server

Comments

172.168.17.12

服务端

172.168.17.11

客户端


检查依赖

测试环境 , 建议关闭防火墙 ,因为nfs要通过rpc远程端口访问。

代码语言:javascript复制
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# systemctl disable firewalld.service

如何找mips的rpm包

奈何,这几台server都是内网的,并不能使用yum 直接访问 Internet, 而且也没有光盘,没办法通过修改yum源的配置从本地加载,自己找找吧。

如果使用rpm安装,一堆依赖,那工作量…

rpm从哪里下? 下哪些?

想了想,还是找找系统自带的yum配置文件吧

代码语言:javascript复制
[ns7-mips64el-os]
name=NeoKylin Linux Advanced Server 7 - Os
baseurl=http://download.cs2c.com.cn/neokylin/server/releases/7.0/ls_64/
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-neokylin-release
enabled=1

[ns7-mips64el-extras]
name=NeoKylin Linux Advanced Server 7 - Addons
baseurl=http://download.cs2c.com.cn/neokylin/server/everything/7.0/ls_64/
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-neokylin-release
enabled=0

[ns7-mips64el-updates]
name=NeoKylin Linux Advanced Server 7 - Updates
baseurl=http://download.cs2c.com.cn/neokylin/server/updates/7.0/ls_64/
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-neokylin-release
enabled=0

baseurl=http://download.cs2c.com.cn/neokylin/server/updates/7.0/ls_64/

从哪里下载搞定了 , 下什么。。。。。

我有x86的,我也比对着下呗

方式一: 参考 x86的

[root@localhost rpm]# yum -y install nfs-utils --downloadonly --downloaddir /root/rpm

然后下载 mips的依赖包

你要是这么懒, 地址拿去 。。。

中标龙芯-MIPS- NFS rpm包

X86-NFS rpm包


NFS服务端

下面的操作均在 服务端端 IP 172.168.17.12上进行


上传RPM安装包

[root@localhost ~]# pwd /root [root@localhost ~]# mkdir rpm

安装RPCBIND和NFSSERVER

代码语言:javascript复制
[root@localhost rpm]# rpm -ivh *.rpm --force --nodeps

创建共享目录

代码语言:javascript复制
[root@localhost rpm]# mkdir -p /home/zf/share

配置文件/etc/exports

编辑/etc 目录下的共享目录配置文件exports,指定共享目录及权限等

代码语言:javascript复制
[root@localhost rpm]# vim /etc/exports
 # (格式:FS共享的目录 NFS客户端地址1(参数1,参数2,...) 客户端地址2(参数1,参数2,...))
 /home/zf/share 172.168.17.11(rw,insecure,no_root_squash,no_all_squash,sync)

其中的ip为客户端的IP

添加的内容表示:允许ip 地址范围在172.168.17.11 (当然了也可以配置比如ip地址范围172.168.17.* )的计算机以rw,insecure,no_root_squash,no_all_squash,sync的权限来访问 /home/zf/share 目录

如果设置为 /home/zf/share *(rw,insecure,no_root_squash,no_all_squash,sync) 则对所以的IP都有效

配置项


【常用选项】

  • ro:客户端挂载后,其权限为只读,默认选项;
  • rw:读写权限;
  • sync:同时将数据写入到内存与硬盘中;
  • async:异步,优先将数据保存到内存,然后再写入硬盘;
  • Secure:要求请求源的端口小于1024

【用户映射】

  • root_squash:当NFS客户端使用root用户访问时,映射到NFS服务器的匿名用户;
  • no_root_squash:当NFS客户端使用root用户访问时,映射到NFS服务器的root用户;
  • all_squash:全部用户都映射为服务器端的匿名用户;
  • anonuid=UID:将客户端登录用户映射为此处指定的用户uid;
  • anongid=GID:将客户端登录用户映射为此处指定的用户gid

加载配置文件

代码语言:javascript复制
[root@localhost rpm]# exportfs -arv

开机启动

代码语言:javascript复制
[root@localhost rpm]# systemctl enable rpcbind.service
[root@localhost rpm]#
[root@localhost rpm]# systemctl enable nfs-server.service
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service. 

启动服务

代码语言:javascript复制
[root@localhost rpm]# systemctl  start rpcbind.service
[root@localhost rpm]# systemctl start nfs-server.service 

至此 ,nfs server端配置完毕 。接下来进行客户端部分的操作,在IP 172.168.17.11上进行


客户端安装

下面的操作均在 客户端 IP 172.168.17.11上进行

上传RPM安装包

代码语言:javascript复制
[root@localhost ~]# pwd
/root
[root@localhost ~]# mkdir rpm


[root@localhost rpm]# ll
总用量 1480
-rw-r--r-- 1 root root  99664 11月 24 21:34 gssproxy-0.7.0-4.ns7_4.mips64el.rpm
-rw-r--r-- 1 root root  55024 11月 24 21:34 keyutils-1.5.8-3.ns7_4.mips64el.rpm
-rw-r--r-- 1 root root  24536 11月 24 21:34 libbasicobjects-0.1.1-27.ns7_4.mips64el.rpm
-rw-r--r-- 1 root root  38380 11月 24 21:34 libcollection-0.6.2-27.ns7_4.mips64el.rpm
-rw-r--r-- 1 root root 196096 11月 24 21:34 libevent-2.0.21-4.ns7_4.mips64el.rpm
-rw-r--r-- 1 root root  58000 11月 24 21:34 libini_config-1.3.0-27.ns7_4.mips64el.rpm
-rw-r--r-- 1 root root  47176 11月 24 21:34 libnfsidmap-0.25-17.ns7_4.mips64el.rpm
-rw-r--r-- 1 root root  27208 11月 24 21:34 libpath_utils-0.2.1-27.ns7_4.mips64el.rpm
-rw-r--r-- 1 root root  25924 11月 24 21:34 libref_array-0.1.5-27.ns7_4.mips64el.rpm
-rw-r--r-- 1 root root  80552 11月 24 21:34 libtirpc-0.2.4-0.10.ns7_4.mips64el.rpm
-rw-r--r-- 1 root root   8284 11月 24 21:34 libverto-libevent-0.2.5-4.ns7_4.mips64el.rpm
-rw-r--r-- 1 root root 412084 11月 24 21:34 nfs-utils-1.3.0-0.48.ns7_4.1.01.mips64el.rpm
-rw-r--r-- 1 root root 179316 11月 24 21:34 quota-4.01-14.ns7_4.mips64el.rpm
-rw-r--r-- 1 root root  91280 11月 24 21:34 quota-nls-4.01-14.ns7_4.noarch.rpm
-rw-r--r-- 1 root root  59680 11月 24 21:34 rpcbind-0.2.0-42.ns7_4.mips64el.rpm
-rw-r--r-- 1 root root  80880 11月 24 21:34 tcp_wrappers-7.6-77.ns7_4.mips64el.rpm
[root@localhost rpm]# 

安装RPCBIND和NFSSERVER

代码语言:javascript复制
[root@localhost rpm]# rpm -ivh *.rpm --force --nodeps
警告:gssproxy-0.7.0-4.ns7_4.mips64el.rpm: 头V3 RSA/SHA1 Signature, 密钥 ID 7a486d9f: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:libtirpc-0.2.4-0.10.ns7_4        ################################# [  6%]
   2:rpcbind-0.2.0-42.ns7_4           ################################# [ 13%]
   3:libref_array-0.1.5-27.ns7_4      ################################# [ 19%]
   4:libevent-2.0.21-4.ns7_4          ################################# [ 25%]
   5:libcollection-0.6.2-27.ns7_4     ################################# [ 31%]
   6:libbasicobjects-0.1.1-27.ns7_4   ################################# [ 38%]
   7:libverto-libevent-0.2.5-4.ns7_4  ################################# [ 44%]
   8:tcp_wrappers-7.6-77.ns7_4        ################################# [ 50%]
   9:quota-nls-1:4.01-14.ns7_4        ################################# [ 56%]
  10:quota-1:4.01-14.ns7_4            ################################# [ 63%]
  11:libpath_utils-0.2.1-27.ns7_4     ################################# [ 69%]
  12:libini_config-1.3.0-27.ns7_4     ################################# [ 75%]
  13:gssproxy-0.7.0-4.ns7_4           ################################# [ 81%]
  14:libnfsidmap-0.25-17.ns7_4        ################################# [ 88%]
  15:keyutils-1.5.8-3.ns7_4           ################################# [ 94%]
  16:nfs-utils-1:1.3.0-0.48.ns7_4.1.01################################# [100%]
[root@localhost rpm]#

创建共享目录

代码语言:javascript复制
[root@localhost rpm]# mkdir -p /home/zf/share

开机启动

代码语言:javascript复制
[root@localhost rpm]# systemctl enable rpcbind.service
[root@localhost rpm]# systemctl enable nfs-server.service
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.

启动服务

代码语言:javascript复制
[root@localhost rpm]# [root@localhost rpm]# systemctl start rpcbind.service
[root@localhost rpm]# systemctl start nfs-server.service

[root@localhost rpm]#

客户端挂载

代码语言:javascript复制
[root@localhost rpm]# mount -t nfs -o nolock,nfsvers=3,vers=3 -o proto=tcp 172.168.17.12:/home/zf/share /home/zf/share

172.168.17.12 为nfs server的IP


查看nfs信息

代码语言:javascript复制
# 查看nfs服务端信息
$ nfsstat -s

# 查看nfs客户端信息
$ nfsstat -c

测试

11 上创建文件/目录,去12访问 12上创建文件/目录,去11访问

权限和你的配置有关系哈 (/etc/exports)

测试木问题呀


NFS开机挂载

无论是Samba服务还是NFS服务,都要把挂载信息写入到/etc/fstab中,这样远程共享资源就会自动随服务器开机而进行挂载,如果你不嫌麻烦的话,可以在每次使用之前执行mount命令进行手动挂载

如果希望NFS文件共享服务能一直有效,则需要将其写入到fstab文件中:

代码语言:javascript复制
172.168.17.12:/home/zf/share  /home/zf/share  nfs defaults 0 0

AutoFs自动挂载服务

如果开启了自动挂载NFS , 如果挂载的远程资源太多,则会给网络带宽和服务器的硬件资源带来很大负载。如果在资源挂载后长期不使用,也会造成服务器硬件资源的浪费。

autofs自动挂载服务可以帮我们解决这一问题。与mount命令不同,autofs服务程序是一种Linux系统守护进程,当检测到用户试图访问一个尚未挂载的文件系统时,将自动挂载该文件系统。换句话说,我们将挂载信息填入/etc/fstab文件后,系统在每次开机时都自动将其挂载,而autofs服务程序则是在用户需要使用该文件系统时才去动态挂载,从而节约了网络资源和服务器的硬件资源。

代码语言:javascript复制
[root@localhost ~]# yum install autofs

.......
Complete!
[root@localhost ~]# 

如何使用可以Google一篇入门,这里就不研究了,暂时不需要。

行了 就到这儿吧

0 人点赞