Linux-LVM管理
LVM简介
LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制
应用场景:
随着公司的发展,数据增长较快,最初规划的磁盘容量不够用了
弊端:
数据不是直接存放在硬盘上,而是在硬盘的上面又虚拟出来一层逻辑卷存放数据,故而增加了磁盘数据恢复的难度
物理卷、卷组、逻辑卷
物理卷(PV):把常规的块设备(硬盘,分区等可以读写数据的设备)通过pvcreate命令对其进行初始化,就成了物理卷
卷组(VG):把多个物理卷的容量组成一个逻辑整体,可以从里面灵活分配容量
逻辑卷(LV):从卷组中划分部分空间成为一个可以读写数据的逻辑单元,需要对其格式化然后挂载使用
部署LVM
第一步:准备物理磁盘(这里创建了3个20G的硬盘)
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 100G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 99G 0 part
├─rhel-root 253:0 0 50G 0 lvm /
├─rhel-swap 253:1 0 2G 0 lvm [SWAP]
└─rhel-home 253:2 0 47G 0 lvm /home
sdb 8:16 0 20G 0 disk
sdc 8:32 0 20G 0 disk
sdd 8:48 0 20G 0 disk
sr0 11:0 1 1024M 0 rom
//给sdb分3个分区,大小分别是5G、7G、8G
[root@localhost ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.32.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x15bdf929.
Command (m for help): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p):
Using default response p.
Partition number (1-4, default 1):
First sector (2048-41943039, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-41943039, default 41943039): +5G
Created a new partition 1 of type 'Linux' and of size 5 GiB.
Command (m for help): n
Partition type
p primary (1 primary, 0 extended, 3 free)
e extended (container for logical partitions)
Select (default p):
Using default response p.
Partition number (2-4, default 2):
First sector (10487808-41943039, default 10487808):
Last sector, +sectors or +size{K,M,G,T,P} (10487808-41943039, default 41943039): +7G
Created a new partition 2 of type 'Linux' and of size 7 GiB.
Command (m for help): n
Partition type
p primary (2 primary, 0 extended, 2 free)
e extended (container for logical partitions)
Select (default p):
Using default response p.
Partition number (3,4, default 3):
First sector (25167872-41943039, default 25167872):
Last sector, +sectors or +size{K,M,G,T,P} (25167872-41943039, default 41943039):
Created a new partition 3 of type 'Linux' and of size 8 GiB.
Command (m for help): p
Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors
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: dos
Disk identifier: 0x15bdf929
Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 10487807 10485760 5G 83 Linux
/dev/sdb2 10487808 25167871 14680064 7G 83 Linux
/dev/sdb3 25167872 41943039 16775168 8G 83 Linux
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
//刷新分区表
[root@localhost ~]# partprobe
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 100G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 99G 0 part
├─rhel-root 253:0 0 50G 0 lvm /
├─rhel-swap 253:1 0 2G 0 lvm [SWAP]
└─rhel-home 253:2 0 47G 0 lvm /home
sdb 8:16 0 20G 0 disk
├─sdb1 8:17 0 5G 0 part
├─sdb2 8:18 0 7G 0 part
└─sdb3 8:19 0 8G 0 part
sdc 8:32 0 20G 0 disk
sdd 8:48 0 20G 0 disk
sr0 11:0 1 1024M 0 rom
第二步:创建物理卷(这里我们用分区sdb1和磁盘sdc举例)
//将分区sdb1初始化为物理卷
[root@localhost ~]# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created.
//查看物理卷的概要信息
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 rhel lvm2 a-- <99.00g 0
/dev/sdb1 lvm2 --- 5.00g 5.00g
//将磁盘sdc初始化为物理卷
[root@localhost ~]# pvcreate /dev/sdc
Physical volume "/dev/sdc" successfully created.
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 rhel lvm2 a-- <99.00g 0
/dev/sdb1 lvm2 --- 5.00g 5.00g
/dev/sdc lvm2 --- 20.00g 20.00g
第三步:创建卷组,将物理卷加入卷组
//创建一个名为vg0的卷组,并将分区sdb1加入vg0卷组
[root@localhost ~]# vgcreate vg0 /dev/sdb1
Volume group "vg0" successfully created
//查看卷组的概要信息
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
rhel 1 3 0 wz--n- <99.00g 0
vg0 1 0 0 wz--n- <5.00g <5.00g
第四步:创建逻辑卷, 在卷组中划分逻辑卷
////创建一个4G的逻辑卷lv0,卷组为vg0
[root@localhost ~]# lvcreate -n lv0 -L 4G vg0
Logical volume "lv0" created.
//查看逻辑卷的概要信息
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
home rhel -wi-ao---- 46.95g
root rhel -wi-ao---- 50.00g
swap rhel -wi-ao---- 2.04g
lv0 vg0 -wi-a----- 4.00g
//检查逻辑卷
[root@localhost ~]# lvscan
ACTIVE '/dev/vg0/lv0' [4.00 GiB] inherit
ACTIVE '/dev/rhel/swap' [2.04 GiB] inherit
ACTIVE '/dev/rhel/home' [46.95 GiB] inherit
ACTIVE '/dev/rhel/root' [50.00 GiB] inherit
第五步:格式化逻辑卷
//将逻辑卷lv0格式化成xfs格式
[root@localhost ~]# mkfs.xfs /dev/vg0/lv0
meta-data=/dev/vg0/lv0 isize=512 agcount=4, agsize=262144 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
data = bsize=4096 blocks=1048576, 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
//查看逻辑卷lv0的UUID
[root@localhost ~]# blkid /dev/vg0/lv0
/dev/mapper/vg0-lv0: UUID="a18169e8-6d51-450c-9b70-6329f7742936" TYPE="xfs"
第六步:挂载并使用
[root@localhost ~]# mkdir /lvm
[root@localhost ~]# mount UUID="a18169e8-6d51-450c-9b70-6329f7742936" /lvm
[root@localhost ~]# df -hT /dev/vg0/lv1
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/vg0-lv0 xfs 4.0G 61M 4.0G 2% /lvm
[root@localhost ~]# cd /lvm
[root@localhost lvm]# touch yqh
[root@localhost lvm]# ll
total 0
-rw-r--r--. 1 root root 0 Dec 4 19:16 yqh
//写配置文件,将lv0永久挂载
UUID="a18169e8-6d51-450c-9b70-6329f7742936" /lvm xfs defaults 0 0
//取消挂载
[root@localhost ~]# umount /lvm
//重新读取配置文件,检查是否成功
[root@localhost ~]# mount -a
[root@localhost ~]# df -hT /dev/vg0/lv1
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/vg0-lv0 xfs 4.0G 61M 4.0G 2% /lvm
卷组扩展
扩展卷组,将新磁盘加入卷组
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 rhel lvm2 a-- <99.00g 0
/dev/sdb1 vg0 lvm2 a-- <5.00g 1020.00m
/dev/sdc lvm2 --- 20.00g 20.00g
//把磁盘sdc加入卷组vg0中
[root@localhost ~]# vgextend vg0 /dev/sdc
Volume group "vg0" successfully extended
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 rhel lvm2 a-- <99.00g 0
/dev/sdb1 vg0 lvm2 a-- <5.00g 1020.00m
/dev/sdc vg0 lvm2 a-- <20.00g <20.00g
//vg0从20G扩展到了25G
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
rhel 1 3 0 wz--n- <99.00g 0
vg0 2 1 0 wz--n- 24.99g 20.99g
逻辑卷扩展
逻辑卷扩展,逻辑卷的扩展取决于卷组中的容量,逻辑卷扩展的容量不能超过卷组的容量
xfs扩展文件系统的逻辑卷扩展
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
home rhel -wi-ao---- 46.95g
root rhel -wi-ao---- 50.00g
swap rhel -wi-ao---- 2.04g
lv0 vg0 -wi-a----- 4.00g
//将lv0扩展到10G(-L后可以用+6G也可以用10G)
[root@localhost ~]# lvextend -L +6G /dev/vg0/lv0
Size of logical volume vg0/lv0 changed from 4.00 GiB (1024 extents) to 10.00 GiB (2560 extents).
Logical volume vg0/lv0 successfully resized.
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
home rhel -wi-ao---- 46.95g
root rhel -wi-ao---- 50.00g
swap rhel -wi-ao---- 2.04g
lv0 vg0 -wi-ao---- 10.00g
//查看系统磁盘发现lv0还是4G没有变化
[root@localhost ~]# df -hT /dev/vg0/lv0
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/vg0-lv0 xfs 4.0G 61M 4.0G 2% /lvm
//xfs拉伸扩展
[root@localhost ~]# xfs_growfs /dev/vg0/lv0
meta-data=/dev/mapper/vg0-lv0 isize=512 agcount=4, agsize=262144 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
data = bsize=4096 blocks=1048576, 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
data blocks changed from 1048576 to 2621440
[root@localhost ~]# df -hT /dev/vg0/lv0
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/vg0-lv0 xfs 10G 105M 9.9G 2% /lvm
分配磁盘池中百分之50给逻辑卷
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
rhel 1 3 0 wz--n- <99.00g 0
vg0 2 1 0 wz--n- 24.99g 14.99g
[root@localhost ~]# lvextend -l +50%free /dev/vg0/lv0
Size of logical volume vg0/lv0 changed from 10.00 GiB (2560 extents) to <17.50 GiB (4479 extents).
Logical volume vg0/lv0 successfully resized.
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
home rhel -wi-ao---- 46.95g
root rhel -wi-ao---- 50.00g
swap rhel -wi-ao---- 2.04g
lv0 vg0 -wi-ao---- <17.50g
//xfs拉伸扩展
[root@localhost ~]# xfs_growfs /dev/vg0/lv0
meta-data=/dev/mapper/vg0-lv0 isize=512 agcount=10, agsize=262144 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
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
data blocks changed from 2621440 to 4586496
[root@localhost ~]# df -hT /dev/vg0/lv0
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/vg0-lv0 xfs 18G 159M 18G 1% /lvm
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 100G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 99G 0 part
├─rhel-root 253:0 0 50G 0 lvm /
├─rhel-swap 253:1 0 2G 0 lvm [SWAP]
└─rhel-home 253:2 0 47G 0 lvm /home
sdb 8:16 0 20G 0 disk
├─sdb1 8:17 0 5G 0 part
│ └─vg0-lv0 253:3 0 17.5G 0 lvm /lvm
├─sdb2 8:18 0 7G 0 part
└─sdb3 8:19 0 8G 0 part
sdc 8:32 0 20G 0 disk
└─vg0-lv0 253:3 0 17.5G 0 lvm /lvm
sdd 8:48 0 20G 0 disk
sr0 11:0 1 1024M 0 rom
ext4文件系统的逻辑卷扩展
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
rhel 1 3 0 wz--n- <99.00g 0
vg0 2 1 0 wz--n- 24.99g <7.50g
//创建一个3G的逻辑卷lv1,卷组为vg0
[root@localhost ~]# lvcreate -n lv1 -L 3G vg0
Logical volume "lv1" created.
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
home rhel -wi-ao---- 46.95g
root rhel -wi-ao---- 50.00g
swap rhel -wi-ao---- 2.04g
lv0 vg0 -wi-ao---- <17.50g
lv1 vg0 -wi-a----- 3.00g
//将逻辑卷lv1格式化成xfs格式
[root@localhost ~]# mkfs.ext4 /dev/vg0/lv1
mke2fs 1.45.4 (23-Sep-2019)
Creating filesystem with 786432 4k blocks and 196608 inodes
Filesystem UUID: cb9d74f0-f461-4302-8597-edd39bd2d9d2
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912
Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 100G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 99G 0 part
├─rhel-root 253:0 0 50G 0 lvm /
├─rhel-swap 253:1 0 2G 0 lvm [SWAP]
└─rhel-home 253:2 0 47G 0 lvm /home
sdb 8:16 0 20G 0 disk
├─sdb1 8:17 0 5G 0 part
│ └─vg0-lv0 253:3 0 17.5G 0 lvm /lvm
├─sdb2 8:18 0 7G 0 part
└─sdb3 8:19 0 8G 0 part
sdc 8:32 0 20G 0 disk
├─vg0-lv0 253:3 0 17.5G 0 lvm /lvm
└─vg0-lv1 253:4 0 3G 0 lvm
sdd 8:48 0 20G 0 disk
sr0 11:0 1 1024M 0 rom
[root@localhost ~]# mkdir /ext4
//查看逻辑卷lv1的UUID
[root@localhost ~]# blkid /dev/vg0/lv1
/dev/vg0/lv1: UUID="cb9d74f0-f461-4302-8597-edd39bd2d9d2" TYPE="ext4"
//写永久挂载配置文件
[root@localhost ~]# vi /etc/fstab
UUID="cb9d74f0-f461-4302-8597-edd39bd2d9d2" /ext4 ext4 defaults 0 0
//读取挂载配置文件
[root@localhost ~]# mount -a
//将lv1扩容到6G
[root@localhost ~]# lvextend -L 6G /dev/vg0/lv1
Size of logical volume vg0/lv1 changed from 3.00 GiB (768 extents) to 6.00 GiB (1536 extents).
Logical volume vg0/lv1 successfully resized.
[root@localhost ~]# df -hT /dev/vg0/lv1
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/vg0-lv1 ext4 2.9G 9.0M 2.8G 1% /ext4
//拉伸扩容
[root@localhost ~]# resize2fs /dev/vg0/lv1
resize2fs 1.45.4 (23-Sep-2019)
Filesystem at /dev/vg0/lv1 is mounted on /ext4; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/vg0/lv1 is now 1572864 (4k) blocks long.
[root@localhost ~]# df -hT /dev/vg0/lv1
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/vg0-lv1 ext4 5.9G 12M 5.6G 1% /ext4
数据迁移卷组
同一卷组的磁盘才可以进行在线迁移
小拓展:请问什么情况下需要迁移数据?
答:当硬盘坏了不能写入数据,要拿去修的时候,需要迁移数据。
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 rhel lvm2 a-- <99.00g 0
/dev/sdb1 vg0 lvm2 a-- <5.00g 0
/dev/sdc vg0 lvm2 a-- <20.00g <1.50g
//将sdd创建成物理卷
[root@localhost ~]# pvcreate /dev/sdd
Physical volume "/dev/sdd" successfully created.
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 rhel lvm2 a-- <99.00g 0
/dev/sdb1 vg0 lvm2 a-- <5.00g 0
/dev/sdc vg0 lvm2 a-- <20.00g <1.50g
/dev/sdd lvm2 --- 20.00g 20.00g
//将sdd加入卷组vg0中
[root@localhost ~]# vgextend vg0 /dev/sdd
Volume group "vg0" successfully extended
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
rhel 1 3 0 wz--n- <99.00g 0
vg0 3 2 0 wz--n- <44.99g 21.49g
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 rhel lvm2 a-- <99.00g 0
/dev/sdb1 vg0 lvm2 a-- <5.00g 0
/dev/sdc vg0 lvm2 a-- <20.00g <1.50g
/dev/sdd vg0 lvm2 a-- <20.00g <20.00g
//pvmove在线数据将sdb1迁移至其他pv(这里由于只有sdd有空间,所以将数据默认移到sdd里去了)
[root@localhost ~]# pvmove /dev/sdb1
/dev/sdb1: Moved: 0.23%
/dev/sdb1: Moved: 100.00%
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 rhel lvm2 a-- <99.00g 0
/dev/sdb1 vg0 lvm2 a-- <5.00g <5.00g
/dev/sdc vg0 lvm2 a-- <20.00g <1.50g
/dev/sdd vg0 lvm2 a-- <20.00g 15.00g
//将sdb1从卷组vg0中移除
[root@localhost ~]# vgreduce vg0 /dev/sdb1
Removed "/dev/sdb1" from volume group "vg0"
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 rhel lvm2 a-- <99.00g 0
/dev/sdb1 lvm2 --- 5.00g 5.00g
/dev/sdc vg0 lvm2 a-- <20.00g <1.50g
/dev/sdd vg0 lvm2 a-- <20.00g 15.00g
//将sdb1从物理卷中移除
[root@localhost ~]# pvremove /dev/sdb1
Labels on physical volume "/dev/sdb1" successfully wiped.
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 rhel lvm2 a-- <99.00g 0
/dev/sdc vg0 lvm2 a-- <20.00g <1.50g
/dev/sdd vg0 lvm2 a-- <20.00g 15.00g
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 100G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 99G 0 part
├─rhel-root 253:0 0 50G 0 lvm /
├─rhel-swap 253:1 0 2G 0 lvm [SWAP]
└─rhel-home 253:2 0 47G 0 lvm /home
sdb 8:16 0 20G 0 disk
├─sdb1 8:17 0 5G 0 part
├─sdb2 8:18 0 7G 0 part
└─sdb3 8:19 0 8G 0 part
sdc 8:32 0 20G 0 disk
├─vg0-lv0 253:3 0 17.5G 0 lvm /lvm
└─vg0-lv1 253:4 0 6G 0 lvm /ext4
sdd 8:48 0 20G 0 disk
└─vg0-lv0 253:3 0 17.5G 0 lvm /lvm
sr0 11:0 1 1024M 0 rom
小扩展:如何把sdb3中的7G空间扩容到root中?
//将sdb3创建成为物理卷
[root@localhost ~]# pvcreate /dev/sdb3
Physical volume "/dev/sdb3" successfully created.
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 rhel lvm2 a-- <99.00g 0
/dev/sdb3 lvm2 --- <8.00g <8.00g
/dev/sdc vg0 lvm2 a-- <20.00g <1.50g
/dev/sdd vg0 lvm2 a-- <20.00g 15.00g
//将物理卷sdb3加入到rhel卷组中
[root@localhost ~]# vgextend rhel /dev/sdb3
Volume group "rhel" successfully extended
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 rhel lvm2 a-- <99.00g 0
/dev/sdb3 rhel lvm2 a-- <8.00g <8.00g
/dev/sdc vg0 lvm2 a-- <20.00g <1.50g
/dev/sdd vg0 lvm2 a-- <20.00g 15.00g
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
rhel 2 3 0 wz--n- 106.99g <8.00g
vg0 2 2 0 wz--n- 39.99g <16.50g
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
home rhel -wi-ao---- 46.95g
root rhel -wi-ao---- 50.00g
swap rhel -wi-ao---- 2.04g
lv0 vg0 -wi-ao---- <17.50g
lv1 vg0 -wi-ao---- 6.00g
//将root扩容加7G
[root@localhost ~]# lvextend -L +7G /dev/rhel/root
Size of logical volume rhel/root changed from 50.00 GiB (12800 extents) to 57.00 GiB (14592 extents).
Logical volume rhel/root successfully resized.
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
home rhel -wi-ao---- 46.95g
root rhel -wi-ao---- 57.00g
swap rhel -wi-ao---- 2.04g
lv0 vg0 -wi-ao---- <17.50g
lv1 vg0 -wi-ao---- 6.00g
[root@localhost ~]# df -hT /dev/rhel/root
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/rhel-root xfs 50G 1.7G 49G 4% /
//xfs拉伸扩容
[root@localhost ~]# xfs_growfs /dev/rhel/root
meta-data=/dev/mapper/rhel-root isize=512 agcount=4, agsize=3276800 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
data = bsize=4096 blocks=13107200, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=6400, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 13107200 to 14942208
[root@localhost ~]# df -hT /dev/rhel/root
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/rhel-root xfs 57G 1.7G 56G 3% /
逻辑卷裁剪
只能对ext4
文件系统的逻辑卷进行裁剪容量
xfs
文件系统的逻辑卷不能进行裁剪
准备工作:
//这里用lv1进行演示,添加点文件看剪裁后会不会损坏
[root@localhost ~]# df -hT /dev/vg0/lv1
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/vg0-lv1 ext4 5.9G 12M 5.6G 1% /ext4
[root@localhost ~]# cd /ext4/
[root@localhost ext4]# echo 'hello yqh' > abc
[root@localhost ext4]# cp /etc/passwd .
[root@localhost ext4]# ls
abc lost+found passwd
[root@localhost ext4]# cd
[root@localhost ~]# du -sh /ext4/
28K /ext4/
第一步:如果已经挂载,必须先卸载
[root@localhost ~]# umount /ext4
第二步:检测文件系统
[root@localhost ~]# e2fsck -f /dev/vg0/lv1
e2fsck 1.45.4 (23-Sep-2019)
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/lv1: 13/393216 files (0.0% non-contiguous), 44144/1572864 blocks
//调整裁剪大小,检测是否能够裁剪
[root@localhost ~]# resize2fs /dev/vg0/lv1 200M
resize2fs 1.45.4 (23-Sep-2019)
Resizing the filesystem on /dev/vg0/lv1 to 51200 (4k) blocks.
The filesystem on /dev/vg0/lv1 is now 51200 (4k) blocks long.
第三步:裁剪逻辑卷空间
[root@localhost ~]# lvreduce -L 200M /dev/vg0/lv1
WARNING: Reducing active logical volume to 200.00 MiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vg0/lv1? [y/n]: y
Size of logical volume vg0/lv1 changed from 6.00 GiB (1536 extents) to 200.00 MiB (50 extents).
Logical volume vg0/lv1 successfully resized.
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
home rhel -wi-ao---- 46.95g
root rhel -wi-ao---- 57.00g
swap rhel -wi-ao---- 2.04g
lv0 vg0 -wi-ao---- <17.50g
lv1 vg0 -wi-a----- 200.00m
第四步:再次检测文件系统
[root@localhost ~]# e2fsck -f /dev/vg0/lv1
e2fsck 1.45.4 (23-Sep-2019)
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/lv1: 13/16384 files (0.0% non-contiguous), 18190/51200 blocks
第五步:挂载测试
[root@localhost ~]# blkid /dev/vg0/lv1
/dev/vg0/lv1: UUID="cb9d74f0-f461-4302-8597-edd39bd2d9d2" TYPE="ext4"
[root@localhost ~]# vi /etc/fstab
UUID="cb9d74f0-f461-4302-8597-edd39bd2d9d2" /ext4 ext4 defaults 0 0
[root@localhost ~]# mount -a
[root@localhost ~]# df -hT /dev/vg0/lv1
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/vg0-lv1 ext4 132M 3.1M 116M 3% /ext4
[root@localhost ~]# cd /ext4/
[root@localhost ext4]# ls
abc lost+found passwd
[root@localhost ext4]# cat abc
hello yqh
[root@localhost ext4]# ll passwd /etc/passwd
-rw-r--r--. 1 root root 1106 Dec 4 15:11 /etc/passwd
-rw-r--r--. 1 root root 1106 Dec 4 21:43 passwd
缩减逻辑卷注意事项:
- 不能在线缩减,得先卸载;
- 确保缩减后的空间大小依然能存储原有的所有数据;
- 在缩减之前应该先强行检查文件,以确保文件系统处于一致性状态。
查看详细信息
pvdisplay 查看物理卷详细信息
[root@localhost ~]# pvdisplay
--- Physical volume ---
PV Name /dev/sdc
VG Name vg0
PV Size 20.00 GiB / not usable 4.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 5119
Free PE 1869
Allocated PE 3250
PV UUID XIfvPh-uen9-C4NP-JNIg-n24Q-Ufbo-CpN0M0
--- Physical volume ---
PV Name /dev/sdd
VG Name vg0
PV Size 20.00 GiB / not usable 4.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 5119
Free PE 3840
Allocated PE 1279
PV UUID 77Qm2h-80g9-YAG0-AG0i-PSuJ-BfLV-d8AHaJ
--- Physical volume ---
PV Name /dev/sda2
VG Name rhel
PV Size <99.00 GiB / not usable 3.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 25343
Free PE 0
Allocated PE 25343
PV UUID KOdE0D-yQe5-Sgg0-R6j0-eO82-orSM-1uRLU0
--- Physical volume ---
PV Name /dev/sdb3
VG Name rhel
PV Size <8.00 GiB / not usable 3.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 2047
Free PE 255
Allocated PE 1792
PV UUID s4hjIw-A6lo-w47q-KWut-8uHb-CuRr-2mqigB
vgdisplay 查看卷组详细信息
[root@localhost ~]# vgdisplay
--- Volume group ---
VG Name vg0
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 13
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
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 4529 / 17.69 GiB
Free PE / Size 5709 / 22.30 GiB
VG UUID 0iMBSz-enXW-41Ht-l0Uw-s0FJ-IHKd-huxaI5
--- Volume group ---
VG Name rhel
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 6
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 3
Open LV 3
Max PV 0
Cur PV 2
Act PV 2
VG Size 106.99 GiB
PE Size 4.00 MiB
Total PE 27390
Alloc PE / Size 27135 / <106.00 GiB
Free PE / Size 255 / 1020.00 MiB
VG UUID tWcoeV-G0iX-sog6-uncL-LDQf-MuDp-hMiMmv
lvdisplay 查看逻辑卷详细信息
[root@localhost ~]# lvdisplay
--- Logical volume ---
LV Path /dev/vg0/lv0
LV Name lv0
VG Name vg0
LV UUID djEzeX-uBe4-GmcL-7Fo1-PkDP-7qei-nSXjL4
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2020-12-04 19:15:16 +0800
LV Status available
# open 1
LV Size <17.50 GiB
Current LE 4479
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:3
--- Logical volume ---
LV Path /dev/vg0/lv1
LV Name lv1
VG Name vg0
LV UUID q7smcB-UJdz-MtQ5-AVao-Snrv-jCH9-JirHNO
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2020-12-04 19:23:23 +0800
LV Status available
# open 1
LV Size 200.00 MiB
Current LE 50
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:4
--- Logical volume ---
LV Path /dev/rhel/swap
LV Name swap
VG Name rhel
LV UUID snKxjg-XAyh-k024-MUYE-3oGN-690L-AlsVcK
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2020-12-04 15:09:59 +0800
LV Status available
# open 2
LV Size 2.04 GiB
Current LE 523
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:1
--- Logical volume ---
LV Path /dev/rhel/home
LV Name home
VG Name rhel
LV UUID QSobf6-pvbi-044D-7EK4-FCix-ReLr-3TscQE
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2020-12-04 15:09:59 +0800
LV Status available
# open 1
LV Size 46.95 GiB
Current LE 12020
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:2
--- Logical volume ---
LV Path /dev/rhel/root
LV Name root
VG Name rhel
LV UUID CybXr1-7or4-fHo8-hhtg-eSIx-0rOO-AVl3kO
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2020-12-04 15:10:00 +0800
LV Status available
# open 1
LV Size 57.00 GiB
Current LE 14592
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0