Linux下使用LVM管理(扩展/缩小/删除)

时间:2021-05-06 18:46:47

LVM的工作原理

  • LVM( Logical Volume Manager)逻辑卷管理,是在磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提供一个抽象的盘卷,在盘卷上建立文件系统。管理员利用LVM可以在磁盘不用重新分区的情况下动态调整文件系统的大小,并且利用LVM管理的文件系统可以跨越磁盘,当服务器添加了新的磁盘后,管理员不必将原有的文件移动到新的磁盘上,而是通过LVM可以直接扩展文件系统跨越磁盘。
  • 它就是通过将底层的物理硬盘封装起来,然后以逻辑卷的方式呈现给上层应用。在LVM中,其通过对底层的硬盘进行封装,当我们对底层的物理硬盘进行操作时,其不再是针对于分区进行操作,而是通过一个叫做逻辑卷的东西来对其进行底层的磁盘管理操作。

LVM常用的术语

  • 物理存储介质(The physical media):LVM存储介质可以是磁盘分区,整个磁盘,RAID阵列或SAN磁盘,设备必须初始化为LVM物理卷,才能与LVM结合使用
  • 物理卷PV(physical volume)  :物理卷就是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数,创建物理卷它可以用硬盘分区,也可以用硬盘本身;
  • 卷组VG(Volume Group)  :一个LVM卷组由一个或多个物理卷组成 
  • 逻辑卷LV(logical volume)  :LV建立在VG之上,可以在LV之上建立文件系统
  • PE(physical extents)  :PV物理卷中可以分配的最小存储单元,PE的大小是可以指定的,默认为4MB
  • LE(logical extent)  :    LV逻辑卷中可以分配的最小存储单元,在同一个卷组中,LE的大小和PE是相同的,并且一一对应

最小存储单位总结:

  • 名称      最小存储单位      示例
  • 硬盘      扇区(512字节)
  • 文件系统    block(1K或4K )    #  mkfs.ext4  -b 2048  /dev/sdb1  ,最大支持到4096
  • raid      chunk  (512K)    #mdadm -C -v /dev/md5 -l 5 -n 3 -c 512 -x 1 /dev/sde{1,2,3,5}
  • LVM      PE   (4M)      # vgcreate -s 4M  vg1 /dev/sdb{1,2}

LVM主要元素构成:

Linux下使用LVM管理(扩展/缩小/删除)

LVM优点

  • 使用卷组,使多个硬盘空间看起来像是一个大的硬盘
  • 使用逻辑卷,可以跨多个硬盘空间的分区  sdb1 sdb2  sdc1  sdd2  sdf
  • 在使用逻辑卷时,它可以在空间不足时动态调整它的大小
  • 在调整逻辑卷大小时,不需要考虑逻辑卷在硬盘上的位置,不用担心没有可用的连续空间
  • 可以在线对LV,VG 进行创建,删除,调整大小等操作。LVM上的文件系统也需要重新调整大小。
  • 允许创建快照,可以用来保存文件系统的备份。

RAID+LVM一起用:LVM是软件的卷管理方式,而RAID是磁盘管理的方法。对于重要的数据,使用RAID用来保护物理的磁盘不会因为故障而中断业务,再用LVM用来实现对卷的良性的管理,更好的利用磁盘资源。

创建LVM的基本步骤:

  • (1) 物理磁盘被格式化为PV,(空间被划分为一个个的PE) #PV包含PE
  • (2) 不同的PV加入到同一个VG中,(不同PV的PE全部进入到了VG的PE池内) #VG包含PV
  • (3) 在VG中创建LV逻辑卷,基于PE创建,(组成LV的PE可能来自不同的物理磁盘) #LV基于PE创建
  • (4) LV直接可以格式化后挂载使用    #格式化挂载使用
  • (5) LV的扩充缩减实际上就是增加或减少组成该LV的PE数量,其过程不会丢失原始数据

 lvm常用的命令

Linux下使用LVM管理(扩展/缩小/删除)

下面的操作会用的一些查看命令:

Linux下使用LVM管理(扩展/缩小/删除)

准备环境

[root@wencheng ~]# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)

[root@wencheng ~]# rpm -qa | grep lvm
lvm2-libs-2.02.187-6.el7_9.4.x86_64
lvm2-2.02.187-6.el7_9.4.x86_64

创建并使用LVM逻辑卷

  VMware Workstation添加硬盘

  • 在"我的计算机"中选择该主机--右键--设置--添加--硬盘--下一步--下一步--下一步--完成 添加硬盘步骤。

Linux下使用LVM管理(扩展/缩小/删除)

  • 命令:echo "- - -" > /sys/class/scsi_host/host0/scan
  • 1.新增添磁盘,还不能直接显示出来,要想出现要对磁盘进行扫描(实际生产环境中不需要,都是热插拔技术):
  • 2.假如 fdisk -l 还是未发现新硬盘,则将上面命令中的host0,替换为host1,host2,....看看;
  • 3.我们再查看系统日志/var/log/messages,发现对SCSI设备进行了一次重新扫描,用fdisk -l也看到了新增加的磁盘了。

查看新增的硬盘

Linux下使用LVM管理(扩展/缩小/删除)

创建分区并设置LVM(8e)类型。

[root@wencheng ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2). Changes will remain in memory only, until you decide to write them.
Be careful before using the write command. Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x81cc782c. Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-20971519, default 2048):    //回车(默认)
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519):    ////回车(默认)
Using default value 20971519
Partition 1 of type Linux and of size 10 GiB is set Command (m for help): p Disk /dev/sdb: 10.7 GB, 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
Disk label type: dos
Disk identifier: 0x81cc782c Device Boot Start End Blocks Id System
/dev/sdb1 2048 20971519 10484736 83 Linux Command (m for help): l 0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris
1 FAT12 27 Hidden NTFS Win 82 Linux swap / So c1 DRDOS/sec (FAT-
2 XENIX root 39 Plan 9 83 Linux c4 DRDOS/sec (FAT-
3 XENIX usr 3c PartitionMagic 84 OS/2 hidden C: c6 DRDOS/sec (FAT-
4 FAT16 <32M 40 Venix 80286 85 Linux extended c7 Syrinx
5 Extended 41 PPC PReP Boot 86 NTFS volume set da Non-FS data
6 FAT16 42 SFS 87 NTFS volume set db CP/M / CTOS / .
7 HPFS/NTFS/exFAT 4d QNX4.x 88 Linux plaintext de Dell Utility
8 AIX 4e QNX4.x 2nd part 8e Linux LVM df BootIt
9 AIX bootable 4f QNX4.x 3rd part 93 Amoeba e1 DOS access
a OS/2 Boot Manag 50 OnTrack DM 94 Amoeba BBT e3 DOS R/O
b W95 FAT32 51 OnTrack DM6 Aux 9f BSD/OS e4 SpeedStor
c W95 FAT32 (LBA) 52 CP/M a0 IBM Thinkpad hi eb BeOS fs
e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a5 FreeBSD ee GPT
f W95 Ext'd (LBA) 54 OnTrackDM6 a6 OpenBSD ef EFI (FAT-12/16/
10 OPUS 55 EZ-Drive a7 NeXTSTEP f0 Linux/PA-RISC b
11 Hidden FAT12 56 Golden Bow a8 Darwin UFS f1 SpeedStor
12 Compaq diagnost 5c Priam Edisk a9 NetBSD f4 SpeedStor
14 Hidden FAT16 <3 61 SpeedStor ab Darwin boot f2 DOS secondary
16 Hidden FAT16 63 GNU HURD or Sys af HFS / HFS+ fb VMware VMFS
17 Hidden HPFS/NTF 64 Novell Netware b7 BSDI fs fc VMware VMKCORE
18 AST SmartSleep 65 Novell Netware b8 BSDI swap fd Linux raid auto
1b Hidden W95 FAT3 70 DiskSecure Mult bb Boot Wizard hid fe LANstep
1c Hidden W95 FAT3 75 PC/IX be Solaris boot ff BBT
1e Hidden W95 FAT1 80 Old Minix Command (m for help): t
Selected partition 1
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: 10.7 GB, 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
Disk label type: dos
Disk identifier: 0x81cc782c Device Boot Start End Blocks Id System
/dev/sdb1 2048 20971519 10484736 8e Linux LVM    //类型修改成功 Command (m for help): w
The partition table has been altered! Calling ioctl() to re-read partition table.
Syncing disks.

 注: 其他新增硬盘分区类似,不再赘述,如下查看最后分区结果。

[root@wencheng ~]# ls -l /dev/sd*1
brw-rw----. 1 root disk 8, 1 Mar 25 10:54 /dev/sda1    //系统分区
brw-rw----. 1 root disk 8, 17 Apr 19 16:48 /dev/sdb1
brw-rw----. 1 root disk 8, 33 Apr 19 16:53 /dev/sdc1
brw-rw----. 1 root disk 8, 49 Apr 19 16:53 /dev/sdd1
brw-rw----. 1 root disk 8, 65 Apr 19 16:53 /dev/sde1
[root@wencheng ~]#
[root@localhost ~]# fdisk -l | grep -e "/dev/sd[b-e]1"
/dev/sdb1 2048 41943039 20970496 8e Linux LVM
/dev/sdc1 2048 41943039 20970496 8e Linux LVM
/dev/sdd1 2048 41943039 20970496 8e Linux LVM
/dev/sde1 2048 20971519 10484736 83 Linux    //备用磁盘

 创建pv,并查看结果。

[root@wencheng ~]# pvcreate /dev/sd[b,c,d]1
Physical volume "/dev/sdb1" successfully created.
Physical volume "/dev/sdc1" successfully created.
Physical volume "/dev/sdd1" successfully created.
[root@wencheng ~]#
[root@wencheng ~]# pvdisplay /dev/sd[b,c,d]1
"/dev/sdb1" is a new physical volume of "<10.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb1
VG Name
PV Size <20.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID kZxjyM-Ora3-io5L-J14w-ljlM-TArl-gYQhqm "/dev/sdd1" is a new physical volume of "<10.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdd1
VG Name
PV Size <20.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID NN1HSf-JQAA-PiMm-MEmm-WocM-9QrD-zcStUf "/dev/sdc1" is a new physical volume of "<10.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdc1
VG Name
PV Size <20.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID I92jzU-WN1f-zcrW-Mzm7-HuoZ-3hBP-BjJFkG

创建名为'vg01'的卷组,使用/dev/sdb1, /dev/sdc1和/dev/sdb1创建,并查看结果。

[root@wencheng ~]# vgcreate vg01 /dev/sd[b,c,d]1    //指定PE大小用的参数:-s 16M,  如果存储的数据都是大文件,那么PE尽量调大,读取速度快
Volume group "vg01" successfully created
[root@wencheng ~]#
[root@localhost ~]# vgdisplay
--- Volume group ---
VG Name vg01
System ID
Format lvm2
Metadata Areas 3
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 3
Act PV 3
VG Size <59.99 GiB    ///dev/sd[b,c]1硬盘总和容量
PE Size 4.00 MiB     //默认4MB
Total PE 15357
Alloc PE / Size 0 / 0
Free PE / Size 15357 / <59.99 GiB
VG UUID 0HRkjd-8ccf-Alpe-vhfJ-eOLi-vtnX-0Vl7sR

创建一个名为'lv01'、大小为30G的逻辑卷。

[root@wencheng ~]# lvcreate -n lv01 -L 30G vg01    //-L指定lv大小的SIZE(M,G) (-l:小l 指定LE的数量)
Logical volume "lv01" created.
[root@wencheng ~]#
[root@localhost ~]# lvdisplay
--- Logical volume ---
LV Path /dev/vg01/lv01
LV Name lv01
VG Name vg01
LV UUID Iwvoxi-Ekrb-8nQ7-QfDt-1jIx-FiXy-srYbbZ
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2021-04-20 11:17:57 +0800
LV Status available
# open 0
LV Size 30.00 GiB
Current LE 4
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0

创建文件系统,并挂载。

[root@wencheng ~]# mkdir /mnt/lv01
[root@wencheng ~]# ls -l /dev/vg01/
total 0
lrwxrwxrwx. 1 root root 7 Apr 20 11:17 lv01 -> ../dm-0 [root@localhost ~]# mkfs.xfs /dev/vg01/lv01
meta-data=/dev/vg01/lv01 isize=512 agcount=1, agsize=4096 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=4096, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=855, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0 [root@wencheng ~]# mount /dev/vg01/lv01 /mnt/lv01/
[root@wencheng ~]# echo "/dev/vg01/lv01 /mnt/lv01 xfs defaults 0 0" >> /etc/fstab    //添加开机自动挂载
[root@wencheng ~]# df -Th /mnt/lv01/
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/vg01-lv01 xfs 31G 61M 30G 1% /mnt/lv01

动态调整逻辑卷大小的功能是LVM最有用的功能。

  扩展LV首先,确定一下是否有可用的扩容空间,因为空间是从VG里面创建的,并且LV不能跨VG扩容。

  • 1.如果VG无剩余空间,则添加新硬盘,这里不再赘述(添加硬盘,分区LVM),再如下操作。
[root@wencheng ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg01 3 1 0 wz--n- <30.99g 1012.00m [root@wencheng ~]# pvcreate /dev/sde1
Physical volume "/dev/sde1" successfully created.
[[root@wencheng ~]# vgextend vg01 /dev/sde1    //新增硬盘/dev/sde1为10G
Volume group "vg01" successfully extended
[root@wencheng ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg01 4 1 0 wz--n- 30.99g 10.98g
  • 2.如果VG有预留空间,则如下操作。
[root@wencheng ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg01 3 1 0 wz--n- <59.99g 29.97g    //空闲约29G

扩容逻辑卷,用的如下命令。

Linux下使用LVM管理(扩展/缩小/删除)

[root@wencheng ~]# lvextend -L 59G /dev/vg01/lv01
Size of logical volume vg01/lv01 changed from <30.02 GiB (7684 extents) to 59.00 GiB (15104 extents).
Logical volume vg01/lv01 successfully resized. [root@wencheng ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv01 vg01 -wi-ao---- 59.00g    //LV已扩容成功 [root@wencheng ~]# lvdisplay
--- Logical volume ---
LV Path /dev/vg01/lv01
LV Name lv01
VG Name vg01
LV UUID Iwvoxi-Ekrb-8nQ7-QfDt-1jIx-FiXy-srYbbZ
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2021-04-20 11:17:57 +0800
LV Status available
# open 1
LV Size 59.00 GiB
Current LE 15104
Segments 3
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0 说明:
  在指定大小的时候,扩容30m和扩容到30m是不一样的写法
  扩容59G ====> -L +59G
  扩容到59G =====> -L 59G [root@wencheng ~]# df -Th /mnt/lv01/
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/vg01-lv01 xfs 31G 61M 30G 1% /mnt/lv01    //但仍然看不到扩展的容量 注:可以看到LV虽然扩展了,但是文件系统大小还是原来的,下面开始扩容文件系统
  ext4文件系统扩容使用命令语法: resize2fs 逻辑卷名称
  xfs文件系统扩容使用命令语法: xfs_growfs 挂载点
  resize2fs和xfs_growfs 两者的区别是传递的参数不一样的,xfs_growfs是采用的挂载点;resize2fs是逻辑卷名称,而且resize2fs命令不能对xfs类型文件系统使用。 [root@wencheng ~]# xfs_growfs /mnt/lv01/
meta-data=/dev/mapper/vg01-lv01 isize=512 agcount=1921, agsize=4096 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=7868416, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=855, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 7868416 to 15466496
[root@wencheng ~]#
[root@wencheng ~]# df -Th /mnt/lv01/
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/vg01-lv01 xfs 59G 119M 59G 1% /mnt/lv01    //扩展完成

注:先扩lv逻辑卷,再扩文件系统。 掌握另一方法:使用lvextend命令钟加参数-r,它是支持多种不同的文件系统,比如ext3,ext4,xfs,…
[root@wencheng ~]# lvextend -L 59G -r /dev/vg01/lv01 #直接扩容到59G空间,一步到位,不用再扩文件系统了

缩减LVM卷,注意事项

  • 减少逻辑卷的大小值若小于储存的数据大小,存储在后面的数据会丢失,缩减 LVM 之前,建议先做一个备份。
  • 在 GFS2 或者 XFS 文件系统上不支持在线缩小;btrfs文件系统支持在线缩小。

万不得已需要缩减xfs文件系统的lvm分区空间时候,一定要注意顺序。

  • 第一步,确认现有环境,并目标数据备份;以/mnt/lv01为例。
[root@wencheng ~]# ls -l /mnt/lv01*
/mnt/lv01:
total 1060
-rw-r--r--. 1 root root 16 Apr 21 10:44 adjtime
-rw-r--r--. 1 root root 1518 Apr 21 10:44 aliases
-rw-r--r--. 1 root root 12288 Apr 21 10:44 aliases.db
-rw-------. 1 root root 541 Apr 21 10:44 anacrontab
-rw-r--r--. 1 root root 55 Apr 21 10:44 asound.conf
-rw-r--r--. 1 root root 2853 Apr 21 10:44 bashrc
-rw-r--r--. 1 root root 38 Apr 21 10:44 centos-release [root@wencheng ~]# df -Th /mnt/lv01
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/vg01-lv01 xfs 50G 170M 50G 1% /mnt/lv01 [root@wencheng ~]# rpm -qa | grep xfsdump
xfsdump-3.1.7-1.el7.x86_64 [root@wencheng ~]# xfsdump -f /mnt/lv01.xfsdump /mnt/lv01    //xfsdump -f "dump文件存放的绝对路径加文件名" "需要缩减容量的目录"
xfsdump: using file dump (drive_simple) strategy
xfsdump: version 3.1.7 (dump format 3.0) - type ^C for status and control ============================= dump label dialog ============================== please enter label for this dump session (timeout in 300 sec)
-> lv01
session label entered: "lv01" --------------------------------- end dialog --------------------------------- xfsdump: level 0 dump of wencheng:/mnt/lv01
xfsdump: dump date: Wed Apr 21 10:59:05 2021
xfsdump: session id: 619c7222-752a-44af-8b7f-411d33fbef15
xfsdump: session label: "lv01"
xfsdump: ino map phase 1: constructing initial dump list
xfsdump: ino map phase 2: skipping (no pruning necessary)
xfsdump: ino map phase 3: skipping (only one dump stream)
xfsdump: ino map construction complete
xfsdump: estimated dump size: 143172224 bytes
xfsdump: /var/lib/xfsdump/inventory created ============================= media label dialog ============================= please enter label for media in drive 0 (timeout in 300 sec)
-> lv01
media label entered: "lv01" --------------------------------- end dialog --------------------------------- xfsdump: creating dump session media file 0 (media 0, file 0)
xfsdump: dumping ino map
xfsdump: dumping directories
xfsdump: dumping non-directory files
xfsdump: ending media file
xfsdump: media file size 140934528 bytes
xfsdump: dump size (non-dir files) : 139858712 bytes
xfsdump: dump complete: 32 seconds elapsed
xfsdump: Dump Summary:
xfsdump: stream 0 /mnt/lv01.xfsdump OK (success)
xfsdump: Dump Status: SUCCESS [root@wencheng ~]# ls -l /mnt/lv01*
-rw-r--r--. 1 root root 140934528 Apr 21 10:59 /mnt/lv01.xfsdump    //生成备份 /mnt/lv01:
total 1060
-rw-r--r--. 1 root root 16 Apr 21 10:44 adjtime
-rw-r--r--. 1 root root 1518 Apr 21 10:44 aliases
-rw-r--r--. 1 root root 12288 Apr 21 10:44 aliases.db
-rw-------. 1 root root 541 Apr 21 10:44 anacrontab
-rw-r--r--. 1 root root 55 Apr 21 10:44 asound.conf
-rw-r--r--. 1 root root 2853 Apr 21 10:44 bashrc
-rw-r--r--. 1 root root 38 Apr 21 10:44 centos-release
  • 第二步,卸载挂载的目录。
[root@wencheng ~]# umount /mnt/lv01/
  • 第三步,把你原来的逻辑卷变成5G是扩大还是缩小它自己会判断,并格式化以更新到最新大小。
[root@wencheng ~]# lvreduce -L 5G /dev/vg01/lv01
WARNING: Reducing active logical volume to 5.00 GiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vg01/lv01? [y/n]: y
Size of logical volume vg01/lv01 changed from 50.00 GiB (12800 extents) to 5.00 GiB (1280 extents).
Logical volume vg01/lv01 successfully resized. [root@wencheng ~]# mkfs.xfs -f /dev/vg01/lv01    //格式化以更新到最新大小(清除所有数据)
meta-data=/dev/vg01/lv01 isize=512 agcount=4, agsize=327680 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=1310720, 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@wencheng ~]# lvs    //lv缩小成功
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv01 vg01 -wi-a----- 5.00g
[root@wencheng ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg01 4 1 0 wz--n- 69.98g 64.98g
  • 第四步,挂载出来空分区 。
[root@wencheng ~]# mount /dev/vg01/lv01 /mnt/lv01
[root@wencheng ~]# df -Th /mnt/lv01
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/vg01-lv01 xfs 5.0G 33M 5.0G 1% /mnt/lv01 [root@wencheng ~]# ls -l /mnt/lv01
total 0
  • 第五步,把dump的数据恢复。
[root@wencheng ~]# xfsrestore -f /mnt/lv01.xfsdump /mnt/lv01
xfsrestore: using file dump (drive_simple) strategy
xfsrestore: version 3.1.7 (dump format 3.0) - type ^C for status and control
xfsrestore: searching media for dump
xfsrestore: examining media file 0
xfsrestore: dump description:
xfsrestore: hostname: wencheng
xfsrestore: mount point: /mnt/lv01
xfsrestore: volume: /dev/mapper/vg01-lv01
xfsrestore: session time: Wed Apr 21 10:59:05 2021
xfsrestore: level: 0
xfsrestore: session label: "lv01"
xfsrestore: media label: "lv01"
xfsrestore: file system id: ded6656d-b154-4c48-bda8-2935c5fa8dd8
xfsrestore: session id: 619c7222-752a-44af-8b7f-411d33fbef15
xfsrestore: media id: e4f6c078-14b3-43c3-9ff7-5c847977ca32
xfsrestore: using online session inventory
xfsrestore: searching media for directory dump
xfsrestore: reading directories
xfsrestore: 533 directories and 3574 entries processed
xfsrestore: directory post-processing
xfsrestore: restoring non-directory files
xfsrestore: restore complete: 0 seconds elapsed
xfsrestore: Restore Summary:
xfsrestore: stream 0 /mnt/lv01.xfsdump OK (success)
xfsrestore: Restore Status: SUCCESS
[root@wencheng ~]#
[root@wencheng ~]# ls -l /mnt/lv01    //查看数据是否恢复完成
total 1060
-rw-r--r--. 1 root root 16 Apr 21 10:44 adjtime
-rw-r--r--. 1 root root 1518 Apr 21 10:44 aliases
-rw-r--r--. 1 root root 12288 Apr 21 10:44 aliases.db
-rw-------. 1 root root 541 Apr 21 10:44 anacrontab
-rw-r--r--. 1 root root 55 Apr 21 10:44 asound.conf
-rw-r--r--. 1 root root 2853 Apr 21 10:44 bashrc
-rw-r--r--. 1 root root 38 Apr 21 10:44 centos-release

 LVM删除操作

创建LVM流程:pvcreate创建pv -> vgcreate创建卷组 -> lvcreate创建逻辑卷 -> mkfs.xfs lv 格式化-> mount挂载
删除LVM流程:umount卸载 -> lvremove lv移出卷组中所有逻辑卷-> vgremove vg移出卷组-> pvremove 移出pv

  • 查看现有lvm状态。
[root@wencheng ~]# df -Th /mnt/lv01
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/vg01-lv01 xfs 5.0G 170M 4.9G 4% /mnt/lv01
[root@wencheng ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv01 vg01 -wi-ao---- 5.00g
[root@wencheng ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg01 4 1 0 wz--n- 69.98g 64.98g
[root@wencheng ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb1 vg01 lvm2 a-- <20.00g <15.00g
/dev/sdc1 vg01 lvm2 a-- <20.00g <20.00g
/dev/sdd1 vg01 lvm2 a-- <20.00g <20.00g
/dev/sde1 vg01 lvm2 a-- <10.00g <10.00g
  • 卸载lvm挂载目录。
[root@wencheng ~]# umount /mnt/lv01
[root@wencheng ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda2 xfs 30G 1.2G 29G 4% /
devtmpfs devtmpfs 981M 0 981M 0% /dev
tmpfs tmpfs 992M 0 992M 0% /dev/shm
tmpfs tmpfs 992M 9.5M 982M 1% /run
tmpfs tmpfs 992M 0 992M 0% /sys/fs/cgroup
/dev/sda1 xfs 297M 107M 191M 36% /boot
tmpfs tmpfs 199M 0 199M 0% /run/user/0
  • 删除逻辑卷lv。
[root@wencheng ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv01 vg01 -wi-a----- 5.00g
[root@wencheng ~]#
[root@wencheng ~]# lvremove /dev/vg01/lv01
Do you really want to remove active logical volume vg01/lv01? [y/n]: y
Logical volume "lv01" successfully removed
[root@wencheng ~]# lvs
  • 删除卷组vg。
[root@wencheng ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg01 4 0 0 wz--n- 69.98g 69.98g
[root@wencheng ~]#
[root@wencheng ~]# vgremove vg01
Volume group "vg01" successfully removed
[root@wencheng ~]#
[root@wencheng ~]# vgs
  • 删除物理机pv。
[root@wencheng ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb1 lvm2 --- <20.00g <20.00g
/dev/sdc1 lvm2 --- <20.00g <20.00g
/dev/sdd1 lvm2 --- <20.00g <20.00g
/dev/sde1 lvm2 --- <10.00g <10.00g
[root@wencheng ~]#
[root@wencheng ~]# pvremove /dev/sde1
Labels on physical volume "/dev/sde1" successfully wiped.
[root@wencheng ~]# pvremove /dev/sdd1
Labels on physical volume "/dev/sdd1" successfully wiped.
[root@wencheng ~]#
[root@wencheng ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb1 lvm2 --- <20.00g <20.00g
/dev/sdc1 lvm2 --- <20.00g <20.00g
  • 编辑/etc/fstab,删除对应自动挂载信息 。
UUID=57c4afb5-1953-4695-b173-965f1b12500f /                       xfs     defaults        0 0
UUID=a04da5a6-ddd1-41b8-a9d6-ee5f6b62596e /boot xfs defaults 0 0
UUID=77e1f34d-8161-4b9c-ba1f-240898a695ef swap swap defaults 0 0
#/dev/vg01/lv01 /mnt/lv01 xfs defaults 0 0
  • 格式化磁盘。
[root@wencheng ~]# mkfs.xfs /dev/sde1
meta-data=/dev/sde1 isize=512 agcount=4, agsize=655296 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=2621184, 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@wencheng ~]# mkfs.xfs /dev/sdd1
meta-data=/dev/sdd1 isize=512 agcount=4, agsize=1310656 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=5242624, 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