当前位置: > 其它学习 > NFS >

搭建NFS服务

时间:2020-03-21 16:03来源:mountain gold 作者:mountain gold
搭建NFS服务
文章目录
搭建NFS服务
一、环境以及NFS在企业服务的介绍
二、环境准备
服务方案一
服务方案二
三、写脚本一键搭建NFS服务
四、关于排错思路
一、环境以及NFS在企业服务的介绍
1.企业没有NFS共享存储访问的缺点图
 
2.企业没有NFS共享存储访问的优点图


 
3.NFS工作流程图

 
4.NFS在企业集群的架构图

 
主机 IP 环境
nfs服务端 192.168.100.100 centos7
nfs客户端 192.168.100.129 centos7


 
5.关于NFS服务简介
 
NFS简单指网络文件系统,它可以使本地工作站使用更少的磁盘空间,用户不必在每个网络上机器里头都有一个home目录,NFS只是一种文件系统,本身没有传输功能,是基于RPC协议实现的,才能达到两个Linux系统之间的文件目录共享;RPC( Remote Procedure Call ),远程过程调用RPC是能使客户端执行其他系统中程序的一种机制。NFS本身是没有提供信息传输的协议和功能的,但NFS却能让我们通过网络进行资料的分享,这是因为NFS使用了一些其它的传输协议。而这些传输协议用到这个RPC功能的。可以说NFS本身就是使用RPC的一个程序。或者说NFS也是一个RPC SERVER。所以只要用到NFS的地方都要启动RPC服务,不论是NFS SERVER或者NFS CLIENT。这样SERVER和CLIENT才能通过RPC来实现PROGRAM PORT的对应。可以这么理解RPC和NFS的关系:NFS是一个文件系统,而RPC是负责负责信息的传输。




 
6.企业应用场景

 
NFS在当前互联网系统架构中也是比较常用的数据存储服务之一(中小型网站公司应用频率较高),而相对于大公司或大门户网站除了使用NFS外,还可能会用到一些分布式文件系统FastDFS Moosefs(mfs)等。 NFS适用于中小型企业集群架构后端常用NFS,大型企业共享传输数据MFS、GFS、FDFS,一般在局域网让不同主机系统之间共享文件或者目录,可以通过挂载方式将NFS服务器共享数据挂在在本地目录,另外每次NFS服务端口随机分配。在NFS共享存储中介绍过,用户上传的视频、音乐、图片、附件等一些静态资源文件都是放在NFS共享存储中的,如果没有不进行备份,当NFS共享存储出现宕机、硬盘出现故障、机房出现火灾等各种因素,那么用户将无法访问严重则出现数据丢失。所以我们需要定时备份数据。
搭建nfs服务
 
二、环境准备
关闭防火墙关闭selinux
 
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# systemctl disable firewalld.service 
[root@localhost ~]# setenforce 0
 

 
服务方案一
目标:开放服务端/nfs/shared目录,供所有用户查阅资料
1.服务端配置
安装nfs-utils,开启,并加入到开机自启
 
[root@localhost ~]#yum -y install nfs-utils
[root@localhost ~]# systemctl start nfs.service 
[root@localhost ~]# systemctl enable nfs.service
 

 
2.新建/nfs/shared目录
 
[root@localhost ~]# mkdir /nfs/shared -p
[root@localhost ~]# chmod 777 /nfs/shared/
[root@localhost ~]# touch /nfs/shared/abc
[root@localhost ~]# echo "ni hao" >/nfs/shared/abc 
 



 
3.编辑/etc/exports
 
[root@localhost ~]# vim /etc/exports
/nfs/shared  *(rw,sync)
 

 
4.重新读取exports文件重启nfs服务
 
[root@localhost ~]# exportfs -ar
[root@nfs-server ~]# systemctl restart nfs.service 
 

 
客户端
搭建NFS服务中出现的问题
问题一
请注意在访问共享目录时候报错可能防火墙没关可能出现报错,如果正常参照下一步
 
[root@localhost ~]# showmount -e 192.168.69.129
clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)
 

 
解决办法关闭服务端的防火墙
systemctl stop firewalld
问题二
客户端挂载不上查看服务端日志上面说没有出口
后来发现是目录写错,如果目录没有被共享就会报错以下
 
[root@localhost ~]# mount -t nfs 192.168.100.100:/nfs/share /nfs/share
mount.nfs: access denied by server while mounting 192.168.69.134:/nfs/share
[root@localhost ~]# tail -2 /var/log/messages 
 
Jan  8 18:22:08 localhost systemd: Stopped firewalld - dynamic firewall daemon.
Jan  8 18:22:36 localhost rpc.mountd[3187]: refused mount request from 192.168.69.133 for /nfs/share (/): not exported
 

 
5.查看nfs服务器上的共享目录
 
[root@localhost ~]# yum -y install nfs-utils
[root@localhost ~]#showmount -e 192.168.100.129
Export list for 192.168.100.129
/nfs/shared 192.168.100.129/24
 

 
6.将共享目录挂载到mnt目录下
 
[root@nfs-client ~]# mount -t nfs 192.168.100.129:/nfs/shared /mnt/

 
7.查看验证挂载
 
[root@nfs-client ~]# df -h
Filesystem                 1K-blocks     Used Available Use% Mounted on
/dev/sda2                    8897536  1605740   7291796  19% /
devtmpfs                      490012        0    490012   0% /dev
tmpfs                         499860        0    499860   0% /dev/shm
tmpfs                         499860     6856    493004   2% /run
tmpfs                         499860        0    499860   0% /sys/fs/cgroup
/dev/sda1                    1038336   121688    916648  12% /boot
tmpfs                          99972        0     99972   0% /run/user/0
192.168.100.129:/nfs/shared  19383296 12597504   6785792  65% /mnt
 

 
8.验证权限
 
[root@localhost ~]#]# mkdir aaa
mkdir: cannot create directory ‘aaa’: Read-only file system //没有写入权限
[root@localhost ~]# cat aaa  //只有读取权限
 

 
服务方案二
目标:开放/nfs/upload目录为192.168.100.0网段的数据上传目录
客户端
1.新建/nfs/upload
 
[root@localhost ~]#mkdir /nfs/upload


 
2.新建用户和用户组uid和gid都是300
 
[root@localhost ~]# groupadd nfs-upload -g 300
[root@localhost ~]#useradd nfs-upload -u 300 -g 300   \\将upload目录的属主和属组加入到nfs-upload
[root@localhost ~]# chown -R nfs-upload.nfs-upload /nfs/upload/  \\修改/etc/exports配置文件
[root@localhost ~]#cat /etc/exports
/nfs/shared *(ro,sync)
/nfs/upload 192.168.100.0/24(rw,sync,anonuid=300,anongid=300)
 


 
3.重新读取配置文件
 
[root@localhost ~]#exportfs -ar
 
 

 
4.重启nfs服务
 
[root@nfs-server ~]# systemctl restart nfs.service

 
客户端
5.查看nfs服务器上的共享目录
 
[root@localhost ~]# showmount -e 192.168.100.100
Export list for 192.168.100.100:
/nfs/shared *
/nfs/upload 192.168.100.0/24
 


 
6.将共享目录挂载到nfs目录上
 
[root@localhost ~]# mkdir /nfs
[root@localhost ~]#mount -t nfs 192.168.100.33:/nfs/upload /nfs
 


 
7.验证检查nfs属组和属主
 
[root@localhost ~]# ll /nfs/
total 0
drwxr-xr-x 2 300 300 16 Sep  5 12:33 haha
 

 
8.在客户端的nfs目录下新建lala目录
 
[root@localhost ~]# mkdir /nfs/lala //有写入权限
[root@localhost ~]# echo "123.com" >> haha/hh //在服务端的haha目录写入文件
[root@localhost ~]#cat /nfs/haha/hh  //有读取权限
 

 
9.自动挂载卸载nfs目录挂载
 
[root@localhost ~]# umount /nfs/

 
10.在/etc/fstab写入配置文件,然后重新加载配置文件
 
[root@localhost ~]# mount -a
[root@localhost ~]# df
Filesystem                 1K-blocks     Used Available Use% Mounted on
/dev/sda2                    8897536  1605740   7291796  19% /
devtmpfs                      490012        0    490012   0% /dev
tmpfs                         499860        0    499860   0% /dev/shm
tmpfs                         499860     6828    493032   2% /run
tmpfs                         499860        0    499860   0% /sys/fs/cgroup
/dev/sda1                    1038336   121688    916648  12% /boot
tmpfs                          99972        0     99972   0% /run/user/0
192.168.100.100:/nfs/upload  1855904 6615552   119452 36% /nfs
 

 
三、写脚本一键搭建NFS服务
主机 ip
客户端 192.168.69.134
服务端 192.168.69.133
第一步、现在服务端建立openssh服务
 
[root@localhost ~]# ssh-keygen -t rsa
[root@localhost ~]#ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.69.133
后面回车和输入密码
 


 
第二步、在服务端创建脚本
 
[root@localhost ~]#vi NFS.sh
#!/bin/bash
systemctl stop firewalld.service
echo $?
echo "firewall stop OK"
###############################
systemctl disable firewalld.service
setenforce 0
yum -y install nfs-utils
###############################
echo $?
echo "install nfs-utils OK"
rm -rf /nfs/share
rm -rf /nfs/upload
mkdir -p /nfs/share
mkdir -p /nfs/upload
###############################
echo $?
echo "chuang jian /nfs/share"
echo "chuang jian /nfs/upload"
chmod 777 /nfs/share
chmod 777 /nfs/upload
cat > /etc/exports <<EOF
/nfs/share *(rw,sync)
/nfs/upload 192.168.69.0/24(rw,sync,anonuid=300,anongid=300)
EOF
###############################
echo $?
echo "xiu gai OK"
exportfs -ar
###############################
echo $?
echo "jia zai"
ssh root@192.168.69.133 'showmount -e 192.168.69.134'
systemctl restart nfs.service
ssh root@192.168.69.133 'systemctl stop firewalld'
###############################
echo $?
echo "stop firewalld"
ssh root@192.168.69.133 'setenforce 0'
###############################
echo $?
echo "stop SElinux"
ssh root@192.168.69.133 'yum -y install nfs'
###############################
echo $?
echo "install nfs OK"
ssh root@192.168.69.133 'mkdir -p /nfs/share'
ssh root@192.168.69.133 'mkdir -p /nfs/upload'
ssh root@192.168.69.133 'systemctl restart nfs.service'
###############################
echo $?
echo "qi dong nfs"
ssh root@192.168.69.133 'mount -t nfs 192.168.69.134:/nfs/share /nfs/share/'
ssh root@192.168.69.133 'mount -t nfs 192.168.69.134:/nfs/upload /nfs/upload/'
###############################
echo $?
echo "mount success"
 
四、关于排错思路
 
第一步、先showmount检查是否发现共享目录
第二步、检查配置文件是否没写对,还有服务是否重启,
第三步、no route to host表示防火墙没关
第四步、ss -antlp检查端口是否开启
 
 
 


(责任编辑:IT)
------分隔线----------------------------
  • 上一篇:没有了
  • 下一篇:没有了