一、磁盘分区方案对比 MBR vs GPT

1. 核心差异

表格

对比项MBR(msdos)GPT
最大磁盘容量2TiB18ZiB
分区上限主分区 4 个 / 扩展 + 逻辑最多 15 个128 个主分区
冗余备份无,分区表损坏直接丢数据分区表头尾双备份,支持 CRC 校验恢复
适用固件BIOSUEFI

2. GPT 分区结构

  1. LBA0 保护性 MBR
    • 446 字节引导程序;分区标识0xEE,防止老旧工具误删 GPT 磁盘
  2. LBA1 GPT 头部
    • 记录分区表位置、备份位置、CRC32 校验码,用于校验修复分区表
  3. LBA2~33 分区条目
    • 每扇区 4 组分区记录,每组 128 字节,合计 128 条分区
  4. 磁盘末尾:备份 GPT 头部 + 分区表

二、GPT 分区工具 gdisk

1. 基础语法

bash

# 查看磁盘GPT分区表
gdisk -l /dev/sdb

# 交互式操作磁盘
gdisk /dev/sdb

2. 核心交互命令

表格

指令功能
?查看全部帮助
o新建空白 GPT 表(清空全部分区)
p打印分区列表
n新建分区
c修改分区名称
i查看分区详细 GUID / 扇区信息
d删除分区
t修改分区类型 ID(LVM/RAID/EFI)
w写入分区表并保存退出
q不保存直接退出

3. 完整实操代码(带注释)

bash

# 1. 将MBR磁盘转为GPT(清空原有分区)
gdisk /dev/sdb
Command (? for help): o  # 新建GPT分区表
Proceed? (Y/N): Y
Command (? for help): p  # 查看空分区表
Command (? for help): w  # 保存分区表
Do you want to proceed? (Y/N): Y

# 2. 创建2G Linux文件系统分区
gdisk /dev/sdb
Command (? for help): n
Partition number (1-128, default 1): 回车 # 默认分区号1
First sector: 回车 # 起始扇区默认对齐2048
Last sector: +2G # 分配2G空间
Hex code: 回车 # 默认8300 Linux filesystem

# 3. 修改分区名称
Command (? for help): c
Using 1
Enter name: data01

# 4. 查看分区详情
Command (? for help): i
Using 1

# 5. 删除分区
Command (? for help): d
Using 1
Command (? for help): w # 保存修改

三、磁盘清理工具 wipefs

作用:清除磁盘分区表、文件系统签名,避免新旧分区冲突

bash

# 查看磁盘现有文件系统/分区标识
wipefs /dev/sdb

# 清空全部磁盘签名(无强制风险,推荐)
wipefs -a /dev/sdb

# 强制清除(慎用,磁盘挂载时禁止使用)
wipefs -fa /dev/sdb

四、通用分区工具 parted(支持 MBR/GPT,支持脚本非交互)

1. 交互式核心命令

bash

# 进入磁盘交互界面
parted /dev/sdb
(parted) help          # 查看所有指令
(parted) print         # 打印分区表
(parted) unit MiB      # 切换容量单位为二进制MiB(默认十进制MB)
(parted) mklabel gpt   # 设置磁盘为GPT分区表
(parted) mklabel msdos # 设置磁盘为MBR分区表
(parted) mkpart        # 新建分区
(parted) resizepart 1 5121 # 扩容1号分区到5121MiB
(parted) rm 1          # 删除1号分区
(parted) quit          # 退出

2. 非交互脚本命令(自动化推荐)

bash

# 1. 磁盘改为GPT分区表
parted /dev/sdb mklabel gpt yes

# 2. 创建2G GPT分区data01,文件系统标记xfs
parted /dev/sdb unit MiB mkpart data01 xfs 1 2049

# 3. 扩容分区1至5G
parted /dev/sdb unit MiB resizepart 1 5121

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

# 5. 查看分区信息
parted /dev/sdb unit MiB print

重点:parted 操作实时生效,无需手动保存

五、文件系统格式化 + /etc/fstab 永久挂载

1. 格式化分区

bash

# xfs格式化,存在旧文件系统需加-f强制覆盖
mkfs.xfs /dev/sdb1
mkfs.xfs -f /dev/sdb1

# ext4格式化
mkfs.ext4 /dev/sdb1

2. /etc/fstab 六字段详解

UUID=xxx /data01 xfs defaults 0 0
  1. 设备标识:UUID(推荐)//dev/sdb1
  2. 挂载点:必须提前mkdir创建
  3. 文件系统类型:xfs/ext4/swap
  4. 挂载参数:defaults=rw,suid,dev,exec,auto,nouser,async
  5. dump 备份标记:0 = 不备份
  6. fsck 自检顺序:xfs 固定 0;ext4 根分区 1,其他分区 2

3. 完整挂载流程

bash

# 获取分区UUID
blkid /dev/sdb1

# 创建挂载目录
mkdir /data01

# 写入fstab持久挂载
vim /etc/fstab
UUID="f5c35f10-0274-45af-b044-73694989fe01" /data01 xfs defaults 0 0

# 生效挂载,无需重启
mount /data01

# 验证挂载
df -h /data01

六、磁盘空间不足三大场景排查方案

场景 1:大文件占满磁盘

bash

# 方法1:查找大于100M文件
find /myapp-1 -size +100M

# 方法2:逐层统计目录占用
du -s /myapp-1/* | sort -n | tail -2

# 删除大文件释放空间
rm -f /myapp-1/etc/bigfile

场景 2:文件删除但进程占用,空间不释放

bash

# 查找已删除但被进程占用的文件
lsof | grep delete | grep /myapp-1

# 终止占用进程释放空间
kill 1654

场景 3:小文件耗尽 inode(磁盘空间充足但无法新建文件)

bash

# 查看inode使用率
df -hi /myapp-2

# 批量删除海量小文件
rm -f /myapp-2/file-0*

七、RAID 磁盘冗余阵列

1. RAID 分类(软 RAID mdadm / 硬 RAID 阵列卡)

  • 软 RAID:CPU 计算,无硬件,Linux mdadm 实现
  • 硬 RAID:独立阵列卡芯片,不占用 CPU,企业服务器专用

2. 主流 RAID 级别核心参数

表格

RAID最小磁盘容错空间利用率读性能写性能适用场景
RAID02无100%极高极高临时高速存储,无重要数据
RAID12坏 1 块50%高一般数据库、关键业务
RAID53坏 1 块(n-1)/n高偏低普通文件服务器
RAID64坏 2 块(n-2)/n高低大容量归档存储
RAID104每组镜像坏 1 块50%极高高高并发数据库、虚拟化

3. mdadm 软 RAID 实操(重点注释)

(1)RAID0 创建 / 查看 / 删除

bash

# 安装工具
yum install -y mdadm

# 创建RAID0 /dev/md0 两块磁盘sdb sdc
mdadm --create /dev/md0 --level 0 --raid-devices 2 /dev/sd{b,c}

# 查看RAID概要
cat /proc/mdstat

# 查看RAID详细信息
mdadm --detail /dev/md0

# 格式化挂载
mkfs.xfs /dev/md0
mkdir /raid/raid0
mount /dev/md0 /raid/raid0

# 删除RAID0
umount /raid/raid0               # 1.卸载
mdadm --stop /dev/md0            # 2.停止阵列
mdadm --zero-superblock /dev/sd{b,c} # 3.清除磁盘RAID标记

限制:RAID0 无冗余,不支持添加热备盘、故障磁盘模拟

(2)RAID1 镜像阵列(支持热备、故障自动重建)

bash

# 创建2盘RAID1
mdadm --create /dev/md1 --level 1 --raid-devices 2 /dev/sd{b,c}

# 添加热备盘sdd
mdadm --add /dev/md1 /dev/sdd

# 模拟磁盘故障
mdadm --fail /dev/md1 /dev/sdc

# 移除故障磁盘
mdadm --remove /dev/md1 /dev/sdc

# 销毁RAID1
umount /raid/raid1
mdadm --stop /dev/md1
mdadm --zero-superblock /dev/sd{b..d}
(3)RAID5 扩容实操

bash

# 4块磁盘创建RAID5
mdadm --create /dev/md5 --level 5 --raid-devices 4 /dev/sd{b..e}

# 添加两块新磁盘作为热备
mdadm --add /dev/md5 /dev/sdb /dev/sdg

# 扩容阵列,磁盘数量从4变为5
mdadm --grow /dev/md5 --raid-devices 5

# 等待重组完成后,扩容xfs文件系统
xfs_growfs /raid/raid5

八、LVM 逻辑卷管理(核心重点)

1. LVM 三层结构

  1. PV 物理卷:磁盘 / 分区初始化为 LVM 底层存储单元

  2. VG 卷组:多个 PV 合并成存储资源池

  3. LV 逻辑卷

    :从 VG 池划分,格式化后挂载使用

    PE:VG 最小存储块,默认 4MiB;LE:LV 最小块,一一对应 PE

2. PV 物理卷操作

bash

# 将磁盘初始化为PV
pvcreate /dev/sdb /dev/sdc /dev/sdd

# 查看PV简略信息
pvs

# 查看PV详细信息
pvdisplay /dev/sdb

# 删除PV(释放磁盘)
pvremove /dev/sdb

3. VG 卷组扩容 / 缩容

bash

# 创建VG webapp,包含/dev/sdb
vgcreate webapp /dev/sdb

# VG扩容:新增两块PV到卷组
vgextend webapp /dev/sdc /dev/sdd

# VG缩容:移除空闲PV
# 1.迁移PV内所有数据到其他PV
pvmove /dev/sdb
# 2.从VG剔除PV
vgreduce webapp /dev/sdb

# 查看VG信息
vgs
vgdisplay webapp

# 删除VG
vgremove webapp

4. LV 逻辑卷基础创建

bash

# 在webapp卷组创建5G逻辑卷webapp01
lvcreate -n webapp01 -L 5G webapp

# 查看LV列表
lvs
lvdisplay /dev/webapp/webapp01

# 删除逻辑卷
lvremove /dev/webapp/webapp01

5. LV 扩容(XFS/EXT4 通用)

bash

# 方式1:单独扩容LV,之后手动扩文件系统
lvextend -L +2G /dev/webapp/webapp01
# xfs扩容文件系统
xfs_growfs /usr/share/nginx/html
# ext4扩容文件系统
resize2fs /dev/webapp/webapp01

# 方式2:一键扩容LV+文件系统(-r自动同步)
lvextend -rL 20G /dev/webapp/webapp01

6. EXT4 LV 缩容(XFS 不支持缩容)

流程:卸载→磁盘检测→缩文件系统→缩 LV→挂载

bash

# 1.卸载挂载点
umount /usr/share/nginx/html

# 2.强制检测文件系统完整性
e2fsck -f /dev/webapp/webapp01

# 3.缩减文件系统至10G
resize2fs /dev/webapp/webapp01 10G

# 4.缩减逻辑卷容量
lvreduce -L 10G /dev/webapp/webapp01

# 5.重新挂载验证
mount /dev/webapp/webapp01 /usr/share/nginx/html

7. LVM 快照(数据备份)

bash

# 创建10G快照webapp01-snap1,基于原LV
lvcreate -s -n webapp01-snap1 -L 10G /dev/webapp/webapp01

# 挂载快照查看历史数据
mount /dev/webapp/webapp01-snap1 /webapp/snap

8. RAID 类型 LVM(raid1 镜像逻辑卷)

bash

# 创建15G RAID1类型逻辑卷
lvcreate --type raid1 -n webapp01 -L 15G webapp

# 磁盘故障修复流程
vgreduce --removemissing webapp --force # 移除损坏磁盘
vgextend webapp /dev/sdd                # 添加新磁盘
lvconvert --repair /dev/webapp/webapp01 # 重建RAID镜像

更多推荐