nfs-存储服务

什么是NFS?


image.png

1.存储服务流程图

image.png

2.存储服务概念介绍

存储服务概念价值:
1.可以实现数据统一共享存储
2.节省架构服务运营成本
如何数据存储:

NFS(network file system --- 网络共享文件系统 不支持windows)
FTP(文件共享存储 --- windows比较方便简单 linux如何部署FTP--数据权限设置)
samba (linux部署服务端 可以让 windows 与 linux同时可以访问)
分布式存储:
Moosefs(mfs)、GlusterFS、FastDFS(推荐)

3.存储服务部署过程

服务端
第一步:安装软件

yum install -y nfs-utils rpcbind

检查软件是否安装

[root@nfs01 ~]# rpm -qa nfs-utils
nfs-utils-1.3.0-0.61.el7.x86_64
[root@nfs01 ~]# rpm -qa rpcbind
rpcbind-0.2.0-47.el7.x86_64

第二步:编辑配置文件

nfs配置文件所在位置 /etc/exports
可以进行共享存储目录     允许存储数据网段信息(存储目录权限配置 存储数据方式配置)
/data                                   172.16.1.0/24            (rw,sync)

sync-同步方式存储数据

同步存储数据与异步存储区别:
同步方式存储数据:用户有数据存储 ---- 存储服务器(磁盘中) 存储安全性高
异步方式存储数据:用户有数据存储 ---- 内存 --- 存储服务器(磁盘中) 存储效率高

第三步:创建备份目录并授权

[root@nfs01 ~]# mkdir -p /data
[root@nfs01 ~]# chown nfsnobody.nfsnobody /data
[root@nfs01 ~]# ll -d /data
drwxr-xr-x 4 nfsnobody nfsnobody 24 Jul 17 10:21 /data

第四步:启动服务程序
存储服务启动服务一定先启动rpc服务在启动nfs服务

[root@nfs01 ~]# systemctl start rpcbind
[root@nfs01 ~]# systemctl enable rpcbind
[root@nfs01 ~]# systemctl start nfs
[root@nfs01 ~]# systemctl enable nfs

客户端
第一步:安装软件

yum install -y nfs-utils

第二步:进行存储目录挂载

[root@backup ~]# mount -t nfs 172.16.1.31:/data /mnt

第三步:进行测试

[root@backup /mnt]# echo oldboy123 >oldboy.txt
[root@backup /mnt]# ll
total 4
-rw-r--r-- 1 nfsnobody nfsnobody 10 Jul 22 12:30 oldboy.txt
[root@nfs01 ~]# ll /data
total 4
-rw-r--r-- 1 nfsnobody nfsnobody 10 Jul 22 12:30 oldboy.txt

4.存储服务配置文件编写格式

man exports

ro 只读配置 使存储目录权限位只读 使开发人员(线下)可以查看线上服务器数据(运维)
rw 读写权限
sync 同步存储数据
async 异步存储数据
all_squash 将所有普通用户映射为指定nfsnobody用户
no_all_squash 将所有普通用户都不做映射
root_squash 将root用户映射为指定nfsnobody用户
no_root_squash 将root用户不做映射

all_squash映射实践
第一步: 服务端(修改配置文件)

/data 172.16.1.0/24(ro,sync,all_squash)

systemctl reload nfs

restart:将所有连接会话都会直接断开
reload: 只会将没有数据传输链接断开, 重新建立连接 让用户访问感受更好

第二步:上传数据测试

[oldboy@web01 mnt]$ touch oldboy.txt
[oldboy@web01 mnt]$ ll
total 4
-rw-r--r-- 1 nfsnobody nfsnobody 19 Jul 16 12:03
oldboy.txt   --- 所有普通用户都会做映射

no_all_squash映射实践
第一步: 服务端(修改配置文件)

/data 172.16.1.0/24(ro,sync,no_all_squash)
systemctl reload nfs 

第二步:上传数据测试 服务端查看

[root@nfs01 data]# ll
total 4
-rw-rw-r-- 1      1017    1017  0 Jul 16 12:08 oldboy02.txt
-rw-rw-r-- 1      1017    1017  0 Jul 16 12:10 oldboy_1017.txt   --- 用户传输数据身份没有变化,看用户uid信息

root_squash映射实践
第一步:服务端编写配置文件

/data 172.16.1.0/24(rw,sync,root_squash)

第二步:客户端检查存储信息

[root@web01 mnt]# touch root_01.txt
[root@web01 mnt]# ll
-rw-r--r-- 1 nfsnobody nfsnobody  0 Jul 16 12:19 root_01.txt     --- root用户会映射为指定的nfsnobody用户

no_root_squash映射实践
第一步:服务端配置文件修改

/data 172.16.1.0/24(rw,sync,no_root_squash)

第二步:客户端检查存储信息

[root@web01 mnt]# touch root_02.txt
[root@web01 mnt]# ll
-rw-r--r-- 1 root      root       0 Jul 16 12:22 root_02.txt
image.png

image.png

5.4种squash,如何选择使用

root_squash no_root_squash
all_squash no_all_squash
建议选择 :no_all_squash root_squash
指定nfs映射用户:
anonuid anongid --指定映射成什么用户

练习:
/data/w 可读可写权限,所有用户都做映射, 采用同步传输数据
/data/r 只能读取数据,只有root用户组映射,采用异步传输数据
客户端:
backup /data/w --挂载点 /data/w 可以存储数据
web01 /data/r --挂载点 /data/r 不能存储数据

服务端
第一步:编写配置文件

[root@nfs01 ~]# vim /etc/exports
/data/w 172.16.1.0/24(rw,sync,all_squash)
/data/r 172.16.1.0/24(ro,async,root_squash)
[root@nfs01 ~]# systemctl reload nfs

第二步:创建共享目录

[root@nfs01 ~]# mkdir /data{r,w}
[root@nfs01 ~]# chown nfsnobody. /data{r,w}

第三步:重启存储服务
systemctl reload nfs

客户端
第一步:创建挂载点目录
第二步:进行挂载

web01
[root@web01 ~]# mount -t nfs 172.16.1.31:/data/r /data/r
[root@web01 ~]# df -h
Filesystem           Size  Used Avail Use% Mounted on
/dev/sda3             19G  1.7G   18G   9% /
devtmpfs             224M     0  224M   0% /dev
tmpfs                235M     0  235M   0% /dev/shm
tmpfs                235M  5.6M  229M   3% /run
tmpfs                235M     0  235M   0% /sys/fs/cgroup
/dev/sda1            197M  116M   82M  59% /boot
tmpfs                 47M     0   47M   0% /run/user/0
172.16.1.31:/data/r   19G  1.7G   18G   9% /data/r
backup
[root@backup ~]# df -h
Filesystem           Size  Used Avail Use% Mounted on
/dev/sda3             19G  1.7G   18G   9% /
devtmpfs             224M     0  224M   0% /dev
tmpfs                235M     0  235M   0% /dev/shm
tmpfs                235M  5.6M  229M   3% /run
tmpfs                235M     0  235M   0% /sys/fs/cgroup
/dev/sda1            197M  116M   82M  59% /boot
172.16.1.31:/data     19G  1.7G   18G   9% /mnt
tmpfs                 47M     0   47M   0% /run/user/0
172.16.1.31:/data/w   19G  1.7G   18G   9% /data/w

6.存储服务重点说明:

  1. 存储服务概念说明 实现数据统一共享存储 节省服务硬盘开销
  2. 存储服务部署过程 部署过程 RPC 配置文件如何编写
    异常:软件无法安装
    原因:文件上锁了
    解决:检查相关目录或文件是否解锁
  3. 存储服务配置参数 ******
    4个squash anonuid anongid (修改映射用户)

7.NFS影响存储权限原因:

1.服务端配置文件 ro/rw
2.服务端本身的目录权限
3.服务端共享目录权限存在继承关系
建议:建议设置共享目录时,不要存在父级与子集关系
4.客户端挂载参数是否为ro

8.nfs挂载常见问题

异常问题一:

ls: cannot open directory .: Stale file handle  (文件句柄错误)

出现原因: 当父级和子级目录同时进行挂载时,一旦父级目录取消共享,但是客户端还是处于挂载状态
问题解决: 将和父级目录有关的所有挂载点全部卸载,重新挂载
异常问题二:

Cannot register service: RPC: Unable to receive;
出现原因: 服务启动顺序不正确

问题解决: 关闭所有服务,按顺序进行启动
异常问题三:

出现挂载卡死情况
clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)

出现原因: 服务端开启防火墙,阻止客户端访问
问题解决: 关闭防火墙
异常问题四:
服务端采用restart情况,会有一个90s延迟;造成客户端挂载好共享目录,90s内无法存储数据
出现原因:
cat /etc/sysconfig/nfs|grep 90

NFSD_V4_GRACE=90

NFSD_V4_LEASE=90

9.nfs排错原理

1.检查服务端服务是否启动
2.检查nfs服务是否向rpc服务注册

 [root@nfs01 ~]# rpcinfo -p localhost   未注册情况
 program vers proto   port  service
100000    4   tcp    111  portmapper
100000    3   tcp    111  portmapper
100000    2   tcp    111  portmapper
100000    4   udp    111  portmapper
100000    3   udp    111  portmapper
100000    2   udp    111  portmapper
[root@nfs01 ~]# rpcinfo -p localhost
program vers proto   port  service     已经进行注册
100000    4   tcp    111  portmapper
100000    3   tcp    111  portmapper
100000    2   tcp    111  portmapper
100000    4   udp    111  portmapper
100000    3   udp    111  portmapper
100000    2   udp    111  portmapper
100005    1   udp  20048  mountd
100005    1   tcp  20048  mountd
100005    2   udp  20048  mountd
100005    2   tcp  20048  mountd
100005    3   udp  20048  mountd
100005    3   tcp  20048  mountd
100003    3   tcp   2049  nfs
100003    4   tcp   2049  nfs
100227    3   tcp   2049  nfs_acl
100003    3   udp   2049  nfs
100003    4   udp   2049  nfs
100227    3   udp   2049  nfs_acl
100021    1   udp  60318  nlockmgr
100021    3   udp  60318  nlockmgr
100021    4   udp  60318  nlockmgr
100021    1   tcp  32828  nlockmgr
100021    3   tcp  32828  nlockmgr
100021    4   tcp  32828  nlockmgr

3.检查nfs是否存在可以共享的目录

[root@backup ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data/r 172.16.1.0/24
/data/w 172.16.1.0/24

10.nfs服务相关的文件命令总结:

/etc/exports
/var/lib/nfs/etab --- 记录nfs服务默认配置参数信息
rpcinfo -p 172.16.1.31
showmount -e 172.16.1.31
/usr/sbin/exportfs --- 可以平滑重启nfs服务,可以临时设置共享存储目录
平滑重启服务:exportfs -rv
临时创建目录:exportfs -o rw,sync 192.168.232.0/24:/data01

11.如何进行挂载:

mount -t nfs 172.16.1.31:/data /mnt
实现开机自动挂载:
方法一:编写/etc/rc.local
mount -t nfs 172.16.1.31:/data /mnt
方法二:编写/etc/fstab文件
172.16.1.31:/data /mnt nfs defaults 0 0
centos6
启动系统 -- 加载fstab -- 启动network网络服务 -- netfs (在系统启动完毕之后,再次加载fstab)
centos7
启动系统 -- 加载fstab -- 启动network网络服务 -- remote-fs.target(在系统启动完毕之后,再次加载fstab)
启动nfs服务客户端很慢:
出现原因:在客户端上配置自动nfs服务挂载 --- 耦合度太高
解决问题:取消自动挂载
启动顺序 先开启后端服务 nfs mysql backup 缓存服务 在开启前端服务 web服务 负载均衡服务
挂载参数说明:
defaults:
rw, suid(setuid), dev, exec, auto(mount -a), nouser, and async(异步存储)
noatime
访问文件时不更新文件的inode时间戳,高并发环境下,推荐显示应用该选项,可以提高系统I/O性能。性能优化
nodiratime
不更新文件系统上的directory inode时间戳,高并发环境,推荐显式应用该选项,可以提高系统I/O性能。性能优化
remount
在不进行卸载挂载点时,直接重新挂载修改挂载参数
文件系统只读,mount -o remount,rw /
rsize=262144 用户 (读取) --- web01 /data 2M --- nfs /data 10M 压力大
设置一个缓存区 262144字节 设置大小和内存有关
wsize=262144 用户(存储) --- web01 /data 10M --- nfs /data 10M 压力大
设置一个缓冲区 262144字节
hard --- 当服务端处于关闭状态,客户端会处于一直挂载
soft --- 当服务端处于关闭状态,不会一直挂载
proto=tcp --- 挂载协议
客户端重要文件:/proc/mounts --- 查看到mount挂载命令默认参数信息
进行卸载:umount -lf

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 210,978评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 89,954评论 2 384
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,623评论 0 345
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,324评论 1 282
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,390评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,741评论 1 289
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,892评论 3 405
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,655评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,104评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,451评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,569评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,254评论 4 328
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,834评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,725评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,950评论 1 264
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,260评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,446评论 2 348

推荐阅读更多精彩内容