逻辑卷管理器是Linux系统用于对硬盘分区进行管理的一种机制,理论性较强,其创建初衷是为了解决硬盘设备在创建分区后不易修改分区大小的缺陷。尽管对传统的硬盘分区进行强制扩容或缩容从理论上来讲是可行的,但是却可能造成数据的丢失。而LVM技术是在硬盘分区和文件系统之间添加了一个逻辑层,它提供了一个抽象的卷组,可以把多块硬盘进行卷组合并。这样一来,用户不必关心物理硬盘设备的底层架构和布局,就可以实现对硬盘分区的动态调整。
物理卷处于LVM中的最底层,可以将其理解为物理硬盘、硬盘分区或者RAID磁盘阵列,这都可以。卷组建立在物理卷之上,一个卷组可以包含多个物理卷,而且在卷组创建之后也可以继续向其中添加新的物理卷。逻辑卷是用卷组中空闲的资源建立的,并且逻辑卷在建立后可以动态地扩展或缩小空间。这就是LVM的核心理念。
常用的LVM部署命令
功能/命令 |
物理卷管理 |
卷组管理 |
逻辑卷管理 |
扫描 |
pvscan |
vgscan |
lvscan |
建立 |
pvcreate |
vgcreate |
lvcreate |
显示 |
pvdisplay |
vgdisplay |
lvdisplay |
删除 |
pvremove |
vgremove |
lvremove |
扩展 |
|
vgextend |
lvextend |
缩小 |
|
vgreduce |
lvreduce |
我们在日常工作中,对卷组的管理是必须要掌握的
logical volume manager
是linux环境下,对磁盘分区进行管理的一个机制,保证零停机前提下,对文件系统的大小进行调整,实现文件跨越不同的磁盘和分区,LVM提供了一个完美的解决方案
专业术语:
PP:物理分区 用来存储数据的块设备,可以是分区,可以是磁盘,RAID,SAN
PV:物理卷 LVM的基础逻辑块,但是和基本的物理介质(磁盘,分区)不同,包含了lvm的管理参数
VG:卷组:由一个或多个物理卷组成
LV:逻辑卷,LVM的逻辑卷类似于非LVM中的硬盘分区,lv就可以建立文件系统了,基于lv来建立文件系统文件系统,mkfs来格式化这个/dev/sda 最后变成一个个不同的文件系统
PE:每一个物理卷被划分为PE基本单元,是lvm最小的存储单元,具有唯一编号,pe大小可以手动制动,默认4MB
LE:逻辑卷也被划分成le,可被寻址的基本单元,在同一个卷组中,PE和LE大小一定是相同的,而且要一一对应。 说白了就是把pe一个一个映射成le
首先在服务器上添加一块硬盘
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 6.6G 0 rom /run/media/root/RHEL-8-0-0-BaseOS-x86_64
nvme0n1 259:0 0 20G 0 disk
├─nvme0n1p1 259:1 0 1G 0 part /boot
└─nvme0n1p2 259:2 0 19G 0 part
├─rhel-root 253:0 0 17G 0 lvm /
└─rhel-swap 253:1 0 2G 0 lvm [SWAP]
nvme0n2 259:3 0 20G 0 disk
接下来把硬盘分区 分成一个5G大小的物理分区
fdisk /dev/nvme0n2
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 0x25169c5c.
Command (m for help): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 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): p
Disk /dev/nvme0n2: 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: 0x25169c5c
Device Boot Start End Sectors Size Id Type
/dev/nvme0n2p1 2048 10487807 10485760 5G 83 Linux
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
接下来查看分区结构
[root@example ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 6.6G 0 rom /run/media/root/RHEL-8-0-0-BaseOS-x86_64
nvme0n1 259:0 0 20G 0 disk
├─nvme0n1p1 259:1 0 1G 0 part /boot
└─nvme0n1p2 259:2 0 19G 0 part
├─rhel-root 253:0 0 17G 0 lvm /
└─rhel-swap 253:1 0 2G 0 lvm [SWAP]
nvme0n2 259:3 0 20G 0 disk
└─nvme0n2p1 259:5 0 5G 0 part
[root@rhel8-server ~]# pvcreate /dev/nvme0n2p1
Physical volume "/dev/nvme0n2p1" successfully created.
[root@rhel8-server ~]# pvdisplay /dev/nvme0n2p1
"/dev/nvme0n2p1" is a new physical volume of "5.00 GiB"
--- NEW Physical volume ---
PV Name /dev/nvme0n2p1
VG Name
PV Size 5.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID SnoSyc-5chx-BXiE-5Uj0-Kbv5-qeVN-ojmzbr
[root@rhel8-server ~]# vgcreate -s 4M testvg /dev/nvme0n2p1
Volume group "testvg" successfully created
[root@rhel8-server ~]# vgdisplay testvg
--- Volume group ---
VG Name testvg
System ID
Format lvm2
Metadata Areas 1
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 1
Act PV 1
VG Size <5.00 GiB
PE Size 4.00 MiB
Total PE 1279
Alloc PE / Size 0 / 0
Free PE / Size 1279 / <5.00 GiB
VG UUID zNBk30-0L0P-3S1f-AjqM-iPwq-ttAY-pPLAWH
[root@rhel8-server ~]# lvcreate -l 1024 -n testlv testvg
Logical volume "testlv" created.
[root@rhel8-server ~]# lvdisplay /dev/testvg/testlv
--- Logical volume ---
LV Path /dev/testvg/testlv
LV Name testlv
VG Name testvg
LV UUID 3wtCKQ-BBqQ-lFd3-gCRY-E0aC-tDtC-Imt6pI
LV Write Access read/write
LV Creation host, time rhel8-server, 2022-01-18 00:59:29 -0500
LV Status available
# open 0
LV Size 4.00 GiB
Current LE 1024
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:2
做文件系统
[root@rhel8-server ~]# mkfs.ext4 /dev/mapper/testvg-testlv
mke2fs 1.44.3 (10-July-2018)
Creating filesystem with 1048576 4k blocks and 262144 inodes
Filesystem UUID: b64f2471-3dc5-4e51-892e-ff64571ed986
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736
Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done
挂载
[root@rhel8-server ~]# mkdir /volume1
[root@rhel8-server ~]# vim /etc/fstab
编辑内容:
#
# /etc/fstab
# Created by anaconda on Fri Jan 7 22:26:04 2022
#
# Accessible filesystems, by reference, are maintained under '/dev/disk/'.
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
/dev/mapper/rhel-root / xfs defaults 0 0
UUID=7002282d-fea0-4380-9a2b-6495aba65ee6 /boot xfs defaults 0 0
/dev/mapper/rhel-swap swap swap defaults 0 0
/dev/mapper/testvg-testlv /volume1 ext4 defaults 0 0
[root@rhel8-server ~]# mount -a 这一步如果有问题 开机会进入rescure模式,一定要小心
[root@rhel8-server ~]# df -hT
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 18M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/rhel-root xfs 17G 4.0G 14G 24% /
/dev/nvme0n1p1 xfs 1014M 169M 846M 17% /boot
tmpfs tmpfs 376M 16K 376M 1% /run/user/42
tmpfs tmpfs 376M 4.0K 376M 1% /run/user/0
/dev/mapper/testvg-testlv ext4 3.9G 16M 3.7G 1% /volume1
看到最后这个逻辑卷挂载成功即实验完成
实验2 : 逻辑卷扩容
注意点 扩容大小限制是VG的大小限制,最多扩容不能超过vg的总大小
[root@rhel8-server ~]# vgdisplay testvg
--- Volume group ---
VG Name testvg
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 2
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 1
Act PV 1
VG Size <5.00 GiB
PE Size 4.00 MiB
Total PE 1279
Alloc PE / Size 1024 / 4.00 GiB
Free PE / Size 255 / 1020.00 MiB
VG UUID zNBk30-0L0P-3S1f-AjqM-iPwq-ttAY-pPLAWH
[root@rhel8-server ~]#
[root@rhel8-server ~]#
[root@rhel8-server ~]#
[root@rhel8-server ~]# lvextend -L 4.8G /dev/testvg/testlv
Rounding size to boundary between physical extents: 4.80 GiB.
Size of logical volume testvg/testlv changed from 4.00 GiB (1024 extents) to 4.80 GiB (1229 extents).
Logical volume testvg/testlv successfully resized.
[root@rhel8-server ~]#
[root@rhel8-server ~]#
[root@rhel8-server ~]#
[root@rhel8-server ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root rhel -wi-ao---- <17.00g
swap rhel -wi-ao---- 2.00g
testlv testvg -wi-ao---- 4.80g
[root@rhel8-server ~]# df -hT
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 18M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/rhel-root xfs 17G 4.0G 14G 24% /
/dev/nvme0n1p1 xfs 1014M 169M 846M 17% /boot
tmpfs tmpfs 376M 16K 376M 1% /run/user/42
tmpfs tmpfs 376M 4.0K 376M 1% /run/user/0
/dev/mapper/testvg-testlv ext4 3.9G 16M 3.7G 1% /volume1
[root@rhel8-server ~]# resize2fs /dev/testvg/testlv
resize2fs 1.44.3 (10-July-2018)
Filesystem at /dev/testvg/testlv is mounted on /volume1; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/testvg/testlv is now 1258496 (4k) blocks long.
[root@rhel8-server ~]# df -hT
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 18M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/rhel-root xfs 17G 4.0G 14G 24% /
/dev/nvme0n1p1 xfs 1014M 169M 846M 17% /boot
tmpfs tmpfs 376M 16K 376M 1% /run/user/42
tmpfs tmpfs 376M 4.0K 376M 1% /run/user/0
/dev/mapper/testvg-testlv ext4 4.7G 16M 4.4G 1% /volume1
注意:
# 扩展文件系统,xfs类型的文件系统用xfs_growfs /volume1,后面接的是挂载点的位置
# 如果是ext文件系统刷新要用resize2fs /dev/testvg/testlv 后面接的是逻辑卷的位置
3.swap分区的创建
注意: swap分区不需要通过lvm来管理,物理分区完成后,可以直接做成swap类型
[root@rhel8-server ~]# fdisk /dev/nvme0n2dev/testvg1/
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.
Command (m for help): p
Disk /dev/nvme0n2: 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: 0x36c2d278
Device Boot Start End Sectors Size Id Type
/dev/nvme0n2p1 2048 10487807 10485760 5G 83 Linux
/dev/nvme0n2p2 10487808 20973567 10485760 5G 83 Linux
Command (m for help): n
Partition type
p primary (2 primary, 0 extended, 2 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (3,4, default 3): 3
First sector (20973568-41943039, default 20973568):
Last sector, +sectors or +size{K,M,G,T,P} (20973568-41943039, default 41943039): +2G
Created a new partition 3 of type 'Linux' and of size 2 GiB.
Command (m for help): p
Disk /dev/nvme0n2: 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: 0x36c2d278
Device Boot Start End Sectors Size Id Type
/dev/nvme0n2p1 2048 10487807 10485760 5G 83 Linux
/dev/nvme0n2p2 10487808 20973567 10485760 5G 83 Linux
/dev/nvme0n2p3 20973568 25167871 4194304 2G 83 Linux
Command (m for help): w
The partition table has been altered.
Syncing disks.
[root@rhel8-server ~]# mkswap /dev/nvme0n2p3
Setting up swapspace version 1, size = 2 GiB (2147479552 bytes)
no label, UUID=751d09c5-7404-480e-8b89-be0a55a1d6e7
[root@rhel8-server ~]# blkid /dev/nvme0n2p3
/dev/nvme0n2p3: UUID="751d09c5-7404-480e-8b89-be0a55a1d6e7" TYPE="swap" PARTUUID="36c2d278-03"
[root@rhel8-server ~]# vim /etc/fstab
/dev/nvme0n2p3 swap swap defaults 0 0
[root@rhel8-server ~]# swapon -a 挂载所有swap
[root@rhel8-server ~]# swapon -s 查看所有swap
Filename Type Size Used Priority
/dev/dm-1 partition 2097148 0 -2
/dev/nvme0n2p3 partition 2097148 0 -3
[root@rhel8-server ~]# free 可以查看系统swap总大小
total used free shared buff/cache available
Mem: 3848776 729288 2657132 18220 462356 2860824
Swap: 4194296 0 4194296
什么是vdo技术,这是RHEL8中特有的技术
红帽公司收购了一个公司 叫 permabit
vdo就是 permabit这个公司的技术
vdo也不是使用lvm来管理,是一个单独的技术。
vdo最大的作用就是节省硬盘空间,可以做到一个1TB的硬盘,直接存放3TB的数据甚至更多
vdo是怎么实现这个功能的? 靠的就是删除和压缩解压缩技术 重删就是把硬盘里相同的数据以前要存多份,现在会把多余的删掉,只留一份。,压缩算法来节省空间。
我们要使用vdo技术 将一块20 GD的硬盘,直接做成60G,并且挂载到系统上直接使用
yum install -y vdo kmod-kvdo
安装时间较长,大约需要几分钟,安装完成以后需要重启设备
[root@rhel8-server ~]# vdo create --name=testvdo --device=/dev/nvme0n3 --vdoLogicalSize=60G
Creating VDO testvdo
The VDO volume can address 16 GB in 8 data slabs, each 2 GB.
It can grow to address at most 16 TB of physical storage in 8192 slabs.
If a larger maximum size might be needed, use bigger slabs.
Starting VDO testvdo
Starting compression on VDO testvdo
VDO instance 0 volume is ready at /dev/mapper/testvdo
[root@rhel8-server ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 6.6G 0 rom /run/media/root/RHEL-8-0-0-BaseOS-x86_64
nvme0n1 259:0 0 20G 0 disk
├─nvme0n1p1 259:1 0 1G 0 part /boot
└─nvme0n1p2 259:2 0 19G 0 part
├─rhel-root 253:0 0 17G 0 lvm /
└─rhel-swap 253:1 0 2G 0 lvm [SWAP]
nvme0n2 259:3 0 20G 0 disk
├─nvme0n2p1 259:4 0 5G 0 part
│ └─testvg-testlv 253:2 0 4.8G 0 lvm /volume1
├─nvme0n2p2 259:5 0 5G 0 part
│ └─myvg-mylv 253:3 0 4G 0 lvm /new-volume
└─nvme0n2p3 259:6 0 2G 0 part [SWAP]
nvme0n3 259:7 0 20G 0 disk
└─testvdo 253:4 0 60G 0 vdo
[root@rhel8-server ~]# mkfs.xfs /dev/mapper/testvdo
meta-data=/dev/mapper/testvdo isize=512 agcount=4, agsize=3932160 blks
= sectsz=4096 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
data = bsize=4096 blocks=15728640, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=7680, version=2
= sectsz=4096 sunit=1 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@rhel8-server ~]# mkdir /vdoblock
[root@rhel8-server /]# vim /etc/fstab
/dev/mapper/testvdo /vdoblock xfs defaults,x-systemd.requires=vdo.service 0 0
[root@rhel8-server /]# mount -a
[root@rhel8-server /]# df -hT
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 1.8G 0 1.8G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 10M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/rhel-root xfs 17G 4.2G 13G 25% /
/dev/mapper/myvg-mylv xfs 4.0G 61M 4.0G 2% /new-volume
/dev/mapper/testvg-testlv ext4 4.7G 16M 4.4G 1% /volume1
/dev/nvme0n1p1 xfs 1014M 243M 772M 24% /boot
tmpfs tmpfs 371M 16K 371M 1% /run/user/42
tmpfs tmpfs 371M 2.3M 369M 1% /run/user/0
/dev/sr0 iso9660 6.7G 6.7G 0 100% /run/media/root/RHEL-8-0-0-BaseOS-x86_64
/dev/mapper/testvdo xfs 60G 461M 60G 1% /vdoblock
实验5:关于逻辑卷的缩小 (考试不一定考)
[root@rhel8-server /]# df -hT 查看一下目前的大小
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 1.8G 0 1.8G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 10M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/rhel-root xfs 17G 4.2G 13G 25% /
/dev/mapper/myvg-mylv xfs 4.0G 61M 4.0G 2% /new-volume
/dev/mapper/testvg-testlv ext4 4.7G 16M 4.4G 1% /volume1
/dev/nvme0n1p1 xfs 1014M 243M 772M 24% /boot
tmpfs tmpfs 371M 16K 371M 1% /run/user/42
tmpfs tmpfs 371M 2.3M 369M 1% /run/user/0
/dev/sr0 iso9660 6.7G 6.7G 0 100% /run/media/root/RHEL-8-0-0-BaseOS-x86_64
/dev/mapper/testvdo xfs 60G 463M 60G 1% /vdoblock
在做磁盘裁剪的时候,首先必须要把文件系统给取消挂载
[root@rhel8-server /]# umount /dev/mapper/testvg-testlv
[root@rhel8-server /]# df -hT
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 1.8G 0 1.8G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 10M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/rhel-root xfs 17G 4.2G 13G 25% /
/dev/mapper/myvg-mylv xfs 4.0G 61M 4.0G 2% /new-volume
/dev/nvme0n1p1 xfs 1014M 243M 772M 24% /boot
tmpfs tmpfs 371M 16K 371M 1% /run/user/42
tmpfs tmpfs 371M 2.3M 369M 1% /run/user/0
/dev/sr0 iso9660 6.7G 6.7G 0 100% /run/media/root/RHEL-8-0-0-BaseOS-x86_64
/dev/mapper/testvdo xfs 60G 463M 60G 1% /vdoblock
裁剪前必须要检测文件系统,避免把文件系统的错误扩大化导致文件系统奔溃
[root@rhel8-server /]# e2fsck -f /dev/testvg/testlv
e2fsck 1.44.3 (10-July-2018)
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/testvg/testlv: 11/319488 files (0.0% non-contiguous), 40540/1258496 blocks
[root@rhel8-server /]#
[root@rhel8-server /]# resize2fs /dev/testvg/testlv 2G
resize2fs 1.44.3 (10-July-2018)
Resizing the filesystem on /dev/testvg/testlv to 524288 (4k) blocks.
The filesystem on /dev/testvg/testlv is now 524288 (4k) blocks long.
[root@rhel8-server /]# lvreduce -L 2G /dev/testvg/testlv
WARNING: Reducing active logical volume to 2.00 GiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce testvg/testlv? [y/n]: y
Size of logical volume testvg/testlv changed from 4.80 GiB (1229 extents) to 2.00 GiB (512 extents).
Logical volume testvg/testlv successfully resized.
[root@rhel8-server /]# mount -a
[root@rhel8-server /]# df -hT
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 1.8G 0 1.8G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 10M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/rhel-root xfs 17G 4.2G 13G 25% /
/dev/mapper/myvg-mylv xfs 4.0G 61M 4.0G 2% /new-volume
/dev/nvme0n1p1 xfs 1014M 243M 772M 24% /boot
tmpfs tmpfs 371M 16K 371M 1% /run/user/42
tmpfs tmpfs 371M 2.3M 369M 1% /run/user/0
/dev/sr0 iso9660 6.7G 6.7G 0 100% /run/media/root/RHEL-8-0-0-BaseOS-x86_64
/dev/mapper/testvdo xfs 60G 463M 60G 1% /vdoblock
/dev/mapper/testvg-testlv ext4 2.0G 12M 1.8G 1% /volume1
实验6 逻辑卷的删除
[root@rhel8-server /]# umount /dev/mapper/testvg-testlv
[root@rhel8-server /]#
[root@rhel8-server /]# vim /etc/fstab 配置文件需要清除这一行命令
[root@rhel8-server /]#
[root@rhel8-server /]#
[root@rhel8-server /]# lvremove /dev/testvg/testlv
Do you really want to remove active logical volume testvg/testlv? [y/n]: y
Logical volume "testlv" successfully removed
[root@rhel8-server /]# vgremove testvg
Volume group "testvg" successfully removed
[root@rhel8-server /]# pvremove /dev/nvme0n2p1
Labels on physical volume "/dev/nvme0n2p1" successfully wiped.
实验7 : 逻辑卷快照技术
LVM还具备有“快照卷”功能,该功能类似于虚拟机软件的还原时间点功能。例如,可以对某一个逻辑卷设备做一次快照,如果日后发现数据被改错了,就可以利用之前做好的快照卷进行覆盖还原。LVM的快照卷功能有两个特点:
快照卷的容量必须等同于逻辑卷的容量;
快照卷仅一次有效,一旦执行还原操作后则会被立即自动删除。
[root@rhel8-server /]# vgdisplay
--- Volume group ---
VG Name myvg
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 1
Act PV 1
VG Size <5.00 GiB
PE Size 4.00 MiB
Total PE 1279
Alloc PE / Size 1024 / 4.00 GiB
Free PE / Size 255 / 1020.00 MiB
VG UUID 6DqrkB-18SV-uf0r-AvzU-QgJY-8Zib-lc5OEe
[root@rhel8-server /]# echo "hello,world" > /new-volume/readme.txt //在还原时间点快照前写入一个文件,验证恢复快照不会丢失之前的文件
[root@rhel8-server /]# ls -l /new-volume/ 检查刚刚写入的文件是否存在
total 4
-rw-r--r--. 1 root root 12 Jan 18 03:43 readme.txt
[root@rhel8-server /]# lvcreate -L 120M -s -n SNAP /dev/myvg/mylv //给这个lv卷打一个快照
Logical volume "SNAP" created.
[root@rhel8-server /]# lvdisplay //查看lv所有卷组,会发现快照卷已经存在了
--- Logical volume ---
LV Path /dev/myvg/mylv
LV Name mylv
VG Name myvg
LV UUID LzpESZ-2eF4-j1hf-ZJAj-DYKA-dl1y-BsGTF0
LV Write Access read/write
LV Creation host, time rhel8-server, 2022-01-18 01:51:32 -0500
LV snapshot status source of
SNAP [active]
LV Status available
# open 1
LV Size 4.00 GiB
Current LE 1024
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:3
--- Logical volume ---
LV Path /dev/myvg/SNAP
LV Name SNAP
VG Name myvg
LV UUID uw7iP9-ahPA-W4b1-fgto-0UlM-p7Zi-ts3vxz
LV Write Access read/write
LV Creation host, time rhel8-server, 2022-01-18 03:44:13 -0500
LV snapshot status active destination for mylv
LV Status available
# open 0
LV Size 4.00 GiB
Current LE 1024
COW-table size 120.00 MiB
COW-table LE 30
Allocated to snapshot 0.00%
Snapshot chunk size 4.00 KiB
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:6
在逻辑卷所挂载的目录中创建一个100MB的垃圾文件,然后再查看快照卷的状态。可以发现存储空间占的用量上升了
[root@rhel8-server /]# dd if=/dev/zero of=/new-volume/files count=1 bs=100M
1+0 records in
1+0 records out
104857600 bytes (105 MB, 100 MiB) copied, 0.138176 s, 759 MB/s
[root@rhel8-server /]# lvdisplay
--- Logical volume ---
LV Path /dev/myvg/mylv
LV Name mylv
VG Name myvg
LV UUID LzpESZ-2eF4-j1hf-ZJAj-DYKA-dl1y-BsGTF0
LV Write Access read/write
LV Creation host, time rhel8-server, 2022-01-18 01:51:32 -0500
LV snapshot status source of
SNAP [active]
LV Status available
# open 1
LV Size 4.00 GiB
Current LE 1024
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:3
--- Logical volume ---
LV Path /dev/myvg/SNAP
LV Name SNAP
VG Name myvg
LV UUID uw7iP9-ahPA-W4b1-fgto-0UlM-p7Zi-ts3vxz
LV Write Access read/write
LV Creation host, time rhel8-server, 2022-01-18 03:44:13 -0500
LV snapshot status active destination for mylv
LV Status available
# open 0
LV Size 4.00 GiB
Current LE 1024
COW-table size 120.00 MiB
COW-table LE 30
Allocated to snapshot 83.67%
Snapshot chunk size 4.00 KiB
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:6
恢复快照之前必须要取消挂载
[root@rhel8-server /]# umount /new-volume
[root@rhel8-server /]# lvconvert --merge /dev/myvg/SNAP 通过lvconvert --merge 来指定快照SNAP恢复
Merging of volume myvg/SNAP started.
myvg/mylv: Merged: 35.58%
myvg/mylv: Merged: 100.00%
[root@rhel8-server /]# mount -a //挂载所有卷组
[root@rhel8-server /]# cd /new-volume/
[root@rhel8-server new-volume]# ll //此时刚刚的100M垃圾随着快照技术已经删除了
total 4
-rw-r--r--. 1 root root 12 Jan 18 03:43 readme.txt