ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Linux磁盘空间不足?LVM在线扩容实战:零停机扩展的5种方法

Linux磁盘空间不足?LVM在线扩容实战:零停机扩展的5种方法 磁盘容量见底、业务还在跑这时候能不能不关机、不重启、不迁移数据直接把空间顶上很多人第一反应是摇头。但在Linux服务器里只要当初装系统时用了LVM就完全可以做到——这就是LVM动态扩容的典型场景在不中断服务的前提下用几行命令把在线文件系统容量加上去。这套方案我在CentOS 7.9环境里反复验证过下文把原理、5种零停机扩展磁盘空间的具体路径以及新手最容易踩的坑统一整理出来跟着步骤操作就能顺利完成。这篇文章适合这么几类人看刚接手服务器运维、每天被“磁盘满”告警追着跑的新人自己攒了台Linux服务器、装系统时稀里糊涂选了LVM分区、现在想搞明白逻辑卷到底怎么用的爱好者以及想系统梳理LVM扩容方案、准备在生产环境做变更的初级工程师。内容偏实操但每个命令我都会把背后的逻辑讲清楚知道为什么这么写比单纯复制粘贴重要得多。1. LVM为什么能实现零停机扩容先把这个抽象层看明白1.1 从直连分区到LVM解决了什么核心问题传统分区方案里磁盘分区直接对应文件系统比如/dev/sda1挂载到//dev/sda2挂载到/home。这种结构最大的痛点是分区的边界是物理写死的/home不够用了除非重新分区、重新格式化、重新恢复数据否则没有任何弹性。换句话说容量和你买的磁盘硬件“硬绑定”了。LVM的全称是Logical Volume Manager逻辑卷管理器。它做的事情是在物理磁盘和文件系统之间加了一个“资源池”抽象层。打个比方传统分区像你去商场租固定摊位租了多大就只能用多大想扩就得换位置LVM像是租了一个共享仓库你的货物存放在仓库里仓库管理员按需给你划拨货架空间哪个区域不够用了就从总库存里挪一块过来货物本身不用搬走。这个抽象层带来的核心能力就是“弹性”文件系统不再直接面对物理磁盘而是面对一个可以被动态调整大小的逻辑卷。扩容的本质只是修改逻辑卷的映射关系把池子里空闲的存储空间划分给某个逻辑卷然后让文件系统感知这个变化并在线扩展。整个过程不涉及搬数据不涉及停服务所以零停机在架构上就是天然的。1.2 几个必须记住的名词PV、VG、LV、PELVM体系里有几个基础概念搞懂它们的层级关系后面所有命令都围绕这些对象操作。PVPhysical Volume物理卷物理磁盘或磁盘分区被LVM初始化后的单位。可以理解为“被纳入仓库管理的货架区域”一块新磁盘要参与LVM第一步就是把它做成PV。VGVolume Group卷组多个PV聚合在一起形成的“资源池”。仓库里所有货架区域的集合。VG是容量分配的总账本它的总大小是所有PV之和。LVLogical Volume逻辑卷从VG中划分出来、实际创建文件系统并挂载使用的单位。相当于仓库管理员根据业务需求划拨的存储空间。PEPhysical Extent物理扩展块VG分配空间的最小单位默认4MiB。你可以理解成仓库里最小的货位格子所有空间分配都以PE整数倍进行。扩容时如果看到-l 100%FREE这种参数-l指的就是以PE为单位分配空间而-L 50G是直接以容量为单位。它们的包含关系是物理磁盘 → PV → VG → LV → 文件系统。理解这个链条之后LVM扩容的所有操作本质都可以归纳成两步第一步在VG层面让容量变大向Pool里加空间第二步在LV层面把VG里的空间映射给目标逻辑卷从Pool里划空间然后扩展文件系统。这两个动作在Linux里都支持在线完成。1.3 零停机的完整链路到底哪些环节可以在线能实现零停机的关键原因是现代文件系统普遍支持“在线增长”能力。Linux常见的XFS和ext4都允许在挂载状态下扩大文件系统只是缩容限制不同。完整链路是这样的你敲下lvextend命令LVM通过修改内核设备映射表让逻辑卷设备/dev/mapper/vg-lv的块设备尺寸变大这个动作毫秒级完成业务无感知。紧接着文件系统识别到底层块设备变大了调用xfs_growfs或resize2fs将文件系统的逻辑空间扩展到块设备的新尺寸。这两个步骤完全在线数据不用迁移服务不用重启。所以“LVM动态扩容”的本质是“LVM扩展LV 文件系统在线扩展”的组合拳缺一不可。2. 动手前必读文件系统边界和准备工作决定成败2.1 XFS与ext4扩容天花板完全不同这是整个LVM扩容里最值得先讲清楚的部分。很多人栽跟头不是因为命令敲错而是没搞懂文件系统本身的边界。CentOS 7系列默认文件系统是XFS。XFS有一个非常重要的特性支持在线扩大但不支持在线缩容官方也没有提供任何缩容工具。这意味着如果一个XFS逻辑卷已经占了VG里全部空间你想给它扩容唯一的办法是给VG增加新的物理存储新磁盘或原盘扩容而不能打其他LV的主意来“匀空间”。热搜词里“lvm扩容home”很多人的真实诉求是“/ 盘满了想把home的空间匀给 /”如果/和/home都是XFS这个做法在保持数据不变的前提下是行不通的只能走备份重建或新增磁盘的路线。这一点必须先有心理预期。ext4则宽松得多它可以在线扩大也支持离线缩容卸载文件系统后操作。所以如果目标LV是ext4同VG内“腾挪空间”的方案是可行的。看清楚自己的文件系统类型再决定采用哪种扩容方法是动手前第一件要做的事。判断方法很简单df -hT输出里TYPE列的xfs或ext4一眼就能看出来。2.2 开工前的三分钟盘点用哪几条命令摸清家底任何扩容操作开始前先花三分钟确认现状我看过太多人上来就lvextend结果发现VG里根本没有多余空间或者认错了逻辑卷路径。这几个命令是常规体检项lsblk pvs vgs lvs df -hTlsblk看磁盘和分区结构确认物理磁盘整体布局比如/dev/sda下有哪些分区、哪些分区被LVM使用。pvs输出当前的物理卷设备路径、所属VG、PV大小、空闲PE数量。空闲PE是扩容的物质基础。vgs输出VG名称、总大小、已分配大小、空闲大小。这里能直接看到VG还剩多少余量。lvs输出LV路径、所属VG、LV大小、当前状态。注意LV路径有两种写法一种是/dev/vgname/lvname一种是/dev/mapper/vgname-lvname效果等价。df -hT确认文件系统类型、挂载点、当前使用率。操作前把这几条命令的输出截图或记录下来变更完成后做对比能一眼看出改了什么排查问题快得多。别嫌这一步多余生产环境里“改了哪里”是最难回答的问题。2.3 备份与回滚方案快照不是万能药谈到扩容很多人觉得“不就加个空间吗怎么会出事”。扩容的动作本身风险不大但任何对生产存储的变更都有意外可能比如误操作缩容顺序颠倒、重启后文件系统异常、设备映射表出问题。稳妥的操作习惯是变更新建LV快照。LVM原生支持快照基于写时复制技术创建时几乎瞬间完成不阻塞业务lvcreate -L 10G -s -n lvname-snap /dev/vgname/lvname需要注意几点快照的大小取决于你在快照保留期间业务写入的数据量不是LV本身的体积。10G的LV如果业务每小时写入20G快照给10G很快就满了快照满后会自动失效整个快照作废快照能帮你回滚到创建时的状态但它不是备份物理磁盘坏了快照一样没命。关键业务建议数据层面另有备份快照只作为变更保护的手段。确认业务稳定后回收快照lvremove /dev/vgname/lvname-snap3. 五种零停机扩展磁盘空间的实战方法3.1 方法一VG还有余量直接在线扩容目标LV这是最理想也最省事的情况典型场景是装系统时给VG留了余量或者之前新盘加进VG后还没分配完。整个操作两条命令在线完成。假设VG叫vg_data目标LV是lv_web挂载在/data文件系统是XFSVG里还有50G空闲lvextend -L 50G /dev/vg_data/lv_web xfs_growfs /data如果是ext4文件系统第二步换成resize2fs /dev/vg_data/lv_web整个过程不需要卸载、不需要重启。lvextend扩展LV的映射关系随后xfs_growfs让挂在/data的文件系统立即感知到底层块设备变大在线扩展。执行完成后df -hT /data就能看到容量变化。有几个细节要特别说明。一是增长方式的写法-L 50G表示在原基础上增加50G-L 50G表示调整到50G二者天差地别少写一个加号可能直接把LV缩到50G切记二是想把VG所有剩余空间一次性划给LV用-l 100%FREE这种写法在“VG闲散空间不多、想一次给足”的场景里非常省事三是XFS扩展用xfs_growfs 挂载点参数是挂载点不是设备路径而ext4扩展用resize2fs 设备路径参数是设备文件两种习惯别搞混。我见过新手对XFS执行resize2fs /dev/vg_data/lv_web直接报错。3.2 方法二新增物理磁盘加入VG池子变大后再扩容VG余量用完、但服务器物理机上还有空闲磁盘槽位或者云环境可以新挂载数据盘这时候走“新增PV扩容VG”的路线。以新增一块/dev/sdb为例完整流程# 1. 新磁盘分区也可以整块盘做PV生产环境建议分区便于后续维护 parted /dev/sdb mklabel gpt parted /dev/sdb mkpart lvm 1MiB 100% parted /dev/sdb set 1 lvm on # 2. 创建PV pvcreate /dev/sdb1 # 3. 加入现有VG vgextend vg_data /dev/sdb1 # 4. 查看VG可用空间 vgs # 5. 扩展目标LV lvextend -L 100G /dev/vg_data/lv_web # 6. 在线扩展文件系统 xfs_growfs /data为什么生产建议分区而不是整盘直接pvcreate整盘PV在pvresize这类后续操作上虽然更省事但如果有部分厂商的管理工具、备份软件对分区结构有识别要求整盘PV的兼容性会打折扣。分区后再做PV结构清楚出问题排查也直观。vgextend执行时注意输出信息它会显示VG的新大小。之后用vgs看到VFree列变大了说明PV已经成功“入库”。这一步如果报UUID冲突通常是磁盘之前被初始化过PV用pvcreate -ff强制覆盖前要确认磁盘确实不需要保留原数据。云环境要注意挂载新盘后系统里显示的名字不一定是/dev/sdb云平台可能按枚举顺序分配最好用lsblk按容量对比确认是哪块盘再用lsscsi或/by-id路径做精确识别。认错盘导致的后果是小则扩错空间大则覆盖数据。3.3 方法三原盘后端扩容后刷新PV虚拟机磁盘热添加场景这是虚拟化环境最常用的扩容路径VMware的虚拟磁盘、KVM的qcow2镜像、各类云主机控制台调整磁盘容量都不需要关机在平台侧把磁盘从100G改成200G之后进入系统执行刷新和扩容。整个过程的特色是“不新增设备、只放大原设备”。以/dev/sda上的/dev/sda2是PV分区为例操作流程# 1. 让系统重新识别磁盘容量 # 不同虚拟化平台方式不一常用两个 echo 1 /sys/class/scsi_device/0:0:0:0/device/rescan # 或者 echo - - - /sys/class/scsi_host/host0/scan # 2. 确认系统已识别到新容量 lsblk # 3. 刷新PV大小pvresize会自动检索分区的最新容量 pvresize /dev/sda2 # 4. 确认VG可用空间 vgs # 5. 扩容目标LV lvextend -l 100%FREE /dev/vg_data/lv_web # 6. 在线扩展文件系统 xfs_growfs /datapvresize的原理是重新读取块设备的分区信息和物理卷元数据同步PV的新尺寸。整块盘做PV的场景pvresize /dev/sda之后PV自动占据整个磁盘新容量。分区场景下磁盘容量变大了但分区本身没变pvresize经常会发现分区大小没变捣鼓半天VG一点变化都没有。解决办法是用parted或growpart先把分区放大再执行pvresize。注意扩分区这个动作非常容易踩坑parted resizepart命令对GPT分区表支持尚可但操作前务必确认分区起始位置没有变否则分区表损坏风险很高。如果是云主机很多云平台支持直接在控制台扩分区建议优先在控制台完成如果是VMware有些场景要额外做SCSI控制器级别的“热添加”开启才能在线识别新容量。执行parted /dev/sda resizepart 2 100%前用parted /dev/sda unit s print记下分区的起始扇区号万一出问题还有的救。3.4 方法四同VG内空间重分配把别的LV空间匀给目标LV这是不少人的真实诉求总容量没有变化但某个LV占用太高另一个LV不够用想“拆东墙补西墙”。比如热搜词里的“lvm扩容home”本质是想把/或/home其中一个的空间匀给另一个。先说结论这个方法能否零停机取决于源文件系统类型源文件系统是ext4可以先离线缩容源LV卸载、缩文件系统、缩LV再扩目标LV。这个操作需要卸载源文件系统也就是需要停机窗口不是真正的零停机。源文件系统是XFS不能缩容无法通过简单命令腾空间必须走“备份数据 → 删除或重建源LV → 恢复数据”的路线或者干脆新增磁盘。想实现近似零停机可以用新LV rsync数据迁移 挂载点切换的方式。以ext4的/home缩容给/data为例过程如下# 1. 检查/修复文件系统缩容前必须做 e2fsck -f /dev/vg_data/home # 2. 卸载 /home umount /home # 3. 先把文件系统缩到目标大小这里假设从100G缩到60G resize2fs /dev/vg_data/home 60G # 4. 再缩LV lvreduce -L 60G /dev/vg_data/home # 5. 挂载回 /home mount /home # 6. VG里腾出了40G扩展目标LV lvextend -L 40G /dev/vg_data/lv_web # 7. ext4文件系统在线扩展 resize2fs /dev/vg_data/lv_web这个流程里最容易犯的致命错误是顺序颠倒。必须先缩文件系统再缩LV如果你先lvreduce把LV缩了文件系统还认为有100G空间元数据直接损坏。另外要注意缩文件系统前e2fsck -f强制检查文件系统有异常时强行缩容是数据灾难。如果是XFS且完全不能停机我常用的方案是“新增LV rsync在线迁移”。具体流程在VG余量或新盘里新建一个临时LV格式化并临时挂载用rsync -avxP --numeric-ids /data/ /mnt/tmpdata/在线同步业务低峰期短暂停服务执行最后一次增量同步随后卸载两个挂载点并把临时LV重新挂载到/data更新/etc/fstab。整个过程只停几分钟比备份重建快得多数据安全性也高得多。这个方法本质是换挂载点不需要对源LV动刀对XFS尤其友好。3.5 方法五使用Thin Pool瘦供给从架构上实现按需自动增长前面几种方法都是“被动扩容”——空间不够了才去扩。但如果你在搭建存储环境时就有余力LVM还提供了一种主动的架构级方案Thin Provisioning瘦供给。瘦供给的逻辑是创建一个大容量的Thin Pool资源池池里的空间不预先分配给各个LV而是业务实际写入时才从池里消耗磁盘空间。从业务视角看每个LV可以声明的容量远大于池子实际可用容量好比银行给你批了100万信用卡额度但你的存款其实只有30万只有真刷了才占用资金。创建和使用流程# 1. 在VG中创建Thin Pool lvcreate -L 200G -T vg_data/thin_pool # 2. 基于Thin Pool创建第一个瘦供给LV声明100G lvcreate -V 100G -T vg_data/thin_pool -n lv_thin1 # 3. 格式化并挂载 mkfs.xfs /dev/vg_data/lv_thin1 mount /dev/vg_data/lv_thin1 /data # 4. 后续还可以继续创建任意数量的LV lvcreate -V 50G -T vg_data/thin_pool -n lv_thin2 # 5. 不用了可以删除空间自动释放 lvremove /dev/vg_data/lv_thin2瘦供给的一个核心优势是系统会为LV维持一个“声明容量”文件系统在这个声明容量内增长。当需要扩展时仍然是走lvextend -L 20G /dev/vg_data/lv_thin1xfs_growfs /data但由于池子本身事先规划了较大的容量扩容时不需要新增磁盘池内还有空间就可以灵活调配。瘦供给最大的坑是池子耗尽问题。业务方看到的LV容量大以为还有空间实际上底层池已经快满了这时候所有瘦供给LV都会出问题。因此必须监控池子使用率lvs -olvb_size,data_percent,metadata_percentdata_percent接近80%就要规划扩容池子否则一旦池满了瘦供给LV的文件系统会报设备无空间非常被动。另外瘦供给对延迟有一定影响数据库这类对IO延迟敏感的业务要谨慎使用普通文件服务、备份存储这种场景非常合适。4. 热搜场景实战CentOS 7.9从安装LVM到给/home扩容4.1 为什么“lvm扩容home”是高频需求热搜词里出现“lvm扩容home”和“centos7.9 安装 lvm 分区详情说明文档”说明大量用户卡在同一个场景装CentOS 7.9时用了默认LVM分区方案系统自动把大部分空间分给了/home根分区/空间往往给得少。用了一段时间容器镜像、Docker数据、日志都在/里越堆越大根分区告急而/home明明很空。这时候第一反应就是“能不能把home的空间匀给根分区”。要解决这个场景得先回到操作系统安装阶段理解默认LVM分区是怎么规划的。CentOS 7.9安装时选择自动分区并使用LVMAnaconda安装器生成的布局大致是/boot独立物理分区1G剩下的空间创建一个VG默认叫centosVG里再划分root和home两个LV/home往往会分到剩余容量的大部分这让/和/home的空间比例失衡。这是历史默认策略也是现在大量扩容需求的根源。所以在安装时值得花点功夫自定义LVM分区给/预计足够的容量/home给个合理数值剩余空间先不分配留在VG里作为余量。这套策略能避免大部分后续扩容焦虑。Anaconda图形界面里选择“自动配置分区”后点“完成”在“分区方案”下拉框选“LVM”可以手工调节LV大小操作不难关键是别偷懒用默认值。4.2 实操全记录给/home扩容到预期容量场景设定CentOS 7.9VG名称centos当前VG里还有未分配空间/home的LV是/dev/mapper/centos-home挂载在/home文件系统默认XFS。目标把/home扩展20G。第一步确认现状lsblk vgs lvs df -hT假设vgs输出显示centos这个VG还有40G可用那直接扩。第二步扩展逻辑卷lvextend -L 20G /dev/mapper/centos-home如果想把VG剩余全部给/home可以写成lvextend -l 100%FREE /dev/mapper/centos-homelvextend执行成功后输出会显示新的LV大小但此刻/home文件系统还没变化必须走第三步。第三步扩展XFS文件系统xfs_growfs /home执行后再次df -hT /home容量就变了。这三个命令是LVM扩容最基础、最常用的套路值得形成肌肉记忆lvextend扩LVxfs_growfs或resize2fs扩文件系统。两者匹配使用缺一个都会出现“LV大了但df看不到”的困惑。4.3 如果VG没有余量home扩容该怎么走刚装完CentOS 7.9的用户VG里很可能没有余量——所有空间都分给了root和home。这时候给home扩容就没那么“优雅”了可选路径有三条第一条如果能停机且有备份走XFS重做方案备份/home数据 → 删除home这个LV → 用lvcreate重建一个更大容量的home → 格式化 → 恢复数据。这个方案需要系统维护窗口数据量很大时会很耗时但思路清晰。第二条新增磁盘或原盘扩容把新空间加入VG再扩展home这个流程就是第3.2和第3.3节的内容不需要动现有数据结构是推荐方案。第三条如果根分区的XFS空间有富余、但你想把它匀给home很遗憾XFS不能缩容这条路走不通。实际操作中很多人在这里浪费了大量时间找“XFS缩容工具”结论是没有。要么接受“不能匀”的现实要么走备份重建路线。我在实际工作中遇到“root和home空间倒挂”的机器如果数据量不大更倾向于直接重建把home的数据备份后缩小home的LVXFS不行但可以彻底重建把腾出的空间分给root。这个过程虽然要停机但一次性把空间结构调好比反复打补丁舒服。当然这是个人偏好生产环境以稳妥为先。4.4 安装阶段避免扩容操作LVM分区规划的个人建议针对热搜词里“centos7.9 安装 lvm 分区详情说明文档”多说一句安装时的LVM规划建议。我自己装CentOS 7.9的习惯是/boot给1GVG建好后/给50G到80G除非你特别清楚业务不占根分区/home按需给但更重要的是VG里刻意留出10%到20%不分配。很多人不理解为什么装完就留空余量。这就像买房子卧室、客厅规划得再合理也一定要留出一个储物间平时堆杂物真需要改造时它就是资金池。VG里的未分配空间就是LVM的“储物间”哪天/告急、急需扩容这波余量能让你在线解决完全不用停机不用动数据。安装时多留一点余量比事后费劲扩容划算太多。5. 实战排错常见报错与避坑指南5.1 高频问题速查表下面这些是我在实际操作和带新人的过程中遇到最多的问题整理成一张速查表建议收藏。现象可能原因解决思路lvextend后df容量没变化只扩了LV没扩文件系统执行xfs_growfs /挂载点或resize2fs /dev/vg/lvxfs_growfs报no candidates found挂载点路径写错或该路径不在XFS文件系统上确认df -hT里的挂载点使用正确路径resize2fs报Bad magic number文件系统不是ext4是XFS改用xfs_growfs挂载点vgs没显示新磁盘的容量PV没创建或没加入VG检查pvcreate、vgextend是否执行成功pvresize后VG容量没变化分区未跟随扩大lsblk确认分区大小必要时用growpart或parted扩分区缩容后数据损坏缩容顺序错误或文件系统未检查缩容必须“先缩文件系统再缩LV”此前必须e2fsck快照失效快照空间被写满删除失效快照重新创建合适大小的快照新增盘做PV时报UUID冲突磁盘之前被初始化过确认数据无需保留后pvcreate -ff覆盖这些报错信息里出现频率最高的是第一种“LV明明大了df不变”它根本不是错误而是流程没走完。LVM的执行顺序是先改逻辑卷映射再改文件系统映射漏掉第二步业务侧当然看不到空间变化。所以排错的第一反应应该是检查自己是不是忘了执行文件系统扩容命令。5.2 高危操作清单这些动作千万别做整理LVM扩容的避坑经验有些操作一旦做错数据找不回来的概率极高。下面这几条是我给自己定的原则也建议你当成铁律。不要在缩容时颠倒顺序。缩容必须严格按“缩文件系统 → 缩LV”执行顺序反了等于直接破坏文件系统元数据。我在测试环境犯过一次教训是如果不确定文件系统当前到底占用了多少空间先df看已用容量缩容目标值必须大于已用容量并留足余量绝对不能卡着已用容量缩。不要对XFS执行任何缩容操作。XFS官方不支持缩容网上偶尔能看到第三方工具生产环境千万别碰。XFS的空间回收只有“重建”这一条路除此之外任何逆向操作都是在玩火。不要用整块盘做PV后忘记分区的作用。整盘PV在物理机后续维护时会导致一个尴尬问题如果你想单独替换坏道区域或者调整分区就没有分区表可以依赖了。我日常更倾向分区后做PV。不要依赖快照替代备份。快照基于写时复制它保护的是“变更回滚”场景保护不了磁盘物理故障、误删文件这类问题。真正的备份是另一套独立体系两者不冲突但不能互相替代。无脑执行echo - - - /sys/class/scsi_host/host0/scan前要确认主机号。多HBA卡的服务器有多个host扫描错了等于没扫。用ls /sys/class/scsi_host/看有几个host不确定就全部扫一遍无非多点输出。不要在生产环境验证新命令。如果你对某个命令的行为不确定先在测试机上跑一遍或者至少用-n参数做dry-run。有些LVM命令有-n试运行模式比如lvreduce -n能避免误操作生产施工前值得多用。5.3 一条更稳的实操习惯全程记录和验证最后分享几个我实际工作中的操作习惯不一定写进文档但很管用。第一开工前把pvs、vgs、lvs、df -hT的输出存到本地文件变更后再次保存用diff对比。不要靠肉眼记忆“之前50G现在70G”线条太多容易看漏。第二任何涉及生产机的LVM变更尽量在脚本或命令前加-v详细输出参数比如lvextend -v。详细输出能帮你看到每个内部步骤的执行情况出问题定位快很多。第三变更完别急着收工刷两三遍df -hT确认容量稳定再观察一段时间业务日志确认没有IO报错。扩文件系统本身不影响数据但多观察一次总是更放心。第四云环境或虚拟化平台在线扩容磁盘后常有“系统识别延迟”现象lsblk看不到新容量时不要反复重启先尝试重新扫描SCSI设备或等待几十秒再查一次。重启在某些虚拟化平台上可能也不会自动识别新容量折腾半天不如先确认扫描步骤做对没有。最后再聊几句操作心得LVM扩容这件事命令本身不复杂难点在于把“物理磁盘 → PV → VG → LV → 文件系统”这条链路在脑子里建立起来。想明白每一层的关系再遇到任何扩容需求你看到的是一个清晰的流程先让VG变大再让LV变大最后让文件系统变大。反过来想任何一个环节没跟上现象都会是“容量没变”。我最初接触LVM时也犯过低级错误——给LV扩容后忘了扩文件系统看着lvs显示80Gdf却纹丝不动愣了很久才反应过来。后来养成了习惯每次lvextend后面紧跟xfs_growfs或resize2fs像条件反射一样。这个习惯一直用到现在。如果你刚上手建议先在自己的测试机上把第3章的五种方法挨个跑一遍尤其要试试“新增PV”和“原盘扩容”两条路它们覆盖了日常90%以上的扩容需求。等真正理解了操作背后的逻辑生产环境再遇到磁盘告急你就不会紧张反而会很自然地想先看VG有没有余量没有就想办法给VG加空间然后扩LV再扩文件系统。搞定。
返回列表