逻辑卷管理lvm
逻辑卷管理LVM
一 创建逻辑卷
1准备分区或硬盘
这里使用/dev/sdb、/dev/sdc两块硬盘和/dev/sda9、/dev/sda10两个分区,大小都为1G,磁盘有限,我也不想这么抠的。
添加分区/dev/sda9、/dev/sda10
[root@centos7 ~] # 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 All primary partitions are in use Adding logical partition 9 First sector (31885312-41943039, default 31885312): Using default value 31885312 Last sector, +sectors or +size{K,M,G} (31885312-41943039, default 41943039): +1G Partition 9 of type Linux and of size 1 GiB is set |
注意,要修改分区类型为Linux LVM
Command (m for help): t Partition number (1-9, default 9): 8e Partition number (1-9, default 9): 9 Hex code ( type L to list all codes): 8e Changed type of partition 'Linux' to 'Linux LVM' Command (m for help): |
同样的方法创建/dev/sda10。
[root@centos7 ~] # lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 20G 0 disk ├─sda9 8:9 0 1G 0 part └─sda10 8:10 0 1G 0 part sdb 8:16 0 1G 0 disk sdc 8:32 0 1G 0 disk |
2 创建PV(物理卷)
命令格式为:pvcreate DEVICE,可以一次创建一个设备,也可以一次创建多个设备。
查看物理卷命令:pvdisplay(查看详细信息)、pvs(查看简易信息)
[root@centos7 ~] # pvcreate /dev/sda9 Physical volume "/dev/sda9" successfully created. [root@centos7 ~] # pvcreate /dev/sda10 /dev/sdb /dev/sdc Physical volume "/dev/sda10" successfully created. Physical volume "/dev/sdb" successfully created. Physical volume "/dev/sdc" successfully created. |
查看物理卷,看到已经成功创建。
[root@centos7 ~] # pvs PV VG Fmt Attr PSize PFree /dev/sda10 lvm2 --- 1.00g 1.00g /dev/sda9 lvm2 --- 1.00g 1.00g /dev/sdb lvm2 --- 1.00g 1.00g /dev/sdc lvm2 --- 1.00g 1.00g |
3 创建卷组(VG)
命令格式为:vgcreate -s PE VGNAME(vg名) DEVICE(设备名)
-s :指定物理扩展块大小 既就是PE的大小
查看命令:vgs、vgdisplay
1 2 | [root@centos7 ~] # vgcreate -s 16M vg0 /dev/sda9 /dev/sda10 /dev/sdb /dev/sdc<br> Volume group "vg0" successfully created |
查看一下
1 2 3 4 | [root@centos7 ~] # vgs VG #PV #LV #SN Attr VSize VFree vg0 4 0 0 wz--n- 3.94g 3.94g |
再来看下详细信息
[root@centos7 ~] # vgdisplay --- Volume group --- VG Name vg0 System ID Format lvm2 Metadata Areas 4 Metadata Sequence No 1 VG Access read /write VG Status resizable MAX LV 0 Cur LV 0 Open LV 0 Max PV 0 Cur PV 4 Act PV 4 VG Size 3.94 GiB PE Size 16.00 MiB Total PE 252 Alloc PE / Size 0 / 0 Free PE / Size 252 / 3.94 GiB VG UUID qmoIMg-5wQR-GKCS-dpq9-HLrt-zVIi-JBC9ZX |
一切都复合预期,大小约为4G,正好是两个分区和两个硬盘之和。
4创建逻辑卷(LV)
命令格式为:lvcreate -n LVNAME(指定LV名) -L SIZE(指定LV的大小) vg0(要使用的VG)
-l 指定PE 大小
查看命令(类似PV、VG):lvs、lvdisplay
1 2 3 | [root@centos7 ~] # lvcreate -n lv0 -L 3G vg0 Logical volume "lv0" created. |
创建成功,查看一下
[root@centos7 ~] # lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert lv0 vg0 -wi-a----- 3.00g |
再看下详细信息
[root@centos7 ~] # lvdisplay --- Logical volume --- LV Path /dev/vg0/lv0 LV Name lv0 VG Name vg0 LV UUID 622i7m-uy6s-3nZI-8xSb-sxrR-cZzz-C9pwkd LV Write Access read /write LV Creation host, time centos7.3.loacl, 2017-04-25 16:25:13 +0800 LV Status available # open 0 LV Size 3.00 GiB Current LE 192 Segments 4 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:0 |
可以确定已经成功创建。
现在就可以把/dev/vg0/lv0当做一块硬盘使用了。
现在看一下磁盘信息,已经发生了变化。
[root@centos7 ~] # lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT fd0 2:0 1 4K 0 disk sda 8:0 0 20G 0 disk ├─sda9 8:9 0 1G 0 part │ └─vg0-lv0 253:0 0 3G 0 lvm └─sda10 8:10 0 1G 0 part └─vg0-lv0 253:0 0 3G 0 lvm sdb 8:16 0 1G 0 disk └─vg0-lv0 253:0 0 3G 0 lvm sdc 8:32 0 1G 0 disk └─vg0-lv0 253:0 0 3G 0 lvm |
可以看到,所加入的分区和硬盘已经属于vg0-lv0了。
5 创建文件系统,格式化
1 2 3 | mkfs.ext4 /dev/vg0/lv0 [root@centos7 ~] # mkfs.ext4 /dev/vg0/lv0 |
6 挂载使用
[root@centos7 ~] # mkdir /mnt/lv0 [root@centos7 ~] # mount /dev/vg0/lv0 /mnt/lv0 |
二 扩展LV
扩展命令格式:
lvextend -L 100G /dev/vg0/lv0 lvextend -l +100G /dev/vg0/lv0 lvextend -l +100%FREE /dev/vg0/lv0 |
注意 –L 为扩展到多少 ,-l 为扩展(增加)多少,+100%FREE为扩展剩余vg的100%,可根据个人情况进行选择。
由于vg0还预留将近1G 空间,现在扩展一下lv0
1 先来查看原有LV
[root@centos7 ~] # vgs VG #PV #LV #SN Attr VSize VFree vg0 4 1 0 wz--n- 3.94g 960.00m |
2 扩展LV
[root@centos7 ~] # lvextend -r -l +100%FREE /dev/vg0/lv0 |
-r为resizefs 一步搞定多方便
或者麻烦一点,一步一步来
[root@centos7 ~] # lvextend -l +100%FREE /dev/vg0/lv0 Size of logical volume vg0 /lv0 changed from 3.00 GiB (192 extents) to 3.94 GiB (252 extents). Logical volume vg0 /lv0 successfully resized. |
3 下来重定义文件系统大小
ext系列文件系统重定义:resize2fs /dev/vg0/lv0
xfs系列文件系统重定义:xfs_growfs /dev/vg0/lv0
[root@centos7 ~] # resize2fs /dev/vg0/lv0 resize2fs 1.42.9 (28-Dec-2013) Filesystem at /dev/vg0/lv0 is mounted on /mnt/lv0 ; on-line resizing required old_desc_blocks = 1, new_desc_blocks = 1 The filesystem on /dev/vg0/lv0 is now 1032192 blocks long. |
4 检查文件系统完成性(也可不做)
[root@centos7 ~] # fsck.ext4 /dev/vg0/lv0 e2fsck 1.42.9 (28-Dec-2013) /dev/vg0/lv0 : clean, 20 /262144 files, 35918 /1032192 blocks |
5 确认逻辑卷大小
[root@centos7 ~] # df -h /dev/vg0/lv0 Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg0-lv0 3.9G 12M 3.6G 1% /mnt/lv0 |
很明显已经扩展成功。
6 挂载使用
[root@centos7 ~] # mount -o remount /dev/vg0/lv0 |
三 缩减LV
1 备份数据
虽然一般不会丢失数据,但是为了保险起见。还是先备份为好。
看下/mnt/lv0目录下现有的数据
[root@centos7 ~] # ls /mnt/lv0/ lost+found myfile2 myfile4 myfile6 myfile8 myfile1 myfile3 myfile5 myfile7 myfile9 [root@centos7 ~] # mkdir /backup [root@centos7 ~] # cp -a /mnt/lv0/* /backup/ |
2 卸载/dev/vg0/lv0
[root@centos7 ~] # umount /mnt/lv0/ |
3 检查文件系统
e2fsck -f /dev/vg0/lv0 在重新定义文件系统大小之前必须检查磁盘完成性
[root@centos7 ~] # e2fsck -f /dev/vg0/lv0 e2fsck 1.42.9 (28-Dec-2013) Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information /dev/vg0/lv0 : 20 /262144 files (0.0% non-contiguous), 35918 /1032192 blocks |
4下来重定义文件系统大小
resize2fs /dev/vg0/lv0 2G #2G位缩减后的LV 大小。
[root@centos7 ~] # resize2fs /dev/vg0/lv0 2G resize2fs 1.42.9 (28-Dec-2013) Resizing the filesystem on /dev/vg0/lv0 to 524288 (4k) blocks. The filesystem on /dev/vg0/lv0 is now 524288 blocks long. |
5 缩减LV
lvreduce -L 2G /dev/vg0/lv0 #缩减到2G
[root@centos7 ~] # lvreduce -L 2G /dev/vg0/lv0 WARNING: Reducing active logical volume to 2.00 GiB. THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce vg0 /lv0 ? [y /n ]: y Size of logical volume vg0 /lv0 changed from 3.94 GiB (252 extents) to 2.00 GiB (128 extents). Logical volume vg0 /lv0 successfully resized. |
6 挂载使用
mount /dev/vg0/lv0 /mnt/lv0 [root@centos7 ~] # mount /dev/vg0/lv0 /mnt/lv0/ |
查看磁盘挂载情况
[root@centos7 ~] # df -h /dev/vg0/lv0 Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg0-lv0 2.0G 9.0M 1.8G 1% /mnt/lv0 |
7 确认数据是否丢失
现在再来开心目录/mnt/lv0 的内容
[root@centos7 ~] # ls /mnt/lv0/ lost+found myfile2 myfile4 myfile6 myfile8 myfile1 myfile3 myfile5 myfile7 myfile9 |
很完美,数据并没有丢失!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!