亳州市网站建设_网站建设公司_Python_seo优化
2026/1/2 17:46:12 网站建设 项目流程

适用于:
VMware / KVM / 云主机 / 物理机
适用于//var/home/data/u01/backup等所有 LVM 目录

扩容逻辑完全不看厂商,只认内核。

层级你依赖的是什么是否平台无关
VMware / KVM / 云只是“给你一块新盘”
Linux 内核LVM2
文件系统xfs / ext4
挂载点/var /data /u01 等

为什么任何目录都适用?

因为你扩的不是“目录”,你扩的是它背后的LV(逻辑卷)

目录 ↓ 文件系统 FS ↓ 逻辑卷 LV ←← 你真正操作的对象 ↓ 卷组 VG ↓ 物理卷 PV

只要它满足:

  1. ✔ df -h 显示的是 /dev/vg_xxx/lv_xxx
  2. ✔ FS 是 xfs / ext4
  3. ✔ 没用 raw disk / loop / docker volume

一、必须先看懂的底层概念(扩容的“世界观”)

1. LVM 是什么?

LVM(Logical Volume Manager)= 逻辑卷管理器

它是 Linux 的“虚拟磁盘调度中心”,Linux 的虚拟磁盘调度系统,用于把多块物理磁盘整合为一个可动态扩展的存储池。

让系统从:

一盘一分区一挂载点
升级为
多盘组成一个容量池 → 任意目录可在线生长。

2. LVM 三层结构说明

Physical Disk → PV → VG → LV → Mount Point 物理硬盘 物理卷 卷组 逻辑卷 挂载目录
缩写英文全称中文说明
PVPhysical Volume物理卷把真实磁盘注册为 LVM 资源
VGVolume Group卷组多块磁盘组成的“容量仓库”
LVLogical Volume逻辑卷从 VG 中划给系统使用的虚拟硬盘
FSFile System文件系统xfs / ext4 等
MPMount Point挂载点/ /var /data 等

二、VMware 平台插新盘(详细版)

所有 Linux 扩容的第一步,都是:平台侧插新盘

1️⃣ 登录vCenter / ESXi 管理端

2️⃣ 找到目标虚拟机

右键 →Edit Settings(编辑设置)

3️⃣ 点击Add New Device(添加新设备) → Hard Disk(硬盘)

4️⃣ 设置磁盘容量(建议 ≥50G 或 100G)

5️⃣ 选择磁盘类型
Provisioning:Thin
Mode:Independent-Persistent

英文项 (Item)中文说明建议配置值说明
Provisioning磁盘分配方式Thin(精简置备)按需占用存储,节省存储池空间
Mode磁盘模式Independent-Persistent(独立-永久)不参与快照,避免快照膨胀风险
Controller控制器SCSI Controller 0保证性能与兼容性最佳
Capacity容量≥50G / 100G便于后续二次扩容复用

6️⃣ 点击OK(确定)完成插盘

(支持热插盘,无需重启)

三、Linux 侧统一扩容流程(任何目录通用)

Step 1:查看哪个目录空间不足

df -h

Step 2:确认该目录属于哪个 LV(逻辑卷)

  • df:disk filesystem,显示文件系统磁盘使用情况

  • -h:human-readable,把容量用K、M、G等人类可读的形式显示

  • -T:显示文件系统类型(ext4、xfs、tmpfs 等)

df -hT /data 示例输出: /dev/vg_data/lv_data xfs /data

Step 3:确认新磁盘设备

lsblk全称是list block devices,意思是“列出块设备”。

lsblk 示例: sdc 100G

Step 4:对新盘分区并标记为 LVM

  • fdisk:fixed disk 的意思,用来查看或修改磁盘分区表

  • /dev/sdc:目标硬盘设备,这里指第三块硬盘

fdisk /dev/sdc 依次输入: n → p → 1 → Enter → Enter → t → 8e → w

n # 创建新分区

p # 主分区(primary)

1 # 分区号为1(此为数字1)

回车 # 起始扇区(默认即可)

回车 # 结束扇区(使用全部可用空间)

t # 修改分区类型

8e # LVM 类型(8e 是 LVM 的类型 ID)

w # 保存并写入分区表

Step 5:初始化为 PV(Physical Volume 物理卷)

  • pvcreate:创建 LVM 物理卷

  • /dev/sdc1:目标分区(注意,是分区,不是整块硬盘)

pvcreate /dev/sdc1

Step 6:加入 VG(Volume Group 卷组)

  • vgextend:扩展卷组

  • vg_data:你要扩展的卷组名称

  • /dev/sdc1:你之前用pvcreate初始化的物理卷

vgextend vg_data /dev/sdc1

Step 7:扩对应的 LV(Logical Volume 逻辑卷)

lvextend [参数] 逻辑卷路径 日常常用:lvextend -L +30G -r /dev/vg_data/lv_data = 自动判断 FS 类型 = 自动 resize = 原子级完成 举例: 1️⃣ 安全标准扩 30G lvextend -L +30G /dev/vg_data/lv_data 2️⃣ 仓库清仓式扩满 lvextend -l +100%FREE /dev/vg_data/lv_data 3️⃣ 扩并自动扩文件系统(xfs/ext4) lvextend -L +30G -r /dev/vg_data/lv_data (-r = resizefs) 4️⃣ 企业级高性能条带卷(多盘并行 IO) lvextend -L +50G -i 2 -I 256 /dev/vg_data/lv_data (2 块盘并行,256K 条带块) 参数字典: | 参数 | 全称 | 中文 | 作用 | | ----- | ------------ | --------- | -----------------------| | -L | Size | 指定容量 | 以 G/M/T 为单位扩 | -l | Extents | 指定 PE 数 | 用 VG 的最小单元扩 | + | Plus | 增量 | 在原容量基础上增加 | %FREE | Percent Free | 百分比 | 使用 VG 剩余百分比 | -r | ResizeFS | 自动扩 FS | 扩 LV 同时扩文件系统 | -i | Stripes | 条带 | 多盘并发 IO | -I | Stripe Size | 条带块大小 | 高性能存储调优用

Step 7.1:最常用的 4 种扩容模式

目标命令说明
精准加 30Glvextend -L +30G /dev/vg/lv最常用、最安全
扩到指定大小lvextend -L 200G /dev/vg/lv直接设定最终容量
用掉全部库存lvextend -l +100%FREE /dev/vg/lv把 VG 空间一次性吃完
按 PE 个数扩lvextend -l +1024 /dev/vg/lv高阶精细调度

Step 8:扩文件系统 FS(File System 文件系统)

注意:如果Step 7:扩对应的 LV(Logical Volume 逻辑卷)不是执行的这lvextend -L +30G -r /dev/vg_data/lv_data 自动扩 FS,那么Step 8扩文件系统 FS是“必须动作”。

LV 是仓库
FS 是货架
仓库变大了但货架不扩 = 空间不可用 = 事故预备役

层级你刚刚做了什么
物理卷 PV已扩大
卷组 VG已变大
逻辑卷 LV已变大
❌ 文件系统 FS还是旧大小
# xfs 文件系统: xfs_growfs /data # ext4 文件系统: # resize2fs /dev/vg_data/lv_data
FS 类型命令
xfsxfs_growfs /data
ext4resize2fs /dev/vg_data/lv_data

所以如果你不做 Step 8:

👉 df -h 看到的容量不变
👉 应用依旧报磁盘满
👉 你扩了个寂寞

Step 9:验收

df -h df -h /data

四、LVM 逻辑卷常用操作手册

LVM 的数据流向: 物理卷 PV (/dev/vdb1, /dev/vdb2) ↓ 卷组 VG (vg01) ↓ 逻辑卷 LV (lv01) ↓ 挂载点 /mnt/data(最终操作系统看到的目录) 把两块物理分区 /dev/vdb1 和 /dev/vdb2 组合成一个卷组 vg01,在卷组里划出逻辑卷 lv01,然后在操作系统里挂载到 /mnt/data,就能直接读写数据。 ############################################################ # LVM + Stratis 操作手册(详细版) # 数据流向示例: # /dev/vdb1 /dev/vdb2 -> VG: vg01 -> LV: lv01 -> 挂载点: /mnt/data # 说明:物理设备 -> 卷组 -> 逻辑卷 -> 挂载目录 -> 系统可读写 ############################################################ ######################## # 0. 磁盘分区(parted) ######################## # 创建 GPT 分区表(新盘首次使用;已有数据慎用,会清空分区表) parted /dev/vdb mklabel gpt # 创建第 1 个分区 first,1MiB ~ 258MiB,打 LVM 标记 parted /dev/vdb mkpart first 1MiB 258MiB parted /dev/vdb set 1 lvm on # 创建第 2 个分区 second,258MiB ~ 514MiB,打 LVM 标记 parted /dev/vdb mkpart second 258MiB 514MiB parted /dev/vdb set 2 lvm on # 查看分区结果,确认是否成功 parted /dev/vdb print # 刷新 udev,让系统识别新分区 udevadm settle ######################## # 1. LVM 创建阶段 ######################## # 1.1 创建物理卷 PV pvcreate /dev/vdb1 /dev/vdb2 # 作用:把分区交给 LVM 管理,成为 PV(物理卷) # 1.2 创建卷组 VG vgcreate vg01 /dev/vdb1 /dev/vdb2 -s 16M # vg01:卷组名称 # -s 16M:PE(物理扩展块)大小,影响 LV 扩展灵活性 # 作用:把多个 PV 组合成存储池 # 1.3 创建逻辑卷 LV lvcreate -n lv01 -L 700M vg01 # 按大小创建 # 或按 PE 个数: lvcreate -n lv01 -l 70 vg01 # 作用:在 VG 中划出逻辑卷,可挂载使用 # 1.4 格式化 LV(示例使用 xfs) mkfs -t xfs /dev/vg01/lv01 # 作用:创建文件系统,让操作系统可以读写 # 1.5 挂载 LV mkdir -p /mnt/data # 创建挂载目录 mount /dev/vg01/lv01 /mnt/data # 挂载 LV # 作用:挂载后操作系统可直接访问 LV 上的数据 # 1.6 配置开机自动挂载 # 按 LV 名称挂载: # /dev/vg01/lv01 /mnt/data xfs defaults 0 0 # 或按 UUID 挂载(更安全): # UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /mnt/data xfs defaults 0 0 # 1.7 查看当前状态 pvdisplay # 查看 PV 属性 vgdisplay # 查看 VG 属性 lvdisplay # 查看 LV 属性 pvs; vgs; lvs # 快速概览 df -h # 查看文件系统使用情况 ######################## # 2. LVM 扩容操作 ######################## # 场景:新增 PV /dev/vdb3,给 lv01 扩容 300M # 2.1 扩展 PV pvcreate /dev/vdb3 # 作用:把新盘交给 LVM 管理 # 2.2 扩展 VG vgextend vg01 /dev/vdb3 # 作用:把新 PV 加入卷组,增加可用空间 # 2.3 扩展 LV lvextend -L +300M /dev/vg01/lv01 # 增加 300M # 或扩到固定大小: lvextend -L 2G /dev/vg01/lv01 # 作用:增加逻辑卷容量 # 2.4 扩展文件系统 xfs_growfs /mnt/data # xfs 文件系统必须挂载后扩展 # ext4 文件系统: resize2fs /dev/vg01/lv01 # swap LV 扩展: mkswap /dev/vg01/lv01 # 作用:扩展 LV 后,必须扩展文件系统才能使用新增空间 ######################## # 3. LVM 缩减 / 删除操作(高危,务必备份) ######################## # 3.1 删除 LV umount /mnt/data # 先卸载 lvremove /dev/vg01/lv01 # 删除逻辑卷 # 3.2 从 VG 移除 PV pvmove /dev/vdb3 # 迁移数据到其他 PV vgreduce vg01 /dev/vdb3 # 从 VG 移除 PV pvremove /dev/vdb3 # 清理 PV # 3.3 删除 VG(确保 VG 内无 LV) vgremove vg01 # 3.4 删除 PV(不再使用的物理卷) pvremove /dev/vdb1 /dev/vdb2 ######################## # 4. Swap LV 示例 ######################## lvcreate -n swap_lv -L 4G vg01 mkswap /dev/vg01/swap_lv swapon /dev/vg01/swap_lv # /etc/fstab 增加: # /dev/vg01/swap_lv swap swap defaults 0 0 ######################## # 5. 日常排查命令 ######################## pvs; vgs; lvs # 快速概览 PV/VG/LV pvdisplay; vgdisplay; lvdisplay # 查看详细属性 lsblk # 查看磁盘和挂载结构 df -h # 查看文件系统使用情况 ######################## # 6. 高级存储 Stratis(详细注释) ######################## yum install stratis-cli stratisd # 安装 Stratis 命令行工具和守护进程 systemctl enable --now stratisd # 启动 Stratis 并设置开机自启,守护进程必须运行 stratis pool create pool1 /dev/vdb # 创建存储池 pool1,使用 /dev/vdb # 作用:池类似 LVM 的卷组 VG stratis pool add-data pool1 /dev/vdc # 向池添加额外设备,增加容量 stratis pool list # 查看系统中所有池及状态 stratis blockdev list pool1 # 查看 pool1 中的物理设备详细信息 stratis filesystem create pool1 filesystem1 # 在池中创建逻辑文件系统 filesystem1(类似 LV) # 文件系统挂载后可直接使用 stratis filesystem snapshot pool1 filesystem1 snapshot1 # 创建快照 snapshot1,可用于备份或回滚 stratis filesystem list # 查看池内所有逻辑文件系统及状态 ######################## # 7. LV 缩减实操示例 ######################## du -sh /data/ # 查看目录占用大小 umount /data # 卸载挂载点 e2fsck -f /dev/servera_group/servera_volume # 文件系统检查 resize2fs /dev/servera_group/servera_volume 100M # 缩小文件系统 lvresize --size 100M /dev/servera_group/servera_volume # 缩减 LV lvdisplay # 查看 LV/VG 信息 mount /dev/servera_group/servera_volume /data/ # 再次挂载,系统可访问数据 ls -l /data/ | wc -l # 检查数据是否完整 # 迁移数据、缩减 VG、删除 PV pvmove /dev/vdb2 # 数据迁移 vgreduce servera_group /dev/vdb2 # 从 VG 移除 PV pvremove /dev/vdb2 # 删除 PV mount /dev/servera_group/servera_volume /data/ # 再次挂载 ls -l /data/ | wc -l # 检查数据完整性

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询