lvm和rRAID的使用

3 RAID

3.1 什么是RAID


"RAID"一词是由David Patterson, Garth A. Gibson, Randy Katz 于1987年在加州大学伯克利分校发明的。在1988年6月SIGMOD会议上提交的论文"A Case for Redundant Arrays of Inexpensive Disks”"中提出,当时性能最好的大型机不断增长的个人电脑市场开发的一系列廉价驱动器的性能所击败。尽管故障与驱动器数量的比例会上升,但通过配置冗余,阵列的可靠性可能远远超过任何大型单个驱动器的可靠性

独立硬盘冗余阵列(RAID, Redundant Array of Independent Disks),旧称廉价磁盘冗余阵列(Redundant Array of Inexpensive Disks),简称磁盘阵列。利用虚拟化存储技术把多个硬盘组合起来,成为一个或多个硬盘阵列组,目的为提升性能或数据冗余,或是两者同时提升。

RAID 层级不同,数据会以多种模式分散于各个硬盘,RAID 层级的命名会以 RAID 开头并带数字,例如:RAID 0、RAID 1、RAID 5、RAID 6、RAID 7、RAID 01、RAID 10、RAID 50、RAID 60。每种等级都有其理论上的优缺点,不同的等级在两个目标间获取平衡,分别是增加数据可靠性以及增加存储器(群)读写性能。

简单来说,RAID把多个硬盘组合成为一个逻辑硬盘,因此,操作系统只会把它当作一个实体硬盘。RAID常被用在服务器电脑上,并且常使用完全相同的硬盘作为组合。由于硬盘价格的不断下降与RAID功能更加有效地与主板集成,它也成为普通用户的一个选择,特别是需要大容量存储空间的工作,如:视频与音频制作。

RAID 功能实现

  • 提高IO能力,磁盘并行读写
  • 提高耐用性,磁盘冗余算法来实现

RAID 实现的方式

  • 外接式磁盘阵列:通过扩展卡提供适配能力
  • 内接式RAID:主板集成RAID控制器,安装OS前在BIOS里配置
  • 软件RAID:通过OS实现,比如:群晖的NAS

3.2 RAID级别

级别:多块磁盘组织在一起的工作方式有所不同

参考链接: https://zh.wikipedia.org/wiki/RAID

RAID-0:条带卷,strip

RAID-1:镜像卷,mirror

RAID-2

......

RAID-5

RAID-6

RAID-7

RAID-10

RAID-01

RAID-50

......

3.2.1 RAID-0

以 chunk 单位,读写数据,因为读写时都可以并行处理,所以在所有的级别中,RAID 0的速度是最快的。但是RAID 0既没有冗余功能,也不具备容错能力,如果一个磁盘(物理)损坏,所有数据都会丢失

读、写性能提升

可用空间:N*min(S1,S2,...)

无容错能力

最少磁盘数:1+

RAID0范例

第一步:添加三块硬盘,然后重启系统,fdisk  –l 查看硬盘信息

二:fsisk  /dev/sdb

命令(输入 m 获取帮助):n

Partition type:

   p   primary (0 primary, 0 extended, 4 free)

   e   extended

Select (default p): p

分区号 (1-4,默认 1):1

起始 扇区 (2048-41943039,默认为 2048):

将使用默认值 2048

Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+10G

分区 1 已设置为 Linux 类型,大小设为 10Gib

命令(输入 m 获取帮助):n

Partition type:

   p   primary (1 primary, 0 extended, 3 free)

   e   extended

Select (default p): p

分区号 (2-4,默认 2):

起始 扇区 (20973568-41943039,默认为20973568):

将使用默认值20973568

Last 扇区, +扇区 or +size{K,M,G} (20973568-41943039,默认为 41943039):

将使用默认值41943039

分区 2 已设置为 Linux 类型,大小设为 10GiB

命令(输入 m 获取帮助):t

分区号 (1,2,默认 2):1

Hex 代码(输入 L 列出所有代码):fd

已将分区“Linux”的类型更改为“Linuxraid autodetect”

命令(输入 m 获取帮助):t

分区号 (1,2,默认 2):2

Hex 代码(输入 L 列出所有代码):fd

已将分区“Linux”的类型更改为“Linuxraid autodetect”

命令(输入 m 获取帮助):p

磁盘 /dev/sdc:21.5 GB,21474836480 字节,41943040 个扇区

Units = 扇区 of 1 * 512 = 512 bytes

扇区大小(逻辑/物理):512 字节 / 512 字节

I/O 大小(最小/最佳):512 字节 / 512 字节

磁盘标签类型:dos

磁盘标识符:0xf2f14edf

   设备 Boot      Start         End      Blocks  Id  System

/dev/sdc1           2048 10487807 10485760   5G fd Linux raid autodetect
/dev/sdc2       10487808 20973567 10485760   5G fd Linux raid autodetect

命令(输入 m 获取帮助):w

####其他两块相同步骤

三:创建RAID

[20:50:15 root@CentOS8 ~]#mdadm -C /dev/md0 -l 0 -n 2 /dev/sdc{1..2}
mdadm: partition table exists on /dev/sdc1
mdadm: partition table exists on /dev/sdc1 but will be lost or
       meaningless after creating array
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

#查看raid
[20:50:27 root@CentOS8 ~]#mdadm  --detail  /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Sun Dec  4 20:50:27 2022
        Raid Level : raid0
        Array Size : 10475520 (9.99 GiB 10.73 GB)
      Raid Devices : 2
     Total Devices : 2
       Persistence : Superblock is persistent

       Update Time : Sun Dec  4 20:50:27 2022
             State : clean 
    Active Devices : 2
   Working Devices : 2
    Failed Devices : 0
     Spare Devices : 0

            Layout : -unknown-
        Chunk Size : 512K

Consistency Policy : none

              Name : CentOS8.magedu.org.41:0  (local to host CentOS8.magedu.org.41)
              UUID : a891c88d:f6e95ad2:dc14a0e1:3124ca51
            Events : 0

    Number   Major   Minor   RaidDevice State
       0       8       33        0      active sync   /dev/sdc1
       1       8       34        1      active sync   /dev/sdc2
#创建xfs文件系统
[20:52:18 root@CentOS8 ~]#mkfs.xfs /dev/md0 
log stripe unit (524288 bytes) is too large (maximum is 256KiB)
log stripe unit adjusted to 32KiB
meta-data=/dev/md0               isize=512    agcount=16, agsize=163712 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=2618880, imaxpct=25
         =                       sunit=128    swidth=256 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=8 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

#设置开机自动挂载
[20:56:51 root@CentOS8 ~]#cat /etc/fstab 

#
# /etc/fstab
# Created by anaconda on Sun Nov 20 09:32:28 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=4b51fc2f-594e-47e4-abda-37783b1bdf63     	/                       xfs     defaults        0 0
UUID=7f2a69c1-44ed-4abc-b98b-970bdd6109be 	/boot                   xfs     defaults        0 0
UUID=4283420e-289e-4928-980e-2cbf18ae8450     	/data                  	xfs     defaults        0 0
UUID=1c4060f4-a57f-4ee2-967c-ee02508fe07e    	/home                   xfs     defaults        0 0
UUID=060d175f-b794-4b8c-b28b-39c74e22a126       none                    swap    defaults        0 0
#UUID=224332d1-64c7-4cbb-a3b7-a472ffb825d5       /sdb5     		xfs 	defaults	0 0
#UUID=92bdf831-2aff-44c5-a6d4-28310dfebe58 	/sdb1			ext4	defaults	0 0
#UUID=25902095-6ce7-4732-9ccc-70aa2dde4895     /mysql 			ext4    defaults	0 0
UUID=2021-11-13-01-04-26-00			/mnt			iso9660	defaults	0 0
#UUID=8775eea9-bb7a-48f0-94ba-dd12edbfe8ed       none			swap	pri=100 	0 0	
#UUID=5a1d73aa-87a5-4ed3-a8cb-67da82281678       /test                   ext4    defaults        0 0
#UUID=e408e722-4f8c-4949-88a4-dc7f6fa1cbdd	/log			xfs	defaults	0 0
UUID=19412c91-99ac-4fc4-9d88-9bcd57ceedd5       /raid0 			xfs	defaults	0 0
UUID=5b1c325f-a008-4f89-ab77-dd59ea169a91	/users			ext4	defaults	0 0
[20:57:04 root@CentOS8 ~]#
[21:01:48 root@CentOS8 ~]#mount -a
[21:01:49 root@CentOS8 ~]#df -h
Filesystem                     Size  Used Avail Use% Mounted on
devtmpfs                       442M     0  442M   0% /dev
tmpfs                          471M     0  471M   0% /dev/shm
tmpfs                          471M  7.3M  464M   2% /run
tmpfs                          471M     0  471M   0% /sys/fs/cgroup
/dev/mapper/cl-root            127G  8.5G  119G   7% /
/dev/mapper/cl-data             50G   12G   39G  23% /data
/dev/mapper/cl-home             20G  176M   20G   1% /home
/dev/sda1                     1014M  233M  782M  23% /boot
/dev/sr0                        11G   11G     0 100% /mnt
tmpfs                           95M   12K   95M   1% /run/user/42
tmpfs                           95M     0   95M   0% /run/user/0
/dev/mapper/vg--testvg-testlv  4.9G   21M  4.6G   1% /users
/dev/md0                        10G  105M  9.9G   2% /raid0


#普通的磁盘写入模拟
21:02:09 root@CentOS8 ~]#time dd if=/dev/zero of=txt bs=1M count=1000
1000+0 records in
1000+0 records out
1048576000 bytes (1.0 GB, 1000 MiB) copied, 1.03833 s, 1.0 GB/s

real	0m1.062s
user	0m0.001s
sys	0m0.523s
##写入1G耗时0m1.062s
RAID0的模拟
[21:04:35 root@CentOS8 ~]#cd /raid0/
[21:04:47 root@CentOS8 raid0]#time dd if=/dev/zero of=txt bs=1M count=1000
1000+0 records in
1000+0 records out
1048576000 bytes (1.0 GB, 1000 MiB) copied, 0.794355 s, 1.3 GB/s

real	0m0.800s
user	0m0.000s
sys	0m0.349s
##写入1G耗时0m0.800s

3.2.2 RAID-1

也称为镜像, 两组以上的N个磁盘相互作镜像,在一些多线程操作系统中能有很好的读取速度,理论上读取速度等于硬盘数量的倍数,与RAID 0相同。另外写入速度有微小的降低。

读性能提升、写性能略有下降

可用空间:1*min(S1,S2,...)

磁盘利用率 50%

有冗余能力

最少磁盘数:2+

3.2.3 RAID-4


多块数据盘异或运算值存于专用校验盘

磁盘利用率 (N-1)/N

有冗余能力

至少3块硬盘才可以实现

3.2.4 RAID-5


读、写性能提升

可用空间:(N-1)*min(S1,S2,...)

有容错能力:允许最多1块磁盘损坏

最少磁盘数:3, 3+

3.2.5 RAID-6


双份校验位,算法更复杂

读、写性能提升

可用空间:(N-2)*min(S1,S2,...)

有容错能力:允许最多2块磁盘损坏

最少磁盘数:4, 4+

3.2.6 RAID-10


读、写性能提升

可用空间:N*min(S1,S2,...)/2

有容错能力:每组镜像最多只能坏一块

最少磁盘数:4, 4+

3.2.7 RAID-01


多块磁盘先实现RAID0,再组合成RAID1

3.2.8 RAID-50


多块磁盘先实现RAID5,再组合成RAID0

3.2.9 RAID-60

3.2.9 其它级别

JBOD:Just a Bunch Of Disks只是一堆磁盘


功能:将多块磁盘的空间合并一个大的连续空间使用

第一块硬盘存放所有磁盘的分段信息,如果损坏,整个阵列会失败

后续磁盘损坏只会影响本块磁盘的数据

可用空间:sum(S1,S2,...)

RAID7

RAID 7并非公开的RAID标准,而是美国公司的Storage Computer Corporation的专利硬件产品名称,RAID 7是以RAID 3及RAID 4为基础所发展,但是经过强化以解决原来的一些限制。另外,在实现中使用大量的缓冲存储器以及用以实现异步数组管理的专用即时处理器,使得RAID 7可以同时处理大量的IO要求,所以性能甚至超越了许多其他RAID标准的实际产品。但也因为如此,在价格方面非常的高昂.RAID7 可以理解为一个独立存储计算机,自身带有操作系统和管理工具,可以独立运行,理论上性能最高的RAID模式

SHR(Synology Hybrid RAID)

群晖公司的技术,适合不了解RAID的普通用户

根据磁盘个数自动组成不同的RAID,1块普通磁盘,2块RAID1,3块RAID4,SHR2类似于RAID6

只支持群晖系统

3.2.10 RAID 总结

常用级别:RAID-0, RAID-1, RAID-5, RAID-10, RAID-50,RAID-60

磁盘阵列比较表


RAID
等级





















安全性 目的 应用场景
单一
硬盘
(参
考)
0 1 1 1
JBOD 1 0 n 1 1 无(同RAID
0)
增加容量 个人(暂
时)存储
备份
0 1 0 n n n 一个硬盘异常,
全部硬盘都会异
追求最大容量、
速度
影片剪接
缓存用途
1 2 -n
1
1 n 1 高,一个正常即
追求最大安全性 个人、企
业备份
5 3 1 n-
1
n-
1
n-
1
追求最大容量、
最小预算
个人、企
业备份
6 4 2 n-
2
n-
2
n-
2
安全性较RAID
5高
同RAID 5,但
较安全
个人、企
业备份
10 4 综合RAID 0/1优
点,理论速度较
大型数据
库、服务
50 6 提升数据安全
60 8 提升数据安全

3.3实现软RAID

mdadm工具:为软RAID提供管理界面,为空余磁盘添加冗余,结合内核中的md(multi devices)

RAID设备可命名为/dev/md0、/dev/md1、/dev/md2、/dev/md3等

mdadm:模式化的工具,支持的RAID级别:LINEAR, RAID0, RAID1, RAID4, RAID5, RAID6, RAID10

命令的语法格式:

mdadm [mode] <raiddevice> [options] <component-devices>

常用选项说明

模式:
 创建:-C
 装配:-A
 监控:-F
 管理:-f, -r, -a
<raiddevice>: /dev/md#
<component-devices>: 任意块设备
-C: 创建模式
 -n #: 使用#个块设备来创建此RAID
 -l #:指明要创建的RAID的级别
 -a {yes|no}:自动创建目标RAID设备的设备文件
 -c CHUNK_SIZE: 指明块大小,单位k
 -x #: 指明空闲盘的个数
-D:显示raid的详细信息
 mdadm -D /dev/md#

管理模式:
 -f: 标记指定磁盘为损坏
 -a: 添加磁盘
 -r: 移除磁盘
 
观察md的状态: cat /proc/mdstat

范例:

#使用mdadm创建并定义RAID设备
mdadm -C /dev/md0 -a yes -l 5 -n 3 -x 1 /dev/sd{b,c,d,e}1
#用文件系统对每个RAID设备进行格式化
mkfs.xfs /dev/md0

#使用mdadm检查RAID设备的状况
mdadm --detail|D /dev/md0
#增加新的成员
mdadm -G /dev/md0 -n4  -a /dev/sdf1
#模拟磁盘故障
mdadm /dev/md0  -f /dev/sda1
#移除磁盘
mdadm   /dev/md0 -r /dev/sda1

#在备用驱动器上重建分区
mdadm /dev/md0  -a /dev/sda1

#系统日志信息
cat /proc/mdstat

生成配置文件:

mdadm -D -s >> /etc/mdadm.conf

停止设备:

mdadm -S /dev/md0

激活设备:

mdadm -A -s /dev/md0

强制启动:

mdadm -R /dev/md0

删除raid信息

mdadm --zero-superblock /dev/sdb1

练习

1:创建一个可用空间为1G的RAID1设备,文件系统为ext4,有一个空闲盘,开机可自动挂载至/backup目录


2:创建由三块硬盘组成的可用空间为2G的RAID5设备,要求其chunk大小为256k,文件系统为ext4,开机可自动挂载至/mydata目录


4 逻辑卷管理器(LVM)

4.1 LVM介绍

LVM: Logical Volume Manager 可以允许对卷进行方便操作的抽象层,包括重新设定文件系统的大小,

允许在多个物理设备间重新组织文件系统

LVM可以弹性的更改LVM的容量

通过交换PE来进行资料的转换,将原来LV内的PE转移到其他的设备中以降低LV的容量,或将其他设备

中的PE加到LV中以加大容量

实现过程

  • 将设备指定为物理卷
  • 用一个或者多个物理卷来创建一个卷组,物理卷是用固定大小的物理区域(Physical Extent,PE)来定义的
  • 在物理卷上创建的逻辑卷, 是由物理区域(PE)组成
  • 可以在逻辑卷上创建文件系统并挂载

    第一个逻辑卷对应设备名:/dev/dm-#

dm: device mapper,将一个或多个底层块设备组织成一个逻辑设备的模块

软链接:

  • /dev/mapper/VG_NAME-LV_NAME
  • /dev/VG_NAME/LV_NAME

范例

4.2 实现逻辑卷

相关工具来自于 lvm2 包

[root@centos8 ~]#yum -y install lvm2

4.2.1 pv管理工具

显示pv信息

pvs:简要pv信息显示
pvdisplay

创建分区

[22:26:31 root@CentOS8 ~]#fdisk  /dev/sdb -l
Disk /dev/sdb: 50 GiB, 53687091200 bytes, 104857600 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: 0x1f1731aa

Device     Boot Start      End  Sectors Size Id Type
/dev/sdb1        2048 10487807 10485760   5G 8e Linux LVM
[22:26:36 root@CentOS8 ~]#fdisk  /dev/sdc -l
Disk /dev/sdc: 50 GiB, 53687091200 bytes, 104857600 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: gpt
Disk identifier: D9AFD66E-20E1-4131-B9D1-3A9C775FD980

Device     Start      End  Sectors Size Type
/dev/sdc1   2048 20973567 20971520  10G Linux LVM

创建pv和查看pv

[22:24:20 root@CentOS8 ~]#pvcreate  /dev/sd{b1,c1}
  Physical volume "/dev/sdb1" successfully created.
  Physical volume "/dev/sdc1" successfully created.

[22:25:00 root@CentOS8 ~]#pvs
  PV         VG Fmt  Attr PSize    PFree 
  /dev/sda2  cl lvm2 a--  <199.00g  4.00m
  /dev/sdb1     lvm2 ---     5.00g  5.00g
  /dev/sdc1     lvm2 ---    10.00g 10.00g
[22:25:09 root@CentOS8 ~]#pvdisplay 
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               cl
  PV Size               <199.00 GiB / not usable 3.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              50943
  Free PE               1
  Allocated PE          50942
  PV UUID               GVaWkZ-RiPu-fpWQ-VEiY-wxqK-jC3s-tTcLdr
   
  "/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               k5f7Bs-O6jl-ynOa-TgXF-Ra1R-OGwO-hd809Z
   
  "/dev/sdc1" is a new physical volume of "10.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdc1
  VG Name               
  PV Size               10.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               qRaOek-C0gf-KuT3-IhfY-f3Xt-D0dC-W81yQ7
   

增加新的pv

[23:37:30 root@CentOS8 ~]#pvcreate /dev/sdb2
  Physical volume "/dev/sdb2" successfully created.

[23:39:52 root@CentOS8 ~]#pvs
  PV         VG       Fmt  Attr PSize    PFree 
  /dev/sdb1  vg-mysql lvm2 a--    <5.00g     0 
  /dev/sdb2           lvm2 ---    15.00g 15.00g
  /dev/sdc1  vg-mysql lvm2 a--   <10.00g     0

删除pv

[01:47:49 root@CentOS8 ~]#pvremove /dev/sdb{1,2}
  Labels on physical volume "/dev/sdb1" successfully wiped.
  Labels on physical volume "/dev/sdb2" successfully wiped

4.2.2 vg管理工具

显示卷组

[22:30:30 root@CentOS8 ~]#vgs
  VG       #PV #LV #SN Attr   VSize    VFree 
  cl         1   4   0 wz--n- <199.00g  4.00m
  vg-mysql   2   0   0 wz--n-   14.99g 14.99g


[22:30:43 root@CentOS8 ~]#vgdisplay
  --- Volume group ---
  VG Name               vg-mysql
  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               0KbjFi-aEA6-mDei-dwf5-vY2B-43tV-P87eny
   
  --- Volume group ---
  VG Name               cl
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  5
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                4
  Open LV               4
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <199.00 GiB
  PE Size               4.00 MiB
  Total PE              50943
  Alloc PE / Size       50942 / 198.99 GiB
  Free  PE / Size       1 / 4.00 MiB
  VG UUID               oLq3fK-faxS-3aYR-qEQj-NcCl-XFaA-wndSVs
   

创建卷组

[22:29:39 root@CentOS8 ~]#vgcreate vg-mysql /dev/sd{c1,b1}  #指定PE的大小,默认4M
  Volume group "vg-mysql" successfully created
 
 [22:31:59 root@CentOS8 ~]#pvdisplay 
  --- Physical volume ---
  PV Name               /dev/sdc1
  VG Name               vg-mysql
  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               qRaOek-C0gf-KuT3-IhfY-f3Xt-D0dC-W81yQ7
   
  --- Physical volume ---
  PV Name               /dev/sdb1
  VG Name               vg-mysql
  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               k5f7Bs-O6jl-ynOa-TgXF-Ra1R-OGwO-hd809Z
   

#示例
[22:29:39 root@CentOS8 ~]#vgcreate -s 16M vg-mysql /dev/sd{c1,b1}  #指定PE的大小,默认4M
  Volume group "vg-mysql" successfully created

[22:35:59 root@CentOS8 ~]#vgdisplay 
  --- Volume group ---
  VG Name               vg-mysql
  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.97 GiB
  PE Size               16.00 MiB
  Total PE              958
  Alloc PE / Size       0 / 0   
  Free  PE / Size       958 / <14.97 GiB
  VG UUID               acypKz-Q2FF-CGIG-QOxI-w0qu-ih4Q-QeZIND
   


增加新的卷组

[23:39:54 root@CentOS8 ~]#vgextend vg-mysql /dev/sdb2 
  Volume group "vg-mysql" successfully extended
[23:42:00 root@CentOS8 ~]#vgdisplay 
  --- Volume group ---
  VG Name               vg-mysql
  System ID             
  Format                lvm2
  Metadata Areas        3
  Metadata Sequence No  7
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                3
  Act PV                3
  VG Size               <29.99 GiB
  PE Size               4.00 MiB
  Total PE              7677
  Alloc PE / Size       3838 / 14.99 GiB
  Free  PE / Size       3839 / <15.00 GiB
  VG UUID               dMqqSq-Few5-kaTY-PnTA-w7Yx-At8J-zGwtrt

删除卷组

  • 先做pvmove
  • 再做vgremove
[01:46:55 root@CentOS8 ~]#vgremove vg-mysql 
  Volume group "vg-mysql" successfully removed

4.2.3 lv管理工具

显示逻辑卷

[22:41:41 root@CentOS8 ~]#lvs
  LV    VG       Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Conver     mysql vg-mysql -wi-a-----   1.00g  
  
 [22:41:53 root@CentOS8 ~]#lvdisplay 
  --- Logical volume ---
  LV Path                /dev/vg-mysql/mysql
  LV Name                mysql
  VG Name                vg-mysql
  LV UUID                U0GvVM-sfGm-gvF0-LUCi-7uck-sbMz-pBtDs3
  LV Write Access        read/write
  LV Creation host, time CentOS8.magedu.org.41, 2022-12-02 22:41:41 +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:4
  
  [22:50:19 root@CentOS8 ~]#lvdisplay 
  --- Logical volume ---
  LV Path                /dev/vg-mysql/log
  LV Name                log
  VG Name                vg-mysql
  LV UUID                DiX6Yd-1mdJ-LDhM-Ffs4-jjE7-i0l1-atEo2d
  LV Write Access        read/write
  LV Creation host, time CentOS8.magedu.org.41, 2022-12-02 22:50:19 +0800
  LV Status              available
  # open                 0
  LV Size                1.95 GiB
  Current LE             500
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:5

   

创建逻辑卷

22:41:29 root@CentOS8 ~]#lvcreate -n mysql -L 1G vg-mysql 
  Logical volume "mysql" created.

[22:49:11 root@CentOS8 ~]#lvcreate -n log -l 500 vg-mysql
  Logical volume "log" created.

范例:

lvcreate -l 60%VG -n mylv testvg
lvcreate -l 100%FREE -n yourlv testvg

删除逻辑卷

[01:41:11 root@CentOS8 ~]#lvremove /dev/vg-mysql/mysql 
Do you really want to remove active logical volume vg-mysql/mysql? [y/n]: y
  Logical volume "mysql" successfully removed.

[01:41:32 root@CentOS8 ~]#lvremove /dev/vg-mysql/log
Do you really want to remove active logical volume vg-mysql/log? [y/n]: y
  Logical volume "log" successfully removed.

重设文件系统大小

fsadm [options] resize device [new_size[BKMGTEP]]
resize2fs [-f] [-F] [-M] [-P] [-p] device [new_size]
xfs_growfs /mountpoint

范例:

[22:52:38 root@CentOS8 ~]#mkfs.ext4 /dev/vg-mysql/mysql 
mke2fs 1.45.6 (20-Mar-2020)
Creating filesystem with 262144 4k blocks and 65536 inodes
Filesystem UUID: 25902095-6ce7-4732-9ccc-70aa2dde4895
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

[22:52:58 root@CentOS8 ~]#blki
blkid     blkiomon  
[22:52:58 root@CentOS8 ~]#blkid
/dev/sda1: UUID="7f2a69c1-44ed-4abc-b98b-970bdd6109be" BLOCK_SIZE="512" TYPE="xfs" PARTUUID="6943c498-01"
/dev/sda2: UUID="GVaWkZ-RiPu-fpWQ-VEiY-wxqK-jC3s-tTcLdr" TYPE="LVM2_member" PARTUUID="6943c498-02"
/dev/sdb1: UUID="k5f7Bs-O6jl-ynOa-TgXF-Ra1R-OGwO-hd809Z" TYPE="LVM2_member" PARTUUID="1f1731aa-01"
/dev/sdc1: UUID="qRaOek-C0gf-KuT3-IhfY-f3Xt-D0dC-W81yQ7" TYPE="LVM2_member" PARTLABEL="Linux LVM" PARTUUID="4f4de205-bb83-4f70-84f7-939be8d89e81"
/dev/sdd1: LABEL="TEST" UUID="5a1d73aa-87a5-4ed3-a8cb-67da82281678" BLOCK_SIZE="2048" TYPE="ext4" PARTUUID="c4be196b-01"
/dev/sr0: 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/mapper/cl-root: UUID="4b51fc2f-594e-47e4-abda-37783b1bdf63" BLOCK_SIZE="512" TYPE="xfs"
/dev/mapper/cl-swap: UUID="060d175f-b794-4b8c-b28b-39c74e22a126" TYPE="swap"
/dev/mapper/cl-home: UUID="1c4060f4-a57f-4ee2-967c-ee02508fe07e" BLOCK_SIZE="512" TYPE="xfs"
/dev/mapper/cl-data: UUID="4283420e-289e-4928-980e-2cbf18ae8450" BLOCK_SIZE="512" TYPE="xfs"
/dev/mapper/vg--mysql-mysql: UUID="25902095-6ce7-4732-9ccc-70aa2dde4895" BLOCK_SIZE="4096" TYPE="ext4"
[22:53:07 root@CentOS8 ~]#vim /etc/fstab                                      
#
# /etc/fstab
# Created by anaconda on Sun Nov 20 09:32:28 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=4b51fc2f-594e-47e4-abda-37783b1bdf63       /                       xfs     defaults        0 0
UUID=7f2a69c1-44ed-4abc-b98b-970bdd6109be       /boot                   xfs     defaults        0 0
UUID=4283420e-289e-4928-980e-2cbf18ae8450       /data                   xfs     defaults        0 0
UUID=1c4060f4-a57f-4ee2-967c-ee02508fe07e       /home                   xfs     defaults        0 0
UUID=060d175f-b794-4b8c-b28b-39c74e22a126       none                    swap    defaults        0 0
#UUID=224332d1-64c7-4cbb-a3b7-a472ffb825d5       /sdb5                  xfs     defaults        0 0
#UUID=92bdf831-2aff-44c5-a6d4-28310dfebe58      /sdb1                   ext4    defaults        0 0
UUID=25902095-6ce7-4732-9ccc-70aa2dde4895     /mysql                    ext4    defaults        0 0
UUID=2021-11-13-01-04-26-00                     /mnt                    iso9660 defaults        0 0
UUID=8775eea9-bb7a-48f0-94ba-dd12edbfe8ed       none                    swap    pri=100         0 0     
UUID=5a1d73aa-87a5-4ed3-a8cb-67da82281678       /test                   ext4    defaults        0 0                                                                                          
[22:55:13 root@CentOS8 ~]#mkdir /mysql
[22:55:24 root@CentOS8 ~]#mount -a  
[22:55:32 root@CentOS8 ~]#dd if=/dev/zero of=/mysql/test.img  bs=1M count=800

#清除缓存
[23:01:14 root@CentOS8 ~]#find /proc/ -name "drop*"
[23:01:20 root@CentOS8 ~]#cat /proc/sys/vm/drop_caches
0
[23:01:35 root@CentOS8 ~]#echo 3 > /proc/sys/vm/drop_caches
[23:01:49 root@CentOS8 ~]#dd if=/dev/zero of=/mysql/test.img  bs=1M count=800
800+0 records in
800+0 records out
838860800 bytes (839 MB, 800 MiB) copied, 0.565186 s, 1.5 GB/s

[23:11:45 root@CentOS8 ~]#mkfs.xfs /dev/vg-mysql/log 
meta-data=/dev/vg-mysql/log      isize=512    agcount=4, agsize=128000 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=512000, 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
[23:13:40 root@CentOS8 ~]#blkid
/dev/sda1: UUID="7f2a69c1-44ed-4abc-b98b-970bdd6109be" BLOCK_SIZE="512" TYPE="xfs" PARTUUID="6943c498-01"
/dev/sda2: UUID="GVaWkZ-RiPu-fpWQ-VEiY-wxqK-jC3s-tTcLdr" TYPE="LVM2_member" PARTUUID="6943c498-02"
/dev/sdb1: UUID="k5f7Bs-O6jl-ynOa-TgXF-Ra1R-OGwO-hd809Z" TYPE="LVM2_member" PARTUUID="1f1731aa-01"
/dev/sdc1: UUID="qRaOek-C0gf-KuT3-IhfY-f3Xt-D0dC-W81yQ7" TYPE="LVM2_member" PARTLABEL="Linux LVM" PARTUUID="4f4de205-bb83-4f70-84f7-939be8d89e81"
/dev/sdd1: LABEL="TEST" UUID="5a1d73aa-87a5-4ed3-a8cb-67da82281678" BLOCK_SIZE="2048" TYPE="ext4" PARTUUID="c4be196b-01"
/dev/sr0: 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/mapper/cl-root: UUID="4b51fc2f-594e-47e4-abda-37783b1bdf63" BLOCK_SIZE="512" TYPE="xfs"
/dev/mapper/cl-swap: UUID="060d175f-b794-4b8c-b28b-39c74e22a126" TYPE="swap"
/dev/mapper/cl-home: UUID="1c4060f4-a57f-4ee2-967c-ee02508fe07e" BLOCK_SIZE="512" TYPE="xfs"
/dev/mapper/cl-data: UUID="4283420e-289e-4928-980e-2cbf18ae8450" BLOCK_SIZE="512" TYPE="xfs"
/dev/mapper/vg--mysql-mysql: UUID="25902095-6ce7-4732-9ccc-70aa2dde4895" BLOCK_SIZE="4096" TYPE="ext4"
/dev/mapper/vg--mysql-log: UUID="e408e722-4f8c-4949-88a4-dc7f6fa1cbdd" BLOCK_SIZE="512" TYPE="xfs"


[23:15:52 root@CentOS8 ~]#vim /etc/fstab 
Press ENTER or type command to continue
UUID=7f2a69c1-44ed-4abc-b98b-970bdd6109be       /boot                   xfs     defaults        0 0
UUID=4283420e-289e-4928-980e-2cbf18ae8450       /data                   xfs     defaults        0 0
UUID=1c4060f4-a57f-4ee2-967c-ee02508fe07e       /home                   xfs     defaults        0 0
UUID=060d175f-b794-4b8c-b28b-39c74e22a126       none                    swap    defaults        0 0
#UUID=224332d1-64c7-4cbb-a3b7-a472ffb825d5       /sdb5                  xfs     defaults        0 0
#UUID=92bdf831-2aff-44c5-a6d4-28310dfebe58      /sdb1                   ext4    defaults        0 0
UUID=25902095-6ce7-4732-9ccc-70aa2dde4895     /mysql                    ext4    defaults        0 0
UUID=2021-11-13-01-04-26-00                     /mnt                    iso9660 defaults        0 0
UUID=8775eea9-bb7a-48f0-94ba-dd12edbfe8ed       none                    swap    pri=100         0 0     
UUID=5a1d73aa-87a5-4ed3-a8cb-67da82281678       /test                   ext4    defaults        0 0
UUID=e408e722-4f8c-4949-88a4-dc7f6fa1cbdd       /log                    xfs     defaults        0 0                              [23:17:37 root@CentOS8 ~]#mkdir /log
[23:17:52 root@CentOS8 ~]#mount -a
[23:17:58 root@CentOS8 ~]#df -h
Filesystem                   Size  Used Avail Use% Mounted on
devtmpfs                     442M     0  442M   0% /dev
tmpfs                        471M     0  471M   0% /dev/shm
tmpfs                        471M  7.3M  464M   2% /run
tmpfs                        471M     0  471M   0% /sys/fs/cgroup
/dev/mapper/cl-root          127G  8.3G  119G   7% /
/dev/sr0                      11G   11G     0 100% /mnt
/dev/sdd1                    2.0G  9.1M  2.0G   1% /test
/dev/mapper/cl-home           20G  176M   20G   1% /home
/dev/mapper/cl-data           50G   12G   39G  23% /data
/dev/sda1                   1014M  233M  782M  23% /boot
tmpfs                         95M   12K   95M   1% /run/user/42
tmpfs                         95M     0   95M   0% /run/user/0
/dev/mapper/vg--mysql-mysql  976M  803M  107M  89% /mysql
/dev/mapper/vg--mysql-log    2.0G   47M  1.9G   3% /log

4.2.4 扩展和缩减逻辑卷

4.2.4.1 在线扩展逻辑卷

#两步实现
#第一步实现逻辑卷的空间扩展
[23:21:08 root@CentOS8 ~]#lvextend  -l +50%free /dev/vg-mysql/mysql
  Size of logical volume vg-mysql/mysql changed from 1.00 GiB (256 extents) to <7.02 GiB (1797 extents).
  Logical volume vg-mysql/mysql successfully resized.

[23:22:38 root@CentOS8 ~]#lvdisplay 
  --- Logical volume ---
  LV Path                /dev/vg-mysql/mysql
  LV Name                mysql
  VG Name                vg-mysql
  LV UUID                U0GvVM-sfGm-gvF0-LUCi-7uck-sbMz-pBtDs3
  LV Write Access        read/write
  LV Creation host, time CentOS8.magedu.org.41, 2022-12-02 22:41:41 +0800
  LV Status              available
  # open                 1
  LV Size                <7.02 GiB
  Current LE             1797
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:4


#第二步实现文件系统的扩展
#针对ext
[23:25:03 root@CentOS8 ~]#resize2fs /dev/vg-mysql/mysql 
resize2fs 1.45.6 (20-Mar-2020)
Filesystem at /dev/vg-mysql/mysql is mounted on /mysql; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/vg-mysql/mysql is now 1840128 (4k) blocks long.

[23:26:26 root@CentOS8 ~]#df -Th
Filesystem                  Type      Size  Used Avail Use% Mounted on
devtmpfs                    devtmpfs  442M     0  442M   0% /dev
tmpfs                       tmpfs     471M     0  471M   0% /dev/shm
tmpfs                       tmpfs     471M  7.3M  464M   2% /run
tmpfs                       tmpfs     471M     0  471M   0% /sys/fs/cgroup
/dev/mapper/cl-root         xfs       127G  8.3G  119G   7% /
/dev/sr0                    iso9660    11G   11G     0 100% /mnt
/dev/sdd1                   ext4      2.0G  9.1M  2.0G   1% /test
/dev/mapper/cl-home         xfs        20G  176M   20G   1% /home
/dev/mapper/cl-data         xfs        50G   12G   39G  23% /data
/dev/sda1                   xfs      1014M  233M  782M  23% /boot
tmpfs                       tmpfs      95M   12K   95M   1% /run/user/42
tmpfs                       tmpfs      95M     0   95M   0% /run/user/0
/dev/mapper/vg--mysql-mysql ext4      6.9G  805M  5.8G  12% /mysql
/dev/mapper/vg--mysql-log   xfs       2.0G   47M  1.9G   3% /log

#不用更新文件系统直接扩容
lvextend  -r -l +100%free /dev/vg-mysql/mysql

[23:33:10 root@CentOS8 ~]#lvs
  LV    VG       Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Conver                                             log   vg-mysql -wi-ao----   2.95g                                                    
  mysql vg-mysql -wi-ao---- <12.04g                                                    
[23:35:09 root@CentOS8 ~]#vgs
  VG       #PV #LV #SN Attr   VSize    VFree
  cl         1   4   0 wz--n- <199.00g 4.00m
  vg-mysql   2   2   0 wz--n-   14.99g    0 
[23:35:13 root@CentOS8 ~]#df -Th
Filesystem                  Type      Size  Used Avail Use% Mounted on
devtmpfs                    devtmpfs  442M     0  442M   0% /dev
tmpfs                       tmpfs     471M     0  471M   0% /dev/shm
tmpfs                       tmpfs     471M  7.3M  464M   2% /run
tmpfs                       tmpfs     471M     0  471M   0% /sys/fs/cgroup
/dev/mapper/cl-root         xfs       127G  8.3G  119G   7% /
/dev/sr0                    iso9660    11G   11G     0 100% /mnt
/dev/sdd1                   ext4      2.0G  9.1M  2.0G   1% /test
/dev/mapper/cl-home         xfs        20G  176M   20G   1% /home
/dev/mapper/cl-data         xfs        50G   12G   39G  23% /data
/dev/sda1                   xfs      1014M  233M  782M  23% /boot
tmpfs                       tmpfs      95M   12K   95M   1% /run/user/42
tmpfs                       tmpfs      95M     0   95M   0% /run/user/0
/dev/mapper/vg--mysql-mysql ext4       12G  805M   11G   7% /mysql
/dev/mapper/vg--mysql-log   xfs       3.0G   54M  2.9G   2% /log

xfs文件系统在线扩容

#第一步实现逻辑卷的空间扩展
[23:26:35 root@CentOS8 ~]#lvextend  -L +1G /dev/vg-mysql/log 
  Size of logical volume vg-mysql/log changed from 1.95 GiB (500 extents) to 2.95 GiB (756 extents).
  Logical volume vg-mysql/log successfully resized.
[23:28:30 root@CentOS8 ~]#df -Th
Filesystem                  Type      Size  Used Avail Use% Mounted on
devtmpfs                    devtmpfs  442M     0  442M   0% /dev
tmpfs                       tmpfs     471M     0  471M   0% /dev/shm
tmpfs                       tmpfs     471M  7.3M  464M   2% /run
tmpfs                       tmpfs     471M     0  471M   0% /sys/fs/cgroup
/dev/mapper/cl-root         xfs       127G  8.3G  119G   7% /
/dev/sr0                    iso9660    11G   11G     0 100% /mnt
/dev/sdd1                   ext4      2.0G  9.1M  2.0G   1% /test
/dev/mapper/cl-home         xfs        20G  176M   20G   1% /home
/dev/mapper/cl-data         xfs        50G   12G   39G  23% /data
/dev/sda1                   xfs      1014M  233M  782M  23% /boot
tmpfs                       tmpfs      95M   12K   95M   1% /run/user/42
tmpfs                       tmpfs      95M     0   95M   0% /run/user/0
/dev/mapper/vg--mysql-mysql ext4      6.9G  805M  5.8G  12% /mysql
/dev/mapper/vg--mysql-log   xfs       2.0G   47M  1.9G   3% /log
#第二步实现文件系统的扩展
[23:28:43 root@CentOS8 ~]#xfs_growfs /dev/vg-mysql/log 
meta-data=/dev/mapper/vg--mysql-log isize=512    agcount=4, agsize=128000 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=512000, 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 512000 to 774144

[23:29:09 root@CentOS8 ~]#df -h
Filesystem                   Size  Used Avail Use% Mounted on
devtmpfs                     442M     0  442M   0% /dev
tmpfs                        471M     0  471M   0% /dev/shm
tmpfs                        471M  7.3M  464M   2% /run
tmpfs                        471M     0  471M   0% /sys/fs/cgroup
/dev/mapper/cl-root          127G  8.3G  119G   7% /
/dev/sr0                      11G   11G     0 100% /mnt
/dev/sdd1                    2.0G  9.1M  2.0G   1% /test
/dev/mapper/cl-home           20G  176M   20G   1% /home
/dev/mapper/cl-data           50G   12G   39G  23% /data
/dev/sda1                   1014M  233M  782M  23% /boot
tmpfs                         95M   12K   95M   1% /run/user/42
tmpfs                         95M     0   95M   0% /run/user/0
/dev/mapper/vg--mysql-mysql  6.9G  805M  5.8G  12% /mysql
/dev/mapper/vg--mysql-log    3.0G   54M  2.9G   2% /log

4.2.4.2 缩减逻辑卷

注意:缩减有数据损坏的风险,建议先备份再缩减,xfs文件系统不支持缩减

[23:48:56 root@CentOS8 ~]#\cp -a /etc/*  /mysql/ #拷贝测试文件
[23:49:41 root@CentOS8 ~]#umount /mysql 
[23:53:49 root@CentOS8 ~]#fsck -f /dev/vg-mysql/mysql  #fsck -f 等价于e2fsck -f 

[23:54:18 root@CentOS8 ~]#resize2fs /dev/vg-mysql/mysql 2G
[23:56:22 root@CentOS8 ~]#lvreduce -L 2G /dev/vg-mysql/mysql .
[23:57:29 root@CentOS8 ~]#mount -a
[23:57:42 root@CentOS8 ~]#df -h
Filesystem                   Size  Used Avail Use% Mounted on
devtmpfs                     442M     0  442M   0% /dev
tmpfs                        471M     0  471M   0% /dev/shm
tmpfs                        471M  7.3M  464M   2% /run
tmpfs                        471M     0  471M   0% /sys/fs/cgroup
/dev/mapper/cl-root          127G  8.3G  119G   7% /
/dev/sr0                      11G   11G     0 100% /mnt
/dev/sdd1                    2.0G  9.1M  2.0G   1% /test
/dev/mapper/cl-home           20G  176M   20G   1% /home
/dev/mapper/cl-data           50G   12G   39G  23% /data
/dev/sda1                   1014M  233M  782M  23% /boot
tmpfs                         95M   12K   95M   1% /run/user/42
tmpfs                         95M     0   95M   0% /run/user/0
/dev/mapper/vg--mysql-log    3.0G   54M  2.9G   2% /log
/dev/mapper/vg--mysql-mysql  2.0G  840M  1.1G  45% /mysql

#缩减1个G看能不能挂载
[23:59:27 root@CentOS8 ~]#umount /mysql 
[23:59:32 root@CentOS8 ~]#fsck -f /dev/vg-mysql/mysql 
fsck from util-linux 2.32.1
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/mapper/vg--mysql-mysql: 2849/131072 files (0.1% non-contiguous), 231327/524288 blocks

[23:59:44 root@CentOS8 ~]#resize2fs /dev/vg-mysql/mysql 1G
resize2fs 1.45.6 (20-Mar-2020)
resize2fs: New size smaller than minimum (428769)

[00:00:16 root@CentOS8 ~]#lvreduce -L 1G /dev/vg-mysql/mysql 
  WARNING: Reducing active logical volume to 1.00 GiB.
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vg-mysql/mysql? [y/n]: y
  Size of logical volume vg-mysql/mysql changed from 2.00 GiB (512 extents) to 1.00 GiB (256 extents).
  Logical volume vg-mysql/mysql successfully resized.
[00:00:48 root@CentOS8 ~]#mount -a
mount: /mysql: wrong fs type, bad option, bad superblock on /dev/mapper/vg--mysql-mysql, missing codepage or helper program, or other error.


范例:

[root@centos8 ~]#blkid /dev/vg0/mysql
/dev/vg0/mysql: UUID="94674607-2196-4015-9194-4632ac23f36a" TYPE="ext4"
[root@centos8 ~]#lvs
 LV   VG Attr       LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
 mysql vg0 -wi-a----- 2.99g
 [root@centos8 ~]#df
Filesystem           1K-blocks   Used Available Use% Mounted on
devtmpfs                 391676       0    391676   0% /dev
tmpfs                    408092       0    408092   0% /dev/shm
tmpfs                    408092    5792    402300   2% /run
tmpfs                    408092       0    408092   0% /sys/fs/cgroup
/dev/sda2             104806400 2274504 102531896   3% /
/dev/sda3              52403200  398576  52004624   1% /data
/dev/sda1                999320  130848    799660  15% /boot
tmpfs                     81616       0     81616   0% /run/user/0
/dev/mapper/vg0-mysql   3022704    9204   2840240   1% /data/mysql

#第一步
[root@centos8 ~]#umount /data/mysql 
[root@centos8 ~]#resize2fs /dev/vg0/mysql 1G
resize2fs 1.44.6 (5-Mar-2019)
Please run 'e2fsck -f /dev/vg0/mysql' first.

#第二步
[root@centos8 ~]#fsck -f /dev/vg0/mysql 
fsck from util-linux 2.32.1
e2fsck 1.44.6 (5-Mar-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/mapper/vg0-mysql: 14/196224 files (0.0% non-contiguous), 31009/784384 
blocks

#第三步
[root@centos8 ~]#resize2fs /dev/vg0/mysql 1G
resize2fs 1.44.6 (5-Mar-2019)
Resizing the filesystem on /dev/vg0/mysql to 262144 (4k) blocks.
The filesystem on /dev/vg0/mysql is now 262144 (4k) blocks long.


[root@centos8 ~]#lvs
 LV   VG Attr       LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
 mysql vg0 -wi-a----- 2.99g                                                    
[root@centos8 ~]#df
Filesystem     1K-blocks   Used Available Use% Mounted on
devtmpfs          391676       0    391676   0% /dev
tmpfs             408092       0    408092   0% /dev/shm
tmpfs             408092    5792    402300   2% /run
tmpfs             408092       0    408092   0% /sys/fs/cgroup
/dev/sda2      104806400 2274504 102531896   3% /
/dev/sda3       52403200  398576  52004624   1% /data
/dev/sda1         999320  130848    799660  15% /boot
tmpfs              81616       0     81616   0% /run/user/0
[root@centos8 ~]#mount -a
[root@centos8 ~]#df
Filesystem           1K-blocks   Used Available Use% Mounted on
devtmpfs                 391676       0    391676   0% /dev
tmpfs                    408092       0    408092   0% /dev/shm
tmpfs                    408092    5792    402300   2% /run
tmpfs                    408092       0    408092   0% /sys/fs/cgroup
/dev/sda2             104806400 2274504 102531896   3% /
/dev/sda3              52403200  398576  52004624   1% /data
/dev/sda1                999320  130848    799660  15% /boot
tmpfs                     81616       0     81616   0% /run/user/0
/dev/mapper/vg0-mysql    966584    7676    890096   1% /data/mysql
[root@centos8 ~]#df -h
Filesystem             Size Used Avail Use% Mounted on
devtmpfs               383M     0 383M   0% /dev
tmpfs                 399M     0 399M   0% /dev/shm
tmpfs                 399M  5.7M 393M   2% /run
tmpfs                 399M     0 399M   0% /sys/fs/cgroup
/dev/sda2             100G  2.2G   98G   3% /
/dev/sda3               50G 390M   50G   1% /data
/dev/sda1             976M 128M 781M  15% /boot
tmpfs                   80M     0   80M   0% /run/user/0
/dev/mapper/vg0-mysql 944M  7.5M 870M   1% /data/mysql
[root@centos8 ~]#lvs
 LV   VG Attr       LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
 mysql vg0 -wi-ao---- 2.99g                                                    
[root@centos8 ~]#umount /data/mysql 


#第四步
[root@centos8 ~]#lvreduce -L 1G /dev/vg0/mysql 
 WARNING: Reducing active logical volume to 1.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 2.99 GiB (766 extents) to 1.00 
GiB (256 extents).
 Logical volume vg0/mysql successfully resized.
  
  
#第五步
[root@centos8 ~]#mount -a
[root@centos8 ~]#lvs
 LV   VG Attr       LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
 mysql vg0 -wi-ao---- 1.00g                                                    
[root@centos8 ~]#df -h
Filesystem             Size Used Avail Use% Mounted on
devtmpfs               383M     0 383M   0% /dev
tmpfs                 399M     0 399M   0% /dev/shm
tmpfs                 399M  5.7M 393M   2% /run
tmpfs                 399M     0 399M   0% /sys/fs/cgroup
/dev/sda2             100G  2.2G   98G   3% /
/dev/sda3               50G 390M   50G   1% /data
/dev/sda1             976M 128M 781M  15% /boot
tmpfs                   80M     0   80M   0% /run/user/0
/dev/mapper/vg0-mysql 944M  7.5M 870M   1% /data/mysql

范例: 缩减XFS文件系统的逻辑卷

#因为XFS文件系统不支持缩减,可以用下面方式缩减

#先备份XFS文件系统数据
[root@centos8 ~]#yum -y install xfsdump

#备份/data挂载点对应的逻辑卷
#注意挂载点后面不要加/,否则会出错:xfsdump: ERROR: /data/ does not identify a file 
system
[root@centos8 ~]#xfsdump -f data.img /data


#卸载文件系统
[root@centos8 ~]#umount /data


#缩减逻辑卷
[root@centos8 ~]#lvreduce -L 10G /dev/vg0/lv0


#重新创建文件系统
[root@centos8 ~]#mkfs.xfs -f /dev/vg0/lv0


#重新挂载
[root@centos8 ~]#mount /dev/vg0/lv0 /data


#还原数据
[root@centos8 ~]#xfsrestore -f data.img /data

4.2.5 跨主机迁移卷组

源计算机上

1 在旧系统中,umount 所有卷组上的逻辑卷

2 禁用卷组

vgchange -a n vg0 
lvdisplay

3 导出卷组

vgexport vg0 
pvscan
vgdisplay

4 拆下旧硬盘在目标计算机上,并导入卷组:

vgimport vg0

5 启用

vgchange -ay vg0

6 mount 所有卷组上的逻辑卷

4.2.6 拆除指定的PV存储设备

[00:05:17 root@CentOS8 ~]#pvdisplay 
  --- Physical volume ---
  PV Name               /dev/sdc1
  VG Name               vg-mysql
  PV Size               10.00 GiB / not usable 4.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              2559
  Free PE               1547
  Allocated PE          1012
  PV UUID               qRaOek-C0gf-KuT3-IhfY-f3Xt-D0dC-W81yQ7
   
  --- Physical volume ---
  PV Name               /dev/sdb1
  VG Name               vg-mysql
  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               k5f7Bs-O6jl-ynOa-TgXF-Ra1R-OGwO-hd809Z
   
  --- Physical volume ---
  PV Name               /dev/sdb2
  VG Name               vg-mysql
  PV Size               15.00 GiB / not usable 4.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              3839
  Free PE               3839
  Allocated PE          0
  PV UUID               jSLjCh-tqSj-6nRp-9Roa-4mCO-Jkdr-8fPS4X

 [00:13:24 root@CentOS8 ~]#pvmove /dev/sdc1
  /dev/sdc1: Moved: 8.30%
  /dev/sdc1: Moved: 25.30%
  /dev/sdc1: Moved: 74.70%
  /dev/sdc1: Moved: 100.00%
[00:14:35 root@CentOS8 ~]#pvdisplay 
  --- Physical volume ---
  PV Name               /dev/sdc1
  VG Name               vg-mysql
  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               qRaOek-C0gf-KuT3-IhfY-f3Xt-D0dC-W81yQ7
   
  --- Physical volume ---
  PV Name               /dev/sdb1
  VG Name               vg-mysql
  PV Size               5.00 GiB / not usable 4.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              1279
  Free PE               267
  Allocated PE          1012
  PV UUID               k5f7Bs-O6jl-ynOa-TgXF-Ra1R-OGwO-hd809Z
   
  --- Physical volume ---
  PV Name               /dev/sdb2
  VG Name               vg-mysql
  PV Size               15.00 GiB / not usable 4.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              3839
  Free PE               3839
  Allocated PE          0
  PV UUID               jSLjCh-tqSj-6nRp-9Roa-4mCO-Jkdr-8fPS4X

[00:15:37 root@CentOS8 ~]#vgreduce vg-mysql /dev/sdc1 
  Removed "/dev/sdc1" from volume group "vg-mysql"
[00:16:04 root@CentOS8 ~]#pvs
  PV         VG       Fmt  Attr PSize    PFree  
  /dev/sdb1  vg-mysql lvm2 a--    <5.00g   1.04g
  /dev/sdb2  vg-mysql lvm2 a--   <15.00g <15.00g
  /dev/sdc1           lvm2 ---    10.00g  10.00g
[00:16:10 root@CentOS8 ~]#pvremove /dev/sdc1 
  Labels on physical volume "/dev/sdc1" successfully wiped.
[00:16:37 root@CentOS8 ~]#pvs
  PV         VG       Fmt  Attr PSize    PFree  
  /dev/sdb1  vg-mysql lvm2 a--    <5.00g   1.04g
  /dev/sdb2  vg-mysql lvm2 a--   <15.00g <15.00g

4.3 逻辑卷快照

4.3.1 逻辑卷快照原理

4.3 逻辑卷快照

4.3.1 逻辑卷快照原理


快照是特殊的逻辑卷,它是在生成快照时存在的逻辑卷的准确拷贝,对于需要备份或者复制的现有数据临时拷贝以及其它操作来说,快照是最合适的选择,快照只有在它们和原来的逻辑卷不同时才会消耗空间,建立快照的卷大小小于等于原始逻辑卷,也可以使用lvextend扩展快照

逻辑卷管理器快照

快照就是将当时的系统信息记录下来,就好像照相一般,若将来有任何数据改动了,则原始数据会被移

动到快照区,没有改动的区域则由快照区和文件系统共享

逻辑卷快照工作原理

  • 在生成快照时会分配给它一定的空间,但只有在原来的逻辑卷或者快照有所改变才会使用这些空间
  • 当原来的逻辑卷中有所改变时,会将旧的数据复制到快照中
  • 快照中只含有原来的逻辑卷中更改的数据或者自生成快照后的快照中更改的数据

由于快照区与原本的LV共用很多PE的区块,因此快照与被快照的LV必须在同一个VG中.系统恢复的时候

的文件数量不能高于快照区的实际容量

快照特点:

  • 备份速度快,瞬间完

  • 应用场景是测试环境,不能完成代替备份

  • 快照后,逻辑卷的修改速度会一定有影响

4.3.1 实现逻辑卷快照

范例:

[00:44:30 root@CentOS8 ~]#mount /dev/vg-mysql/mysql /mysql/

[00:44:53 root@CentOS8 ~]#ll /mysql/
total 16
drwx------ 2 root root 16384 Dec  3 00:05 lost+found
[00:44:58 root@CentOS8 ~]#cp /etc/fstab /mysql/f1.txt
[00:45:14 root@CentOS8 ~]#cp /etc/fstab /mysql/f2.txt
[00:45:17 root@CentOS8 ~]#cp /etc/fstab /mysql/f3.txt



#为现有逻辑卷创建快照,注意ext4必须使用-p r 实现只读
[01:08:32 root@CentOS8 ~]#lvcreate -n mysql-snapshon -p r -s -L 100M /dev/vg-mysql/mysql
  Logical volume "mysql-snapshon" created.

[00:45:42 root@CentOS8 ~]#lvcreate -s -n mysql-snapshon -L 100M /dev/vg-mysql/mysql
  Logical volume "mysql-snapshon" created.
[00:47:04 root@CentOS8 ~]#lvs
  LV             VG       Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  data           cl       -wi-ao----  50.00g                                                    
  home           cl       -wi-ao----  20.00g                                                    
  root           cl       -wi-ao---- 126.90g                                                    
  swap           cl       -wi-ao----  <2.09g                                                    
  log            vg-mysql -wi-ao----   2.95g                                              
  mysql          vg-mysql owi-aos---   1.00g                                                    
  mysql-snapshon vg-mysql swi-a-s--- 100.00m      mysql  0.01     

#查看快照
[00:47:10 root@CentOS8 ~]#lvdisplay 
  --- Logical volume ---
  LV Path                /dev/vg-mysql/mysql-snapshon
  LV Name                mysql-snapshon
  VG Name                vg-mysql
  LV UUID                EtP1xm-XIqZ-8KlK-Qa8s-aY6U-vbgb-fWCwnA
  LV Write Access        read/write
  LV Creation host, time CentOS8.magedu.org.41, 2022-12-03 00:47:04 +0800
  LV snapshot status     active destination for mysql
  LV Status              available
  # open                 0
  LV Size                1.00 GiB
  Current LE             256
  COW-table size         100.00 MiB
  COW-table LE           25
  Allocated to snapshot  0.01%
  Snapshot chunk size    4.00 KiB
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:8
[00:51:50 root@CentOS8 ~]#blkid 
/dev/sda1: UUID="7f2a69c1-44ed-4abc-b98b-970bdd6109be" BLOCK_SIZE="512" TYPE="xfs" PARTUUID="6943c498-01"
/dev/sda2: UUID="GVaWkZ-RiPu-fpWQ-VEiY-wxqK-jC3s-tTcLdr" TYPE="LVM2_member" PARTUUID="6943c498-02"
/dev/sdb1: UUID="k5f7Bs-O6jl-ynOa-TgXF-Ra1R-OGwO-hd809Z" TYPE="LVM2_member" PARTUUID="1f1731aa-01"
/dev/sdc1: PARTLABEL="Linux LVM" PARTUUID="4f4de205-bb83-4f70-84f7-939be8d89e81"
/dev/sdd1: LABEL="TEST" UUID="5a1d73aa-87a5-4ed3-a8cb-67da82281678" BLOCK_SIZE="2048" TYPE="ext4" PARTUUID="c4be196b-01"
/dev/sr0: 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/mapper/cl-root: UUID="4b51fc2f-594e-47e4-abda-37783b1bdf63" BLOCK_SIZE="512" TYPE="xfs"
/dev/mapper/cl-swap: UUID="060d175f-b794-4b8c-b28b-39c74e22a126" TYPE="swap"
/dev/mapper/cl-home: UUID="1c4060f4-a57f-4ee2-967c-ee02508fe07e" BLOCK_SIZE="512" TYPE="xfs"
/dev/mapper/cl-data: UUID="4283420e-289e-4928-980e-2cbf18ae8450" BLOCK_SIZE="512" TYPE="xfs"
/dev/mapper/vg--mysql-mysql: UUID="f99f8ef6-e202-49c2-85e9-7fb8ccf2b42e" BLOCK_SIZE="4096" TYPE="ext4"
/dev/mapper/vg--mysql-log: UUID="e408e722-4f8c-4949-88a4-dc7f6fa1cbdd" BLOCK_SIZE="512" TYPE="xfs"
/dev/sdb2: UUID="jSLjCh-tqSj-6nRp-9Roa-4mCO-Jkdr-8fPS4X" TYPE="LVM2_member" PARTUUID="1f1731aa-02"
/dev/mapper/vg--mysql-mysql--snapshon: UUID="f99f8ef6-e202-49c2-85e9-7fb8ccf2b42e" BLOCK_SIZE="4096" TYPE="ext4"

#修改源文件
[00:57:39 root@CentOS8 ~]#rm -rf /mysql/f2.txt 
[00:57:57 root@CentOS8 ~]#cat /mysql/f1.txt 
UUID=4b51fc2f-594e-47e4-abda-37783b1bdf63     	/                       xfs     defaults        0 0
[00:58:22 root@CentOS8 ~]#touch /mysql/f4.txt
[00:58:35 root@CentOS8 ~]#ll /s
sbin/ sdb1/ sdb5/ snap/ srv/  sys/  
[00:58:35 root@CentOS8 ~]#ll /snap/
total 28
-rw-r--r-- 1 root root  1348 Dec  3 00:45 f1.txt
-rw-r--r-- 1 root root  1348 Dec  3 00:45 f2.txt
-rw-r--r-- 1 root root  1348 Dec  3 00:45 f3.txt
drwx------ 2 root root 16384 Dec  3 00:05 lost+found

#恢复快照
[01:00:28 root@CentOS8 ~]#lvconvert --merge /dev/vg-mysql/mysql-snapshon 
  Merging of volume vg-mysql/mysql-snapshon started.
  vg-mysql/mysql: Merged: 100.00%
[01:01:38 root@CentOS8 ~]#lvs
  LV    VG       Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  data  cl       -wi-ao----  50.00g                                                    
  home  cl       -wi-ao----  20.00g                                                    
  root  cl       -wi-ao---- 126.90g                                                    
  swap  cl       -wi-ao----  <2.09g                                                    
  log   vg-mysql -wi-ao----   2.95g                                                    
  mysql vg-mysql -wi-a-----   1.00g                                                    
[01:01:47 root@CentOS8 ~]#mount /dev/vg-mysql/mysql /mysql/
[01:02:17 root@CentOS8 ~]#ll /m
media/ mnt/   mysql/ 
[01:02:17 root@CentOS8 ~]#ll /mysql/
total 28
-rw-r--r-- 1 root root  1348 Dec  3 00:45 f1.txt
-rw-r--r-- 1 root root  1348 Dec  3 00:45 f2.txt
-rw-r--r-- 1 root root  1348 Dec  3 00:45 f3.txt
drwx------ 2 root root 16384 Dec  3 00:05 lost+found


#挂载快照,xfs注意要使用-o ro实现只读,访止快照被修改
mkdir  -p /snap
[01:31:30 root@CentOS8 ~]#lvcreate -s -n log-snapshon -L 100M /dev/vg-mysql/log
  Logical volume "log-snapshon" created.
[01:32:02 root@CentOS8 ~]#mount -o ro,nouuid /dev/vg-mysql/log-snapshon /snap/

[01:33:58 root@CentOS8 log]#echo mage:x:1000:1000:mage:/home/mage:/bin/bash > f1.txt 
[01:34:04 root@CentOS8 log]#rm -rf f
f1.txt  f2.txt  f3.txt  
[01:34:04 root@CentOS8 log]#rm -rf f2.txt 
[01:34:14 root@CentOS8 log]#touch d.txt
[01:34:27 root@CentOS8 log]#ll
total 8
-rw-r--r-- 1 root root    0 Dec  3 01:34 d.txt
-rw-r--r-- 1 root root   43 Dec  3 01:34 f1.txt
-rw-r--r-- 1 root root 3150 Dec  3 01:16 f3.txt

xfs文件系统恢复
[01:37:04 root@CentOS8 ~]#umount /log 
[01:37:06 root@CentOS8 ~]#umount /snap 
 
[01:37:12 root@CentOS8 ~]#lvconvert --merge /dev/vg-mysql/log-snapshon 
  Merging of volume vg-mysql/log-snapshon started.
  vg-mysql/log: Merged: 100.00%

[01:38:29 root@CentOS8 ~]#mount /dev/vg-mysql/log /log/
[01:39:11 root@CentOS8 ~]#ll /log/
total 12
-rw-r--r-- 1 root root 3150 Dec  3 01:16 f1.txt
-rw-r--r-- 1 root root 3150 Dec  3 01:16 f2.txt
-rw-r--r-- 1 root root 3150 Dec  3 01:16 f3.txt



#恢复快照
umount /dev/vg0/data-snapshot
umount /dev/vg0/data
lvconvert --merge /dev/vg0/data-snapshot 

#删除快照
umount /mnt/snap
lvremove /dev/vg0/data-snapshot

练习

1、创建一个至少有两个PV组成的大小为20G的名为testvg的VG;要求PE大小为16MB, 而后在卷组中创

建大小为5G的逻辑卷testlv;挂载至/users目录

[23:53:57 root@CentOS8 ~]#pvcreate /dev/sdb{1..2}
[23:54:26 root@CentOS8 ~]#pvs
  PV         VG Fmt  Attr PSize    PFree 
  /dev/sda2  cl lvm2 a--  <199.00g  4.00m
  /dev/sdb1     lvm2 ---    10.00g 10.00g
  /dev/sdb2     lvm2 ---    10.00g 10.00g
  
2.创建vg
23:54:29 root@CentOS8 ~]#vgcreate -s 16M vg-testvg /dev/sdb{1..2}
  Volume group "vg-testvg" successfully created
[23:55:48 root@CentOS8 ~]#vgs
  VG        #PV #LV #SN Attr   VSize    VFree  
  cl          1   4   0 wz--n- <199.00g   4.00m
  vg-testvg   2   0   0 wz--n-  <19.97g <19.97g
[23:55:54 root@CentOS8 ~]#vgdisplay 
  --- Volume group ---
  VG Name               vg-testvg
  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               <19.97 GiB
  PE Size               16.00 MiB
  Total PE              1278
  Alloc PE / Size       0 / 0   
  Free  PE / Size       1278 / <19.97 GiB
  VG UUID               pBjYD0-eJh2-bedB-3nXh-BGiw-4T1i-7rfW9V
   
3.创建lv
[23:58:58 root@CentOS8 ~]#lvcreate -n testlv -L 5G /dev/vg-testvg
  Logical volume "testlv" created.
[23:59:16 root@CentOS8 ~]#lvs
  LV     VG        Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  data   cl        -wi-ao----  50.00g                                                    
  home   cl        -wi-ao----  20.00g                                                    
  root   cl        -wi-ao---- 126.90g                                                    
  swap   cl        -wi-ao----  <2.09g                                                    
  testlv vg-testvg -wi-a-----   5.00g                                                    
[23:59:22 root@CentOS8 ~]#lvdisplay 
  --- Logical volume ---
  LV Path                /dev/vg-testvg/testlv
  LV Name                testlv
  VG Name                vg-testvg
  LV UUID                CeYGg1-HjmX-9xf8-nVNX-sK3t-bHSL-fVxMXh
  LV Write Access        read/write
  LV Creation host, time CentOS8.magedu.org.41, 2022-12-03 23:59:16 +0800
  LV Status              available
  # open                 0
  LV Size                5.00 GiB
  Current LE             320
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:4
   
创建文件系统挂载
[00:00:18 root@CentOS8 ~]#mkfs.ext4 /dev/vg-testvg/testlv 
mke2fs 1.45.6 (20-Mar-2020)
Creating filesystem with 1310720 4k blocks and 327680 inodes
Filesystem UUID: 5b1c325f-a008-4f89-ab77-dd59ea169a91
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 

[00:00:35 root@CentOS8 ~]#mkdir /users
[00:01:40 root@CentOS8 ~]#df -Th
Filesystem                    Type      Size  Used Avail Use% Mounted on
devtmpfs                      devtmpfs  442M     0  442M   0% /dev
tmpfs                         tmpfs     471M     0  471M   0% /dev/shm
tmpfs                         tmpfs     471M  7.3M  464M   2% /run
tmpfs                         tmpfs     471M     0  471M   0% /sys/fs/cgroup
/dev/mapper/cl-root           xfs       127G  8.3G  119G   7% /
/dev/mapper/cl-data           xfs        50G   12G   39G  23% /data
/dev/mapper/cl-home           xfs        20G  176M   20G   1% /home
/dev/sr0                      iso9660    11G   11G     0 100% /mnt
/dev/sda1                     xfs      1014M  233M  782M  23% /boot
tmpfs                         tmpfs      95M   12K   95M   1% /run/user/42
tmpfs                         tmpfs      95M     0   95M   0% /run/user/0
/dev/mapper/vg--testvg-testlv ext4      4.9G   20M  4.6G   1% /users


2、 新建用户archlinux,要求其家目录为/users/archlinux,而后su切换至archlinux用户,复

制/etc/pam.d目录至自己的家目录

[00:48:25 root@CentOS8 ~]#useradd -d /users/archlinux archlinux    

[00:48:37 root@CentOS8 ~]#su - archlinux 

[00:49:31 archlinux@CentOS8 ~]$cp -r /etc/pam.d/ /users/archlinux/
[00:49:39 archlinux@CentOS8 ~]$ll
total 4
drwxr-xr-x 2 archlinux archlinux 4096 Dec  4 00:49 pam.d

3、扩展testlv至7G,要求archlinux用户的文件不能丢失

[00:52:32 root@CentOS8 ~]#lvextend -L +7G /dev/vg-testvg/testlv 
  Size of logical volume vg-testvg/testlv changed from 5.00 GiB (320 extents) to 12.00 GiB (768 extents).
  Logical volume vg-testvg/testlv successfully resized.

[00:53:22 root@CentOS8 ~]#resize2fs /dev/vg-testvg/testlv 
resize2fs 1.45.6 (20-Mar-2020)
Filesystem at /dev/vg-testvg/testlv is mounted on /users; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 2
The filesystem on /dev/vg-testvg/testlv is now 3145728 (4k) blocks long.


[00:54:44 root@CentOS8 ~]#df -Th
Filesystem                    Type      Size  Used Avail Use% Mounted on
devtmpfs                      devtmpfs  442M     0  442M   0% /dev
tmpfs                         tmpfs     471M     0  471M   0% /dev/shm
tmpfs                         tmpfs     471M  7.3M  464M   2% /run
tmpfs                         tmpfs     471M     0  471M   0% /sys/fs/cgroup
/dev/mapper/cl-root           xfs       127G  8.3G  119G   7% /
/dev/mapper/cl-data           xfs        50G   12G   39G  23% /data
/dev/mapper/cl-home           xfs        20G  176M   20G   1% /home
/dev/sda1                     xfs      1014M  233M  782M  23% /boot
/dev/sr0                      iso9660    11G   11G     0 100% /mnt
tmpfs                         tmpfs      95M   12K   95M   1% /run/user/42
tmpfs                         tmpfs      95M     0   95M   0% /run/user/0
/dev/mapper/vg--testvg-testlv ext4       12G   26M   12G   1% /users

4、收缩testlv至3G,要求archlinux用户的文件不能丢失

[00:59:58 root@CentOS8 ~]#fsck -f /dev/vg-testvg/testlv 
fsck from util-linux 2.32.1
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/mapper/vg--testvg-testlv: 63/786432 files (0.0% non-contiguous), 72190/3145728 blocks
[01:00:41 root@CentOS8 ~]#resize2fs /dev/vg-testvg/testlv 3G
resize2fs 1.45.6 (20-Mar-2020)
Resizing the filesystem on /dev/vg-testvg/testlv to 786432 (4k) blocks.
The filesystem on /dev/vg-testvg/testlv is now 786432 (4k) blocks long.

[01:01:41 root@CentOS8 ~]#lv
[01:01:41 root@CentOS8 ~]#lvreduce -L 3G /dev/vg-testvg/testlv 
  WARNING: Reducing active logical volume to 3.00 GiB.
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vg-testvg/testlv? [y/n]: y
  Size of logical volume vg-testvg/testlv changed from 12.00 GiB (768 extents) to 3.00 GiB (192 extents).
  Logical volume vg-testvg/testlv successfully resized.
[01:02:46 root@CentOS8 ~]#mount -a
[01:02:58 root@CentOS8 ~]#df -Th
Filesystem                    Type      Size  Used Avail Use% Mounted on
devtmpfs                      devtmpfs  442M     0  442M   0% /dev
tmpfs                         tmpfs     471M     0  471M   0% /dev/shm
tmpfs                         tmpfs     471M  7.3M  464M   2% /run
tmpfs                         tmpfs     471M     0  471M   0% /sys/fs/cgroup
/dev/mapper/cl-root           xfs       127G  8.3G  119G   7% /
/dev/mapper/cl-data           xfs        50G   12G   39G  23% /data
/dev/mapper/cl-home           xfs        20G  176M   20G   1% /home
/dev/sda1                     xfs      1014M  233M  782M  23% /boot
/dev/sr0                      iso9660    11G   11G     0 100% /mnt
tmpfs                         tmpfs      95M   12K   95M   1% /run/user/42
tmpfs                         tmpfs      95M     0   95M   0% /run/user/0
/dev/mapper/vg--testvg-testlv ext4      2.9G   16M  2.8G   1% /users

5、对testlv创建快照,并尝试基于快照备份数据,验证快照的功能

20:27:08 root@CentOS8 ~]#lvcreate -n testlv-snapshon  -s -L 100M -p r /dev/vg-testvg/testlv
  Rounding up size to full physical extent 112.00 MiB
  Logical volume "testlv-snapshon" created.
[20:27:14 root@CentOS8 ~]#lvs
  LV              VG        Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  data            cl        -wi-ao----  50.00g                                                    
  home            cl        -wi-ao----  20.00g                                                    
  root            cl        -wi-ao---- 126.90g                                                    
  swap            cl        -wi-ao----  <2.09g                                                    
  testlv          vg-testvg owi-aos---   5.00g                                                    
  testlv-snapshon vg-testvg sri-a-s--- 112.00m      testlv 0.01                                       
[20:27:18 root@CentOS8 ~]#mount /dev/vg-testvg/testlv-snapshon /snap/
mount: /snap: WARNING: device write-protected, mounted read-only.
[20:27:46 root@CentOS8 ~]#df -h
Filesystem                               Size  Used Avail Use% Mounted on
devtmpfs                                 442M     0  442M   0% /dev
tmpfs                                    471M     0  471M   0% /dev/shm
tmpfs                                    471M  7.3M  464M   2% /run
tmpfs                                    471M     0  471M   0% /sys/fs/cgroup
/dev/mapper/cl-root                      127G  8.5G  119G   7% /
/dev/mapper/cl-data                       50G   12G   39G  23% /data
/dev/mapper/cl-home                       20G  176M   20G   1% /home
/dev/sda1                               1014M  233M  782M  23% /boot
/dev/sr0                                  11G   11G     0 100% /mnt
tmpfs                                     95M   12K   95M   1% /run/user/42
tmpfs                                     95M     0   95M   0% /run/user/0
/dev/mapper/vg--testvg-testlv            4.9G   21M  4.6G   1% /users
/dev/mapper/vg--testvg-testlv--snapshon  4.9G   21M  4.6G   1% /snap
[20:27:55 root@CentOS8 ~]#rm -rf /users/b.txt 
[20:28:08 root@CentOS8 ~]#touch /users/e.txt 
[20:28:14 root@CentOS8 ~]#touch /users/w.txt 
[20:28:22 root@CentOS8 ~]#ll /users/
total 20
drwx------ 3 archlinux archlinux  4096 Dec  4 20:20 archlinux
-rw-r--r-- 1 root      root          0 Dec  4 20:20 a.txt
-rw-r--r-- 1 root      root          0 Dec  4 20:20 c.txt
-rw-r--r-- 1 root      root          0 Dec  4 20:28 e.txt
drwx------ 2 root      root      16384 Dec  4 20:19 lost+found
-rw-r--r-- 1 root      root          0 Dec  4 20:28 w.txt
[20:28:30 root@CentOS8 ~]#ll /snap/
total 20
drwx------ 3 archlinux archlinux  4096 Dec  4 20:20 archlinux
-rw-r--r-- 1 root      root          0 Dec  4 20:20 a.txt
-rw-r--r-- 1 root      root          0 Dec  4 20:20 b.txt
-rw-r--r-- 1 root      root          0 Dec  4 20:20 c.txt
drwx------ 2 root      root      16384 Dec  4 20:19 lost+found
[20:28:41 root@CentOS8 ~]#umount /snap 
[20:28:49 root@CentOS8 ~]#umount /users 
[20:28:55 root@CentOS8 ~]#df -h
Filesystem           Size  Used Avail Use% Mounted on
devtmpfs             442M     0  442M   0% /dev
tmpfs                471M     0  471M   0% /dev/shm
tmpfs                471M  7.3M  464M   2% /run
tmpfs                471M     0  471M   0% /sys/fs/cgroup
/dev/mapper/cl-root  127G  8.5G  119G   7% /
/dev/mapper/cl-data   50G   12G   39G  23% /data
/dev/mapper/cl-home   20G  176M   20G   1% /home
/dev/sda1           1014M  233M  782M  23% /boot
/dev/sr0              11G   11G     0 100% /mnt
tmpfs                 95M   12K   95M   1% /run/user/42
tmpfs                 95M     0   95M   0% /run/user/0
[20:28:58 root@CentOS8 ~]#lvconvert --merge /dev/vg-testvg/testlv-snapshon 
  Merging of volume vg-testvg/testlv-snapshon started.
  vg-testvg/testlv: Merged: 100.00%
[20:29:30 root@CentOS8 ~]#mount /dev/vg-testvg/testlv /users/
[20:29:42 root@CentOS8 ~]#df -h
Filesystem                     Size  Used Avail Use% Mounted on
devtmpfs                       442M     0  442M   0% /dev
tmpfs                          471M     0  471M   0% /dev/shm
tmpfs                          471M  7.3M  464M   2% /run
tmpfs                          471M     0  471M   0% /sys/fs/cgroup
/dev/mapper/cl-root            127G  8.5G  119G   7% /
/dev/mapper/cl-data             50G   12G   39G  23% /data
/dev/mapper/cl-home             20G  176M   20G   1% /home
/dev/sda1                     1014M  233M  782M  23% /boot
/dev/sr0                        11G   11G     0 100% /mnt
tmpfs                           95M   12K   95M   1% /run/user/42
tmpfs                           95M     0   95M   0% /run/user/0
/dev/mapper/vg--testvg-testlv  4.9G   21M  4.6G   1% /users      
[20:29:45 root@CentOS8 ~]#ll /users/
total 20
drwx------ 3 archlinux archlinux  4096 Dec  4 20:20 archlinux
-rw-r--r-- 1 root      root          0 Dec  4 20:20 a.txt
-rw-r--r-- 1 root      root          0 Dec  4 20:20 b.txt
-rw-r--r-- 1 root      root          0 Dec  4 20:20 c.txt
drwx------ 2 root      root      16384 Dec  4 20:19 lost+found
[20:29:53 root@CentOS8 ~]#
posted @ 2022-12-02 21:25  Alexander7  阅读(525)  评论(0)    收藏  举报