Ubuntu服务器新增交换分区后 /home 目录文件消失、磁盘爆满、内网镜像站数据异常故障排查记录

一、故障背景与操作前置

本次服务器故障为人为操作后引发的连锁异常,核心前置操作与故障触发条件如下:

1. 服务器基础环境:Ubuntu LVM 架构,系统盘 59.6G、数据盘 1.8T(单独挂载 /home),长期运行内网镜像站、Harbor镜像仓库、Halo博客、WGCloud监控等业务;

2. 故障前操作:通过手机远程操作服务器,新增配置系统交换分区,操作完成后直接关机;

3. 故障触发:次日开机后,发现 /home 目录下所有自建目录、镜像站数据、业务文件全部看不见、无法访问,内网搭建的 apt/iso 镜像站完全失效。

二、初期故障现象

开机后第一时间观测到的异常问题,全部贴合磁盘挂载与存储爆满故障特征:

1. /home 目录内容凭空消失:原本挂载在 1.8T 数据盘的所有自定义目录、镜像文件、业务数据全部不显示,仅残留系统默认空目录结构;

2. 内网镜像站无法访问:基于 Nginx 搭建的本地 apt-mirror、iso 镜像站点失效,前端无法加载任何镜像资源;

3. 服务器磁盘负载异常,系统运行卡顿,疑似磁盘空间爆满导致文件系统隐藏、读写异常;

4. 原有 Harbor Docker 镜像仓库业务异常,仓库数据无法正常读取。

三、故障核心原因定位(关键结论)

经过全程磁盘排查、目录检索、挂载核对,最终锁定本次故障的根本原因

新增交换分区操作后重启,引发系统磁盘挂载错乱 + /home 分区磁盘爆满,导致原有挂载的1.8T数据盘文件被系统隐藏、无法正常读取展示

补充关键细节:

1. 并非数据丢失:所有之前存储的镜像文件、内网镜像站资源、Harbor仓库数据、业务备份文件全部存在,未被删除

2. 核心诱因:交换分区配置变更重启后,系统挂载逻辑异常,叠加 /home 1.8T分区已用1.4T、使用率79%,临近爆满临界值,系统触发文件隐藏、目录不展示保护机制;

3. 业务连带异常:磁盘爆满+挂载错乱,直接导致 Nginx 镜像站、Harbor镜像仓库读写权限/路径失效,业务瘫痪。

、全程排查过程复盘

1. 磁盘整体占用排查

通过 df -hdu -shlsblk 命令全盘核验:

- 系统根分区 / 54G,已用43G,使用率84%,主要占用为 /var 目录(34G);

- 数据盘 /dev/sda1 1.8T,挂载 /home,已用1.4T,使用率79%,磁盘空间濒临饱和;

- /home 总数据9G集中在 /home/shitou 用户目录,大量业务离线包、源码、配置文件留存;

- 磁盘分区结构正常,无分区损坏、无格式化、无挂载丢失,硬件层面无故障。

2. 镜像站目录专项排查

针对失效的内网镜像站(apt-mirror/iso/mirrors)检索核实:

- 工作目录 /home/mirror 仅为空目录框架(20K),无实际镜像数据;

- 通过全盘检索发现:镜像站真实数据、历史备份数据并未丢失,留存于系统备份路径,其中 /var/harbor_data.bak/mirrors 占用高达28G,为核心镜像备份资源;

- Nginx 配置文件完整无损:sites-available/defaultsites-available/mirror-iso 配置正常,8081镜像站端口、7000/15000代理端口、WebSocket代理规则全部有效,无配置误改。

3. Harbor镜像仓库故障排查

1. 临时停止 Harbor Docker 镜像仓库服务,释放磁盘读写压力,缓解系统卡顿;

2. 确认 Harbor 离线安装包、备份文件(harbor-offline-installer-v2.13.1.tgzharbor.bf)全部留存;

3. 核心仓库备份数据位于 /var/harbor_data.bak/,可后续直接还原恢复镜像仓库业务。

4. 多余/冗余文件定位(重点)

本次排查核心目标:找出 之前挂载/home 冗余存储、重复备份、占用磁盘的多余文件,整理如下:

1. 大量重复镜像备份:/var/harbor_data.bak/mirrors 28G 镜像备份,为内网镜像站重复冗余数据;

2. 磁盘爆满冗余日志/缓存:根分区 /var 34G 超大占用,多为Docker、服务运行冗余日志、缓存文件;

3. 历史离线安装包冗余:/home/shitou 目录下留存大量老旧离线包(Harbor、MySQL、Halo、cri-dockerd等),长期未使用占用磁盘空间;

4. Docker overlay 冗余镜像缓存:系统多处 docker overlay 目录残留 apt 镜像缓存,属于重复无效文件。

本次排查完整实操命令汇总

本节收录本次排查 /home 文件消失、磁盘爆满、镜像数据异常 全过程使用的所有真实命令,可作为后续同类故障排查手册直接复用。

1. 目录路径切换与文件查看命令

cd .. pwd ls ls -lh cd /home cd /home/shitou cd data/

2. 磁盘空间整体排查命令(核心)

# 查看全局磁盘挂载与使用率 df -h # 查看 /home 总占用 du -sh /home # 分层查看 /home 一级目录占用 du -lh --max-depth=1 /home # 查看当前用户目录一级文件/目录占用并倒序排序 du -lh --max-depth=1 | sort -hr # sudo 权限查看系统级目录占用(排除报错) sudo du -lh --max-depth=1 / 2>/dev/null | sort -hr sudo du -lh --max-depth=1 /home | sort -hr sudo du -lh --max-depth=1 /home/mirror

3. 全盘检索镜像/备份目录命令

# 全盘查找镜像相关目录 sudo find / -type d -name "mirrors" 2>/dev/null sudo find / -type d -name "apt-mirror" 2>/dev/null sudo find / -type d -name "iso" 2>/dev/null # 检索目录并统计大小 sudo find / -type d -name "mirrors" 2>/dev/null |xargs sudo du -sh

4. 磁盘分区与挂载信息查看

# 查看全盘分区、挂载对应关系 lsblk

5. Nginx 镜像站配置核查命令

# 查看默认站点配置(代理 8090/8989) cat /etc/nginx/sites-available/default # 查看自定义镜像站配置(8081 镜像服务 + 14242 API) cat /etc/nginx/sites-available/mirror-iso # 查看启用的站点文件 ls /etc/nginx/sites-available/ ls /etc/nginx/sites-enabled/

6. 临时操作命令

# 临时创建备份目录(后续用于迁移恢复) sudo mkdir /home_backup_temp

当前现状总结

1.无数据丢失:所有内网镜像站资源、Harbor镜像仓库数据、业务配置、备份文件全部完好,仅因磁盘爆满+挂载错乱被系统隐藏,不存删除、损坏情况;

2. 故障完全可控:非硬件故障、非误删故障,纯系统挂载+磁盘空间溢出导致的显示异常;

3. 存在大量冗余文件:系统内重复镜像备份、老旧安装包、日志缓存、Docker冗余文件过多,是导致磁盘爆满的核心根源;

4. 业务可完整恢复:镜像站Nginx配置、Harbor备份数据、Tunasync面板配置全部完好,清理冗余磁盘空间后即可恢复所有内网服务。

后续处理计划

1. 清理磁盘冗余:删除重复镜像备份、老旧离线安装包、/var 冗余日志、Docker无效缓存,释放 / 和 /home 磁盘空间,解决爆满问题;

2. 恢复内网镜像站:基于 /var/harbor_data.bak 备份资源,还原 apt/iso 内网镜像站数据,恢复8081镜像访问服务;

3. 还原 Harbor 镜像仓库:重启服务并导入备份数据,恢复Docker镜像仓库业务;

4. 优化磁盘机制:调整交换分区配置,优化LVM分区读写规则,设置磁盘空间告警,避免后续爆满隐藏文件问题;

5. 整理目录结构:统一规整 /home 挂载目录,清理无效冗余文件,规范业务数据存储路径。

故障避坑总结

1. 服务器磁盘临近爆满时,严禁随意修改分区、交换分区、挂载配置并重启,极易触发系统文件隐藏、挂载错乱故障;

2. 手机远程操作服务器高危配置(分区、挂载、swap)风险极高,极易因操作不完整、中断导致系统异常,务必终端操作;

3. 内网镜像、容器仓库类业务数据量大,需定期清理冗余备份、重复缓存,避免磁盘长期高占用;

4. 目录文件消失优先排查「磁盘爆满、挂载错乱」,而非直接判定数据丢失,多数场景为系统保护隐藏。