LVM

LVM (logical volume manager)

术语:

物理块PE(Physical Extent) 是对pv的分割,单个pe大小默认4M。

物理卷PV(Physical Volume) 是物理设备可以是磁盘或分区。如/dev/sdb /dev/sdc1

卷组VG(Volume Group) 对pe的组合。

逻辑卷LV(Logical Volume) 对vg 的分割

新建逻辑卷步骤

第一步: 把物理磁盘初始化为物理卷(pv),实质是把物理磁盘分割成4M大小的pe

pvcreate /dev/sdb
pvcreate /dev/sdc /dev/sdd

第二步:把分割好的pe 组合起来 为 vg

vgcreate 卷组名称 /dev/sdb /dev/sdc

第三步: 从vg 中指定大小创建lv

lvcreate -n <lv名称> -L 2G <卷组名称>

# 选做有兴趣的可以查阅文档
# 在centos pv中 创建类型为thin-pool,名称为thin01 的 lv
lvcreate -n thin01 --type thin-pool --size 10m centos
lvcreate -n test --virtualsize 1G --thinpool thin01 centos

第四步: 检查系统中存在的lv。 例如:/dev/mapper/ubuntu--vg-ubuntu--lv

/dev/vgname/lvname

管理LVM

查看物理卷 pv

pvs 命令查看pv 的简要信息
pvdisplay 命令查看pv的详细信息

查看卷组 vg

vgs
vgdisplay

查看逻辑卷 lv

lvs
lvdispaly
# 指定显示单位
lvs --units k
# 不显示标头
lvs --nohead
# 查看指定lv
lvs --select lv_name="mysql"

删除

lvremove 逻辑卷名
vgremove 卷组名
pvremove 分区名

扩展lv

root@test:/opt# fdisk /dev/sda
Command (m for help): n
Partition number (4-128, default 4):
First sector (41940992-83886046, default 41940992):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (41940992-83886046, default 83886046):
Created a new partition 4 of type 'Linux filesystem' and of size 20 GiB.
Command (m for help): p
Disk /dev/sda: 40 GiB, 42949672960 bytes, 83886080 sectors
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: FA434BAF-ED49-4ECB-A107-F075A0E33870
Device Start End Sectors Size Type
/dev/sda1 2048 4095 2048 1M BIOS boot
/dev/sda2 4096 3719167 3715072 1.8G Linux filesystem
/dev/sda3 3719168 41940991 38221824 18.2G Linux filesystem
/dev/sda4 41940992 83886046 41945055 20G Linux filesystem
Command (m for help): w
The partition table has been altered.
Syncing disks.
root@test:/opt# pvcreate /dev/sda4
Physical volume "/dev/sda4" successfully created.
root@test:/opt# vgextend ubuntu-vg /dev/sda4
Volume group "ubuntu-vg" successfully extended
root@test:/opt# lvextend -L +20G /dev/ubuntu-vg/ubuntu-lv
Insufficient free space: 5120 extents needed, but only 5119 available
root@test:/opt# lvresize -L +20g /dev/mapper/ubuntu--vg-ubuntu--lv

动态调整文件系统大小

resize2fs /xfs_growfs

场景举例

场景:磁盘空间马上要满

第一步:创建分区或增加一块硬盘

vmware 扩展磁盘分区

第二步:给刚才扩展的磁盘分配一个分区

查看磁盘有多少未分区空间

[root@lvm ~]# parted /dev/sda
GNU Parted 3.1
使用 /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print free
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sda: 69.8GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system 标志
32.3kB 1049kB 1016kB Free Space
1 1049kB 1075MB 1074MB primary xfs 启动
2 1075MB 21.5GB 20.4GB primary lvm
21.5GB 64.4GB 42.9GB Free Space

创建分区

[root@lvm ~]# fdisk /dev/sda
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): n
Partition type:
p primary (2 primary, 0 extended, 2 free)
e extended
Select (default p): p
Partition number (3,4, default 3):
First sector (41943040-125829119, default 41943040):
Using default value 41943040
Last sector, +sectors or +size{K,M,G} (41943040-125829119, default 125829119):
Using default value 125829119
Partition 3 of type Linux and of size 40 GiB is set
Command (m for help): w

通知内核分区变动,否则需要重启操作系统

[root@lvm ~]# partprobe

第三步:把分区转换为pv

[root@lvm ~]# pvcreate /dev/sda3
Physical volume "/dev/sda3" successfully created.
[root@lvm ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <19.00g 0
/dev/sda3 lvm2 --- 40.00g 40.00g

第四步:扩展所在vg

[root@lvm ~]# vgextend centos /dev/sda3
Volume group "centos" successfully extended
[root@lvm ~]# vgs centos
VG #PV #LV #SN Attr VSize VFree
centos 2 2 0 wz--n- 58.99g <40.00g

第四步:调整lv的空间大小

[root@lvm ~]# lvresize -L +39g /dev/centos/root
Size of logical volume centos/root changed from <17.00 GiB (4351 extents) to <56.00 GiB (14335 extents).
Logical volume centos/root successfully resized

第五步:通知文件系统调整文件系统大小

[root@lvm ~]# xfs_growfs /dev/mapper/centos-root
meta-data=/dev/mapper/centos-root isize=512 agcount=4, agsize=1113856 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=4455424, 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 4455424 to 14679040

完成

[root@lvm ~]# df -HT
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 1.5G 0 1.5G 0% /dev
tmpfs tmpfs 1.5G 0 1.5G 0% /dev/shm
tmpfs tmpfs 1.5G 11M 1.5G 1% /run
tmpfs tmpfs 1.5G 0 1.5G 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 61G 15G 46G 25% /
/dev/sda1 xfs 1.1G 224M 840M 22% /boot
tmpfs tmpfs 1.5G 25k 1.5G 1% /var/lib/ceph/osd/ceph-1
tmpfs tmpfs 1.5G 25k 1.5G 1% /var/lib/ceph/osd/ceph-0
tmpfs tmpfs 1.5G 25k 1.5G 1% /var/lib/ceph/osd/ceph-2
tmpfs tmpfs 297M 13k 297M 1% /run/user/42
tmpfs tmpfs 297M 0 297M 0% /run/user/0
[root@lvm ~]# lsblk -f /dev/sda
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 xfs 2698408f-1135-4c91-b11c-02892e5208f8 /boot
├─sda2 LVM2_member eZESEK-nJJ1-UvCV-x3st-lJKM-m3Zx-JZNvWO
│ ├─centos-root xfs e011e279-e5c9-4dfd-87e9-ecfc7e46bccd /
│ └─centos-swap swap e14f66e7-6647-486f-a9d7-acc044d455a1
└─sda3 LVM2_member ugnjZw-FN0H-V8vi-acLb-D6sC-YB1f-CtZIF7
└─centos-root xfs e011e279-e5c9-4dfd-87e9-ecfc7e46bccd /

缩小lv

  1. 卸载umount
  2. resize2fs /xfs_growfs
  3. lvresize -L
  4. 从新挂载

这些指令在做自定义监控时非常有用
参考博文

# 以4m位单位显示
lvs --units 4m
lvs -o lv_name,lv_size
lvs -o +lv_uuid,lv_name,lv_size,lv_attr
lvs -o -lv_uuid,lv_name,lv_size,lv_attr
lvs -v
lvs -v -o lv_name,lv_uuid
lvs --nohead -o lv_name
pvs --nohead -o pv_name
lvs -o pv_name,pv_size --units k
posted @   mingtian是吧  阅读(127)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
点击右上角即可分享
微信分享提示