浅析 /home 分区挂载异常问题

一、本机硬盘硬件结构(lsblk 真实信息)

plaintext

sda(1.8T整块硬盘,分出2个独立分区)
├─sda1  500G → 挂载点:/home(用户资料分区)
└─sda2  1.3T → 挂载点:/opt/mirror(镜像文件专属分区)

sdb(系统盘 59.6G LVM结构)
├─sdb1 1M 空闲分区
├─sdb2 2G /boot启动分区
└─sdb3 LVM卷组
    ├─ubuntu--vg-lv--0 55G 根目录 / 系统盘
    └─ubuntu--vg-lv--1 2G 交换分区

分区 UUID(你本机实际编号,直接复制写入 fstab)

  1. /dev/sda1(/home 分区):2b027fb4-58fe-48c5-9ac1-da5c7bd058a9

  2. /dev/sda2(/opt/mirror 镜像分区):ab871d9b-449d-4b14-b40b-4df420fa6ebd

磁盘规划

  • sda1‑500G /home:存放用户配置、文档、旧镜像备份、日常文件,重装系统用户数据不会丢失

  • sda2‑1.3T /opt/mirror:专门存放 ISO 系统镜像、apt 软件源、安装包,作为 Nginx 文件下载站点根目录

  • sdb 为系统盘,独立负责 Ubuntu 系统、Nginx、SSL 证书、日志,三类存储空间完全隔离


二、两套部署方案

方案 1:免分区简易方案(备用测试)

适合临时调试,不对硬盘重新分区,镜像存放于系统盘用户目录

bash

#镜像备份目录
/home/shitou/mirror_backup

Nginx 站点根目录临时配置:root /home/shitou/mirror_backup;

  • 优点:操作简单,无挂载出错风险

  • 缺点:占用系统盘空间,镜像堆积容易塞满系统盘造成服务器故障

方案 2:正式双分区方案(你当前正在使用,sda 硬盘切割双分区)

完整操作日志(跟着你执行顺序整理,包含报错处理)

1. 查看磁盘分区信息

bash

lsblk
sudo fdisk -l

2. 卸载旧分区(sda2 原先处于挂载状态,格式化必须先卸载)

bash

#卸载镜像分区
sudo umount /dev/sda2

3. 格式化 sda2 为 ext4 文件系统

bash

#报错:/dev/sda2 is mounted; will not make a filesystem here!
#报错原因:分区还处于挂载状态,上面umount卸载之后再次执行
sudo mkfs.ext4 /dev/sda2

4. 读取两个分区的 UUID

bash

blkid /dev/sda1
blkid /dev/sda2

获取到本机固定 UUID:

  • sda1:2b027fb4-58fe-48c5-9ac1-da5c7bd058a9

  • sda2:ab871d9b-449d-4b14-b40b-4df420fa6ebd

5. 确认挂载目录

bash

sudo mkdir -p /home
sudo mkdir -p /opt/mirror

/home 已经由 sda1 挂载,仅需要配置开机自动挂载

6. 编辑开机自动挂载文件 /etc/fstab

bash

sudo nano /etc/fstab

在文件末尾粘贴下面两行(直接使用你的本机 UUID)

plaintext

UUID=2b027fb4-58fe-48c5-9ac1-da5c7bd058a9     /home        ext4    defaults    0   2
UUID=ab871d9b-449d-4b14-b40b-4df420fa6ebd     /opt/mirror  ext4    defaults    0   2

Ctrl+O保存、Ctrl+X退出编辑器

7. 测试挂载配置(重中之重,防止 fstab 出错导致开机无法进入系统)

bash

mount -a
df -h

没有报错即代表挂载配置正常

8. 迁移文件

  1. /home 分区:用户资料已经存放在 sda1 分区,无需迁移

  2. 镜像文件拷贝至独立镜像分区

bash

#复制镜像资源
sudo cp -r /home/shitou/镜像文件/* /opt/mirror/
#配置Nginx访问权限
sudo chown -R www-data:www-data /opt/mirror
sudo chmod -R 755 /opt/mirror

三、Nginx 完整站点配置 /etc/nginx/sites-available/default

nginx

#80端口 读取1.3T独立镜像分区 /opt/mirror,开启目录浏览
server {
    listen 80 default_server;
    listen [::]:80 default_server;
    root /opt/mirror;
    index index.html;
    server_name _;

    location / {
        autoindex on;
        autoindex_exact_size off;
        autoindex_localtime on;
        try_files $uri $uri/ =404;
    }
}

#7000端口 HTTPS反向代理
server {
    listen 7000 ssl;
    server_name www.lingluanaishitou.icu;
    ssl_certificate /etc/nginx/ssl/lingluanaishitou.icu.pem;
    ssl_certificate_key /etc/nginx/ssl/lingluanaishitou.icu.key;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;
    location / {
        proxy_pass http://127.0.0.1:8090;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

#15000端口 HTTPS反向代理
server {
    listen 15000 ssl;
    server_name www.lingluanaishitou.icu;
    ssl_certificate /etc/nginx/ssl/lingluanaishitou.icu.pem;
    ssl_certificate_key /etc/nginx/ssl/lingluanaishitou.icu.key;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;
    location / {
        proxy_pass http://127.0.0.1:8989;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

四、Nginx 启动、启用站点、全套排错命令

bash

#创建站点软链接,启用default配置
sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/
#校验配置语法
sudo nginx -t
#启动Nginx服务
sudo systemctl start nginx
#设置开机自启
sudo systemctl enable nginx
#查看运行状态
sudo systemctl status nginx

五、完整踩坑日志

报错 1:/dev/sda2 is mounted; will not make a filesystem here!

  • 故障原因:分区处于挂载占用状态,无法执行格式化

  • 解决:先执行sudo umount /dev/sda2卸载分区之后再格式化

报错 2:nginx.service is not active, cannot reload

  • 故障原因:Nginx 服务尚未启动,reload 仅支持正在运行的服务

  • 解决:sudo systemctl start nginx先启动服务

报错 3:浏览器访问192.168.31.19:8081出现 404 Not Found

  1. Nginx 镜像站点仅监听 80 端口,正确访问地址:http://192.168.31.19

  2. 排查站点软链接是否创建、/opt/mirror目录权限、目录内是否存放文件
    重新开启镜像站就可以了,