首页 > 系统相关 >Linux存储服务

Linux存储服务

时间:2023-01-12 20:33:37浏览次数:31  
标签:存储 服务 Linux www nfs 172.16 NFS root 服务端

存储服务

一、概述

存储:用于存放用户上传的内容(数据),一般应用在网站集群中

为什么要存储?

  1. 如果不使用存储,用户上传的数据就直接存放在某一台网站服务器上了,用户下次访问就可能找不到
  2. 如果使用存储,用户上传的内容存放在存储上面,用户就会访问存储

image

二、存储分类

分类 说明
硬件存储 硬件存储,硬盘多,使用的时候挂载即可
开源软件 普通存储NFS(linux),Samba(windows)
分布式存储:GlusterFS,Ceph,FastDFS,MinIO
云产品 阿里云OSS(对象存储),七牛云存储,腾讯云COS,华为云OBS

三、NFS原理

NFS (Network File System):网络文件系统

2个服务组成:

  1. NFS服务
  2. rpcbind(portmap)服务

原理图:

image

关于RPC的说明:

RPC远程过程调用,本质起到调度作用

RPC服务从Centos 6开始叫rpcbind,之前叫portmapper

四、配置NFS

1. 环境说明

环境 主机
nfs服务端 nfs 10.0.0.31/172.16.1.31
nfs客户端 web01 10.0.0.7 /172.16.1.7

2. 服务端部署

#安装软件包
[root@nfs ~]# yum -y install rpcbind nfs-utils
#启动rpcbind
[root@nfs ~]# systemctl start rpcbind
[root@nfs ~]# systemctl enable rpcbind

[root@nfs ~]# rpcinfo -p
   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
    
#配置nfs
[root@nfs ~]# cat /etc/exports
/data/ 172.16.1.0/24(rw)
#配置:172.16.1.0/24网段对NFS服务端的/data/目录,拥有rw读写权限

#创建共享目录并且修改属主属组
[root@nfs ~]# mkdir -p /data/
[root@nfs ~]# chown nfsnobody.nfsnobody /data/
[root@nfs ~]# ll -d /data/
drwxr-xr-x 2 nfsnobody nfsnobody 6 Jan 12 17:29 /data/
#启动nfs
[root@nfs ~]# systemctl start nfs
[root@nfs ~]# systemctl enable nfs
[root@nfs ~]# rpcinfo -p
   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
    100024    1   udp  57203  status
    100024    1   tcp  34556  status
    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  42844  nlockmgr
    100021    3   udp  42844  nlockmgr
    100021    4   udp  42844  nlockmgr
    100021    1   tcp  35169  nlockmgr
    100021    3   tcp  35169  nlockmgr
    100021    4   tcp  35169  nlockmgr

注意事项:

修改/etc/exports之后,最好使用reload重载系统,restart会导致,现有连接断开,且大概1分钟才能重新连接

[root@nfs ~]# systemctl reload nfs

reload与restart区别:

reload:表示优雅重启,不会断开现有连接

restart:在nfs中,会导致客户端一段时间夯住

排错指令:

rpcinfo -p          #检查nfs服务端的rpc信息,主要检查是否有NFS信息
showmount -e ip     #检查nfs服务端共享了那些信息

3.客户端挂载

#安装nfs服务,客户端只需安装,不用启动
[root@web01 ~]# yum -y install nfs-utils
#查看服务端的共享目录
[root@web01 ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data 172.16.1.0/24
#挂载目录
[root@web01 ~]# mount -t nfs 172.16.1.31:/data/ /mnt/
#查看是否挂载成功
[root@web01 ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                 979M     0  979M   0% /dev
tmpfs                    991M     0  991M   0% /dev/shm
tmpfs                    991M  9.6M  981M   1% /run
tmpfs                    991M     0  991M   0% /sys/fs/cgroup
/dev/mapper/centos-root   17G  2.0G   16G  12% /
/dev/sda1               1014M  138M  877M  14% /boot
tmpfs                    199M     0  199M   0% /run/user/0
172.16.1.31:/data         17G  2.0G   16G  12% /mnt     #挂载成功
#创建文件测试
[root@web01 ~]# touch /mnt/{01..05}.txt

#服务端查看共享目录
[root@nfs ~]# ll /data/
total 0
-rw-r--r-- 1 nfsnobody nfsnobody 0 Jan 12 17:42 01.txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Jan 12 17:42 02.txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Jan 12 17:42 03.txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Jan 12 17:42 04.txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Jan 12 17:42 05.txt

五、NFS相关文件

nfs客户端/服务端 说明
NFS服务端 /etc/exports(配置文件里面的)--->/var/lib/nfs/etab(当前使用的nfs服务端配置)
NFS客户端 客户端:永久挂载 /etc/rc.local 或 /etc/fstab --->/proc/mounts(当前系统的挂载情况)

1.nfs客户端永久挂载

#方法1:挂载命令写入到/etc/rc.local 写入的时候,记得给/etc/rc.d/rc.local执行权限
[root@web01 ~]# chmod +x /etc/rc.d/rc.local 

#方法2:写入/etc/fstab
[root@web01 ~]# cat /etc/fstab
172.16.1.31:/data/ /data/ nfs defaults 0 0 

温馨提示:

如果配置了nfs客户端永久挂载,未来要优先启动nfs服务端,否则客户端会出现开机启动慢的问题

六、NFS服务端的配置文件

/etc/exports 由nfs来管理,systemctl命令的背后是在调用exportfs命令

1.配置文件格式

/etc/exports
/data/ 172.16.1.0/24(rw)
第1部分 第2部分
共享目录 网段(选项)

2.NFS配置文件中的网络配置

网段
172.16.1.0/24 常用
172.16.1.7 指定ip
baidu.com 指定域名

3.服务端核心配置

选项 说明
rw 可以读写共享目录
ro 只读 read only
sync 同步,只要用户上传,就把数据写到磁盘上
async 异步,用户上传的数据,nfs先临时存放到内存中,过一段时间写入到磁盘,并发高,但是数据可能丢失

补充:

同步与异步:

同步:在网站架构中指的是直接访问对应的资源

异步:在网站架构中利用各种缓存达到用户优先访问缓存,缓存没有在访问对应服务

4.服务端用户压缩

NFS客户挂载NFS服务端后,创建的文件默认属于nfsnobody,这种操作叫用户压缩(映射)

用户压缩是通过NFS服务端的配置实现

选项 说明
root_squash 如果客户端是root用户访问,则到了nfs服务端会被压缩(默认的)
no_all_squash 如果客户端不是root用户访问,则不进行压缩(保护原始用户)(默认的)
all_squash 所有用户都进行压缩(不安全)
anonuid和anongid 用于指定压缩的匿名用户(默认是nfsnobody)anonuid=65534,anongid=65534

用户压缩/用户映射:NFS客户端访问NFS共享目录的时候变成了什么用户

nfs客户端用户 ----------------------> nfs服务端用户

root ----------------------> nfsnobody

image

5.用户压缩实例

用户压缩案例: 设置/nfsdata共享目录,匿名用户为www. 客户端挂载到/upload-video/

​ www用户的uid,gid:1999 (服务端,客户端)

#服务端
#部署nfs服务
#添加用户
[root@nfs ~]# groupadd -g 1999 www
[root@nfs ~]# useradd -u 1999 -g www -s /sbin/nologin -M www
[root@nfs ~]# id www
uid=1999(www) gid=1999(www) groups=1999(www)
#创建共享目录与修改属主属组
[root@nfs ~]# mkdir -p /nfsdata
[root@nfs ~]# chown -R www.www  /nfsdata/
[root@nfs ~]# ll -d /nfsdata/
drwxr-xr-x 2 www www 6 Jan 12 19:49 /nfsdata/
#修改配置文件
[root@nfs ~]# vim /etc/exports
/data/ 172.16.1.0/24(rw)
/nfsdata/ 172.16.1.0/24(rw,all_squash,anonuid=1999,anongid=1999)
#重载服务
[root@nfs ~]# systemctl reload nfs
#查看共享目录
[root@nfs ~]# showmount -e
Export list for nfs:
/nfsdata 172.16.1.0/24
/data    172.16.1.0/24

#服务端
#新建用户
[root@web01 ~]# groupadd -g 1999 www
[root@web01 ~]# useradd -u 1999 -g www -s /sbin/nologin -M www
[root@web01 ~]# id www
uid=1999(www) gid=1999(www) groups=1999(www)
#创建目录
[root@web01 ~]# mkdir -p /upload-video
#挂载目录
[root@web01 ~]# mount -t nfs 172.16.1.31:/nfsdata/ /upload-video/
[root@web01 ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                 979M     0  979M   0% /dev
tmpfs                    991M     0  991M   0% /dev/shm
tmpfs                    991M  9.6M  981M   1% /run
tmpfs                    991M     0  991M   0% /sys/fs/cgroup
/dev/mapper/centos-root   17G  2.0G   16G  12% /
/dev/sda1               1014M  138M  877M  14% /boot
tmpfs                    199M     0  199M   0% /run/user/0
172.16.1.31:/nfsdata      17G  2.0G   16G  12% /upload-video
#测试
[root@web01 ~]# touch /upload-video/video.txt

#查看服务端共享目录
[root@nfs ~]# ll /nfsdata
total 0
-rw-r--r-- 1 www www 0 Jan 12 19:54 video.txt

七、NFS优化

终极优化目标:

​ 尽可能让用户的请求在访问网站架构之前解决掉(尽可能把用户的请求往前推)

NFS优化:硬件(物理服务器+nfs服务)

NFS安全优化:客户挂载 只能上传,不能执行

NFS有单点故障,选择其他存储:公有云OSS(阿里云)(对象存储在代码里面调用)

[root@web01 ~]# mount -o noexec,nosuid,nodev -t nfs 172.16.1.31:/nfsdata /upload-video/
[root@web01 ~]# df -h /upload-video/
Filesystem            Size  Used Avail Use% Mounted on
172.16.1.31:/nfsdata   17G  2.0G   16G  12% /upload-video

noexec 挂载的nfs目录中如果有命令,无法执行
nosuid 带有suid的命令,无法执行
nodev  带有特殊属性的文件

八、故障

1.nfs提示"mount: wrong fs type, bad option"

[root@web01 ~]# mount -t nfs 172.16.1.31:/data/ /mnt/
mount: wrong fs type, bad option, bad superblock on 172.16.1.31:/data/,
       missing codepage or helper program, or other error
       (for several filesystems (e.g. nfs, cifs) you might
       need a /sbin/mount.<type> helper program)

       In some cases useful info is found in syslog - try
       dmesg | tail or so.
#原因: 错误的文件系统类型,客户端无法识别nfs.
#解决: 客户端安装nfs服务,不用启动    

2.nfs提示"umount.nfs4: /mnt: device is busy"

[root@nfs /mnt]# umount /mnt
umount.nfs4: /mnt: device is busy
#原因:在当前目录进行卸载当前目录
#解决方法:
#1.
在其他目录进行卸载
#2.直接强制卸载
[root@nfs /mnt]# umount -lf /mnt  #强制卸载

3.nfs提示"touch: cannot touch ‘1.txt’: Read-only file system"

#客户端在挂载目录创建文件提示
[root@web01 /mnt]# touch 1.txt
touch: cannot touch ‘1.txt’: Read-only file system

#原因:服务端的配置文件给的权限为ro
[root@nfs /mnt]# vim /etc/exports
/data/ 172.16.1.0/24(ro)
[root@nfs /mnt]# systemctl reload nfs
#解决方法:
[root@nfs /mnt]# vim /etc/exports
/data/ 172.16.1.0/24(rw)   #ro改为rw

4.客户端挂载与使用失败,df -h夯住

#原因:
挂载出现问题
#解决方法:
/proc/mounts查找是否有失败挂载

标签:存储,服务,Linux,www,nfs,172.16,NFS,root,服务端
From: https://www.cnblogs.com/world-of-yuan/p/17047856.html

相关文章

  • 企业如何轻松上云?华为云弹性云服务器ECS给出答案​
    ​“华为云具备全栈云服务的能力,为全媒体供稿及电子商务平台安全稳定的运行提供保障”,这是新华社在使用华为云产品并实现上云后所给出的中肯评价。华为云应用旗下ESC弹性云......
  • 如何成为一名Linux发烧友
    相信如今的人们已经越来越认识到计算机操作的重要性了。在这个互联网飞速发展的时代,离开了计算机操作,我们就等于被折断了一只翅膀。无论是在学习或是工作中,我们都有很多机......
  • dremio FabricServer 服务简单说明
    FabricServer主要是对于dremio内部rpc的通信,包含了调度节点与执行节点的通信以及内部的一些命令处理FabricServer是通过FabricServiceImpl进行实际服务的创建管理(dre......
  • 44、商品服务---品牌管理---VO&BeanUtils工具类
    1、VO例如:我们前端发过来的数据所包含的字段,可能在数据库中并不存在。以前我们的做法可能是在数据库表对应的实体类创建一个字段并加上注解@TableField(exist=false),但......
  • 如何理解高性能服务器的高性能、高并发?
    线程 |同步 |异步|异构协程 |进程 |同构| 线程池当前,随着“东数西算”政策的落地,算力时代正在全面开启。随着机器学习、深度学习的快速发展,人们对高性能服务器......
  • [1036]Linux启动时间分析
    简述今天有同事咨询:项目上有台服务器操作系统启动时间较长,如何分析?果然,好问题都来自实践。经过查找,对于所有基于systemd的系统,可以使用systemd-analyze来分析系统启动时......
  • linux发展史及软件配置
    linux岗位需求#1.岗位需求自动化运维,容器运维,DBA,IDC运维(不建议)ps:linux岗位会的越多给的越多linux工作本质linux简要发展史#1.发展1991年,芬兰林......
  • Harbor 核心服务不可用---故障排除
    故障现象:Harbor登录时显示:核心服务不可用.2.排查思路可以通过浏览器打开登录页面,所以判断服务应该是起来了.在输入密码后报错,所以判断可能是登录验证时的错......
  • Linux基础13 打包压缩 gzip, zip, tar
    压缩打包 windows下我们接触最多的压缩文件就是.rar格式,但Linux有自己所特有的压缩工具。 一般linux上的压缩包windows上可以使用 如果希望windows和Linux互相能使用的压......
  • 【图文教程】云服务器上,Linux安装VSFTPD组件及遇到的问题
    服务器做迁移,从AXX云迁移到Txx云上,迁移的话,需要把图片服务器也迁移过去。之前使用的是VSFTPD这次也还用这个吧。这里就记录下FTP服务器安装及遇到的问题。1:安装VSFTP组件使......