首页 / 资讯中心 / 文章详情

Linux磁盘管理进阶:LVM逻辑卷从原理到实战

Linux磁盘管理进阶:LVM逻辑卷从原理到实战 ★ FEATURED ARTICLE
搞Linux运维这些年最被人低估、但又最能让系统盘活起来的技术我第一个投给LVMLogic Volume Manager逻辑卷管理。很多人只把磁盘管理理解成fdisk分区、mkfs格式化、mount挂载三板斧结果等到根分区满了、数据盘需要调大、做不了快照回滚的时候才意识到当初没用LVM摊上多大的事。这篇博文不聊虚的把磁盘管理这条线和LVM的底层逻辑、实操步骤、扩容缩容、踩坑复盘一次说透适配从刚入门的小白到需要独立处理生产环境的运维工程师看完可以直接照着手动。1. 磁盘管理的底层逻辑先看懂分区、文件系统和LVM的关系1.1 磁盘类型与分区表MBR和GPT的水位线在聊LVM之前先把磁盘管理的基础盘一遍。Linux里一切皆文件磁盘也不例外设备节点一般叫/dev/sda、/dev/sdb、/dev/nvme0n1这类名字。新手最常犯的错是把磁盘、分区、文件系统、目录挂载四个概念混在一起。磁盘是物理介质分区是磁盘上划分的连续空间段文件系统是格式化后用来组织文件的逻辑结构而目录挂载则是把文件系统接入根目录树的那个动作。MBR和GPT是你绕不开的第一个岔路口。MBRMaster Boot Record出现得早用32位记录分区信息最大只能管理2TB左右磁盘而且最多4个主分区再想要更多分区就得靠扩展分区和逻辑分区这套历史遗留设计。GPTGUID Partition Table取代MBR是大势所趋单盘容量上限远超普通用户想象理论上有128个分区而且自带冗余备份。实际操作中凡是超过2TB的盘优先上GPT即便磁盘小于2TB如果这台机器要用于生产环境、后面可能扩容成大容量盘也建议直接用GPT。用一个很直白的例子来说MBR像早年那种格子固定的收纳盒一格塞满了就没办法GPT像是可以持续扩展的模块化库房分区数量、容量弹性都大得多。1.2 裸分区管理的三座大山容量瓶颈、空间碎片、扩缩容困难为什么传统裸分区搞起来别扭因为我刚入行的时候亲身经历这种酸爽你建了一个500GB的/data分区当时觉得绰绰有余结果应用日志疯长半年后空间快顶穿。这时候你想扩容麻烦来了——你用fdisk删掉原分区重建一个大分区数据怎么保住你用parted硬调在线搞风险极高而且文件系统在分区中间移动数据非常慢。你能做的通常是加一块新盘挂载成/data2把部分数据迁过去然后改应用路径。这种方案不仅增加运维复杂度还造成数据冗余和空间分配不平衡。更头疼的还有空间碎片。当你在裸分区上切出多个目录每个目录对应固定空间有的用了20%有的用了90%但它们的“池子”是分开的彼此之间根本无法互相借用。整个系统从宏观看起来好像还有很多剩余空间可那个告急的分区就是干巴巴地等死。LVM要解决的核心痛点就是这三重困境容量上限能不能动态调整空间能不能统一池化调度扩缩容能不能尽量在线完成2. LVM原理拆解PV、VG、LV三层逻辑模型2.1 LVM的三层模型到底在干什么LVM把磁盘管理抽象成三层物理卷Physical VolumePV、卷组Volume GroupVG和逻辑卷Logical VolumeLV。你要做的不是在裸设备上直接格式化而是先把物理磁盘或分区打成PV再把多个PV汇聚成一个VG池子最后在这个池子里划分出LV。对操作系统来说/dev/mapper/vg_data-lv_app这种设备就是一块可以格式化、挂载的“虚拟磁盘”。但这个虚拟磁盘的底层空间来自VG池而不是固定绑定在某一块物理盘上。我用一个更生活化的比喻解释这件事。假如你的机器是厨房物理盘就是不同尺寸的收纳罐PV是把罐子规整成统一型号的容器VG是全部的储物柜空间LV是你实际摆出来放食材的保鲜盒。传统方式下你拿一个罐子装菜罐子小了只能换LVM下你可以从旁边没装满的罐子里匀点空间过来哪怕那个罐子一开始不是配给你这个保鲜盒的。这就是逻辑和物理分离带来的弹性优势。2.2 PE、LE与元数据写好配置才能算入门LVM内部还有一个关键概念叫物理扩展块Physical ExtentPE它是VG划分空间的最小单位默认4MiB。你在创建VG的时候可以用vgcreate -s 16M vg_data /dev/sdb1这种方式调整PE大小PE设置会直接决定LV的寻址粒度也决定最大容量上限。通常默认4MiB够用除非有特殊性能诉求才去调。逻辑卷占用的是逻辑扩展块Logical ExtentLELE和PE是一一对应的映射关系LVM就是维护这张映射表来实现灵活的再分配。LVM的元数据也和裸分区完全不同。裸分区分区表坏了基本等于灾难LVM把PV、VG、LV的元数据存放在每个PV开头的卷组描述符区域里而且默认还会在不同PV上冗余备份。这意味着单个PV损坏时在多数场景下你可以通过现有VG信息找回逻辑卷状态恢复路径比裸分区宽得多。Linux里和LVM相关的服务叫lvm2如果你的发行版是最小化安装务必先检查有没有这个包。2.3 LVM的核心优势与不可忽略的缺点LVM的优势可以列出一长串在线扩容能力。LV可以随时扩容文件系统层面只要配合对应的扩容命令业务几乎无感知。池化存储。多个小盘合并成一个大VG再按需裁成多个LV避免空间闲置。快照功能。LVM快照可以在秒级创建逻辑卷的“在当时的时间点拷贝”配合数据库测试、升级备份相当好用。卷组迁移。跨磁盘做数据迁移时只要把新PV加入VG、再pvmove不用停机。多盘条带化。你可以让一个LV的连续数据分布在多块物理盘上提升吞吐性能。缺点同样要说清楚因为面试和实际选型都得有数。首先是性能损耗LVM在IO路径上多了一层映射极端高并发下会有微小延迟开销虽然多数场景可以忽略但数据库这类延迟敏感型业务需要实测评估。其次是管理复杂度提升命令比单纯fdisk多不少误操作风险更高。再者LVM本身不是数据安全方案它强调弹性不提供数据冗余——如果你PV所在磁盘真的坏了而VG里又没做mirror数据照样丢这点经常被误解。3. 从零搭建LVM的完整实操建盘、建卷、格式化、挂载3.1 环境准备让新磁盘加入战场前先检查状态实操之前先做硬件和系统层面的确认。假设你在虚拟机或者物理机上加了一块新盘物理接入后Linux不一定立刻识别到。SATA盘可能需要重启或者触发SCSI设备重新扫描虚拟机场景下通常能热识别。我给你的建议是先用lsblk看一眼有没有出现新设备看不到就去fdisk -l查再不行就得看dmesg日志确认内核有没有认出这块盘比如dmesg | grep sd。这里补充一下热插拔扫描命令很多云主机或物理机场景下有用对scsi设备echo - - - /sys/class/scsi_host/host0/scan每一条- - -分别代表通道、目标、LUN这是让驱动重新探测总线的经典指令。对NVMe设备多数环境会自动识别部分老内核需要nvme rescan /dev/nvme0。最稳妥的兜底重启系统但它只适用于能接受停机窗口的场景。我强烈建议在生产环境动磁盘之前先执行lsblk -f记录现有分区和文件系统uuid。真要出问题这些信息能帮你恢复挂载表和业务配置。3.2 实战流程从/dev/sdb到逻辑卷挂载下面是完整的一套操作演练默认新磁盘为/dev/sdb整块盘直接加入LVM不在单块盘上分区。为什么整块盘可以直接做PV因为LVM会用自己的元数据结构管理整块盘不再需要传统分区表但注意某些场景下需要兼容传统分区表引导比如做系统盘LVM那就要先分区标记LVM分区类型代码为8e再对分区做PV。为了和多数数据盘场景一致这里演示整块盘直接上PV。第一步创建物理卷pvs pvcreate /dev/sdb pvs输出里会出现PV Size如果看到/dev/sdb状态为lvm2说明PV已经建好。pvs是对PV的快速查看命令相比pvdisplay更精炼日常巡检我优先用pvs。第二步创建卷组vgcreate vg_data /dev/sdb vgs我在生产环境习惯给VG起名vg_data、vg_system这种语义清晰的名称别用默认的“vg0”“vg1”不然维护久了根本记不住哪个是哪个。创建完用vgs看VG Size和Free PE数量这些数字后面扩容时都要用。第三步创建逻辑卷lvcreate -L 100G -n lv_app vg_data-L参数是指定固定大小100G也可以直接用-l 100%FREE把VG剩余空间全部给这个LV。当你想一次给多个LV分配空间时建议按“预留余量”的方式创建例如-L 80G留一部分空间在VG里后续发现不够再扩而不是一次性榨干。第四步格式化并设置文件系统mkfs.xfs /dev/vg_data/lv_appext4和xfs是当前Linux云服务器、物理机上最主流的两个文件系统。CentOS/RHEL 7及以上默认xfsUbuntu默认ext4。如果业务数据类型是海量小文件且对兼容性要求极高ext4非常稳如果是大文件高吞吐、要配合LVM在在线扩容上省事xfs的xfs_growfs要比ext4的resize2fs少一层顾虑虽然两者都能在线扩容。第五步挂载与开机持久化mkdir -p /data mount /dev/vg_data/lv_app /data要让重启后自动挂载必须把挂载信息写进/etc/fstab。我推荐用UUID方式而不是设备节点路径因为LVM设备节点在部分场景下重建顺序变化可能导致/dev/vg_data/lv_app不可用。blkid /dev/vg_data/lv_app echo UUID$(blkid -s UUID -o value /dev/vg_data/lv_app) /data xfs defaults 0 0 /etc/fstab mount -a每次改完fstab养成习惯执行mount -a验证一次接着用df -hT看挂载结果。如果有人告诉你把fstab配置完不用检查千万别听。3.3 让LVM卷在系统启动早期可用关于initramfs的注意点这里有一个坑很多人在做系统盘LVM的时候踩过如果把LVM卷作为根分区或重要挂载点比如/usr或/var开机时initramfs必须先识别LVM设备才能进入系统。RHEL/CentOS系列默认会在mkinitrd时把lvm模块加进initramfs但某些精简系统装完lvm2后忘了重新生成initramfs导致重启后系统直接掉到dracut紧急模式。处理方式很简单dracut --force或者基于更新配置重建initramfs具体发行版命令有差异但本质都是让boot阶段具备LVM识别能力。对云服务器和物理机来说如果你只把LVM卷用于数据目录不走initramfs这关也行但如果LV上放了系统根目录这个坑必须提前避开。4. 扩容与缩容实战操作之前必须把红线画清楚4.1 扩容逻辑卷从VG预留空间开始最为常见的扩容场景是VG还有空闲空间直接给某个LV增加空间。假设vg_data还有50G空闲lv_app想要从100G扩到120G命令分两步走lvextend -L 20G /dev/vg_data/lv_app第二步根据文件系统类型决定ext4resize2fs /dev/vg_data/lv_appxfsxfs_growfs /data为什么要区分ext4的resize2fs是在块设备层面调整文件系统大小而xfs不支持缩减且扩容要用挂载点参数因为xfs_growfs的挂载点能直接活动感知到当前文件系统。注意resize2fs可以在逻辑卷还是ext4格式时直接写在设备参数xfs_growfs则必须给你正在挂载的目录路径。这里补充一个细节如果你忘记第二步直接以为扩容生效lvextend后逻辑卷大小变了但文件系统还是原来的容量df -h里的用量不会变。挂载点容量检测是以文件系统为准不是以设备大小为准。很多人扩容半天发现没变大十有八九是丢了这一步。4.2 常见扩容场景A新加数据盘并入已有VG最经典的需求/data分区在vg_data下面空间告急机房或云平台新加一块200G数据盘。操作顺序是识别新盘比如/dev/sdcpvcreate /dev/sdcvgextend vg_data /dev/sdclvextend -L 150G /dev/vg_data/lv_app按文件系统类型执行resize2fs或xfs_growfs。这套流程跑完之后/data从逻辑上在VG里拿走了150G但底层物理盘实际上是从新加的sdc上分配的。整个过程不需要卸载挂载点不需要重启服务在线扩容基本无感。这里也是有经验值的运维和只会fdisk的小白差距拉开的地方。4.3 常见扩容场景B根分区满了怎么安全扩大根分区扩容是热搜词里出现频率最高的问题很多人一搜全是“不敢下手”。真要动根分区LVM核心风险在于根分区文件系统正处于活动状态操作失败系统直接不可用。安全思路是按这个顺序来先确认有没有VG空闲空间没有就加新盘并入VG然后扩容LV最后扩容文件系统。比如根逻辑卷是/dev/vg_system/lv_root你加了一块盘pvcreate /dev/sdb vgextend vg_system /dev/sdb lvextend -L 50G /dev/vg_system/lv_root xfs_growfs /如果是ext4那么用resize2fs /dev/vg_system/lv_root。注意生产环境动根分区的保险做法是先在备份或云主机快照基础上演练一遍不要拿线上开刀。云服务器平台一般有控制台快照可用这是你最强的后悔药。4.4 缩容能不做就不做非做不可必须卸载LVM支持缩容但你打开文档会看到一堆警告。原因在于缩容涉及移动数据、收缩文件系统在线状态下风险非常高。无论ext4还是xfs我的建议是先把服务停掉、把挂载点卸载然后在干净状态下操作。xfs文件系统有个硬性规则不支持在线缩容甚至在卸载状态下都无法通过常规命令收缩你必须先备份、重新格式化分区、再导入数据所以在生产环境里几乎见不到xfs缩容的实际操作。ext4可以缩但也要严格按顺序来确认LV设备上文件系统是ext4。卸载挂载点umount /data。先缩文件系统e2fsck -f /dev/vg_data/lv_app确保文件系统干净然后resize2fs /dev/vg_data/lv_app 80G。再缩LVlvreduce -L 80G /dev/vg_data/lv_app。最后重新挂载校验数据完整性。顺序绝对不能反先lvreduce再resize2fs文件系统会坏得干干净净。e2fsck -f是用来强制检查并修复基本的文件系统错误别把它当成可选项缩容前的检查经常能提前暴露隐患。4.5 快照用几秒钟给自己一份后悔药LVM快照是线上操作前最值得利用的能力。快照不是备份它记录的是“变更前的原始块引用副本”底层用写时复制技术实现快照刚创建时几乎不占空间随着源卷数据变化快照会逐渐存储差异块。它的最大价值在于低开销和时间点一致性。比如对lv_app创建一个快照lvcreate -s -L 10G -n lv_app_snap vg_data/lv_app注意快照卷必须预留足够的空间如果业务数据变化量超过了快照容量这个快照就会失效不能被当作可靠的恢复来源。恢复操作是把快照合并回源卷lvconvert --merge vg_data/lv_app_snap合并耗时取决于差异数据量。做数据库备份时可以先激活快照mount快照到另一个目录再做数据库物理备份这样主库几乎无感知。5. 运维实战和服务器/bug硬碰硬的经验复盘5.1 云电脑重装前必须处理的LVM数据盘搜索热词里有一条非常实战的痛点“如果云电脑使用了LVM并加入了数据盘,用户在重装前需要先从LVM卸载”。这是典型的云环境埋坑问题因为很多云主机的控制台重装系统功能默认会重置系统盘而数据盘如果还挂在LVM卷组里重装后的新系统可能无法正确识别旧VG元数据导致数据看不见、甚至被误格式化。正确的处理流程是在重装前把数据盘从VG中剥离开先确认哪些PV属于哪个VG用pvs、vgs、lvs输出当前状态。备份重要数据最好还用lvconvert做一次快照或者直接把关键数据拷贝到独立位置。从VG移除数据盘先要把卷组上对应LV的数据迁移走或者至少把逻辑卷停用如果数据盘是VG中唯一PV那先把LV内容备份到外部再删掉LVlvremove /dev/vg_data/lv_app如果VG里还有其他PV用pvmove /dev/sdb把数据从待移除盘上迁移走然后vgreduce vg_data /dev/sdb。最后pvremove /dev/sdb确认pvs里不再显示该盘。这样之后重装系统数据盘在逻辑上就是一个“未知磁盘”新系统里重新pvcreate或直接识别成新盘都行旧数据也不会被意外带进新系统的VG。5.2 识别你的系统到底走没走LVM查一台陌生服务器90%的任务里我们都要快速判断是否存在LVM架构。最快的方法lsblk如果看到一个物理盘下面挂着vg-name-lvname这种树形结构就是走了LVM。再深入一点用lvdisplay、vgdisplay能看到详细容量和PE信息。还有一个小技巧是看设备映射ls -l /dev/mapper/下面的软链接通常对应LVM逻辑卷。我接手别人的环境一般都按顺序跑四条命令lsblk、fdisk -l、vgs、df -hT10分钟能出全盘认知。5.3 LVM命令速查手册运维老手也要贴在工位上很多人记住了一堆命令但关键时刻顺序搞混我把日常最常用、最高频的操作整理成一张速查表。操作场景命令示例补充说明创建物理卷pvcreate /dev/sdb整块盘直接创建注意是否需分区查看物理卷pvs或pvdisplaypvs一屏扫描pvdisplay看细节创建卷组vgcreate vg_data /dev/sdb /dev/sdc可以一次性指定多块PV扩展卷组vgextend vg_data /dev/sdc新盘加进VG创建逻辑卷lvcreate -L 100G -n lv_app vg_data也可用-l 100%FREE扩容逻辑卷lvextend -L 20G /dev/vg_data/lv_app之后必须扩文件系统缩容逻辑卷lvreduce -L 80G /dev/vg_data/lv_app先缩文件系统且卸载挂载点查看逻辑卷lvs或lvdisplay前者精简后者详细创建快照lvcreate -s -L 10G -n snap vg_data/lv_app快照容量至少要覆盖变化量迁移数据pvmove /dev/sdb磁盘替换时非常好用5.4 系统日志与故障恢复PV丢失后怎么救故障总是挑半夜来。最常见的LVM异常是PV丢失物理盘损坏、盘符漂移、或者元数据损坏结果是开机后VG处于不完整状态LV无法激活。恢复思路是分两种情况。第一种盘还在但VG元数据未识别。执行vgscan --minkernel 1或vgdisplay先看VG状态是OK还是partial。如果是partial且缺陷PV上的数据是无关紧要的可以直接vgreduce --removemissing vg_data把它挪出去然后激活LV。如果是重要数据别急着removemissing优先用vgcfgrestore --list vg_data查看历史元数据备份通过vgcfgrestore恢复到错误发生前某个版本。第二种整块盘彻底损坏。如果你的VG里做了RAID1或者有多个PV坏了一个可以用剩余PV上的元数据恢复如果只有一个PV且没有raid冗余只能看备份。这也侧面说明LVM本身不是安全网RAID和备份才是底牌。遇到这种情况我的建议是无论如何先做整个块设备级别的镜像备份比如dd到另一块等容量的盘然后再动LVM元数据。盲目操作容易把原本可能恢复的数据彻底断送。5.5 密码过期提醒和日常巡检脚本让LVM服务不失控运维工作中有一个和LVM相关的间接问题就是系统账号密码过期提醒被忽略。为什么提这个因为很多自动化脚本里如果任务计划执行时因为密码过期无法登录备份、快照清理、监控脚本都会静默失败LVM卷的状态就缺少巡检。我们可以在tuned或cron里加一个每日巡检检查LVM健康状况vgs --reportformat json /tmp/vgs.json vgchange -a n vg_test 2/dev/null vgchange -a y vg_test 2/dev/null“先停再启”这种动作只适合非业务挂载的VG千万别在生产LV上乱试。更稳妥的巡检动作主要是vgs输出VG访问模式是否为rw、PV状态是否有missing、dmesg有没有io error。再配合zabbix或者prometheus node_exporter把LVM指标采集上来就能在卷写满前收到告警。6. 面试与进阶LVM对应的核心考点和取舍分析6.1 LVM相关面试题答得稳比答得花更重要热搜词里有大量“linux面试题”“LVM优缺点”这类检索说明这个话题几乎必考。我把面试中最高频的几类问题整理了一下附带答题思路。第一个LVM和普通分区相比有什么优势。答三点就够动态扩容缩容、多块盘池化整合、快照能力。接着立刻补充缺点性能微损耗、复杂度增加、本身不提供数据冗余。关键信息给到位面试官会认为你是真的用过不是背文档。第二个LVM能不能缩容。答“能但分文件系统”。ext4可以卸载后收缩xfs基本不支持在线缩容甚至离线缩容支持也极差。这句话目的是测试你是否清楚实际操作边界。第三个根分区LVM满了怎么办。答时先讲思路再讲命令检查VG空闲空间、没有就vgextend新盘、lvextend、扩容文件系统。口径统一逻辑层层递进。第四个LV、PV、VG的关系。不要只背缩写用一句话说清楚PV是物理盘抽象VG是多个PV的组合池LV是从VG分配的虚拟可格式化设备。第五个如何做一个数据库备份时LVM快照的整合。难度偏高但答得好非常加分。答案是保证数据库处于一致性状态比如用mysqldump或InnoDB的FLUSH TABLES WITH READ LOCK配合快照或者使用文件系统级别一致性工具然后创建LVM快照再把快照mount起来做物理备份。6.2 LVM与RAID、文件系统层面的配合LVM常被误解为“可以替代RAID”这个认知必须纠正。RAID解决的是磁盘级的高可用和吞吐比如RAID1镜像保数据、RAID0条带化提升性能、RAID10兼顾。LVM解决的是容量编排把空间集中起来灵活调度。最佳实践通常是底层先做硬件RAID或软RAIDmdadm把逻辑盘交给LVMLVM再划分LV。这样既能享受RAID的稳定冗余能力又能享受LVM的弹性容量管理。有一个经验之谈不要把LVM的--stripes当成RAID0来盲目使用。lvcreate --stripes 2 --size 10G vg_data能把数据条带化到两块PV上但没有任何冗余任何一块盘故障都会损坏整个逻辑卷里的数据。生产环境用stripes前必须评估可靠性。另外如果底层已经做了RAID还在LVM层再做条带化两层条带重叠不仅提升不了多少性能还可能让故障恢复复杂化。业务跑在虚拟化环境下物理隔离和备份策略远比性能极限重要。6.3 性能调优从PE大小、I/O对齐到缓存策略LVM性能调优多数时候并不需要“调”而是需要“不捣乱”。最基础的一项是I/O对齐。多数新磁盘是4K扇区LVM默认PE是4MiB且通常已经对齐但你手动分区时必须保证起始扇区对齐到1MiB边界比如从2048扇区起始否则性能会莫名缩水。检查对齐用lsblk -t看alignment offset不为0就需要检查。缓存策略上LVM本身不提供像硬件RAID卡那样的多级缓存要实现像缓存卷或缓存池就得靠LVM-cache。它是利用快设备如SSD为慢设备如HDD做缓存的机制。配置复杂但数据库场景收益明显lvcreate --type cache --cachevol /dev/vg_data/lv_ssd -L 50G -n lv_app_cached vg_data/lv_app若想控制PE大小创建VG时用vgcreate -s 16M vg_data /dev/sdbPE大有利于管理超大容量VG但会在空间划分精细度上稍微粗一点点。默认4M最稳除非你明确知道自己要什么不然别乱调。6.4 国产化操作系统和LVM适配差异与实操建议热搜词里出现了“linux国产”“生态最好的linux系统”“kylin linux扩lvm”说明现在信创服务器场景比例很高。以银河麒麟Kylin为代表的操作系统底层是Linux内核LVM机制和CentOS/RHEL是兼容的命令体系基本一致。但实际操作中要注意两点。一是系统管理工具集可能存在差异部分麒麟版本默认带的是老版本lvm2命令参数和CentOS 7接近但某些高版本新特性没有二是fstab挂载和selinux策略可能不同盲目照抄CentOS配置可能导致引导失败。扩容操作本身没有问题先vgextend再lvextend最后xfs_growfs这样走兼容性最稳。另外Kylin这类国产系统很多被部署在政务、金融等受控环境里操作纪律更重要。上线前统一在测试环境跑一遍扩容流程记录系统版本和lvm2版本再到生产执行。同一套命令在CentOS 7、Kylin V10、Ubuntu 22.04上的输出格式和细节可能都有细微差别。7. 走向不用再求人的磁盘管理一份个人心得最后说点自己这几年攒下的体会。磁盘管理和LVM是一门实践学科看起来概念多、抽象层厚但只要亲手在一台测试机上完整跑一轮“创建PV、扩VG、建LV、格式化、挂载、扩容、缩容、做快照、恢复快照”90%的恐惧都会消除剩下的完全可以在生产环境里靠纪律和检查单兜底。我特别建议大家养成一个习惯动生产环境前把当前所有pvs、vgs、lvs、lsblk的输出保存到一个文件里并注明操作目标。这样即使操作失败也能通过对比快速判断哪一步没对。另一个经验是扩容不是用完就完了必须继续监控业务文件系统的真实水位因为LV和文件系统是两层东西df看的是文件系统lvs看的是逻辑卷映射VG的空闲空间找出来了但没给文件系统等于白扩。我见过太多人卡在这一步上原地打转。还有一个小技巧扩容的时候别只盯着容量上限要多留意VG的物理分布。假如一个VG里有三块物理盘但LV集中在其中一块盘上读写速度和故障域都可能不平衡这时候用lvdisplay -m查看LE到PE的映射必要时用pvmove把热点数据迁移到空闲盘上效果立竿见影。这套逻辑比单纯扩大容量更体现“管理”两个字。如果你现在管理的机器还处于裸分区状态而它又不是短期临时机我建议不要嫌麻烦规划一个维护窗口把核心数据目录迁移到LVM卷上。数据盘、应用目录、日志目录分账号逻辑卷隔离后面所有调整都在池子里进行你将获得成倍的运维自由度。当然任何改动前都请备份并确保自己看得懂那三条巡检命令的输出。Linux磁盘管理的核心说到底就是“空间的可控性”。LVM给了你一层能主动干预的空间抽象用不用的区别不在于装了多少命令而在于遇到磁盘告警时你是慌着停机加盘还是从容地在线上把空间拓开然后继续喝你的咖啡。个人强烈建议把LVM当成一项必备基础技能而不是进阶选项来准备。希望这篇复盘能让你少踩一些我当年踩过的坑。
阅读完成 · 觉得有帮助?
咨询建站