1.分区工具:

1.1设置磁盘(物理)分区:fdisk gdisk parted

工具

优点

缺点

适用场景

fdisk

1. 兼容性极强,几乎所有 Linux 发行版默认预装 2. 操作简单直观,适合快速处理 MBR 分区 3. 对老旧系统和设备支持更好

1. 对 GPT 分区表支持有限,无法创建或调整 GPT 分区 2. 不支持 2TB 以上大磁盘(受 MBR 限制) 3. 无高级功能(如在线调整分区)

处理 MBR 分区表、老旧设备或简单分区操作

gdisk

1. 专为 GPT 设计,支持 GPT 全功能操作(创建、调整、备份等) 2. 操作方式与 fdisk 类似,易上手 3. 支持 2TB 以上大磁盘,可无损转换 MBR 为 GPT

1. 仅支持 GPT 分区表,无法操作 MBR 2. 不支持在线调整分区大小 3. 部分老旧发行版需手动安装

处理 GPT 分区表,且习惯 fdisk 操作逻辑

parted

1. 同时支持 MBR 和 GPT,无容量限制 2. 支持在线调整分区(部分文件系统)和脚本化操作 3. 提供分区表修复、无损调整等高级功能

1. 操作相对复杂,新手需适应命令逻辑 2. 高级操作有数据丢失风险 3. 对特殊分

1. 操作相对复杂,新手需适应命令逻辑2. 高级操作有数据丢失风险\3. 对特殊分区类型(如 APFS)支持有限

1.2MBR 与 GPT 简要对比表

对比维度

MBR(主引导记录)

GPT(GUID 分区表)

核心定位

传统分区格式,适配旧 BIOS 与小硬盘

现代分区格式,适配 UEFI 与大硬盘

最大磁盘容量

仅支持≤2TiB

理论支持 9.4ZB(无实际容量瓶颈)

最多分区数

4 个主分区(或 3 主 + 1 扩展)

Windows 默认支持 128 个主分区

可靠性

无备份 / 校验,损坏难恢复

带备份分区表 + CRC 校验,易修复

适用场景

旧电脑、2TiB 以下硬盘、兼容 XP 等旧系统

现代电脑、大容量硬盘(≥2TiB)、多分区需求

1.3parted的用法

基本语法parted (选项) <设备>,常用选项包括-l(列出所有已识别的设备及其分区表)、-s(以无交互模式运行)、-v(显示版本信息)、-h(显示帮助信息)

  • 交互式用法

    :运行

    parted /dev/sdX

    (X 为磁盘盘符)可进入交互式模式,在其中可使用以下命令:

    • print:显示当前设备的分区表。

    • mklabel:创建新的分区表,如mklabel gpt创建 GPT 分区表。

    • mkpart:创建新分区,如mkpart primary ext4 1MiB 100MiB创建一个起始位置为 1MiB、大小为 100MiB 的主分区,文件系统为 ext4。

    • rm:删除分区,如rm 1删除第一个分区。

    • resizepart:调整现有分区大小,如resizepart 1 200MiB将第一个分区大小调整为 200MiB。

    • set:设置分区标志,如set 1 boot on将第一个分区设置为可启动。

    • quit:退出 parted。

2.Linux LVM 完整配置流程(优化版):从物理设备到开机自挂载

本文基于实操命令,梳理 LVM(逻辑卷管理)从物理设备准备开机自挂载的标准化流程,补充关键参数解释、易错点规避和效率优化技巧,确保操作准确且符合生产环境规范。

2.1、流程总览

LVM 核心逻辑是通过 “物理卷(PV)→ 卷组(VG)→ 逻辑卷(LV)” 的层级管理磁盘空间,最终实现灵活扩容与按需分配。完整流程如下: 硬盘/分区/RAID → 创建物理卷(PV)→ 创建卷组(VG)→ 创建逻辑卷(LV)→ 格式化文件系统 → 创建挂载点 → 临时挂载 → 配置开机自挂载

2.2、分步优化操作(含命令解析)

2.2.1. 准备物理设备并创建物理卷(PV)

物理卷是 LVM 的 “基础原料”,可将整块磁盘分区RAID 设备初始化为 PV(建议对磁盘先分区再做 PV,便于后续管理)。

操作命令

# 示例1:将 /dev/sdb 的3个分区(sdb1、sdb2、sdb3)初始化为 PV
[root@centos7 ~]# pvcreate /dev/sdb{1..3}  # {1..3} 是通配符,等价于 /dev/sdb1 /dev/sdb2 /dev/sdb3
  Physical volume "/dev/sdb1" successfully created.
  Physical volume "/dev/sdb2" successfully created.
  Physical volume "/dev/sdb3" successfully created.
​
# 示例2:将整块磁盘 /dev/sdc(无分区)直接初始化为 PV(适合全新磁盘)
[root@centos7 ~]# lsblk /dev/sdc  # 先确认磁盘无重要数据(SIZE=2G,无分区)
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdc    8:32   0   2G  0 disk 
​
[root@centos7 ~]# pvcreate /dev/sdc
  Physical volume "/dev/sdc" successfully created.

优化说明

  • 通配符使用/dev/sdb{1..3} 替代逐个输入分区路径,减少重复操作(若分区是 sdb5、sdb6,可写 sdb{5,6})。

  • 前置检查:创建 PV 前必须用 lsblkfdisk -l 确认设备无重要数据(PV 创建会覆盖设备头部信息,数据无法恢复)。

  • 分区类型建议:若用分区做 PV,建议将分区类型设为 8e(LVM 专用类型),通过 fdiskt 命令修改(便于识别)。

2.2.2. 查看物理卷(PV)状态

通过工具查看 PV 的归属(是否已加入卷组)、大小、UUID 等信息,确认 PV 创建成功。

操作命令

# 1. 快速扫描所有 PV(简洁显示,适合批量检查)
[root@centos7 ~]# pvscan 
  PV /dev/sda3   VG centos_centos7   lvm2 [<39.00 GiB / 0    free]  # 已加入卷组 centos_centos7,无空闲空间
  PV /dev/sdb2                       lvm2 [500.00 MiB]              # 未加入卷组(无 VG 名称)
  PV /dev/sdc                        lvm2 [2.00 GiB]
  PV /dev/sdb3                       lvm2 [300.00 MiB]
  PV /dev/sdb1                       lvm2 [1.00 GiB]
  Total: 5 [<42.78 GiB] / in use: 1 [<39.00 GiB] / in no VG: 4 [3.78 GiB]  # 统计信息
​
# 2. 列表形式显示 PV(重点看 VG 列和 PFree 列)
[root@centos7 ~]# pvs
  PV         VG             Fmt  Attr PSize    PFree   
  /dev/sda3  centos_centos7 lvm2 a--  <39.00g       0   # a-- 表示激活状态,PFree=0 无空闲
  /dev/sdb1                 lvm2 ---  1020.00m 1020.00m# --- 表示未激活(未加入 VG),PFree=总大小
  /dev/sdb2                 lvm2 ---  496.00m  496.00m 
  /dev/sdb3                 lvm2 ---  300.00m  300.00m
  /dev/sdc                  lvm2 ---    2.00g    2.00g
​
# 3. 查看单个 PV 详细信息(如 /dev/sdb1,含 UUID、PE 大小等)
[root@centos7 ~]# pvdisplay /dev/sdb1
  "/dev/sdb1" is a new physical volume of "1.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb1
  VG Name               # 空,表示未加入卷组
  PV Size               1.00 GiB
  Allocatable           NO  # 未加入 VG 前不可分配
  PE Size               0   # 未加入 VG 前无 PE 大小(PE 由 VG 定义)
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               cRPSpO-mkfW-ZFpv-B2ye-Qedh-FibA-GI0RR9  # PV 唯一标识,用于故障排查

关键字段解释

  • Attr 列a= 激活,-= 未激活;未加入 VG 的 PV 为 ---,加入后变为 a--

  • PFree 列:PV 的空闲空间,未加入 VG 时 PFree=PSize,加入后随 LV 创建减少。

2.2.3. 创建卷组(VG)

卷组是 PV 的 “聚合池”,将多个 PV 合并为一个逻辑空间,统一分配 PE(物理扩展单元,默认 4MB,VG 级别的最小分配单位)。

操作命令

# 创建卷组 vg01,将 /dev/sdb1 和 /dev/sdb2 加入(选择未使用的 PV)
[root@centos7 ~]# vgcreate vg01 /dev/sdb2 /dev/sdb1
  Volume group "vg01" successfully created

优化技巧

  • 自定义 PE 大小:若需分配大空间(如 TB 级),可通过 -s 指定更大的 PE(如 -s 16M),减少 PE 数量,提升性能: vgcreate -s 16M vg01 /dev/sdb1 /dev/sdb2

  • 卷组命名规范:建议按用途命名(如 vg_data 用于数据,vg_log 用于日志),便于后续维护。

2.2.4. 查看卷组(VG)状态

确认 VG 的大小、包含的 PV 数量、空闲空间等,为后续创建 LV 做准备。

操作命令

# 1. 列表形式显示所有 VG(简洁,重点看 VSize 和 VFree)
[root@centos7 ~]# vgs
  VG             #PV #LV #SN Attr   VSize   VFree
  centos_centos7   1   2   0 wz--n- <39.00g    0  # #PV=1个PV,#LV=2个LV,VFree=0无空闲
  vg01             2   0   0 wz--n-   1.48g 1.48g # #PV=2个PV,#LV=0无LV,VFree=总大小
​
# 2. 查看单个 VG 详细信息(如 vg01,含 PE 大小、总 PE 数)
[root@centos7 ~]# vgdisplay vg01
  --- Volume group ---
  VG Name               vg01
  System ID             
  Format                lvm2
  Metadata Areas        2  # 包含 2 个 PV
  Metadata Sequence No  1
  VG Access             read/write  # 读写权限
  VG Status             resizable   # 可扩容(支持添加新 PV)
  MAX LV                0  # 无 LV 数量限制(默认)
  Cur LV                0  # 当前无 LV
  Open LV               0  # 无已挂载的 LV
  Max PV                0  # 无 PV 数量限制(默认)
  Cur PV                2  # 当前 2 个 PV
  Act PV                2  # 激活的 PV 数量
  VG Size               1.48 GiB  # VG 总大小(≈1G+500M,因 PV 头部占用少量空间)
  PE Size               4.00 MiB  # 默认 PE 大小(VG 最小分配单位)
  Total PE              379  # 总 PE 数(1.48G / 4M ≈ 379)
  Alloc PE / Size       0 / 0   
  Free  PE / Size       379 / 1.48 GiB  # 空闲 PE 数(可分配给 LV)
  VG UUID               vZw5z0-e3AM-QFpC-NdEj-1XxI-srSh-A1etbe

关键字段解释

  • #PV/#LV:卷组包含的 PV 数量和 LV 数量,创建 LV 后 #LV 会增加。

  • PE Size:LV 创建时的最小单位(如 PE=4M,LV 大小必须是 4M 的整数倍)。

2.2.5. 创建逻辑卷(LV)

逻辑卷是从 VG 中 “切割” 出的空间,可直接格式化并挂载使用(相当于传统分区,但支持动态扩容)。创建 LV 有两种指定大小的方式:-L(指定具体容量)和 -l(指定 PE 数量或百分比)。

方法 1:用 -L 指定具体容量(推荐,直观)

# 1. 先查看 VG 空闲空间(vg01 有 1.48G 空闲)
[root@centos7 ~]# vgs
  VG             #PV #LV #SN Attr   VSize   VFree
  centos_centos7   1   2   0 wz--n- <39.00g    0 
  vg01             2   0   0 wz--n-   1.48g 1.48g
​
# 2. 创建 LV:从 vg01 分配 200M,命名为 lv01
[root@centos7 ~]# lvcreate -L 200M -n lv01 vg01  # -L=容量,-n=LV 名称,最后跟 VG 名称
  Logical volume "lv01" created.
​
# 3. 查看 LV 创建结果(lvs)和 VG 剩余空间(vgs)
[root@centos7 ~]# lvs
  LV   VG             Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root centos_centos7 -wi-ao---- <35.00g  # -wi-ao 表示可写、已激活、已挂载
  swap centos_centos7 -wi-ao----   4.00g 
  lv01 vg01           -wi-a----- 200.00m  # -wi-a 表示可写、已激活、未挂载
​
[root@centos7 ~]# vgs  # VG 空闲空间减少 200M(1.48g → 1.29g)
  VG             #PV #LV #SN Attr   VSize   VFree 
  centos_centos7   1   2   0 wz--n- <39.00g     0 
  vg01             2   1   0 wz--n-   1.48g <1.29g

方法 2:用 -l 指定 PE 数量或百分比(灵活,适合充分利用空间)

# 创建 LV:从 vg01 分配 20 个 PE(PE=4M → 20*4=80M),命名为 lv02
[root@centos7 ~]# lvcreate -l 20 -n lv02 vg01
  Logical volume "lv02" created.
​
# 查看结果(LV 大小为 80M)
[root@centos7 ~]# lvs
  LV   VG             Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root centos_centos7 -wi-ao---- <35.00g                                                    
  swap centos_centos7 -wi-ao----   4.00g                                                    
  lv01 vg01           -wi-a----- 200.00m                                                    
  lv02 vg01           -wi-a-----  80.00m  # 20*4M=80M

扩展用法

  • 分配 VG 所有空闲空间lvcreate -l 100%FREE -n lv03 vg01(适合一次性用满 VG 空闲空间)。

  • 分配 VG 空闲空间的 50%lvcreate -l 50%FREE -n lv04 vg01(灵活预留空间)。

2.2.6. 格式化逻辑卷(创建文件系统)

LV 需格式化后才能挂载使用,常用文件系统为 ext4(兼容好,支持缩容)和 xfs(性能优,CentOS 7/8 默认,仅支持扩容)。

操作命令

# 1. 格式化 lv01 为 ext4(适合需要缩容的场景)
[root@centos7 ~]# mkfs.ext4 /dev/vg01/lv01  # LV 路径:/dev/卷组名/逻辑卷名
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
51200 inodes, 204800 blocks
10240 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=67371008
25 block groups
8192 blocks per group, 8192 fragments per group
2048 inodes per group
Superblock backups stored on blocks: 
    8193, 24577, 40961, 57345, 73729
​
Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done 
​
# 2. 格式化 lv02 为 xfs(适合高性能场景,CentOS 7 默认)
[root@centos7 ~]# mkfs.xfs /dev/vg01/lv02
meta-data=/dev/vg01/lv02         isize=512    agcount=4, agsize=5120 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=20480, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=855, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
​
# 3. 验证格式化结果(用 blkid 查看文件系统类型和 UUID)
[root@centos7 ~]# blkid 
......
/dev/mapper/vg01-lv01: UUID="06b713e3-d656-413d-b193-ed0faa44e824" TYPE="ext4"  # ext4
/dev/mapper/vg01-lv02: UUID="5265df4c-6b5b-4e02-be23-a39ac1f

3.LVM 逻辑卷(LV)扩容完整指南

LVM 的核心优势之一是支持在线动态扩容(无需卸载逻辑卷,不中断业务),但需根据文件系统类型(如 ext4/xfs)选择对应工具。扩容流程遵循 “扩展 LV 逻辑空间 → 扩展文件系统” 两步核心操作,以下是详细步骤与优化说明。

3.1、扩容前必备检查

扩容前需确认 3 个关键信息,避免操作失败或数据丢失:

  1. 确认 LV 挂载状态:无需卸载(在线扩容),但需确认挂载点(后续 xfs 扩容需用到)。

    # 查看 LV 挂载情况(示例:vg01 卷组的 lv01、lv02)
    df -hT | grep vg01
    # 输出示例:
    # /dev/mapper/vg01-lv01  ext4      190M  1.6M  175M    1% /lv01
    # /dev/mapper/vg01-lv02  xfs        77M  4.3M   73M    6% /lv02
  2. 确认卷组(VG)剩余空间:LV 扩容需依赖 VG 的空闲空间,若 VG 无空闲空间,需先添加新物理卷(PV)到 VG。

    # 查看 VG 空闲空间(重点看 VFree 列)
    vgs vg01  # 仅查看 vg01 卷组
    # 输出示例:
    # VG   #PV #LV #SN Attr   VSize   VFree 
    # vg01   2   2   0 wz--n-   1.48g <1.20g  # 有 1.20G 空闲,可用于扩容
  3. 确认文件系统类型:ext4 和 xfs 扩容工具不同(ext4 用 resize2fs,xfs 用 xfs_growfs)。

    # 方法1:通过 df -hT 查看(TYPE 列)
    # 方法2:通过 blkid 查看(TYPE 字段)
    blkid /dev/vg01/lv01
    # 输出示例:/dev/mapper/vg01-lv01: UUID="xxx" TYPE="ext4"

3.2、分场景扩容步骤(ext4/xfs)

场景 1:文件系统为 ext4(如 lv01)

步骤 1:扩展 LV 逻辑空间

通过 lvextend 命令从 VG 中分配空闲空间给 LV,支持两种指定容量的方式:

  • 方式 1:指定扩容后总容量

    (如扩容到 500M):

    lvextend -L 500M /dev/vg01/lv01  # -L 后跟总容量
  • 方式 2:指定新增容量

    (如增加 300M,号表新增):

    lvextend -L +300M /dev/vg01/lv01  # 推荐,避免算错总容量
  • 方式 3:使用 VG 全部空闲空间

    (适合一次性用满空闲空间):

    lvextend -l 100%FREE /dev/vg01/lv01  # -l 后跟 PE 数量(100%FREE 表示全部空闲 PE)

执行结果验证:查看 LV 大小是否已更新

lvs /dev/vg01/lv01  # 或 lvdisplay /dev/vg01/lv01
# 输出示例:LV lv01 VG vg01 LSize 500.00m  # LV 已扩展到 500M

步骤 2:扩展 ext4 文件系统

LV 扩容后,文件系统尚未识别新增空间,需用 resize2fs 同步(ext4 支持在线同步,无需卸载)

# 直接指定 LV 路径即可(ext4 会自动识别新增空间)
resize2fs /dev/vg01/lv01

执行结果验证:查看挂载点空间是否更新

df -hT /lv01  # 查看 /lv01 挂载点
# 输出示例:/dev/mapper/vg01-lv01  ext4      488M  1.8M  462M    1% /lv01  # 空间已生效

场景 2:文件系统为 xfs(如 lv02)

xfs 扩容与 ext4 核心区别:xfs_growfs 需指定挂载点,而非 LV 路径,且 xfs 不支持缩容(操作前需确认扩容需求)。

步骤 1:扩展 LV 逻辑空间

与 ext4 步骤 1 完全一致,示例:给 lv02 新增 200M 空间

lvextend -L +200M /dev/vg01/lv02

执行结果验证

lvs /dev/vg01/lv02  # 输出示例:LV lv02 VG vg01 LSize 280.00m

步骤 2:扩展 xfs 文件系统

xfs_growfs 同步文件系统,需传入 LV 的挂载点(如 /lv02):

xfs_growfs /lv02  # 注意:这里是挂载点 /lv02,不是 LV 路径 /dev/vg01/lv02

执行结果验证

df -hT /lv02  # 输出示例:/dev/mapper/vg01-lv02  xfs       277M  4.5M  273M    2% /lv02

3.3、特殊场景:VG 无空闲空间怎么办?

若执行 vgs vg01 发现 VFree=0,需先添加新物理卷(PV)到 VG,再进行 LV 扩容,步骤如下:

  1. 准备新物理设备(如新增磁盘 /dev/sdd,或分区 /dev/sdd1):

    # 示例:将整块磁盘 /dev/sdd 初始化为 PV
    pvcreate /dev/sdd
    # 输出:Physical volume "/dev/sdd" successfully created.
  2. 将新 PV 加入目标 VG(如 vg01)

    vgextend vg01 /dev/sdd  # 扩展 vg01 卷组,加入 /dev/sdd
    # 输出:Volume group "vg01" successfully extended
  3. 验证 VG 空闲空间

    vgs vg01  # 此时 VFree 会增加(如新增 2G 磁盘,VFree 约 2G)
  4. 后续操作:回到 “场景 1 / 场景 2”,正常扩容 LV 即可。

3.4、扩容易错点与避坑指南

  1. 漏扩展文件系统:仅执行 lvextend 会导致 LV 逻辑空间变大,但文件系统仍识别原大小(df -h 无变化),必须执行 resize2fs/xfs_growfs

  2. xfs 扩容传错路径xfs_growfs 必须传挂载点(如 /lv02),传 LV 路径(/dev/vg01/lv02)会报错:xfs_growfs: /dev/vg01/lv02 is not a mounted XFS filesystem

  3. 未检查数据完整性:虽然 LVM 扩容安全性高,但重要数据建议先备份(如通过 rsync 备份挂载点数据)。

  4. 离线扩容误区:ext4/xfs 均支持在线扩容,无需卸载 LV;若强行卸载,可能导致业务中断(生产环境需避免)。

4、总结:扩容核心流程

  1. 检查前提:确认 LV 挂载点、VG 空闲空间、文件系统类型。

  2. 扩展 LVlvextend -L +新增容量 /dev/VG名/LV名

  3. 扩展文件系统

    • ext4:resize2fs /dev/VG名/LV名

    • xfs:xfs_growfs 挂载点

  4. 验证结果df -hT 挂载点 确认空间生效。