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
- 卸载umount
- resize2fs /xfs_growfs
- lvresize -L
- 从新挂载
这些指令在做自定义监控时非常有用
参考博文
# 以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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏