LVM管理
- LVM(Logical Volume Manager)是Linux下的逻辑卷管理器,它可以把多个硬盘分区或者整个硬盘作为一个卷组(Volume Group)来管理,再从卷组中划分出逻辑卷(Logical Volume),从而实现对逻辑卷(Logical Volume)的创建、删除、扩展等操作。并将这些逻辑卷格式化并挂载到文件系统上使用。这种方式能够在不影响数据的情况下对磁盘空间进行动态管理和调整。
- LVM的优点在于可以灵活地管理硬盘空间,提高数据的可用性和可靠性,同时还可以实现动态扩容和在线热迁移等高级功能。
1.原理
LVM的基本原理是将物理卷(硬盘、分区、RAID阵列等)划分为若干个物理区域(Physical Extents),再将这些物理区域组成卷组(Volume Group)。卷组是LVM中的基本管理单元,它可以动态地增加、删除物理卷,以及调整物理卷和逻辑卷的大小。
在卷组中,LVM可以划分出逻辑卷(Logical Volume),并将这些逻辑卷格式化为文件系统并挂载到目录上。逻辑卷可以动态地调整大小,而不需要重建文件系统或拷贝数据。
LVM的主要思路是将物理卷抽象成卷组,将卷组抽象成逻辑卷,从而实现灵活的磁盘空间管理。LVM提供了很多高级功能,如在线热迁移、快照和镜像等,这些功能可以提高数据的可靠性和可用性,同时也可以方便地进行系统维护和管理
- 物理卷(Physical Volume):在LVM中,物理卷是指一个物理硬盘、分区或者LUN(Logical Unit Number),它是LVM管理的最小单位,每个物理卷都有一个唯一的标识符UUID(Universally Unique Identifier)。
- 卷组(Volume Group):卷组是由一个或多个物理卷组成的逻辑组,它提供了一个抽象层,可以将多个物理卷组合成一个更大的存储池,以供逻辑卷使用。
- 逻辑卷(Logical Volume):逻辑卷是从卷组中分配出来的磁盘空间,它可以看作是一组连续的物理块(Physical Extents),逻辑卷也有一个唯一的标识符UUID。
- 文件系统:在逻辑卷上创建文件系统,就可以在其中存储数据了。
2.LVM使用步骤
- 创建物理卷:使用pvcreate命令将一个物理硬盘或分区初始化为一个物理卷。
- 创建卷组:使用vgcreate命令将一个或多个物理卷组成一个卷组,指定卷组的名称和包含的物理卷。
- 创建逻辑卷:使用lvcreate命令从卷组中分配一部分空间来创建一个逻辑卷。
- 创建文件系统:使用mkfs命令在逻辑卷上创建文件系统。
- 挂载逻辑卷:使用mount命令将逻辑卷挂载到文件系统中的一个目录下,使其可以被访问和使用。
- 扩展逻辑卷:使用lvextend命令将逻辑卷扩展到更大的空间。
- 缩小逻辑卷:使用lvreduce命令将逻辑卷缩小到更小的空间。
- 移动逻辑卷:使用pvmove命令将逻辑卷从一个物理卷迁移到另一个物理卷上。
- 删除逻辑卷:使用lvremove命令删除逻辑卷。
- 删除卷组:使用vgremove命令删除卷组。
- 删除物理卷:使用pvremove命令删除物理卷。
Physical Extent(PE)
在真正操作前,我们先了解一个PE的概念:
LVM
(Logical Volume Manager)是一种在 Linux 操作系统上对硬盘进行管理和分区的工具,它可以将多个物理硬盘上的分区组合成一个或多个逻辑卷,并对逻辑卷进行动态扩展、收缩、备份等操作。PE
(Physical Extent)是 LVM 中的一个重要概念,它表示物理卷(Physical Volume)上的最小存储单位
。
在 LVM 中,物理卷被划分成一系列大小相同的 PE,每个 PE 的大小通常为 4MB 或 8MB。逻辑卷(Logical Volume)由一个或多个物理卷组成,可以由不同物理卷上的 PE 组成,这些 PE 可以来自同一个物理卷或不同的物理卷。在逻辑卷中,PE 是逻辑卷和物理卷之间的桥梁,它们提供了逻辑卷和物理卷之间的映射关系。
PE 的大小对 LVM 的性能和灵活性都有影响。如果 PE 太小,那么需要管理的 PE 数量就会增加,从而增加管理的复杂性和开销;如果 PE 太大,那么在进行调整时可能会浪费更多的空间。因此,在设计 LVM 时需要权衡 PE 大小和整个系统的需求。
创建物理卷(Physical Volume)
#首先,给磁盘sdb进行分区,分出一个sdb1的主分区
[root@centos8 ~]#fdisk /dev/sdb
#分区的时候一定要输入t将分区类型改成8e
[root@centos8 ~]#lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 200G 0 disk
├─sda1 8:1 0 100G 0 part /
├─sda2 8:2 0 50G 0 part /data
├─sda3 8:3 0 2G 0 part
├─sda4 8:4 0 1K 0 part
├─sda5 8:5 0 1G 0 part /boot
└─sda6 8:6 0 1M 0 part
sdb 8:16 0 20G 0 disk
└─sdb1 8:17 0 5G 0 part
sdc 8:32 0 10G 0 disk
sr0 11:0 1 9.5G 0 rom
sr1 11:1 1 10.1G 0 rom
#下面要将sdb1和sdc两个分区变成物理卷->卷组->逻辑卷
#1.创建物理卷(Physical Volume)
[root@centos8 ~]#pvcreate /dev/sd{b1,c}
Cannot use /dev/sdc: device is partitioned
Physical volume "/dev/sdb1" successfully created.
[root@centos8 ~]#
#之前sdc做过试验,所以创建失败了
#清空sdc,将分区表破坏即可
[root@centos8 ~]#dd if=/dev/zero of=/dev/sdc bs=1M count=1
1+0 records in
1+0 records out
1048576 bytes (1.0 MB, 1.0 MiB) copied, 0.00516282 s, 203 MB/s
[root@centos8 ~]#
[root@centos8 ~]#pvcreate /dev/sdc #创建成功
Physical volume "/dev/sdc" successfully created.
[root@centos8 ~]#
#查看当前的Physical Volume
[root@centos8 ~]#pvs #简略的看
PV VG Fmt Attr PSize PFree
/dev/sdb1 lvm2 --- 5.00g 5.00g
/dev/sdc lvm2 --- 10.00g 10.00g
[root@centos8 ~]#
#详细查看
[root@centos8 ~]#pvdisplay
"/dev/sdb1" is a new physical volume of "5.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb1
VG Name
PV Size 5.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID UxSQHV-bLEr-CgBf-jjnt-mKRA-zIb5-vaIVVO
"/dev/sdc" is a new physical volume of "10.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdc
VG Name
PV Size 10.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID JwnWDk-7yAo-CAgL-Bxwm-ChZz-Vw00-YSMXK1
[root@centos8 ~]#
创建卷组(Volume Group)
#创建卷组
[root@centos8 ~]#vgcreate vg0 /dev/sd{b1,c} #vg0 自定义Volume Group的名称
Volume group "vg0" successfully created
[root@centos8 ~]#
[root@centos8 ~]#pvdisplay
--- Physical volume ---
PV Name /dev/sdb1
VG Name vg0 #已经显示了,之前查看是没有的
PV Size 5.00 GiB / not usable 4.00 MiB
Allocatable yes
PE Size 4.00 MiB #已经有了PE的单位
Total PE 1279 #总的PE数量
Free PE 1279 #PE可用数量
Allocated PE 0
PV UUID UxSQHV-bLEr-CgBf-jjnt-mKRA-zIb5-vaIVVO
--- Physical volume ---
PV Name /dev/sdc
VG Name vg0
PV Size 10.00 GiB / not usable 4.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 2559
Free PE 2559
Allocated PE 0
PV UUID JwnWDk-7yAo-CAgL-Bxwm-ChZz-Vw00-YSMXK1
[root@centos8 ~]#
#使用vg查看卷组
[root@centos8 ~]#vgdisplay
--- Volume group ---
VG Name vg0
System ID
Format lvm2
Metadata Areas 2
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 2
Act PV 2
VG Size 14.99 GiB
PE Size 4.00 MiB
Total PE 3838
Alloc PE / Size 0 / 0
Free PE / Size 3838 / 14.99 GiB
VG UUID V1oC8Y-vsey-pBJ4-O5Os-0CkR-LDCO-cZFRcY
[root@centos8 ~]#
创建逻辑卷(Logical Volume)
#创建mysql逻辑卷
# -n 指定逻辑卷的名称,-l 指定PE的数量,-L 指定大小,系统会自动计算PE个数 最后是创建好的卷组名称
[root@centos8 ~]#lvcreate -n mysql -L 1G vg0
Logical volume "mysql" created.
[root@centos8 ~]#
[root@centos8 ~]#lvdisplay
--- Logical volume ---
LV Path /dev/vg0/mysql
LV Name mysql
VG Name vg0
LV UUID WcD2fa-AyoA-yJgO-kjoN-wInb-pSQZ-aghCe5
LV Write Access read/write
LV Creation host, time centos8.xingyuyu.com, 2023-03-08 22:37:10 +0800
LV Status available
# open 0
LV Size 1.00 GiB
Current LE 256 #逻辑卷里叫LE不叫PE,但指的是同一个东西
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
[root@centos8 ~]#
#查看逻辑卷
[root@centos8 ~]#pvdisplay
--- Physical volume ---
PV Name /dev/sdb1
VG Name vg0
PV Size 5.00 GiB / not usable 4.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 1279
Free PE 1023 #发现可用变少了,说明创建的mysql逻辑卷使用的是sdb1这个分区,但是这个我们不关注
Allocated PE 256
PV UUID UxSQHV-bLEr-CgBf-jjnt-mKRA-zIb5-vaIVVO
--- Physical volume ---
PV Name /dev/sdc
VG Name vg0
PV Size 10.00 GiB / not usable 4.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 2559
Free PE 2559
Allocated PE 0
PV UUID JwnWDk-7yAo-CAgL-Bxwm-ChZz-Vw00-YSMXK1
[root@centos8 ~]#
[root@centos8 ~]#vgdisplay
--- Volume group ---
VG Name vg0
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 2
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 0
Max PV 0
Cur PV 2
Act PV 2
VG Size 14.99 GiB
PE Size 4.00 MiB
Total PE 3838
Alloc PE / Size 256 / 1.00 GiB
Free PE / Size 3582 / 13.99 GiB
VG UUID V1oC8Y-vsey-pBJ4-O5Os-0CkR-LDCO-cZFRcY
[root@centos8 ~]#
#创建log逻辑卷
[root@centos8 ~]#lvcreate -n log -l 512 vg0
Logical volume "log" created.
[root@centos8 ~]#lvdisplay
--- Logical volume ---
LV Path /dev/vg0/mysql
LV Name mysql
VG Name vg0
LV UUID WcD2fa-AyoA-yJgO-kjoN-wInb-pSQZ-aghCe5
LV Write Access read/write
LV Creation host, time centos8.xingyuyu.com, 2023-03-08 22:37:10 +0800
LV Status available
# open 0
LV Size 1.00 GiB
Current LE 256
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
--- Logical volume ---
LV Path /dev/vg0/log
LV Name log
VG Name vg0
LV UUID XYqOav-2gC7-bjMn-lujz-qlas-yXOX-bSLlic
LV Write Access read/write
LV Creation host, time centos8.xingyuyu.com, 2023-03-08 22:44:10 +0800
LV Status available
# open 0
LV Size 2.00 GiB
Current LE 512
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:1
[root@centos8 ~]#
#创建的逻辑卷有三种名字 dm-*系列
[root@centos8 ~]#ll /dev/dm*
brw-rw---- 1 root disk 253, 0 Mar 8 22:37 /dev/dm-0
brw-rw---- 1 root disk 253, 1 Mar 8 22:44 /dev/dm-1
crw-rw---- 1 root audio 14, 9 Mar 4 01:29 /dev/dmmidi
[root@centos8 ~]#
#mapper系列
[root@centos8 ~]#ll /dev/mapper/*
crw------- 1 root root 10, 236 Mar 8 22:37 /dev/mapper/control
lrwxrwxrwx 1 root root 7 Mar 8 22:44 /dev/mapper/vg0-log -> ../dm-1
lrwxrwxrwx 1 root root 7 Mar 8 22:37 /dev/mapper/vg0-mysql -> ../dm-0
[root@centos8 ~]#
#还有就是/dev/vg0/mysql,使用lvdisplay可以看到
创建文件系统
#对逻辑卷mysql创建文件系统
[root@centos8 ~]#mkfs.ext4 /dev/vg0/mysql
mke2fs 1.45.6 (20-Mar-2020)
Creating filesystem with 262144 4k blocks and 65536 inodes
Filesystem UUID: 88b05bd0-f20f-473e-9bf4-1b1eeddd2771
Superblock backups stored on blocks:
32768, 98304, 163840, 229376
Allocating group tables: done
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done
#对逻辑卷log创建文件系统
[root@centos8 ~]#mkfs.xfs /dev/vg0/log
meta-data=/dev/vg0/log isize=512 agcount=4, agsize=131072 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
data = bsize=4096 blocks=524288, 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@centos8 ~]#
[root@centos8 ~]#lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 200G 0 disk
├─sda1 8:1 0 100G 0 part /
├─sda2 8:2 0 50G 0 part /data
├─sda3 8:3 0 2G 0 part
├─sda4 8:4 0 1K 0 part
├─sda5 8:5 0 1G 0 part /boot
└─sda6 8:6 0 1M 0 part
sdb 8:16 0 20G 0 disk
└─sdb1 8:17 0 5G 0 part
├─vg0-mysql 253:0 0 1G 0 lvm
└─vg0-log 253:1 0 2G 0 lvm
sdc 8:32 0 10G 0 disk
sr0 11:0 1 9.5G 0 rom
sr1 11:1 1 10.1G 0 rom
[root@centos8 ~]#blkid
/dev/sda1: UUID="ad19dd45-b7ee-485c-87e6-3c9bb8ec3996" BLOCK_SIZE="512" TYPE="xfs" PARTUUID="64f77bbe-01"
/dev/sda2: UUID="933c390a-5904-4b01-aa6a-447c771b7f08" BLOCK_SIZE="512" TYPE="xfs" PARTUUID="64f77bbe-02"
/dev/sda3: UUID="98f53a44-1fb7-4139-85c6-a3c2d1633cd7" TYPE="swap" PARTUUID="64f77bbe-03"
/dev/sda5: UUID="8fbb4a9c-1506-4c4a-889d-b78163091bb0" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="64f77bbe-05"
/dev/sr0: BLOCK_SIZE="2048" UUID="2020-11-02-15-15-23-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTUUID="6b8b4567" PTTYPE="dos"
/dev/sr1: BLOCK_SIZE="2048" UUID="2021-11-13-01-04-26-00" LABEL="CentOS-8-5-2111-x86_64-dvd" TYPE="iso9660" PTUUID="5fb10f71" PTTYPE="dos"
/dev/sdb1: UUID="UxSQHV-bLEr-CgBf-jjnt-mKRA-zIb5-vaIVVO" TYPE="LVM2_member" PARTUUID="da250a9c-01"
/dev/sdc: UUID="JwnWDk-7yAo-CAgL-Bxwm-ChZz-Vw00-YSMXK1" TYPE="LVM2_member"
/dev/sda6: PARTUUID="64f77bbe-06"
/dev/mapper/vg0-mysql: UUID="88b05bd0-f20f-473e-9bf4-1b1eeddd2771" BLOCK_SIZE="4096" TYPE="ext4"
/dev/mapper/vg0-log: UUID="7383e853-3046-435b-8cfb-983d369b2a8d" BLOCK_SIZE="512" TYPE="xfs"
[root@centos8 ~]#
挂载
#创建mysql逻辑卷挂载点
[root@centos8 ~]#mkdir /mnt/mysql
#创建log逻辑卷挂载点
[root@centos8 ~]#mkdir /mnt/log
#添加配置
[root@centos8 ~]#vim /etc/fstab
#
# /etc/fstab
# Created by anaconda on Wed Apr 20 06:18:15 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.
#
UUID=ad19dd45-b7ee-485c-87e6-3c9bb8ec3996 / xfs defaults 0 0
UUID=8fbb4a9c-1506-4c4a-889d-b78163091bb0 /boot ext4 defaults 1 2
UUID=933c390a-5904-4b01-aa6a-447c771b7f08 /data xfs defaults 0 0
UUID=98f53a44-1fb7-4139-85c6-a3c2d1633cd7 none swap defaults 0 0
#UUID=2d508d02-801c-411d-bbcb-471d18142dd3 /data/mysql ext4 defaults 0 0
#UUID=515fb6d1-e7bd-4021-9863-5ca3d037e4d9 swap swap defaults 0 0
/dev/vg0/mysql /mnt/mysql ext4 defaults 0 0
/dev/vg0/log /mnt/log xfs defaults 0 0
[root@centos8 ~]#
#挂载
[root@centos8 ~]#mount -a
[root@centos8 ~]#lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 xfs ad19dd45-b7ee-485c-87e6-3c9bb8ec3996 /
├─sda2 xfs 933c390a-5904-4b01-aa6a-447c771b7f08 /data
├─sda3 swap 98f53a44-1fb7-4139-85c6-a3c2d1633cd7
├─sda4
├─sda5 ext4 8fbb4a9c-1506-4c4a-889d-b78163091bb0 /boot
└─sda6
sdb
└─sdb1 LVM2_member UxSQHV-bLEr-CgBf-jjnt-mKRA-zIb5-vaIVVO
├─vg0-mysql ext4 88b05bd0-f20f-473e-9bf4-1b1eeddd2771 /mnt/mysql
└─vg0-log xfs 7383e853-3046-435b-8cfb-983d369b2a8d /mnt/log
sdc LVM2_member JwnWDk-7yAo-CAgL-Bxwm-ChZz-Vw00-YSMXK1
sr0 iso9660 CentOS 7 x86_64 2020-11-02-15-15-23-00
sr1 iso9660 CentOS-8-5-2111-x86_64-dvd 2021-11-13-01-04-26-00
[root@centos8 ~]#
测试
#往刚才创建好的逻辑卷里面拷贝一些文件
[root@centos8 ~]#cp /etc/fstab /mnt/mysql/
[root@centos8 ~]#ll /mnt/mysql/
total 20
-rw-r--r-- 1 root root 1006 Mar 8 22:49 fstab
drwx------ 2 root root 16384 Mar 8 22:46 lost+found
[root@centos8 ~]#
#普通的硬盘分区和逻辑卷的性能哪个好
[root@centos8 ~]#dd if=/dev/zero of=/data/test.img bs=1M count=1000
1000+0 records in
1000+0 records out
1048576000 bytes (1.0 GB, 1000 MiB) copied, 4.00763 s, 262 MB/s #向硬盘普通分区硬盘写的速度是262MB/s
[root@centos8 ~]#
#同样的命令再执行一次,速度却提升了,这是因为有缓冲的原因
[root@centos8 ~]#dd if=/dev/zero of=/data/test.img bs=1M count=1000
1000+0 records in
1000+0 records out
1048576000 bytes (1.0 GB, 1000 MiB) copied, 1.7454 s, 601 MB/s
[root@centos8 ~]#
#存在缓冲,所以速度提升了
[root@centos8 ~]#free -h
total used free shared buff/cache available
Mem: 2.9Gi 229Mi 1.5Gi 8.0Mi 1.2Gi 2.5Gi
Swap: 6.0Gi 0B 6.0Gi
[root@centos8 ~]#
#如果不清理掉缓冲的话,向逻辑卷写入会影响正常数据,但是实际生产中很少清楚缓冲。直接使用 echo 3 > /proc/sys/vm/drop_caches 命令来释放缓冲区。这个命令会清空内核中的 pagecache、dentries 和 inodes 缓存。这个方法并不会强制将数据写入磁盘,所以在使用这个命令之后,你需要确保所有数据都已经写入磁盘了。
[root@centos8 ~]#echo 3 > /proc/sys/vm/drop_caches
[root@centos8 ~]#free -h
total used free shared buff/cache available
Mem: 2.9Gi 222Mi 2.6Gi 8.0Mi 72Mi 2.5Gi
Swap: 6.0Gi 0B 6.0Gi
[root@centos8 ~]#
#写入逻辑卷
[root@centos8 ~]#dd if=/dev/zero of=/mnt/mysql/test.img bs=1M count=1000
1000+0 records in
1000+0 records out
1048576000 bytes (1.0 GB, 1000 MiB) copied, 2.17351 s, 482 MB/s
[root@centos8 ~]#
#可以看到逻辑卷速度要比普通的分区快
扩容逻辑卷(Logical Volume)
当逻辑卷的磁盘空间不足时,可以通过扩容来增加逻辑卷的磁盘空间。
下面是 LVM 扩容逻辑卷的步骤:
- 查看当前的逻辑卷信息,使用
lvdisplay
命令查看逻辑卷的信息,例如逻辑卷的名称、大小、所在的卷组、挂载点等等。 - 确认是否有可用的物理卷,使用
pvdisplay
命令查看物理卷的信息,确认是否有未使用的物理卷可以用于扩容逻辑卷。如果没有可用的物理卷,需要先添加一个或多个物理卷。 - 将新的物理卷加入卷组,使用
vgextend
命令将新的物理卷添加到卷组中,例如:vgextend <卷组名称> <新的物理卷路径>
。 - 扩展逻辑卷的大小,使用
lvextend
命令扩展逻辑卷的大小,例如:lvextend -L +<扩展的大小> <逻辑卷路径>
。 - 将文件系统扩展到逻辑卷的大小,使用
resize2fs
命令将文件系统扩展到逻辑卷的大小,例如:resize2fs <逻辑卷路径>
。如果使用的是 XFS 文件系统,则使用xfs_growfs
命令扩展文件系统大小。 - 验证逻辑卷的大小,使用
lvdisplay
命令验证逻辑卷的大小是否已经扩展到期望的大小。
需要注意的是,扩展逻辑卷时需要先将新的物理卷加入卷组,然后才能将逻辑卷的大小扩展到新的物理卷中。另外,扩展逻辑卷的大小会影响文件系统的大小,因此需要将文件系统扩展到逻辑卷的大小。最后,一定要在扩展逻辑卷之前备份数据,以防数据丢失。
#LVM使用最多的是扩容逻辑卷(lvextend)
#上面使用了3G的空间,VG中还剩12G的空间,下面给mysql扩容4G
#[root@centos8 ~]#lvextend -L +2G /dev/vg0/mysql #写了+代表扩容2G,不写代表扩容到2G
Size of logical volume vg0/mysql changed from 1.00 GiB (256 extents) to 7.00 GiB (1792 extents).
Logical volume vg0/mysql successfully resized.
[root@centos8 ~]#
#查看逻辑卷和卷组的容量
[root@centos8 ~]#lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
log vg0 -wi-ao---- 2.00g
mysql vg0 -wi-ao---- 7.00g
[root@centos8 ~]#vgs
VG #PV #LV #SN Attr VSize VFree
vg0 2 2 0 wz--n- 14.99g 5.99g
[root@centos8 ~]#
#此时,使用df -Th查看发现mysql还是1G,这是因为目前有文件系统ext4的空间是1G,刚刚分出来的6G还没有文件系统,所以这里目前还看不到
[root@centos8 ~]#df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 958M 0 958M 0% /dev
tmpfs tmpfs 976M 0 976M 0% /dev/shm
tmpfs tmpfs 976M 8.8M 967M 1% /run
tmpfs tmpfs 976M 0 976M 0% /sys/fs/cgroup
/dev/sda1 xfs 100G 3.1G 97G 4% /
/dev/sda2 xfs 50G 12G 39G 24% /data
/dev/sda5 ext4 976M 141M 768M 16% /boot
tmpfs tmpfs 298M 0 298M 0% /run/user/0
/dev/mapper/vg0-mysql ext4 976G 804M 106M 89% /mnt/mysql
/dev/mapper/vg0-log xfs 2.0G 47M 2.0G 3% /mnt/log
[root@centos8 ~]#
#扩容文件系统,原来是什么样的系统就扩容什么系统
#将6G的空间都变成了ext4文件系统
[root@centos8 ~]#resize2fs /dev/vg0/mysql #resize2fs只支持文件系统是ext系列的,xfs的文件系统不支持
resize2fs 1.45.6 (20-Mar-2020)
Filesystem at /dev/vg0/mysql is mounted on /mnt/mysql; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/vg0/mysql is now 1835008 (4k) blocks long.
[root@centos8 ~]#
#扩容成功
[root@centos8 ~]#df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 958M 0 958M 0% /dev
tmpfs tmpfs 976M 0 976M 0% /dev/shm
tmpfs tmpfs 976M 8.8M 967M 1% /run
tmpfs tmpfs 976M 0 976M 0% /sys/fs/cgroup
/dev/sda1 xfs 100G 3.1G 97G 4% /
/dev/sda2 xfs 50G 12G 39G 24% /data
/dev/sda5 ext4 976M 141M 768M 16% /boot
tmpfs tmpfs 298M 0 298M 0% /run/user/0
/dev/mapper/vg0-mysql ext4 6.9G 1.0G 5.5G 16% /mnt/mysql
/dev/mapper/vg0-log xfs 2.0G 47M 2.0G 3% /mnt/log
[root@centos8 ~]#
#2.扩容log逻辑卷,是xfs文件系统
[root@centos8 ~]#df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 958M 0 958M 0% /dev
tmpfs tmpfs 976M 0 976M 0% /dev/shm
tmpfs tmpfs 976M 8.8M 967M 1% /run
tmpfs tmpfs 976M 0 976M 0% /sys/fs/cgroup
/dev/sda1 xfs 100G 3.1G 97G 4% /
/dev/sda2 xfs 50G 12G 39G 24% /data
/dev/sda5 ext4 976M 141M 768M 16% /boot
tmpfs tmpfs 298M 0 298M 0% /run/user/0
/dev/mapper/vg0-mysql ext4 6.9G 1.0G 5.5G 16% /mnt/mysql
/dev/mapper/vg0-log xfs 2.0G 47M 2.0G 3% /mnt/log
[root@centos8 ~]#
#扩容1G,只是扩容了空间,但是文件系统没有扩容
[root@centos8 ~]#lvextend -L +1G /dev/vg0/log
Size of logical volume vg0/log changed from 2.00 GiB (512 extents) to 3.00 GiB (768 extents).
Logical volume vg0/log successfully resized.
[root@centos8 ~]#
#使用df发现大小还是2G
#扩容文件系统,xfs只能使用xfs_growfs来扩容,而且xfs的只能增加不能缩容
[root@centos8 ~]#xfs_growfs /mnt/log
meta-data=/dev/mapper/vg0-log isize=512 agcount=4, agsize=131072 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
data = bsize=4096 blocks=524288, 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 524288 to 786432
[root@centos8 ~]#
[root@centos8 ~]#df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 958M 0 958M 0% /dev
tmpfs tmpfs 976M 0 976M 0% /dev/shm
tmpfs tmpfs 976M 8.8M 967M 1% /run
tmpfs tmpfs 976M 0 976M 0% /sys/fs/cgroup
/dev/sda1 xfs 100G 3.1G 97G 4% /
/dev/sda2 xfs 50G 12G 39G 24% /data
/dev/sda5 ext4 976M 141M 768M 16% /boot
tmpfs tmpfs 298M 0 298M 0% /run/user/0
/dev/mapper/vg0-mysql ext4 6.9G 1.0G 5.5G 16% /mnt/mysql
/dev/mapper/vg0-log xfs 3.0G 54M 3.0G 2% /mnt/log
[root@centos8 ~]#
自动扩容逻辑卷
给逻辑卷增加大小以后,对于不同的文件系统还得使用不同的命令进行扩容文件系统以后才能使用
df -Th
看到,为了解决这个问题,下面使用自动扩容,在扩容逻辑卷的时候指定选项,就可以自动扩容成和之前一模一样的文件系统了。
#上面做完试验,还剩5G的卷组空间,全部用上
[root@centos8 ~]#lvextend -r -l +100%free /dev/vg0/mysql #其中,-r选项用于自动调整文件系统大小以匹配逻辑卷大小的更改。-L选项用于指定逻辑卷的新大小。
Size of logical volume vg0/mysql changed from 7.00 GiB (1792 extents) to 11.99 GiB (3070 extents).
Logical volume vg0/mysql successfully resized.
resize2fs 1.45.6 (20-Mar-2020)
Filesystem at /dev/mapper/vg0-mysql is mounted on /mnt/mysql; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 2
The filesystem on /dev/mapper/vg0-mysql is now 3143680 (4k) blocks long.
[root@centos8 ~]#
#可以看到自动扩容了
[root@centos8 ~]#lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
log vg0 -wi-ao---- 3.00g
mysql vg0 -wi-ao---- 11.99g
[root@centos8 ~]#vgs
VG #PV #LV #SN Attr VSize VFree
vg0 2 2 0 wz--n- 14.99g 0
[root@centos8 ~]#df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 958M 0 958M 0% /dev
tmpfs tmpfs 976M 0 976M 0% /dev/shm
tmpfs tmpfs 976M 8.8M 967M 1% /run
tmpfs tmpfs 976M 0 976M 0% /sys/fs/cgroup
/dev/sda1 xfs 100G 3.1G 97G 4% /
/dev/sda2 xfs 50G 12G 39G 24% /data
/dev/sda5 ext4 976M 141M 768M 16% /boot
tmpfs tmpfs 298M 0 298M 0% /run/user/0
/dev/mapper/vg0-mysql ext4 12G 1.1G 11G 9% /mnt/mysql
/dev/mapper/vg0-log xfs 3.0G 54M 3.0G 2% /mnt/log
[root@centos8 ~]#
扩容卷组(Volume Group)
上面测试以后,卷组的空间已经没有了,也就意味着没办法继续创建逻辑卷或者是扩容逻辑卷,下面讲解如何扩容卷组。要扩大一个LVM卷组(VG),需要增加物理卷(PV)的大小或添加新的物理卷。
步骤:
- 确认物理卷的可用空间:使用
pvdisplay
命令来查看当前每个物理卷的可用空间。- 添加物理卷:使用
vgextend
命令来将新的物理卷添加到卷组中。- 扩大逻辑卷:使用
lvextend
命令来扩大逻辑卷的大小。
#卷组(Volume Group)的空间是来自于物理卷(Physical Volume),所以扩容卷组就必须扩容物理卷,但是物理卷是来自于硬盘分区
#sdb之前分了5G,现在还剩15G,对这15G进行分区
[root@centos8 ~]#lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 200G 0 disk
├─sda1 8:1 0 100G 0 part /
├─sda2 8:2 0 50G 0 part /data
├─sda3 8:3 0 2G 0 part
├─sda4 8:4 0 1K 0 part
└─sda5 8:5 0 1G 0 part /boot
sdb 8:16 0 20G 0 disk
└─sdb1 8:17 0 5G 0 part
├─vg0-mysql 253:0 0 12G 0 lvm /mnt/mysql
└─vg0-log 253:1 0 3G 0 lvm /mnt/log
sdc 8:32 0 10G 0 disk
├─vg0-mysql 253:0 0 12G 0 lvm /mnt/mysql
└─vg0-log 253:1 0 3G 0 lvm /mnt/log
sr0 11:0 1 4.4G 0 rom
sr1 11:1 1 10.1G 0 rom
[root@centos8 ~]#
#分区,记得类型要改成8e
[root@centos8 ~]#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.
Command (m for help): n
Partition type
p primary (1 primary, 0 extended, 3 free)
e extended (container for logical partitions)
Select (default p): 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):
Created a new partition 2 of type 'Linux' and of size 15 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: 0xd528d7c1
Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 10487807 10485760 5G 8e Linux LVM
/dev/sdb2 10487808 41943039 31455232 15G 83 Linux
Command (m for help): t
Partition number (1,2, default 2):
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM'.
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: 0xd528d7c1
Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 10487807 10485760 5G 8e Linux LVM
/dev/sdb2 10487808 41943039 31455232 15G 8e Linux LVM
Command (m for help): w
The partition table has been altered.
Syncing disks.
[root@centos8 ~]#
#2.变成物理卷
[root@centos8 ~]#pvcreate /dev/sdb2
Physical volume "/dev/sdb2" successfully created.
#3.将物理卷加到当前卷组中
[root@centos8 ~]#vgextend vg0 /dev/sdb2
Volume group "vg0" successfully extended
[root@centos8 ~]#vgs
VG #PV #LV #SN Attr VSize VFree
vg0 3 2 0 wz--n- <29.99g <15.00g
[root@centos8 ~]#
缩容逻辑卷(Logical Volume)
缩容逻辑卷一共分为五步:
- 取消挂载umont
- 使用e2fsck命令检查文件系统
- ,与lvreduce区别
- 使用lvreduce缩减逻辑卷的大小,但是缩小之前必须先缩小逻辑卷中的文件系统大小,以便逻辑卷可以缩小到指定的大小。
- mount重新挂载
#查看分区利用情况
[root@centos8 ~]#df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 958M 0 958M 0% /dev
tmpfs tmpfs 976M 0 976M 0% /dev/shm
tmpfs tmpfs 976M 8.8M 967M 1% /run
tmpfs tmpfs 976M 0 976M 0% /sys/fs/cgroup
/dev/sda1 xfs 100G 3.1G 97G 4% /
/dev/sda2 xfs 50G 12G 39G 24% /data
/dev/sda5 ext4 976M 141M 768M 16% /boot
tmpfs tmpfs 298M 0 298M 0% /run/user/0
/dev/mapper/vg0-mysql ext4 12G 1.1G 11G 9% /mnt/mysql
/dev/mapper/vg0-log xfs 3.0G 54M 3.0G 2% /mnt/log
[root@centos8 ~]#
#将mysql逻辑卷缩减到2G,如果太小的话可能破坏文件系统。缩容一定是在离线状态,也就是取消挂载。
[root@centos8 ~]#df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 958M 0 958M 0% /dev
tmpfs tmpfs 976M 0 976M 0% /dev/shm
tmpfs tmpfs 976M 8.8M 967M 1% /run
tmpfs tmpfs 976M 0 976M 0% /sys/fs/cgroup
/dev/sda1 xfs 100G 3.1G 97G 4% /
/dev/sda2 xfs 50G 12G 39G 24% /data
/dev/sda5 ext4 976M 141M 768M 16% /boot
tmpfs tmpfs 298M 0 298M 0% /run/user/0
/dev/mapper/vg0-mysql ext4 12G 1.1G 11G 9% /mnt/mysql #将mysql从12G缩容---> 2G
/dev/mapper/vg0-log xfs 3.0G 54M 3.0G 2% /mnt/log
[root@centos8 ~]#
#1.取消挂载
[root@centos8 ~]#umount /mnt/mysql
#2.缩容之前必须使用fsck命令进行检测一遍或者是e2fsck,如果直接缩容文件系统会提示错误
[root@centos8 ~]#resize2fs /dev/vg0/mysql 2G
resize2fs 1.45.6 (20-Mar-2020)
Please run 'e2fsck -f /dev/vg0/mysql' first.
[root@centos8 ~]#
#正确
[root@centos8 ~]#e2fsck -f /dev/vg0/mysql
e2fsck 1.45.6 (20-Mar-2020)
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/mysql: 109/786432 files (0.0% non-contiguous), 328444/3143680 blocks
[root@centos8 ~]#
#3.使用resize2fs缩减文件系统的大小
[root@centos8 ~]#resize2fs /dev/vg0/mysql 2G
resize2fs 1.45.6 (20-Mar-2020)
Resizing the filesystem on /dev/vg0/mysql to 524288 (4k) blocks.
The filesystem on /dev/vg0/mysql is now 524288 (4k) blocks long.
[root@centos8 ~]#
#4.缩减逻辑卷大小
[root@centos8 ~]#lvreduce -L 2G /dev/vg0/mysql
WARNING: Reducing active logical volume to 2.00 GiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vg0/mysql? [y/n]: y
Size of logical volume vg0/mysql changed from 11.99 GiB (3070 extents) to 2.00 GiB (512 extents).
Logical volume vg0/mysql successfully resized.
[root@centos8 ~]#
#5.挂载
[root@centos8 ~]#mount -a
#查看是否缩减成功
[root@centos8 ~]#df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 958M 0 958M 0% /dev
tmpfs tmpfs 976M 0 976M 0% /dev/shm
tmpfs tmpfs 976M 8.8M 967M 1% /run
tmpfs tmpfs 976M 0 976M 0% /sys/fs/cgroup
/dev/sda1 xfs 100G 3.1G 97G 4% /
/dev/sda2 xfs 50G 12G 39G 24% /data
/dev/sda5 ext4 976M 141M 768M 16% /boot
tmpfs tmpfs 298M 0 298M 0% /run/user/0
/dev/mapper/vg0-log xfs 3.0G 54M 3.0G 2% /mnt/log
/dev/mapper/vg0-mysql ext4 2.0G 1017M 828M 56% /mnt/mysql
[root@centos8 ~]#
#文件系统可以正常访问
[root@centos8 ~]#ls /mnt/mysql/
adjtime crontab exports host.conf ld.so.cache magic netconfig rc.local shells system-release-cpe
aliases crypttab filesystems hostname ld.so.conf mailcap networks redhat-release subgid tcsd.conf
aliases.db csh.cshrc fstab hosts libaudit.conf mail.rc nsswitch.conf resolv.conf subgid- test.img
anacrontab csh.login fuse.conf idmapd.conf libuser.conf makedumpfile.conf.sample nsswitch.conf.bak rpc subuid vconsole.conf
at.deny DIR_COLORS GREP_COLORS inittab locale.conf man_db.conf os-release rsyslog.conf subuid- vimrc
bashrc DIR_COLORS.256color group inputrc localtime mime.types passwd screenrc sudo.conf virc
bindresvport.blacklist DIR_COLORS.lightbgcolor group- issue login.defs mke2fs.conf passwd- services sudoers wgetrc
centos-release dracut.conf grub2.cfg issue.net logrotate.conf motd printcap sestatus.conf sudo-ldap.conf xattr.conf
centos-release-upstream environment gshadow kdump.conf lost+found mtab profile shadow sysctl.conf yum.conf
cron.deny ethertypes gshadow- krb5.conf machine-id nanorc protocols shadow- system-release
[root@centos8 ~]#
拆除LVM中的硬盘
如果想移走lvm依赖的硬盘,那么必须可以将以该硬盘形成的物理卷上的数据移动到其他物理卷上。
#上面是什么意思呢?
#通过下面的命令可以看到物理卷的大小,/dev/sdc中已经Allocated的PE是1280个,说明这1280个PE中是有数据的,也就是1280*4/1024=5G的data。想要拆除这块硬盘那么就一定要将形成的物理卷上面的数据移动到其他物理卷上面,前提是其他所有的物理卷的PE加起来一定要大于1280才可以移动。
[root@centos8 ~]#pvs
PV VG Fmt Attr PSize PFree
/dev/sdb1 vg0 lvm2 a-- <5.00g <5.00g
/dev/sdb2 vg0 lvm2 a-- <15.00g <15.00g
/dev/sdc vg0 lvm2 a-- <10.00g <5.00g
[root@centos8 ~]#pvdisplay
--- Physical volume ---
PV Name /dev/sdb1
VG Name vg0
PV Size 5.00 GiB / not usable 4.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 1279
Free PE 1279
Allocated PE 0
PV UUID wbeZD1-1JlE-LMly-bceX-ZB22-mfpi-d9e6Ts
--- Physical volume ---
PV Name /dev/sdc
VG Name vg0
PV Size 10.00 GiB / not usable 4.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 2559
Free PE 1279
Allocated PE 1280
PV UUID 7ZFHtJ-SPb8-VD53-PwEE-0HV8-1Si8-gWUWd9
--- Physical volume ---
PV Name /dev/sdb2
VG Name vg0
PV Size <15.00 GiB / not usable 3.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 3839
Free PE 3839
Allocated PE 0
PV UUID xgYDOJ-c3QI-ZVcI-tNIY-xdvd-n0gC-T5v4CS
[root@centos8 ~]#
#那可以看到加起来的PE大小是完全足够容纳1280的
#1.移动1280个PE所在的空间,数据也就自然而然移动了
[root@centos8 ~]#pvmove /dev/sdc
/dev/sdc: Moved: 0.78%
/dev/sdc: Moved: 20.00%
/dev/sdc: Moved: 40.00%
/dev/sdc: Moved: 80.00%
/dev/sdc: Moved: 99.92%
/dev/sdc: Moved: 100.00%
[root@centos8 ~]#
[root@centos8 ~]#pvdisplay
--- Physical volume ---
PV Name /dev/sdb1
VG Name vg0
PV Size 5.00 GiB / not usable 4.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 1279
Free PE 0
Allocated PE 1279
PV UUID wbeZD1-1JlE-LMly-bceX-ZB22-mfpi-d9e6Ts
--- Physical volume ---
PV Name /dev/sdc
VG Name vg0
PV Size 10.00 GiB / not usable 4.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 2559
Free PE 2559
Allocated PE 0 #被分配的已经为0
PV UUID 7ZFHtJ-SPb8-VD53-PwEE-0HV8-1Si8-gWUWd9
--- Physical volume ---
PV Name /dev/sdb2
VG Name vg0
PV Size <15.00 GiB / not usable 3.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 3839
Free PE 3838
Allocated PE 1
PV UUID xgYDOJ-c3QI-ZVcI-tNIY-xdvd-n0gC-T5v4CS
[root@centos8 ~]#
#2.从卷组(vg)里面移走该物理卷(pv)
[root@centos8 ~]#vgreduce vg0 /dev/sdc
Removed "/dev/sdc" from volume group "vg0"
[root@centos8 ~]#
#此时虽然从vg移走了,但是还是pv
[root@centos8 ~]#pvs
PV VG Fmt Attr PSize PFree
/dev/sdb1 vg0 lvm2 a-- <5.00g 0
/dev/sdb2 vg0 lvm2 a-- <15.00g 14.99g
/dev/sdc lvm2 --- 10.00g 10.00g
[root@centos8 ~]#
#3.删除该物理卷(pv)
[root@centos8 ~]#pvremove /dev/sdc
Labels on physical volume "/dev/sdc" successfully wiped.
[root@centos8 ~]#pvs
PV VG Fmt Attr PSize PFree
/dev/sdb1 vg0 lvm2 a-- <5.00g 0
/dev/sdb2 vg0 lvm2 a-- <15.00g 14.99g
[root@centos8 ~]#
逻辑卷快照
原理:快照是特殊的逻辑卷,创建逻辑卷快照会在卷组中开辟一块空间生成逻辑卷快照。逻辑卷快照的大小可以比逻辑卷小,因为快照逻辑卷不会把所有的数据都拷贝过去,只有当主逻辑卷的数据进行第一次修改的时候,那么原来的文件就会到逻辑卷快照中,但是以后修改了,就不会移动,只保存原来的文件。但是主逻辑卷中保留的是最新的;删除的时候也是,虽然删除了,但是会把删除的文件拷贝一份到逻辑卷快照当中,但是新建的文件不会移动到快照当中。
#查看当前的逻辑卷
[root@centos8 ~]#lvdisplay
--- Logical volume ---
LV Path /dev/vg0/mysql
LV Name mysql
VG Name vg0
LV UUID KWP0iY-vMeL-VJSY-bo2V-xELp-HOZR-N64Sfm
LV Write Access read/write
LV Creation host, time centos8.xingyuyu.com, 2023-03-09 17:46:31 +0800
LV Status available
# open 1
LV Size 2.00 GiB
Current LE 512
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
--- Logical volume ---
LV Path /dev/vg0/log
LV Name log
VG Name vg0
LV UUID 0flExE-2BEV-T3sg-d1fr-oMl8-uwt2-KsXJ4A
LV Write Access read/write
LV Creation host, time centos8.xingyuyu.com, 2023-03-09 17:47:21 +0800
LV Status available
# open 1
LV Size 3.00 GiB
Current LE 768
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:1
[root@centos8 ~]#
#创建mysql的快照(ext4系列)
[root@centos8 ~]#lvcreate -s -n mysql-snapshot -L 500M /dev/vg0/mysql #-s指创建快照,-n快照的名字 /dev/vg0/mysql 谁的快照这里就写谁
Logical volume "mysql-snapshot" created.
[root@centos8 ~]#
#如果实现只读效果下面的命令
[root@centos8 ~]#lvcreate -s -n mysql-snapshot -L 500M -p r /dev/vg0/mysql #-s指创建快照,-n快照的名字 -p r 是ext系列的只读 /dev/vg0/mysql 谁的快照这里就写谁
Logical volume "mysql-snapshot" created.
[root@centos8 ~]#
#查看基于mysql的快照
[root@centos8 ~]#lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
log vg0 -wi-ao---- 3.00g
mysql vg0 owi-aos--- 2.00g
mysql-snapshot vg0 swi-a-s--- 500.00m mysql 0.01
[root@centos8 ~]#
#创建挂载点
[root@centos8 ~]#mkdir /mnt/snap
#临时挂载
[root@centos8 ~]#mount /dev/vg0/mysql-snapshot /mnt/snap
[root@centos8 ~]#df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 958M 0 958M 0% /dev
tmpfs tmpfs 976M 0 976M 0% /dev/shm
tmpfs tmpfs 976M 8.8M 967M 1% /run
tmpfs tmpfs 976M 0 976M 0% /sys/fs/cgroup
/dev/sda1 xfs 100G 3.1G 97G 4% /
/dev/sda2 xfs 50G 12G 39G 24% /data
/dev/sda5 ext4 976M 141M 768M 16% /boot
tmpfs tmpfs 298M 0 298M 0% /run/user/0
/dev/mapper/vg0-log xfs 3.0G 54M 3.0G 2% /mnt/log
/dev/mapper/vg0-mysql ext4 2.0G 1017M 828M 56% /mnt/mysql
/dev/mapper/vg0-mysql--snapshot ext4 2.0G 1017M 828M 56% /mnt/snap
#上面分析原理之后,快照逻辑卷中应该没有数据才对,只有当修改以后才会有,可是这里的数据跟主逻辑卷一模一样,这是其实因为这里看到的文件,并不是快照逻辑卷的,而是主逻辑卷的。
[root@centos8 ~]#ls /mnt/snap/
adjtime crontab exports host.conf ld.so.cache magic netconfig rc.local shells system-release-cpe
aliases crypttab filesystems hostname ld.so.conf mailcap networks redhat-release subgid tcsd.conf
aliases.db csh.cshrc fstab hosts libaudit.conf mail.rc nsswitch.conf resolv.conf subgid- test.img
anacrontab csh.login fuse.conf idmapd.conf libuser.conf makedumpfile.conf.sample nsswitch.conf.bak rpc subuid vconsole.conf
at.deny DIR_COLORS GREP_COLORS inittab locale.conf man_db.conf os-release rsyslog.conf subuid- vimrc
bashrc DIR_COLORS.256color group inputrc localtime mime.types passwd screenrc sudo.conf virc
bindresvport.blacklist DIR_COLORS.lightbgcolor group- issue login.defs mke2fs.conf passwd- services sudoers wgetrc
centos-release dracut.conf grub2.cfg issue.net logrotate.conf motd printcap sestatus.conf sudo-ldap.conf xattr.conf
centos-release-upstream environment gshadow kdump.conf lost+found mtab profile shadow sysctl.conf yum.conf
cron.deny ethertypes gshadow- krb5.conf machine-id nanorc protocols shadow- system-release
[root@centos8 ~]#ls /mnt/mysql/
adjtime crontab exports host.conf ld.so.cache magic netconfig rc.local shells system-release-cpe
aliases crypttab filesystems hostname ld.so.conf mailcap networks redhat-release subgid tcsd.conf
aliases.db csh.cshrc fstab hosts libaudit.conf mail.rc nsswitch.conf resolv.conf subgid- test.img
anacrontab csh.login fuse.conf idmapd.conf libuser.conf makedumpfile.conf.sample nsswitch.conf.bak rpc subuid vconsole.conf
at.deny DIR_COLORS GREP_COLORS inittab locale.conf man_db.conf os-release rsyslog.conf subuid- vimrc
bashrc DIR_COLORS.256color group inputrc localtime mime.types passwd screenrc sudo.conf virc
bindresvport.blacklist DIR_COLORS.lightbgcolor group- issue login.defs mke2fs.conf passwd- services sudoers wgetrc
centos-release dracut.conf grub2.cfg issue.net logrotate.conf motd printcap sestatus.conf sudo-ldap.conf xattr.conf
centos-release-upstream environment gshadow kdump.conf lost+found mtab profile shadow sysctl.conf yum.conf
cron.deny ethertypes gshadow- krb5.conf machine-id nanorc protocols shadow- system-release
[root@centos8 ~]#
[root@centos8 ~]#df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 958M 0 958M 0% /dev
tmpfs 976M 0 976M 0% /dev/shm
tmpfs 976M 8.8M 967M 1% /run
tmpfs 976M 0 976M 0% /sys/fs/cgroup
/dev/sda1 100G 3.1G 97G 4% /
/dev/sda2 50G 12G 39G 24% /data
/dev/sda5 976M 141M 768M 16% /boot
tmpfs 298M 0 298M 0% /run/user/0
/dev/mapper/vg0-log 3.0G 54M 3.0G 2% /mnt/log
/dev/mapper/vg0-mysql 2.0G 1017M 828M 56% /mnt/mysql
/dev/mapper/vg0-mysql--snapshot 2.0G 1017M 828M 56% /mnt/snap
[root@centos8 ~]#
#可以修改其中的的一个文件,删除一个,然后新增一个,以后恢复快照看看是否是预期的样子
[root@centos8 ~]#vim /mnt/mysql/fstab #清空文件
[root@centos8 ~]#rm -rf /mnt/mysql/motd #删除
[root@centos8 ~]#touch /mnt/mysql/f1.txt #创建
[root@centos8 ~]#
#还原快照,先取消挂载
[root@centos8 ~]#umount /mnt/snap
[root@centos8 ~]#umount /mnt/mysql
#将快照恢复,后面是快照的名字
[root@centos8 ~]#lvconvert --merge /dev/vg0/mysql-snapshot
Merging of volume vg0/mysql-snapshot started.
vg0/mysql: Merged: 100.00%
#发现快照消失了,只要快照一还原就自动删除了,这就是寿命
[root@centos8 ~]#lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
log vg0 -wi-ao---- 3.00g
mysql vg0 -wi-a----- 2.00g
[root@centos8 ~]#
#重新挂载
[root@centos8 ~]#ls /mnt/mysql/
adjtime crontab exports host.conf ld.so.cache magic netconfig rc.local shells system-release-cpe
aliases crypttab filesystems hostname ld.so.conf mailcap networks redhat-release subgid tcsd.conf
aliases.db csh.cshrc fstab hosts libaudit.conf mail.rc nsswitch.conf resolv.conf subgid- test.img
anacrontab csh.login fuse.conf idmapd.conf libuser.conf makedumpfile.conf.sample nsswitch.conf.bak rpc subuid vconsole.conf
at.deny DIR_COLORS GREP_COLORS inittab locale.conf man_db.conf os-release rsyslog.conf subuid- vimrc
bashrc DIR_COLORS.256color group inputrc localtime mime.types passwd screenrc sudo.conf virc
bindresvport.blacklist DIR_COLORS.lightbgcolor group- issue login.defs mke2fs.conf passwd- services sudoers wgetrc
centos-release dracut.conf grub2.cfg issue.net logrotate.conf motd printcap sestatus.conf sudo-ldap.conf xattr.conf
centos-release-upstream environment gshadow kdump.conf lost+found mtab profile shadow sysctl.conf yum.conf
cron.deny ethertypes gshadow- krb5.conf machine-id nanorc protocols shadow- system-release
[root@centos8 ~]#cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Wed Apr 20 06:18:15 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.
#
UUID=ad19dd45-b7ee-485c-87e6-3c9bb8ec3996 / xfs defaults 0 0
UUID=8fbb4a9c-1506-4c4a-889d-b78163091bb0 /boot ext4 defaults 1 2
UUID=933c390a-5904-4b01-aa6a-447c771b7f08 /data xfs defaults 0 0
#UUID=98f53a44-1fb7-4139-85c6-a3c2d1633cd7 none swap defaults 0 0
#UUID=430542b8-0e56-4316-8e49-e937b8b682f5 /data/mysql ext4 defaults 0 0
#UUID=2a9d6777-78de-4af3-9b97-0ba31db1c95c none swap pri=55 0 0
/data/swapfile none swap defaults 0 0
/dev/vg0/mysql /mnt/mysql ext4 defaults 0 0
/dev/vg0/log /mnt/log xfs defaults 0 0
[root@centos8 ~]#
上面是ext4系统快照,下面是xfs系统快照
[root@centos8 ~]#df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 958M 0 958M 0% /dev
tmpfs tmpfs 976M 0 976M 0% /dev/shm
tmpfs tmpfs 976M 8.8M 967M 1% /run
tmpfs tmpfs 976M 0 976M 0% /sys/fs/cgroup
/dev/sda1 xfs 100G 3.1G 97G 4% /
/dev/sda2 xfs 50G 12G 39G 24% /data
/dev/sda5 ext4 976M 141M 768M 16% /boot
tmpfs tmpfs 298M 0 298M 0% /run/user/0
/dev/mapper/vg0-log xfs 3.0G 54M 3.0G 2% /mnt/log
/dev/mapper/vg0-mysql ext4 2.0G 1017M 828M 56% /mnt/mysql
[root@centos8 ~]#
#log是xfs系统
#拷贝几个文件到/mnt/log下
[root@centos8 ~]#cp /etc/fstab /mnt/log/a.txt
[root@centos8 ~]#cp /etc/fstab /mnt/log/b.txt
[root@centos8 ~]#cp /etc/fstab /mnt/log/c.txt
[root@centos8 ~]#
#创建快照
[root@centos8 ~]#lvcreate -s -n log-snapshot -L 500M /dev/vg0/log
Logical volume "log-snapshot" created.
[root@centos8 ~]#
#上面我们还是不加-p r选项,通过mount挂载的时候使用-o选项加
[root@centos8 ~]#mount -o ro /dev/vg0/log-snapshot /mnt/snap/
mount: /mnt/snap: wrong fs type, bad option, bad superblock on /dev/mapper/vg0-log--snapshot, missing codepage or helper program, or other error.
[root@centos8 ~]#
#这里提示报错了,这是因为xfs不允许相同的uuid进行挂载,使用选项nouuid意思就是不检查uuid
[root@centos8 ~]#mount -o ro,nouuid /dev/vg0/log-snapshot /mnt/snap/
[root@centos8 ~]#vim /mnt/log/a.txt #删除里面所有内容
[root@centos8 ~]#rm -rf /mnt/log/b.txt
[root@centos8 ~]#touch /mnt/log/d.txt
#取消挂载
[root@centos8 ~]#umount /mnt/snap
[root@centos8 ~]#umount /mnt/log
#还原快照
[root@centos8 ~]#lvconvert --merge /dev/vg0/log-snapshot
Merging of volume vg0/log-snapshot started.
vg0/log: Merged: 100.00%
[root@centos8 ~]#
#重新挂载
[root@centos8 ~]#mount -a
[root@centos8 ~]#ls /mnt/log
a.txt b.txt c.txt
[root@centos8 ~]#
删除逻辑卷
先删除逻辑卷、再删除卷组、最后删除物理卷,然后使用fdisk删除分区
#想要删除必须先取消挂载
[root@centos8 ~]#umount /mnt/mysql
[root@centos8 ~]#umount /mnt/log
#已经看不到挂载情况了
[root@centos8 ~]#df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 958M 0 958M 0% /dev
tmpfs tmpfs 976M 0 976M 0% /dev/shm
tmpfs tmpfs 976M 8.8M 967M 1% /run
tmpfs tmpfs 976M 0 976M 0% /sys/fs/cgroup
/dev/sda1 xfs 100G 3.1G 97G 4% /
/dev/sda2 xfs 50G 12G 39G 24% /data
/dev/sda5 ext4 976M 141M 768M 16% /boot
tmpfs tmpfs 298M 0 298M 0% /run/user/0
[root@centos8 ~]#
#删除逻辑卷
[root@centos8 ~]#lvremove /dev/vg0/mysql
Do you really want to remove active logical volume vg0/mysql? [y/n]: y
Logical volume "mysql" successfully removed.
[root@centos8 ~]#lvremove /dev/vg0/log
Do you really want to remove active logical volume vg0/log? [y/n]: y
Logical volume "log" successfully removed.
[root@centos8 ~]#
#删除卷组
[root@centos8 ~]#lvs
[root@centos8 ~]#vgs
VG #PV #LV #SN Attr VSize VFree
vg0 2 0 0 wz--n- 19.99g 19.99g
[root@centos8 ~]#vgremove vg0
Volume group "vg0" successfully removed
[root@centos8 ~]#
#删除物理卷
[root@centos8 ~]#pvremove /dev/sdb{1,2}
Labels on physical volume "/dev/sdb1" successfully wiped.
Labels on physical volume "/dev/sdb2" successfully wiped.
[root@centos8 ~]#pvs
[root@centos8 ~]#
#删除分区
[root@centos8 ~]#lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 200G 0 disk
├─sda1 8:1 0 100G 0 part /
├─sda2 8:2 0 50G 0 part /data
├─sda3 8:3 0 2G 0 part
├─sda4 8:4 0 1K 0 part
└─sda5 8:5 0 1G 0 part /boot
sdb 8:16 0 20G 0 disk
├─sdb1 8:17 0 5G 0 part
└─sdb2 8:18 0 15G 0 part
sdc 8:32 0 10G 0 disk
sr0 11:0 1 4.4G 0 rom
sr1 11:1 1 10.1G 0 rom
[root@centos8 ~]#
#查看sdb还是lvm类型
[root@centos8 ~]#fdisk -l
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: 0xd528d7c1
Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 10487807 10485760 5G 8e Linux LVM
/dev/sdb2 10487808 41943039 31455232 15G 8e Linux LVM
Disk /dev/sda: 200 GiB, 214748364800 bytes, 419430400 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: 0x64f77bbe
Device Boot Start End Sectors Size Id Type
/dev/sda1 2048 209717247 209715200 100G 83 Linux
/dev/sda2 209717248 314574847 104857600 50G 83 Linux
/dev/sda3 314574848 318769151 4194304 2G 82 Linux swap / Solaris
/dev/sda4 318769152 419430399 100661248 48G 5 Extended
/dev/sda5 * 318773248 320870399 2097152 1G 83 Linux
Disk /dev/sdc: 10 GiB, 10737418240 bytes, 20971520 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
[root@centos8 ~]#
[root@centos8 ~]#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.
Command (m for help): d
Partition number (1,2, default 2):
Partition 2 has been deleted.
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: 0xd528d7c1
Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 10487807 10485760 5G 8e Linux LVM
Command (m for help): d
Selected partition 1
Partition 1 has been deleted.
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: 0xd528d7c1
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
[root@centos8 ~]#
[root@centos8 ~]#lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 200G 0 disk
├─sda1 8:1 0 100G 0 part /
├─sda2 8:2 0 50G 0 part /data
├─sda3 8:3 0 2G 0 part
├─sda4 8:4 0 1K 0 part
└─sda5 8:5 0 1G 0 part /boot
sdb 8:16 0 20G 0 disk
sdc 8:32 0 10G 0 disk
sr0 11:0 1 4.4G 0 rom
sr1 11:1 1 10.1G 0 rom
[root@centos8 ~]#
#删除干净
3.命令说明
pvcreate
- pvcreate是一个Linux命令,用于将一个或多个磁盘分区初始化为LVM物理卷(Physical Volume),以便将它们添加到逻辑卷管理器(Logical Volume Manager,LVM)中。
- LVM是Linux操作系统中一种用于管理磁盘存储的技术,它能够将多个物理磁盘或分区组合成一个或多个逻辑卷组,并通过逻辑卷将逻辑卷组的存储空间分配给文件系统或应用程序
pvcreate命令的基本语法如下:
pvcreate [选项] 物理卷名称
其中,选项包括:
-M
:指定物理卷的元数据备份位置,默认为/dev/null。-v
:启用详细模式,显示创建过程中的详细信息。-y
:跳过确认提示,直接执行命令。
下面是一个例子:
pvcreate /dev/sdb1
这个命令会将/dev/sdb1分区初始化为一个LVM物理卷。在将分区初始化为物理卷之前,需要先确保这个分区上没有数据,否则数据将会被覆盖并丢失。
创建物理卷之后,就可以使用vgcreate命令创建逻辑卷组(Volume Group),并使用lvcreate命令创建逻辑卷(Logical Volume),最后使用mkfs命令为逻辑卷创建文件系统,并将逻辑卷挂载到文件系统中,使其可以被应用程序访问。
需要注意的是,pvcreate命令必须以root用户或拥有sudo权限的用户身份运行,否则会提示权限不足的错误信息.
vgcreate
vgcreate是一个Linux命令,用于创建一个新的LVM卷组(Volume Group),可以将多个物理卷(Physical Volume)组合成一个逻辑卷组(Volume Group)来使用。
LVM(Logical Volume Manager)是Linux操作系统中一种用于管理磁盘存储的技术,它能够将多个物理磁盘或分区组合成一个或多个逻辑卷组,并通过逻辑卷(Logical Volume)将逻辑卷组的存储空间分配给文件系统或应用程序。
vgcreate命令的基本语法如下:
vgcreate [选项] 卷组名称 物理卷名称
其中,选项包括:
-s
:指定PE(Physical Extent)的大小,默认为4MB。
下面是一个例子:
vgcreate myvg /dev/sdb1 /dev/sdc1
这个命令会将/dev/sdb1和/dev/sdc1这两个物理卷组合成一个名为myvg的逻辑卷组。如果物理卷之前没有被初始化为LVM物理卷,则需要先运行pvcreate命令进行初始化。
创建逻辑卷组后,就可以使用lvcreate命令创建逻辑卷(Logical Volume),并使用mkfs命令为逻辑卷创建文件系统。然后,可以将逻辑卷挂载到文件系统中,使其可以被应用程序访问。
需要注意的是,vgcreate命令必须以root用户或拥有sudo权限的用户身份运行,否则会提示权限不足的错误信息
lvcreate
lvcreate是一个Linux命令,用于创建一个新的逻辑卷(Logical Volume),将逻辑卷组(Volume Group)中的一部分存储空间分配给逻辑卷。
逻辑卷是LVM中的一种逻辑存储单元,可以将其看作是类似于传统磁盘分区的一种存储单元,可以为其分配文件系统并挂载到系统中。
lvcreate命令的基本语法如下:
lvcreate [选项] 卷组名称 -n 逻辑卷名称 -L 逻辑卷大小
其中,选项包括:
-l
:指定逻辑卷的大小为卷组中可用的物理卷数量,例如“-l 100%VG”表示将逻辑卷大小设置为卷组中可用物理卷的100%。-n
:指定逻辑卷的名称。-L
:指定逻辑卷的大小,单位为字节、千字节、兆字节或千兆字节,例如“-L 10G”表示将逻辑卷大小设置为10GB。-s
: 指定是快照模式-p r
:只读属性,才可以挂载,指的是快照
下面是一个例子:
lvcreate -n mylv -L 10G myvg
这个命令会在名为myvg的逻辑卷组中创建一个名为mylv的逻辑卷,并将其大小设置为10GB。
创建逻辑卷之后,可以使用mkfs命令为逻辑卷创建文件系统,并使用mount命令将其挂载到文件系统中,使其可以被应用程序访问。
需要注意的是,lvcreate命令必须以root用户或拥有sudo权限的用户身份运行,否则会提示权限不足的错误信息。
pvdisplay
pvdisplay
、vgdisplay
、lvdisplay
是Linux中常用的LVM
(Logical Volume Manager)命令,用于显示物理卷、卷组和逻辑卷的信息。
pvdisplay命令用于显示系统中所有物理卷(Physical Volume)的详细信息,包括物理卷的名称、UUID、大小、状态等信息
pvdisplay命令的基本语法如下:
pvdisplay [选项] [物理卷名称]
其中,选项包括:
-c
:以CSV格式显示物理卷信息。-m
:显示物理卷的映射信息。s
:以简洁格式显示物理卷信息
下面是一个例子:
pvdisplay /dev/sdb1
或者
pvdisplay
vgdisplay
vgdisplay
命令用于显示系统中所有逻辑卷组(Volume Group)的详细信息,包括逻辑卷组的名称、UUID、大小、状态等信息。
vgdisplay命令的基本语法如下:
vgdisplay [选项] [卷组名称]
其中,选项包括:
-c
:以CSV格式显示逻辑卷组信息。-s
:以简洁格式显示逻辑卷组信息。
lvdisplay
lvdisplay
命令用于显示系统中所有逻辑卷(Logical Volume)的详细信息,包括逻辑卷的名称、UUID、大小、状态等信息。
lvdisplay命令的基本语法如下:
lvdisplay [选项] [逻辑卷名称]
其中,选项包括:
-c
:以CSV格式显示逻辑卷信息。-m
:显示逻辑卷的映射信息。-s
:以简洁格式显示逻辑卷信息。
lvdisplay /dev/vg0/mysql
lvextend
lvextend
是 Linux 系统中用于扩展逻辑卷(Logical Volume,简称 LV)大小的命令。
使用 lvextend
命令可以将 LV 扩展到新的物理卷或者原有物理卷上空闲的空间。该命令必须以 root 用户或者拥有 sudo 权限的用户身份运行
下面是 lvextend
命令的基本语法:
lvextend [选项] LV名 [物理卷]
其中,LV名
是要扩展的 LV 的名称,物理卷
是新的物理卷或者原有物理卷上空闲的空间。
常用的选项包括:
-L
:指定新的 LV 大小,例如-L 10G
表示将 LV 扩展到 10GB。-r
:自动调整文件系统大小,该选项只能用于 ext2、ext3、ext4 和 XFS 文件系统。-n
:指定新的 LV 名称,用于重命名 LV。
示例:
- 将 LV 扩展到新的物理卷上:
lvextend -L +10G /dev/vg1/lv1 /dev/sdb1
以上命令将 /dev/sdb1
添加到卷组 vg1
中,并将 lv1
扩展到新的物理卷上,扩展的大小为 10GB。
- 将 LV 扩展到原有物理卷上的空闲空间:
lvextend -r -L +10G /dev/vg1/lv1
以上命令将 lv1
扩展到原有物理卷上空闲的空间,扩展的大小为 10GB,并自动调整文件系统大小
vgextend
vgextend
是 Linux 系统中用于扩展卷组(Volume Group)的命令。
卷组是物理卷(Physical Volume)的逻辑组合,而物理卷是硬盘分区或者硬盘整体。通过将多个物理卷组合成一个卷组,可以更好地管理磁盘空间。
vgextend
命令用于将新的物理卷添加到现有的卷组中,从而扩展该卷组的容量。使用 vgextend
命令时,需要指定待扩展的卷组名称和要添加到该卷组的物理卷名称。
用法:
vgextend [选项] 卷组名称 物理卷名称
其中,选项
为可选参数,可以包括以下参数:
-v
:显示详细的扩展过程信息。-f
:强制执行操作,即使可能存在一些风险。-A
:扩展所有的卷组。
例如,假设要将名为 vg1
的卷组扩展,添加一个名为 /dev/sdb1
的物理卷。则可以使用以下命令:
vgextend vg1 /dev/sdb1
执行该命令后,vg1
卷组的容量将会增加,包括新添加的物理卷的容量。
resize2fs、xfs_growfs
resize2fs
和xfs_growfs
都是用于调整Linux文件系统大小的工具。
resize2fs
用于调整EXT2、EXT3和EXT4文件系统的大小。它可以增加或减少文件系统的大小。
xfs_growfs
用于调整XFS文件系统的大小。它只能增加文件系统的大小,不能缩小。
总的来说,这两个工具都是非常有用的,因为它们可以在不影响数据的情况下调整Linux文件系统的大小,从而使得文件系统能够更好地适应存储需求的变化。
#如果不加-r,那么扩容以后不会自动调整,这个使用df -Th可以看到扩容以后的空间是没有文件系统的
#如果是ext4系列的,那么需要使用下面命令扩容:
resize2fs /dev/vg0/mysql
#如果是xfs系列的,那么需要下面命令扩容文件系统:
fs_growfs /mnt/log/ #这个需要写挂载点,而不是像上面逻辑卷
lvreduce
resize2fs /dev/vg0/mysql 2G
命令用于调整逻辑卷/dev/vg0/mysql
所使用的文件系统大小为 2GB。逻辑卷的大小可以超过文件系统的大小,但是如果文件系统需要使用的空间超过逻辑卷的大小,则可能导致数据丢失或文件系统损坏。因此,在调整逻辑卷的大小之前,应该先使用resize2fs
命令调整文件系统的大小,以确保它不会超出逻辑卷的大小。lvreduce -L 2G /dev/vg0/mysql
命令用于调整逻辑卷/dev/vg0/mysql
的大小为 2GB。它会缩小逻辑卷的大小,并自动调整文件系统的大小以适应新的逻辑卷大小。但是,需要注意的是,在缩小逻辑卷的大小之前,应该确保逻辑卷中没有超过新大小的数据。否则,数据可能会丢失。
lvresize
lvresize
和 lvreduce
都是 LVM 命令,用于调整逻辑卷的大小,但它们的作用略有不同:
lvresize
命令可以增加或缩小逻辑卷的大小。使用lvresize
命令可以增加逻辑卷的大小,但是增加之前必须先增加物理卷的大小或者添加新的物理卷。同时,也可以使用lvresize
命令缩小逻辑卷的大小。在缩小逻辑卷的大小之前,需要先确保逻辑卷中的文件系统大小已经被缩小到与逻辑卷一样大小。lvreduce
命令仅用于缩小逻辑卷的大小。使用lvreduce
命令可以缩小逻辑卷的大小,但是缩小之前必须先缩小逻辑卷中的文件系统大小,以便逻辑卷可以缩小到指定的大小。在缩小逻辑卷的大小之前,需要先备份重要数据,以免数据丢失。
因此,lvresize
命令的功能更加全面,可以用于增加或缩小逻辑卷的大小,而 lvreduce
命令则只能用于缩小逻辑卷的大小。在实际使用中,需要根据具体的需求和情况来选择使用哪个命令。
lvremove
lvremove
命令用于删除一个逻辑卷(logical volume,简称 LV)。删除逻辑卷将导致该卷中的数据被永久删除,因此在执行该命令之前,应该先备份数据以避免数据丢失。
lvremove
命令的语法格式如下:
lvremove [options] LV
其中,LV
是要删除的逻辑卷名称。options
为可选参数,常用的参数如下:
-f
:强制删除逻辑卷,不提示确认。-v
:显示详细信息。
例如,要删除名为 lv_data
的逻辑卷,可以使用以下命令:
lvremove /dev/vg_data/lv_data
执行该命令将提示确认是否要删除逻辑卷。如果不希望进行确认,可以添加 -f
参数:
lvremove -f /dev/vg_data/lv_data
pvremove
pvremove
命令用于从 LVM 中删除一个物理卷(physical volume,简称 PV)。执行该命令将导致该物理卷中的数据被永久删除,因此在执行该命令之前,应该先备份数据以避免数据丢失。
pvremove
命令的语法格式如下:
pvremove [options] PV
其中,PV
是要删除的物理卷名称或设备路径。options
为可选参数,常用的参数如下:
-f
:强制删除物理卷,不提示确认。-v
:显示详细信息。
例如,要删除名为 /dev/sdb1
的物理卷,可以使用以下命令:
例如,要删除名为 /dev/sdb1
的物理卷,可以使用以下命令:
pvremove /dev/sdb1
0 Comments