QQ登录
只需一步,快速开始
 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 62|回复: 0

服务器重启完「活着」,网站却全打不开——查下来是一行 fstab 写错了盘名

[复制链接]

11

主题

7

回帖

577

积分

高级会员

积分
577
发表于 7 天前 | 显示全部楼层 |阅读模式
昨天一台宝塔的论坛机重启做了个维护,然后出了个特别典型的故障:ping 得通、SSH 22 也通,但 80/443 一律连不上,面板也进不去。第一反应都以为是网络或者被打了,其实都不是。

先定性:网络层活着,是服务层没起来。

1. ping 通 → 逐个端口测 → 只有 22 活着 → 说明机器没死,是后面的服务没拉起来;
2. df -h 一看,数据盘不见了;lsblk -f 里数据盘是 /dev/sda1,但没有挂载点;
3. dmesg | grep -i ext4 掉出真正的错:
  1. EXT4-fs (sdb1): VFS: Can't find ext4 filesystem
复制代码

根因就一行。 翻 /etc/fstab:
  1. /dev/sdb1   /www   ext4   defaults   0 0
复制代码

问题是 sdb1 其实是系统盘上那个 1M 的空分区(BIOS boot,根本没有文件系统),真正的数据盘是 sda1。装系统的时候系统盘是 sda,这次重启后内核把系统盘和数据盘的设备名互换了,fstab 里写死的那个设备名就指丢了 → /www 挂不上 → 装在上面的 nginx / MySQL / PHP / 面板全部跟着起不来。

有点意思的是:根分区 / 用的是 UUID,所以毫发无损。同一台机器,一个写 UUID、一个写设备名,出事的只有后者。

修复:

1. 先只读把数据盘挂到一个临时目录,核对网站文件 / MySQL 库都在、数据完好;
2. cp -a /etc/fstab /etc/fstab.bak 先备份;
3. blkid /dev/sda1 拿到 UUID,把 /www 那行改成:
  1. UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx   /www   ext4   defaults   0 0
复制代码

4. mount /www 挂回,重启 nginx / MySQL / PHP → 站点恢复。全程数据零丢失。

一句话自查:
  1. grep -n "/dev/sd" /etc/fstab
复制代码

有输出,就值得把设备名改成 UUID——设备名会随内核枚举顺序变,UUID 不会。
小提醒:systemctl is-active mysql 显示 active 也不一定真起来了(盘没挂时它可能"装着活着"),判服务到底起没起,看进程 + socket + 端口三样,别只信 is-active。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|七亿社区站长论坛

GMT+8, 2026-11-2 02:36 , Processed in 0.044906 second(s), 5 queries , Redis On.

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表