轩辕琳芳 发表于 2025-8-13 18:38:30

lvm逻辑卷详解

lvm优缺点

优点

比起传统的硬盘分区管理方式,LVM更富于灵活性:

[*]将多块硬盘看作一块大硬盘
[*]使用逻辑卷(LV),可以创建跨越众多硬盘空间的分区。
[*]可以创建小的逻辑卷(LV),在空间不足时再动态调整它的大小。
[*]在调整逻辑卷(LV)大小时可以不用考虑逻辑卷在硬盘上的位置,不用担心没有可用的连续空间。
[*]可以在线(online)对逻辑卷(LV)和卷组(VG)进行创建、删除、调整大小等操作。
[*]无需重新启动服务,就可以将服务中用到的逻辑卷(LV)在线(online)/动态(live)迁移至别的硬盘上。
[*]允许创建快照,可以保存文件系统的备份,同时使服务的下线时间(downtime)降低到最小。
[*]支持各种设备映射目标(device-mapper targets),包括透明文件系统加密和缓存常用数据(caching of frequently used data)。这将允许你创建一个包含一个或多个磁盘、并用LUKS加密的系统,使用LVM on top 可轻松地管理和调整这些独立的加密卷 (例如. /, /home, /backup等) 并免去开机时多次输入密钥的麻烦。
缺点


[*]在系统设置时需要更复杂的额外步骤。
[*]Windows系统并不支持LVM,若使用双系统,你将无法在Windows上访问LVM分区。
图解lvm工作流程


普通磁盘: 格式化文件系统、block=4KB ,有N个block-->挂载分区使用
lvm磁盘: 磁盘、格式化为PV(磁盘的容量被分为N个PE) ,PE默认单位是4MB,等于1024个block-->PV加入卷组VG(动态伸缩的大磁盘)-->创建逻辑卷LV(等于创建了分区)-->格式化文件系统xfs (sdb sdc sdd),逻辑卷-->挂载使用
lvm常用命令

pv命令

# 1.前提是需要安装lvm命令
yum install lvm2 -y


# 2.创建pv
pvcreate /dev/sdb /dev/sdc
Physical volume "/dev/sdb" successfully created.
Physical volume "/dev/sdc" successfully created.

# 3.查看pv
pvs
PV         VG FmtAttr PSizePFree
/dev/sdb      lvm2 ---20.00g 20.00g
/dev/sdc      lvm2 ---20.00g 20.00g

pvscan
PV /dev/sdb                      lvm2
PV /dev/sdc                      lvm2
Total: 2 / in use: 0 / in no VG: 2

pvdisplay
"/dev/sdb" is a new physical volume of "20.00 GiB"
--- NEW Physical volume ---
PV Name               /dev/sdb
VG Name
PV Size               20.00 GiB
Allocatable         NO
PE Size               0
Total PE            0
Free PE               0
Allocated PE          0
PV UUID               GfgfYb-bh9z-ds63-UXwP-Qaad-eGIw-ZxsG7Q

"/dev/sdc" is a new physical volume of "20.00 GiB"
--- NEW Physical volume ---
PV Name               /dev/sdc
VG Name
PV Size               20.00 GiB
Allocatable         NO
PE Size               0
Total PE            0
Free PE               0
Allocated PE          0
PV UUID               3CcXdo-M6Zx-N6Dn-4SkN-BPk7-a8Ad-Ft2Ixl

# 4.删除pv
pvremove /dev/sdb /dev/sdc
Labels on physical volume "/dev/sdb" successfully wiped.
Labels on physical volume "/dev/sdc" successfully wiped.vg命令

# 1.首先要创建pv
pvcreate/dev/sdb /dev/sdc
Physical volume "/dev/sdb" successfully created.
Physical volume "/dev/sdc" successfully created.

# 2.创建(加入)卷组
vgcreate vg-0224/dev/sdb /dev/sdc
Volume group "vg-0224" successfully created

# 3.查看卷组
vgs
VG      #PV #LV #SN Attr   VSizeVFree
vg-0224   2   0   0 wz--n- 39.99g 39.99g

vgscan
Reading volume groups from cache.
Found volume group "vg-0224" using metadata type lvm2

vgdisplay
--- Volume group ---
VG Name               vg-0224
System ID
Format                lvm2
Metadata Areas      2
Metadata Sequence No1
VG Access             read/write
VG Status             resizable
MAX LV                0
Cur LV                0
Open LV               0
Max PV                0
Cur PV                2
Act PV                2
VG Size               39.99 GiB
PE Size               4.00 MiB
Total PE            10238
Alloc PE / Size       0 / 0
FreePE / Size       10238 / 39.99 GiB
VG UUID               SVUaXR-9JXY-o5WP-XFAW-kCvo-flnt-W3H867

# 4.扩容vg,新的硬盘直接加入vg即可,会自动创建成pv。
vgextend vg-0224 /dev/sdd
Physical volume "/dev/sdd" successfully created.
Volume group "vg-0224" successfully extended

# 5.删除vg
vgremove vg-0224
Volume group "vg-0224" successfully removedlv命令

# 1. 创建lv
# -L 指定逻辑卷的大小
# -l 指定逻辑卷的大小(PE个数)
# -n 后面跟逻辑卷名
# -s 创建快照

# 创建lv,设定为卷组容量的一半
lvcreate -n 0224lv1 -l 50%VG vg-0224
Logical volume "0224lv1" created.

# 指定逻辑卷大小
lvcreate -n 0224lv2 -L 10G vg-0224
Logical volume "0224lv2" created.

# 2.查看逻辑卷信息
lvs
LV      VG      Attr       LSizePool Origin Data%Meta%Move Log Cpy%Sync Convert
0224lv1 vg-0224 -wi-a----- 29.99g
0224lv2 vg-0224 -wi-a----- 10.00g

# 3.扩容
# 给lv增加10G
lvextend -L +10G/dev/vg-0224/0224lv1
Size of logical volume vg-0224/0224lv1 changed from 29.99 GiB (7678 extents) to 39.99 GiB (10238 extents).
Logical volume vg-0224/0224lv1 successfully resized.

# 调整到49G大小
lvextend -L 49G/dev/vg-0224/0224lv1
Size of logical volume vg-0224/0224lv1 changed from 39.99 GiB (10238 extents) to 49.00 GiB (12544 extents).
Logical volume vg-0224/0224lv1 successfully resized.

# 上面虽然调整了 lv2逻辑卷的大小,但是文件系统它不知道,你得告诉文件系统,也跟着调整分区的容量,以及重新设置block的数量
# ext4文件系统,使用resize2fs命令
# xfs文件系统,使用xfs_growfs调整大小


# 4.删除逻辑卷
lvremove    /dev/vg-0224/0224lv1
Do you really want to remove active logical volume vg-0224/0224lv1? : y
Logical volume "0224lv1" successfully removedlvm创建实战

# 1.安装lvm
yum install lvm2 -y

# 2.查看pv
pvs

# 3.创建pv
pvcreate /dev/sdb /dev/sdc

# 4.查看创建后的pv
pvs
PV         VG FmtAttr PSizePFree
/dev/sdb      lvm2 ---20.00g 20.00g
/dev/sdc      lvm2 ---20.00g 20.00g

# 5.查看vg
vgs

# 6.创建vg ,sdb sdc创建为卷组,名字是 vg-0224
vgcreate vg-0224/dev/sdb /dev/sdc
Volume group "vg-0224" successfully created

# 7.查看创建后的vg
vgs
VG      #PV #LV #SN Attr   VSizeVFree
vg-0224   2   0   0 wz--n- 39.99g 39.99g

# 8.查看lv
lvs

# 9.创建lv(创建分区)
# 分配lv120G
lvcreate -n lv1-L 20Gvg-0224
Logical volume "lv1" created.

# 分配lv215G
lvcreate -n lv2-L 15Gvg-0224
Logical volume "lv2" created.

# 10. 查看创建后的lv
lvs
LV   VG      Attr       LSizePool Origin Data%Meta%Move Log Cpy%Sync Convert
lv1vg-0224 -wi-a----- 20.00g
lv2vg-0224 -wi-a----- 15.00g
                              
ls /dev/vg-0224/
lv1lv2

# 11.查看磁盘设备信息
# 通过如下命令,查看lvm设备的信息
blkid |grep 'sd'
/dev/sdc: UUID="EtdTLT-GCsq-3GOd-epgG-iWHE-TyMp-vnV3wq" TYPE="LVM2_member"
/dev/sdb: UUID="OC52bo-rsOY-s24k-1hPs-YEsE-wcEN-XL9Yhx" TYPE="LVM2_member"

# 12.给lv格式化文件系统
# lv1格式化为xfs
mkfs.xfs /dev/vg-0224/lv1

# lv2格式化为ext4
mkfs.ext4 /dev/vg-0224/lv2


# 13.挂载lv
mount /dev/vg-0224/lv1 /data
mount /dev/vg-0224/lv2 /opt

# 14.查看挂载
df -h
Filesystem                SizeUsed Avail Use% Mounted on
devtmpfs                  476M   0476M   0% /dev
tmpfs                     487M   0487M   0% /dev/shm
tmpfs                     487M7.7M479M   2% /run
tmpfs                     487M   0487M   0% /sys/fs/cgroup
/dev/sda1                  30G4.2G   26G14% /
tmpfs                      98M   0   98M   0% /run/user/0
/dev/mapper/vg--0224-lv1   20G   33M   20G   1% /data
/dev/mapper/vg--0224-lv2   15G   41M   14G   1% /opt

lsblk
NAME         MAJ:MIN RMSIZE RO TYPE MOUNTPOINT
sda            8:0    0   30G0 disk
└─sda1         8:1    0   30G0 part /
sdb            8:16   0   20G0 disk
└─vg--0224-lv1 253:0    0   20G0 lvm/data
sdc            8:32   0   20G0 disk
├─vg--0224-lv1 253:0    0   20G0 lvm/data
└─vg--0224-lv2 253:1    0   15G0 lvm/opt
sdd            8:48   0   20G0 disk
sr0             11:0    14.4G0 rom

# 15.开机自动挂载
# 一定切记,如果你的设备发生了变化,一定要去修改/etc/fstab,否则系统开机,读取该fstab文件,找不到设备,无法正确挂载就会报错
进入紧急模式,直到你再次修复fstab文件
tail -2 /etc/fstab
/dev/mapper/vg--0224-lv1/dataxfsdefaults 0 0
/dev/mapper/vg--0224-lv2/optext4defaults 0 0lvm扩容

# 先查看当前机器的lv情况,确定你要扩容的设备
df -h |grep /data
/dev/mapper/vg--0224-lv1   20G   33M   20G   1% /data

# 扩容到4G的需求,分两种情况
1. 卷组容量够,直接扩容
2. 卷组容量不够,加新硬盘,再次pv化,加入卷组之后再扩容方案1,卷组容量够

# 1.确认vg够不够
vgs
VG      #PV #LV #SN Attr   VSizeVFree
vg-0224   2   2   0 wz--n- 39.99g 4.99g

# 2.确认够用,直接lvextend扩容lv逻辑卷即可
# 给lv1增加4G
lvextend -L +4G/dev/vg-0224/lv1
Size of logical volume vg-0224/lv1 changed from 20.00 GiB (5120 extents) to 24.00 GiB (6144 extents).
Logical volume vg-0224/lv1 successfully resized.
# 注意,这里还有另一种用法:直接扩容到24G
lvextend -L 24G /dev/vg-0224/lv1

# 3. 查看扩容后的lv
lvs
LV   VG      Attr       LSizePool Origin Data%Meta%Move Log Cpy%Sync Convert
lv1vg-0224 -wi-ao---- 24.00g
lv2vg-0224 -wi-ao---- 15.00g   
   

# 4. 虽然调整了 lv1逻辑卷的大小,但是文件系统它不知道,得告诉文件系统也跟着调整分区的容量。
# ext4文件系统,使用resize2fs命令,xfs文件系统,使用xfs_growfs调整大小
# 查看lv1文件系统的类别
df -T |grep lv1
/dev/mapper/vg--0224-lv1 xfs       20961280   3299220928288   1% /data
# 可以看到是xfs,使用xfs_growfs扩容即可
xfs_growfs /dev/mapper/vg--0224-lv1
meta-data=/dev/mapper/vg--0224-lv1 isize=512    agcount=4, agsize=1310720 blks
         =                     sectsz=512   attr=2, projid32bit=1
         =                     crc=1      finobt=0 spinodes=0
data   =                     bsize=4096   blocks=5242880, imaxpct=25
         =                     sunit=0      swidth=0 blks
naming   =version 2            bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=2560, version=2
         =                     sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 5242880 to 6291456

# 5. 查看扩容后的大小
df -hT |grep lv1
/dev/mapper/vg--0224-lv1 xfs      24G   33M   24G   1% /data情况2,卷组容量不够了

# 1.创建新硬盘# 添加一个20G硬盘lsblk |grep sddsdd            8:48   0   20G0 disk# 2. 给硬盘pv化pvcreate /dev/sddPhysical volume "/dev/sdd" successfully created.# 3. 查看pvpvsPV         VG      FmtAttr PSize   PFree/dev/sdb   vg-0224 lvm2 a--
页: [1]
查看完整版本: lvm逻辑卷详解