1. 为什么你需要掌握LVM?从“硬盘分区”到“存储池”的思维跃迁
大家好,我是老张,在运维和存储这块摸爬滚打了十几年。今天我们不聊那些虚头巴脑的理论,就来手把手、接地气地聊聊LVM(逻辑卷管理)的实战操作。如果你还在为服务器加硬盘、分区、迁移数据搞得焦头烂额,觉得每次调整存储空间都像在做一次高风险手术,那LVM可能就是你的“解药”。
想象一下这个场景:你负责的网站业务量增长,/data目录眼看就要满了。传统的做法是,加一块新硬盘,分区、格式化,然后把旧数据吭哧吭哧挪过去,改挂载点,还得调整应用配置,整个过程服务得停,心惊胆战。但如果你用了LVM,情况就完全不同了:你只需要把新硬盘“加入”到原有的存储池里,然后在线、动态地给/data“扩大”空间,整个过程业务无感知,就像给一个水池加注水一样简单流畅。
LVM的核心思想,就是把物理硬盘(或分区)抽象成可以灵活拼装的“积木”。它主要管理三个层次:物理卷(PV)、卷组(VG)和逻辑卷(LV)。你可以把多块物理硬盘(PV)揉成一个大的“存储池”(VG),然后从这个池子里,按需切分出任意大小的“逻辑磁盘”(LV)给系统使用。这个逻辑卷才是我们最终格式化并挂载的“分区”。它的魔力在于,这个“逻辑磁盘”的大小可以动态调整,不再受底层物理硬盘边界的束缚。
所以,无论你是刚入行的运维新人,还是需要管理自家NAS的极客,花点时间掌握LVM,绝对是提升效率、保障数据灵活性的高回报投资。接下来,我们就从最基础的创建开始,一步步走到高级的扩容和风险较高的缩容操作,我会把每个命令背后的“所以然”和踩过的坑都讲清楚。
2. 万丈高楼平地起:物理卷、卷组与逻辑卷的创建
别被那些术语吓到,我们一步步来。你可以把创建LVM的过程,想象成盖房子:先准备砖头(PV),再用砖头砌成一面完整的墙(VG),最后根据房间布局,在这面墙上开出窗户和门(LV)。
2.1 准备“砖头”:使用 pvcreate 创建物理卷
物理卷(PV)是LVM的基石,它可以是整块硬盘(如/dev/sdb),也可以是硬盘上的一个分区(如/dev/sdb1)。但请注意,我强烈建议直接使用整块硬盘作为PV。为什么呢?因为分区本身就有大小限制,如果你先用分区,后期想扩容还得折腾分区表,徒增复杂度。直接用整盘,让LVM来管理空间,是最干净利落的做法。
假设我们有两块新硬盘/dev/sdb和/dev/sdc,准备纳入LVM体系。创建物理卷的命令简单到令人发指:
[root@server ~]# pvcreate /dev/sdb /dev/sdc
Physical volume "/dev/sdb" successfully created.
Physical volume "/dev/sdc" successfully created.
执行完,这两块盘就被打上了LVM的“烙印”,准备被使用了。怎么确认呢?用pvs或pvdisplay命令查看一下:
[root@server ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb lvm2 --- 8.00g 8.00g
/dev/sdc lvm2 --- 6.00g 6.00g
pvs是简洁视图,可以看到PV名称、所属卷组(VG,目前为空)、格式、属性、总大小和剩余空间。pvdisplay则会给出极其详细的信息,包括UUID、PE大小等,在排查复杂问题时特别有用。这里有个小细节:Attr字段下的---表示这块PV尚未加入任何卷组。创建PV本身不会损坏原有数据,但如果你在已使用的分区上执行,一定要先备份!
2.2 砌成“墙”:使用 vgcreate 创建卷组
有了砖头(PV),我们就可以把它们组合起来,砌成一堵大墙,也就是卷组(VG)。卷组是LVM的核心概念,它是一个真正的存储池,所有后续的逻辑卷都从这个池子里分配空间。
我们把刚才创建的两块PV,/dev/sdb(8G)和/dev/sdc(6G),合并成一个名为vg_data的卷组:
[root@server ~]# vgcreate vg_data /dev/sdb /dev/sdc
Volume group "vg_data" successfully created
这个命令执行后,这两块物理盘的空间就被聚合成了一个总计约14G的存储池。这里有个重要的概念叫PE(Physical Extent),你可以把它理解为存储池管理空间的最小单元,就像砌墙用的标准砖块。默认PE大小是4MB。在创建卷组时,你可以通过-s参数指定PE大小,比如-s 8M或-s 16M。对于特别大的存储(TB级别),设置更大的PE(如32M、64M)可以减少管理元数据的开销,但可能会

1188

被折叠的 条评论
为什么被折叠?



