返回首页

Linux 磁盘分区与挂载完整实操指南 — 从分区到 LVM 生产实战

📅 创建于 2026-06-02 🔄 更新于 2026-06-02 📝 1036 字

来源:运维派 | 发布日期:2026-05-30

Linux 磁盘分区与挂载完整实操指南

核心流程: 查看磁盘 → 选择分区表(MBR/GPT)→ 分区(fdisk/parted/gdisk)→ 格式化(mkfs)→ 挂载 → 配置 fstab 自动挂载。生产推荐 LVM。


一、分区表选择

特性 MBR GPT
最大容量 2TB 18EB
主分区数 4(或3主+1扩展) 128(Linux限制)
数据保护 无备份 备份分区表 + CRC 校验
兼容性 老旧系统好 需 UEFI 或 BIOS+GPT 兼容
选择建议 <2TB 且需兼容旧系统 新分区推荐,>2TB 必须用

设备命名

设备类型 示例
SCSI/SATA 磁盘 /dev/sda(第一块)、/dev/sdb(第二块)
NVMe 磁盘 /dev/nvme0n1(第一块)
虚拟磁盘(KVM) /dev/vda(第一块)
分区 /dev/sda1(第一块第一个分区)、/dev/sda2

二、查看磁盘信息

lsblk                        # 树状查看磁盘和分区结构
fdisk -l /dev/sda            # 查看分区表详情
parted /dev/sda print | grep "Partition Table"  # 查看分区表类型
blkid /dev/sda1              # 查看 UUID 和文件系统类型
cat /proc/scsi/scsi          # 查看 SCSI 设备列表

三、分区工具详解

工具选择

场景 推荐工具 说明
MBR 分区(<2TB) fdisk 传统工具,交互友好
GPT 分区(>2TB) partedgdisk parted 支持非交互,gdisk 界面类似 fdisk
脚本化分区 parted 支持命令行直接操作

fdisk(MBR 适用)

fdisk /dev/sdb              # 进入交互模式
# 常用命令: p=打印, n=新建, d=删除, t=改类型, w=保存, q=不保存退出

# 新建分区示例: 10GB
# 输入 n → p(主分区)→ 1 → 起始扇区默认 → +10G → w

# 改分区类型(如 LVM: 8e)
# 输入 t → 1 → 8e → w

parted(MBR/GPT 通用)

# 创建 GPT 分区表
parted /dev/sdb mklabel gpt

# 创建分区(0% 到 100% 用满全盘)
parted /dev/sdb mkpart primary xfs 0% 100%

# 指定大小创建
parted /dev/sdb mkpart primary ext4 0% 50G
parted /dev/sdb mkpart primary linux-swap 50G 60G

# 删除分区
parted /dev/sdb rm 1

# 调整分区大小(需先卸载)
parted /dev/sdb resizepart 1 100G

gdisk(GPT 专用)

gdisk /dev/sdb              # 交互模式,命令和 fdisk 类似
# n=新建, d=删除, t=改类型, w=保存

四、创建文件系统

类型 适用场景 创建命令
ext4 通用、系统盘 mkfs.ext4 /dev/sdb1
xfs 大文件、数据库、日志 mkfs.xfs /dev/sdb1
swap 虚拟内存 mkswap /dev/sdb2swapon /dev/sdb2

ext4 vs xfs 选择: 系统盘推荐 ext4(稳定通用),大容量数据盘/数据库推荐 xfs(高性能大文件支持)。

常用格式化选项:

# ext4 - 指定卷标、块大小
mkfs.ext4 -L "data" -b 4096 /dev/sdb1

# xfs - 快速格式化(覆盖已有数据)
mkfs.xfs -f /dev/sdb1

五、挂载操作

基础挂载

mount /dev/sdb1 /mnt/data           # 基本挂载
mount -t xfs /dev/sdb1 /mnt/data    # 指定文件系统类型
mount -o ro,noexec /dev/sdb1 /mnt/data  # 只读+禁止执行
mount -o remount,rw /mnt/data       # 重新挂载为读写

umount /mnt/data                    # 卸载
umount -f /mnt/data                 # 强制卸载(设备忙时)
umount -l /mnt/data                 # 延迟卸载

# 查看哪个进程在使用
lsof +D /mnt/data
fuser -v /mnt/data

常用挂载选项

选项 作用 适用
defaults rw,suid,dev,exec,auto,nouser,async 默认
noatime,nodiratime 不更新访问时间 性能优化推荐
noexec 不允许执行二进制 安全场景
nosuid 不允许 SUID 安全场景
errors=remount-ro 错误时重新挂载为只读 文件系统错误处理

六、自动挂载(/etc/fstab)

# <设备>        <挂载点>  <类型>  <选项>         <dump> <pass>
UUID=xxx       /         xfs     defaults       0      1
UUID=xxx       /boot     ext4    defaults       1      2
UUID=xxx       /data     ext4    defaults,noatime 0    2

字段说明: dump(0=不备份)pass(0=不检查, 1=根分区, 2=其他)

⚠️ 修改 fstab 后必须先测试: mount -a 验证无误,否则重启可能进紧急模式。


七、LVM 逻辑卷管理

LVM 提供了比传统分区更灵活的管理方式:动态调整大小、跨磁盘扩展、快照备份。

创建流程

# ① 将分区类型改为 LVM(fdisk 中用 t → 8e)
# ② 创建物理卷
pvcreate /dev/sdb1

# ③ 创建卷组
vgcreate vg_data /dev/sdb1

# ④ 创建逻辑卷
lvcreate -n lv_data -L 100G vg_data
lvcreate -n lv_data -l 100%FREE vg_data    # 用满剩余空间

# ⑤ 格式化并挂载
mkfs.xfs /dev/vg_data/lv_data
mount /dev/vg_data/lv_data /data

动态扩展(无损)

# ① 扩展卷组(有新磁盘时)
vgextend vg_data /dev/sdc1

# ② 扩展逻辑卷
lvextend -L +50G /dev/vg_data/lv_data

# ③ 扩展文件系统
resize2fs /dev/vg_data/lv_data     # ext4
xfs_growfs /mnt/data               # xfs(无需指定设备)

LVM 快照备份

# 创建快照(10G 空间容纳变化量)
lvcreate -s -n lv_data_snap -L 10G /dev/vg_data/lv_data
mount -o ro /dev/vg_data/lv_data_snap /mnt/snapshot

# 备份后清理
umount /mnt/snapshot
lvremove /dev/vg_data/lv_data_snap

文件系统检查与修复

# ext4 - 卸载后检查并修复
umount /dev/sdb1
fsck.ext4 -f /dev/sdb1       # 交互式修复
fsck.ext4 -p /dev/sdb1       # 自动修复(跳过交互)
fsck.ext4 -fy /dev/sdb1      # 强制修复(可能丢数据,慎用)

# xfs - 只支持检查,修复用 xfs_repair
xfs_check /dev/sdb1          # 仅检查
xfs_repair /dev/sdb1         # 修复(需先卸载)

tmpfs(内存文件系统)

tmpfs 基于内存,断电丢数据,适合存放临时文件。

# fstab 配置
tmpfs /tmp/app tmpfs defaults,size=2G,noexec,nosuid,nodev 0 0

# 常用选项
size=2G       # 指定大小(支持百分比如 50%)
noexec        # 不允许执行
nosuid        # 不允许 SUID

八、生产案例

案例一:新服务器初始化数据盘

parted /dev/sdb mklabel gpt
parted /dev/sdb mkpart primary xfs 0% 100%
mkfs.xfs /dev/sdb1
UUID=$(blkid -s UUID -o value /dev/sdb1)
echo "UUID=$UUID /data xfs defaults,noatime 0 2" >> /etc/fstab
mount -a

案例二:扩展根分区(LVM)

# VG 有空间 → 直接扩展 LV
lvextend -L +50G /dev/mapper/centos-root
xfs_growfs /                          # xfs 根分区

# VG 无空间 → 先加新磁盘
pvcreate /dev/sdc1
vgextend centos /dev/sdc1
lvextend -L +100G /dev/mapper/centos-root
xfs_growfs /

案例三:修复挂载故障(系统进紧急模式)

排查步骤: journalctl -xb | grep -i mount 查看失败原因。

常见根因及修复:

故障 修复
fstab 中 UUID 不对 blkid 对比后 vi /etc/fstab 修正
挂载点目录不存在 mkdir -p /data
文件系统损坏 umount /data && fsck.ext4 -f /dev/sdb1
设备名漂移(sda→sdb) 改用 UUID 而非设备名

临时绕过(跳过问题挂载启动): GRUB 菜单按 e,在 linux 行末尾加 rd.breakinit=/bin/bash 登入修复。

案例四:迁移数据到新磁盘

# 挂载新磁盘到临时目录
mkfs.xfs /dev/sdc1
mount /dev/sdc1 /mnt/newdata

# rsync 同步 + diff 验证
rsync -avz /data/ /mnt/newdata/
diff -r /data /mnt/newdata

# 替换 fstab 中的 UUID
sed -i "s/旧UUID/新UUID/g" /etc/fstab
mount -a  # 验证后重启

九、速查表

分区工具速查

fdisk -l /dev/sda                  # 查看 MBR 分区
parted /dev/sdb print              # 查看分区表
parted /dev/sdb mklabel gpt        # 创建 GPT
gdisk -l /dev/sdb                  # 查看 GPT 分区

文件系统速查

操作 ext4 xfs
创建 mkfs.ext4 /dev/sdb1 mkfs.xfs /dev/sdb1
检查 fsck.ext4 -f /dev/sdb1 xfs_repair /dev/sdb1
扩展 resize2fs /dev/sdb1 xfs_growfs /mountpoint

LVM 速查

pvcreate /dev/sdb1          # 创建 PV
vgcreate vg_name /dev/sdb1  # 创建 VG
vgextend vg_name /dev/sdc1  # 扩展 VG
lvcreate -n lv_name -L 10G vg_name   # 创建 LV
lvextend -L +10G /dev/vg_name/lv_name # 扩展 LV

最佳实践

  • GPT+LVM — 新分区优先 GPT 分区表,数据盘用 LVM 方便扩展
  • UUID 而非设备名 — fstab 中用 UUID(设备名可能变化如 sda→sdb)
  • 先备份再操作 — 修改分区和 fstab 前务必备份
  • mount -a 测试 — 修改 fstab 后先测试再重启
  • 单独分区重要目录 — 生产环境 /var/log、/data 等建议独立分区
  • 数据迁移用 rsync — 完成后用 diff 验证一致性

关联页面

页面 说明
linux-disk-inspection-tools-guide 磁盘排查工具(iostat/smartctl)
linux-disk-space-troubleshooting 磁盘空间不足排查
linux-disk-io-tuning 磁盘 I/O 性能调优
linux-memory-management-deep-dive 内存管理(含 swap 机制)