新年上班第一天生产环境分布式文件系统崩了!

新年上班第一天生产环境分布式文件系统崩了!

作者:冰河 2021-02-23 07:08:04

开发

前端

分布式 今天,就和小伙伴们分享下,这次生产环境分布式文件系统出现的问题,以及我是如何10分钟排查问题和解决问题的。另外,本文不是基于生产环境事故写的,而是事后,我在我本机虚拟机上模拟的环境。解决问题的思路和方法都是一样的。

[[383073]]

作者个人研发的在高并发场景下,提供的简单、稳定、可扩展的延迟消息队列框架,具有精准的定时任务和延迟队列处理功能。自开源半年多以来,已成功为十几家中小型企业提供了精准定时调度方案,经受住了生产环境的考验。为使更多童鞋受益,现给出开源框架地址:

https://github.com/sunshinelyz/mykit-delay

写在前面

说来也怪,早不崩晚不崩,偏偏在上班第一天的时候,生产环境分布式文件系统崩了。我才刚来到我的工位坐下,“叮铃铃”电话响了,是运营打来的,“喂,冰河,快点看看,生产环境的图片和视频都无法上传了,系统崩溃了,快点看看啊!”。你说我一个不是做运维的,直接打来电话让我看生产环境的事故?原来是运维那哥们还没上班,额,好吧,我接受了,于是我迅速整理好工位,摆出电脑,登录服务器,一顿操作猛如虎,10分钟搞定了,剩下的就是异步复制图片和视频了。

今天,就和小伙伴们分享下,这次生产环境分布式文件系统出现的问题,以及我是如何10分钟排查问题和解决问题的。另外,本文不是基于生产环境事故写的,而是事后,我在我本机虚拟机上模拟的环境。解决问题的思路和方法都是一样的。

额,估计运维要被3.25了!!

文章已收录到:

https://github.com/sunshinelyz/technology-binghe

https://gitee.com/binghe001/technology-binghe

问题定位

通过登录服务器查看系统的访问日志,发现日志文件中输出了如下异常信息。

  1. org.csource.common.MyException: getStoreStorage fail, errno code: 28 
  2.  at org.csource.fastdfs.StorageClient.newWritableStorageConnection(StorageClient.java:1629) 
  3.  at org.csource.fastdfs.StorageClient.do_upload_file(StorageClient.java:639) 
  4.  at org.csource.fastdfs.StorageClient.upload_file(StorageClient.java:162) 
  5.  at org.csource.fastdfs.StorageClient.upload_file(StorageClient.java:180) 

很明显,是系统无法上传文件导致的问题,这个日志信息很重要,对问题的排查起到了至关重要的作用。

分析原因

既然是上传文件出现了问题,那我先试试能不能访问以前上传的文件呢?经过验证,以前上传的文件是可以访问的,再次验证了是上传文件的问题。

既然生产环境是使用的分布式文件系统,一般情况下是没啥问题的,上传文件出现了问题,大概率的事件是服务器磁盘空间不足了。那我就来顺着这个思路排查下问题。

于是乎,我使用df -h 查看服务器的存储空间使用率,已经达到91%了。

嗯,磁盘空间有可能是引起问题的原因。接下来,再来进一步确认下是否是磁盘空间造成的问题。

于是,我再打开/etc/fdfs/目录下的tracker.conf的配置,看到预留的存储空间为10%(注:这里的分布式文件系统使用的是FastDFS)。

看到这里,可以确定就是磁盘空间不足造成的无法上传文件的问题。

总体原因就是:服务器磁盘空间已使用91%,而在分布式文件系统的配置中预留的磁盘空间为10%,实际在上传文件的时候,系统已经检测到当前服务器剩余的磁盘空间不足10%,抛出异常,拒绝上传文件。

到此,问题出现的原因已经确定了,接下来就是要解决问题了。

解决问题

首先,有两种方式可以解决这个问题,一种就是删除不需要的文件;另一种就是扩容磁盘空间。

删除不需要的文件

这种方式慎用,这里,我也简单的介绍下这种方式。我给小伙伴们提供了几种递归删除的方式。

递归删除.pyc格式的文件。

  1. find . -name '*.pyc' -exec rm -rf {} \; 

打印当前文件夹下指定大小的文件

  1. find . -name "*" -size 145800c -print 

递归删除指定大小的文件(145800)

  1. find . -name "*" -size 145800c -exec rm -rf {} \; 

递归删除指定大小的文件,并打印出来

  1. find . -name "*" -size 145800c -print -exec rm -rf {} \; 

下面是对上述命令的一些简要说明。

  • “.” 表示从当前目录开始递归查找
  • “ -name ‘*.exe’ “根据名称来查找,要查找所有以.exe结尾的文件夹或者文件
  • ” -type f “查找的类型为文件
  • “-print” 输出查找的文件目录名
  • -size 145800c 指定文件的大小
  • -exec rm -rf {} \; 递归删除(前面查询出来的结果)

扩容磁盘空间

这里,冰河推荐使用这种方式,我修复生产环境的故障也是使用的这种方式。

通过查看服务器的磁盘空间发现,/data目录下的空间足足有5TB,呵呵,运维哥们为啥不把文件系统的数据存储目录指向/data目录呢。于是乎,我开始将文件系统的数据存储目录迁移到/data目录下,整个过程如下所示。

注意:这里,我就简单的模拟将 /opt/fastdfs_storage_data下的数据迁移至/data下。

(1)拷贝文件,迁移数据

  1. cp -r /opt/fastdfs_storage_data  /data 
  2. cp -r  /opt/fastdfs_storage  /data 
  3. cp -r /opt/fastdfs_tracker /data  

(2)修改路径

这里需要修改文件系统的 /etc/fdfs/storage.conf ,mod_fastdfs.conf ,client.conf,tracker.conf文件。

  • /etc/fdfs/storage.conf
  1. store_path0=/data/fastdfs_storage_data  
  2. base_path=/data/fastdfs_storage 
  • /etc/fdfs/mod_fastdfs.conf
  1. store_path0=/data/fastdfs_storage_data  (有两处) 
  2. base_path=/data/fastdfs_storage  
  • /etc/fdfs/client.conf
  1. base_path=/data/fastdfs_tracker 
  • /etc/fdfs/tracker.conf
  1. base_path=/data/fastdfs_tracker 

重新建立 M00 至存储目录的符号连接:ln -s /data/fastdfs_storage_data/data /data/fastdfs_storage_data/data/M00

(3)杀掉进程, 重启存储服务 (追踪器和存储器)

依次执行以下命令

  1. pkill -9 fdfs 
  2.  service fdfs_trackerd start 
  3.  service fdfs_storaged start 

(4)修改文件的读取路径 nginx配置

  1. location ~/group1/M00{ 
  2.  root /data/fastdfs_storage_data/data; 

(5)重启nginx

  1. cd /opt/nginx/sbin 
  2. ./nginx -s reload 

好了,问题搞定,运营可以正常上传图片和视频了。

本文转载自微信公众号「 冰河技术」,可以通过以下二维码关注。转载本文请联系 冰河技术公众号。

 

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/292875.html<

(0)
运维的头像运维
上一篇2025-05-20 08:45
下一篇 2025-05-20 08:47

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注