day25lvm逻辑卷
lvm逻辑卷
用了lvm,可以将多个物理分区、抽象为一个逻辑卷组,并且这个逻辑卷组是可以动态扩容、缩容的。
当逻辑卷组容量不够了,只需要买新硬盘,通过命令再添加到这个指定的逻辑卷组中,可以在不停机的情况下,立即实现扩容,且被linux识别
什么是LVM
LVM(Logical Volume Manager)逻辑卷管理,是一种将一个或多个硬盘的分区在逻辑上集合,相当于一个大硬盘来使用,当硬盘的空间不够使用的时候,可以继续将其它的硬盘的分区加入其中,这样可以事项一种磁盘空间的动态管理,相对于普通的磁盘分区有很大的灵活性。
- 硬盘的
多个分区
由lvm统一为卷组
,可以弹性的调整卷组的大小,充分利用硬盘容量 - 文件系统创建在逻辑卷上,逻辑卷可以根据需求改变大小(卷组总容量范围内)
基于硬盘创建lvm
- 多块硬盘做成逻辑卷,将整个逻辑卷同意管理,可以动态对分区进行扩缩空间容量
图解lvm工作流程
理解LVM原理名词
- PP(Physical Parttion):物理分区,LVM建立在物理分区之上
- PV(Physical Volume):物理卷,处于LVM最底层,一般一个PV对应一个PP
- PE(physical Extends):物理区域,PV中可以用于分配的最小存储单元,同一个VG中所有的PV的PE大小相同,如1M、2M
- VG(Volume Group):卷组,建立在PV之上,可以划分多个PV
- LE(Logical Extends):逻辑扩展单元,组成LV的基本单元,一个LE对应一个PE
- LV(Logical Volume):逻辑卷,建立在VG之上,是一个可以动态改变大小的分区
lvm重点概念
- 物理卷(Physical Volume,PV)
物理卷是底层==真正提供容量==,存放数据的设备,它可以是整个硬盘、硬盘上的分区等。
- 卷组(Volume Group, VG)
卷组建立在物理卷之上,它由==一个或多个物理卷==组成。即把物理卷整合起来提供容量分配。 一个LVM系统中可以只有一个卷组,也可以包含多个卷组。
- 逻辑卷(Logical Volume, LV)
逻辑卷建立在卷组之上,它是从卷组中“切出”的一块空间。它是==最终用户使用的逻辑设==备。逻辑卷创建之后,其==大小可以伸缩==。
- 物理区域 PE(physical extent)
每一个物理卷被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是能被LVM寻址的最小单元。PE的大小可指定,默认为4 MB。 PE的大小一旦确定将不能改变,同一个卷组中的所有物理卷的PE的大小是一致的。 4MB=4096kb=4096kb/4kb=1024个block
说明:
- 硬盘读取数据最小单位1个扇区512字节
- 操作读取数据最小单位1个数据块=8*512字节=4096字节=4KB
- lvm寻址最小单位1个PE=4MB
LVM优点
- 文件系统可以跨多个磁盘,大小不会受到磁盘限制
- 可在系统运行的情况下,动态扩展文件系统大小
- 可以增加新的磁盘到LVM的存储池中
lvm工作流程
- 物理磁盘
- 命令创建pv
- 创建卷组vg
- 创建逻辑卷lv
- 格式化lv文件系统
- 挂载使用
lvm常用命令汇总
操作 | pv命令 | vg命令 | lv命令 |
---|---|---|---|
列出display | pvs | vgs | lvs |
扩容extend | vgextend | lvextend | |
缩容reduct | vgreduce | Lvreduce | |
删除remove | pvremove | vgremove | lvremove |
改变容量resize | vgresize |
lvm练习操作
1.创建的磁盘pv化 [root@nodel ~11:43:03]# [root@nodel ~11:43:03]#pvcreate /dev/sdb /dev/sdc Physical volume "/dev/sdb" successfully created. Physical volume "/dev/sdc" successfully created. [root@nodel ~11:52:39]#pvs PV VG Fmt Attr PSize PFree /dev/sda2 centos lvm2 a-- <19.00g 0 /dev/sdb lvm2 --- 30.00g 30.00g /dev/sdc lvm2 --- 30.00g 30.00g [root@nodel ~11:52:45]# 2.创建逻辑卷组 [root@nodel ~11:52:45]#vgcreate vg0224 /dev/sdb /dev/sdc Volume group "vg0224" successfully created [root@nodel ~11:55:03]#vgs VG #PV #LV #SN Attr VSize VFree centos 1 2 0 wz--n- <19.00g 0 vg0224 2 0 0 wz--n- 59.99g 59.99g [root@nodel ~11:55:07]# 3。创造逻辑卷 [root@nodel ~11:55:07]#lvcreate -n 0224-lv1 -L 10G vg0224 Logical volume "0224-lv1" created. [root@nodel ~11:56:51]#lvcreate -n 0224-lv2 -L 15G vg0224 Logical volume "0224-lv2" created. [root@nodel ~11:57:07]#lvcreate -n 0224-lv3 -L 25G vg0224 Logical volume "0224-lv3" created. [root@nodel ~11:57:19]#lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root centos -wi-ao---- <17.00g swap centos -wi-ao---- 2.00g 0224-lv1 vg0224 -wi-a----- 10.00g 0224-lv2 vg0224 -wi-a----- 15.00g 0224-lv3 vg0224 -wi-a----- 25.00g [root@nodel ~11:57:22]# 4.格式化文件系统 [root@nodel /12:05:43]#mkfs.xfs /dev/vg0224/0224-lv1 meta-data=/dev/vg0224/0224-lv1 isize=512 agcount=4, agsize=655360 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0, sparse=0 data = bsize=4096 blocks=2621440, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal log bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 [root@nodel /12:06:51]#mkfs.xfs /dev/vg0224/0224-lv2 meta-data=/dev/vg0224/0224-lv2 isize=512 agcount=4, agsize=983040 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0, sparse=0 data = bsize=4096 blocks=3932160, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal log bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 [root@nodel /12:06:55]#mkfs.ext4 /dev/vg0224/0224-lv3 mke2fs 1.42.9 (28-Dec-2013) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 1638400 inodes, 6553600 blocks 327680 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=2155872256 200 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000 Allocating group tables: done Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done [root@nodel /12:07:13]# 5.挂载到相关目录 [root@nodel /12:07:54]#mount /dev/vg0224/0224-lv1 /test1 [root@nodel /12:08:14]#mount /dev/vg0224/0224-lv2 /test2 [root@nodel /12:08:20]#mount /dev/vg0224/0224-lv3 /test3 [root@nodel /12:08:27]#mount -l |grep 'test' /dev/mapper/vg0224-0224--lv1 on /test1 type xfs (rw,relatime,attr2,inode64,noquota) /dev/mapper/vg0224-0224--lv2 on /test2 type xfs (rw,relatime,attr2,inode64,noquota) /dev/mapper/vg0224-0224--lv3 on /test3 type ext4 (rw,relatime,data=ordered) [root@nodel /12:08:42]# 6.分别查看文件系统信息 [root@nodel /12:09:15]#xfs_info /dev/vg0224/0224-lv1 meta-data=/dev/mapper/vg0224-0224--lv1 isize=512 agcount=4, agsize=655360 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0 spinodes=0 data = bsize=4096 blocks=2621440, 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 [root@nodel /12:09:54]#xfs_info /dev/vg0224/0224-lv2 meta-data=/dev/mapper/vg0224-0224--lv2 isize=512 agcount=4, agsize=983040 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0 spinodes=0 data = bsize=4096 blocks=3932160, 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 [root@nodel /12:14:49]#dumpe2fs /dev/vg0224/0224-lv3 |grep -Ei '^inode|^block' dumpe2fs 1.42.9 (28-Dec-2013) Inode count: 1638400 Block count: 6553600 Block size: 4096 Blocks per group: 32768 Inodes per group: 8192 Inode blocks per group: 512 Inode size: 256 [root@nodel /12:15:26]# 7.查看卷组情况 [root@nodel /12:15:26]# [root@nodel /12:15:26]#vgs VG #PV #LV #SN Attr VSize VFree centos 1 2 0 wz--n- <19.00g 0 vg0224 2 3 0 wz--n- 59.99g 9.99g [root@nodel /12:16:34]# 确定还够满足扩容0224-lv3 先扩容这个 [root@nodel /12:21:13]#lvextend -L +5G /dev/vg0224/0224-lv3 Size of logical volume vg0224/0224-lv3 changed from 25.00 GiB (6400 extents) to 30.00 GiB (7680 extents). Logical volume vg0224/0224-lv3 successfully resized. [root@nodel /12:21:36]#lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root centos -wi-ao---- <17.00g swap centos -wi-ao---- 2.00g 0224-lv1 vg0224 -wi-ao---- 10.00g 0224-lv2 vg0224 -wi-ao---- 15.00g 0224-lv3 vg0224 -wi-ao---- 30.00g [root@nodel /12:21:46]##该文件系统是ext4的 [root@nodel /12:22:40]#resize2fs /dev/vg0224/0224-lv3 resize2fs 1.42.9 (28-Dec-2013) Filesystem at /dev/vg0224/0224-lv3 is mounted on /test3; on-line resizing required old_desc_blocks = 4, new_desc_blocks = 4 The filesystem on /dev/vg0224/0224-lv3 is now 7864320 blocks long. [root@nodel /12:23:07]#df -hT Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/centos-root xfs 17G 9.4G 7.7G 56% / devtmpfs devtmpfs 476M 0 476M 0% /dev tmpfs tmpfs 488M 0 488M 0% /dev/shm tmpfs tmpfs 488M 7.7M 480M 2% /run tmpfs tmpfs 488M 0 488M 0% /sys/fs/cgroup /dev/sda1 xfs 1014M 130M 885M 13% /boot tmpfs tmpfs 98M 0 98M 0% /run/user/0 /dev/mapper/vg0224-0224--lv1 xfs 10G 33M 10G 1% /test1 /dev/mapper/vg0224-0224--lv2 xfs 15G 33M 15G 1% /test2 /dev/mapper/vg0224-0224--lv3 ext4 30G 45M 28G 1% /test3 [root@nodel /12:23:35]# 8.[root@nodel /12:23:35]#vgs VG #PV #LV #SN Attr VSize VFree centos 1 2 0 wz--n- <19.00g 0 vg0224 2 3 0 wz--n- 59.99g 4.99g [root@nodel /12:24:05]# 此时已经不够使用,需要至少增加15G的内存 [root@nodel ~12:26:20]#pvcreate /dev/sdd Physical volume "/dev/sdd" successfully created. [root@nodel ~12:26:59]#vgextend vg0224 /dev/sdd Volume group "vg0224" successfully extended [root@nodel ~12:27:48]#vgs VG #PV #LV #SN Attr VSize VFree centos 1 2 0 wz--n- <19.00g 0 vg0224 3 3 0 wz--n- <79.99g <24.99g [root@nodel ~12:27:51]#此时已经成功扩容 需要重新挂载 xfs_growfs: /dev/vg0224/0224-lv1 is not a mounted XFS filesystem [root@nodel ~12:29:46]#mount /dev/vg0224/0224-lv1 /test1 [root@nodel ~12:31:00]#mount /dev/vg0224/0224-lv2 /test2 [root@nodel ~12:31:07]#mount /dev/vg0224/0224-lv3 /test3 [root@nodel ~12:31:12]#xfs_growfs /dev/vg0224/0224-lv1 meta-data=/dev/mapper/vg0224-0224--lv1 isize=512 agcount=4, agsize=655360 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0 spinodes=0 data = bsize=4096 blocks=2621440, 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 2621440 to 6553600 [root@nodel ~12:31:16]# [root@nodel ~12:32:41]#df -hT Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/centos-root xfs 17G 9.4G 7.7G 56% / devtmpfs devtmpfs 476M 0 476M 0% /dev tmpfs tmpfs 488M 0 488M 0% /dev/shm tmpfs tmpfs 488M 7.7M 480M 2% /run tmpfs tmpfs 488M 0 488M 0% /sys/fs/cgroup /dev/sda1 xfs 1014M 130M 885M 13% /boot tmpfs tmpfs 98M 0 98M 0% /run/user/0 /dev/mapper/vg0224-0224--lv1 xfs 30G 33M 30G 1% /test1 /dev/mapper/vg0224-0224--lv2 xfs 15G 33M 15G 1% /test2 /dev/mapper/vg0224-0224--lv3 ext4 30G 45M 28G 1% /test3 [root@nodel ~12:32:48]#
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了