热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

开发笔记:记一次生产上因fstab配置错误造成的应用拉起失败

篇首语:本文由编程笔记#小编为大家整理,主要介绍了记一次生产上因fstab配置错误造成的应用拉起失败相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了记一次生产上因fstab配置错误造成的应用拉起失败相关的知识,希望对你有一定的参考价值。



一、背景

云上虚机做切换演练,应用架构为集群模式,服务器上也部署了自启动脚本,理论上只要重启服务器然后检查应用和业务状态就行,但是重启后应用启动不了,手动执行自启动脚本或手动执行应用拉起命令也失败。

二、生产环境模拟

1.模拟文件系统

[root@node01 ]# lvcreate -L +10G -n logs root-vg
[root@node01
]# mkfs.xfs /dev/root-vg/logs
[root@node01 ~]# mount /dev/root-vg/logs /home/loong/logs

新建lv logs,文件系统挂载点为/home/loong/logs,此时文件系统/home和/home/loong/logs使用率都为1%。

记一次生产上因fstab配置错误造成的应用拉起失败_/etc/fstab

2.模拟生产目录结构

目录结构说明:/home/loong为应用目录,存储了应用包、启停命令等内容;/home/loong/logs为日志目录,存储了应用的日志。

[root@node01 ~]# cd /home
[root@node01 /home]# mkdir loong
[root@node01 /home]# cd loong/
[root@node01 /home/loong]# mkdir log

3.模拟应用和日志文件

[root@node01 /home/loong]# touch {1..5}.txt
[root@node01 /home/loong]# touch app{1..10

记一次生产上因fstab配置错误造成的应用拉起失败_生产环境_02

app1--app10和1.txt--5.txt模拟应用目录/home/loong下的应用文件

[root@node01 /home/loong]# cd logs/
[root@node01 /home/loong/logs]# dd if=/dev/zero bs=100M count=3 of=/home/loong/logs/error.log
[root@node01 /home/loong/logs]# dd if=/dev/zero bs=100M count=3 of=/home/loong/logs/info.log
[root@node01 /home/loong/logs]# dd if=/dev/zero bs=100M count=3 of=/home/loong/logs/alert.lo

模拟日志error.log、info.log和alert.log,大小都为300M

记一次生产上因fstab配置错误造成的应用拉起失败_/etc/fstab_03

可以看到此时文件系统/home/loong/logs使用率已经涨到了10%

4.模拟生产/etc/fstab配置

[root@node01 /home/loong/logs]# more /etc/fsta

记一次生产上因fstab配置错误造成的应用拉起失败_/etc/fstab_04

文件系统/dev/mapper/root--vg-logs的挂载点被错误的设置为/home/loong

三、生产环境复现

1.重启服务器

服务器重启前在应用目录/home/loong下我们可以看到txt和app文件,在日志目录/home/loong/logs可以看到3个日志文件,现在重启服务器,模拟生产切换

[root@node01 ~]# init

2.文件检查

记一次生产上因fstab配置错误造成的应用拉起失败_日志文件_05

重启服务器后检查文件,发现应用目录下/home/loong的所有txt和app文件丢失,呈现的是原来的3个日志文件。

3.手动恢复

首先umount /home/loong,如果执行不成功可以用fuser -k /home/loong命令杀掉暂用该目录的进程

记一次生产上因fstab配置错误造成的应用拉起失败_生产环境_06

手动的umount /home/loong后发现该目录原来的txt和app文件已经能被看到,但是logs目录下还为空

[root@node01 /home/loong/logs]# mount /dev/root-vg/logs /home/loong/logs

记一次生产上因fstab配置错误造成的应用拉起失败_/etc/fstab_07

手动挂载并重新登陆/home/loong/logs后看到了3个日志目录。

4.问题解决

修改/etc/fstab,将日志挂载点修改为正确的/home/loong/logs

记一次生产上因fstab配置错误造成的应用拉起失败_生产环境_08

修改完后再次重启验证,发现日志挂载点正常,应用和日志目录文件均正常,问题解决。

四、总结

晚上做变更的时候nginx应用各种方式都起不来,报配置有误,仔细检查各个配置文件没发现有什么问题,然后检查应用目录,发现里面的文件很不正常,包和启停脚本都丢失了,而且还多了日志文件,于是怀疑是挂载的问题,检查/etc/fstab文件果然是配置有误。

/etc/fstab是用来存放文件系统的静态信息的文件,当系统启动的时候,系统会自动地从这个文件读取信息,并且会自动将此文件中指定的文件系统挂载到指定的目录。该文件很重要,一定要配置正确,否则可能会引起大问题。


推荐阅读
  • ServletContext接口在Java Web开发中扮演着重要角色,它提供了一种方式来获取关于整个Web应用程序的信息。通过ServletContext,开发者可以访问初始化参数、共享数据以及应用资源。 ... [详细]
  • Spring Cloud因其强大的功能和灵活性,被誉为开发分布式系统的‘一站式’解决方案。它不仅简化了分布式系统中的常见模式实现,还被广泛应用于企业级生产环境中。本书内容详实,覆盖了从微服务基础到Spring Cloud的高级应用,适合各层次的开发者。 ... [详细]
  • 探索Squid反向代理中的远程代码执行漏洞
    本文深入探讨了在网站渗透测试过程中发现的Squid反向代理系统中存在的远程代码执行漏洞,旨在帮助网站管理者和开发者了解此类漏洞的危害及防范措施。 ... [详细]
  • SpringCloud电商平台开发指南:实战案例解析
    本文详细介绍了基于SpringCloud构建的电商平台项目,涵盖了从技术选型到项目部署的全流程,旨在帮助开发者快速掌握电商平台的开发技巧。 ... [详细]
  • 利用Python实现自动化群发邮件
    本文详细介绍如何使用Python语言来实现邮件的自动群发功能,适合希望提高工作效率的技术爱好者和开发者。 ... [详细]
  • poweroff命令用于安全地关闭计算机的操作系统,并最终切断电源。当确保所有用户已退出系统且所有数据均已妥善保存后,可通过此命令立即执行关机操作。 ... [详细]
  • 本文总结了MySQL的一些实用技巧,包括查询版本、修改字段属性、添加自动增长字段、备份与恢复数据库等操作,并提供了一些常见的SQL语句示例。 ... [详细]
  • 本文详细介绍了Linux操作系统中的cp和scp命令,包括它们的基本使用方法、常见选项以及如何通过scp命令安全地在不同主机之间传输文件。 ... [详细]
  • 本文详细介绍了在 Ubuntu 16.04 系统中使用 APT-GET 包管理器安装 MySQL 5.7 数据库的过程,并对安装后的文件和目录结构进行了说明,包括重要的配置文件及其功能。 ... [详细]
  • window下kafka的安装以及测试
    目录一、安装JDK(需要安装依赖javaJDK)二、安装Kafka三、测试参考在Windows系统上安装消息队列kafka一、安装JDKÿ ... [详细]
  • 本文详细介绍了如何使用 PHP 编程语言输出 99 乘法表,包括使用不同的循环结构如 do-while、for 循环等方法,并提供了具体的代码示例。 ... [详细]
  • 在服务器虚拟化领域,用户面临多种选择,尤其是来自同一供应商的不同产品。正确评估这些选项对于项目的成功至关重要。本文将深入探讨VMware提供的两款主要虚拟化平台——免费的VMware Server和付费的ESX Server之间的区别,旨在为决策提供专业指导。 ... [详细]
  • 利用RabbitMQ实现高效延迟任务处理
    本文详细探讨了如何利用RabbitMQ实现延迟任务,包括其应用场景、实现原理、系统设计以及具体的Spring Boot实现方式。 ... [详细]
  • 探讨在构建类似Viber或WhatsApp的聊天应用时,如何有效实现客户端(Web、Android、iOS)与服务器之间的连接。本文将分析使用WebSockets标准及其替代方案的优劣。 ... [详细]
  • Python基础教程:struct模块与格式化字符详解
    本文详细介绍了Python中struct模块的功能,以及如何利用格式化字符实现Python与C语言结构体之间的数据转换。文章通过具体实例讲解了struct模块的主要方法及其应用场景。 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有