Linux基础四

22 LVM管理命令

LVM涉及到了PV、VG、LV三个层次,每一个层次都有对应的命令来管理centos

22.1 PV管理工具

管理PV的工具:pvs, pvscan, pvdisplay, pvcreate, pvremove, pvmovebash

经常使用命令:app

♦ pvs [OPTIONS] 显示简要的PV信息ide

♦ pvdisplay [OPTIONS] 显示详细的PV信息工具

♦ pvcreate /dev/DEVICE 建立PV性能

♦ pvmove /dev/DEVICE 删除PVui

♦ pvscan [OPTIONS] 检查PVcentos7

22.2 VG管理工具

管理VG工具:vgs, vgscan, vgdisplay, vgcreate, vgremove, vgreduce, vgextend, vgchangecode

经常使用命令:rem

♦ vgs [OPTIONS] 显示简要的VG信息

♦ vgdisplay [OPTIONS] 显示详细的VG信息

♦ vgcreate [-s #[kKmMgGtTpPeE]] VG_NAME /dev/DEVICE [/dev/DEVICE...] 建立VG

♦ vgextend VG_NAME /dev/DEVICE [/dev/DEVICE...] 扩展VG

♦ vgreduce VG_NAME /dev/DEVICE [/dev/DEVICE...] 缩减VG

♦ vgremove VG_NAME 删除VG

♦ vgscan [OPTIONS] 检查VG

♦ vgchange [OPTIONS] 修改VG属性

22.3 LV管理工具

管理LV工具:lvs, lvscan, lvdisplay, lvcreate, lvremove, lvreduce, lvextemd, kvresize

经常使用命令:

♦ lvs [OPTIONS] 查看简单的LV信息

♦ lvdisplay [OPTIONS] 查看详细的LV信息

♦ lvcreate -L SIZE[mMgGtT] -n LV_NAME VG_NAME 建立LV

​ lvcreate -l 100% FREE -n LV_NAME VG_NAME :指定LV大小为全部可用的VG空间,-l指定PE数量

♦ lvremove /dev/VG_NAME/LV_NAME 删除LV

♦ lvextend -L [+]SIZE[mMgGtT] /dev/VG_NAME/LV_NAME 扩展LV

​ 配合同步ext系列文件系统的命令才生效:resize2fs /dev/VG_NAME/LV_NAME

​ 或同步xfs文件系统的命令才生效:xfs_growfs /dev/VG_NAME/LV_NAME

​ lvresize -r -l +100%FREE /dev/VG_NAME/LV_NAME

说明:执行一条命令后同时完成扩展LV和同步文件系统的功能,使用全部的VG空间扩展LV。SIZE表示为扩展到LV 的总容量大小,+SIZE表示在用来基础上增长的容量大小。

♦ lvreduce -L [-]SIZE[mMgGtT] /dev/VG_NAME/LV_NAME 缩减LV

说明:缩减LV时,注意步骤,先执行umount命令卸载,而后进行文件系统检查,再重置文件系统大小,最后才执行lvreduce命令

♦ lvscan [OPTIONS] 检查LV

22.4 LVM的配置和使用
22.4.1 建立逻辑卷

前提准备好分区

#建立PV
[root@centos82s ~]$pvcreate /dev/sdb1
  Physical volume "/dev/sdb1" successfully created.
[root@centos82s ~]$pvcreate /dev/sdb2
  Physical volume "/dev/sdb2" successfully created.
#查看
[root@centos82s ~]$pvs
  PV         VG Fmt  Attr PSize PFree
  /dev/sdb1     lvm2 ---  5.00g 5.00g
  /dev/sdb2     lvm2 ---  5.00g 5.00g
#建立VG
[root@centos82s ~]$vgcreate -s 16M myvg /dev/sdb{1,2}
  Volume group "myvg" successfully created
[root@centos82s ~]$vgs
  VG   #PV #LV #SN Attr   VSize  VFree 
  myvg   2   0   0 wz--n- <9.97g <9.97g
#建立LV
[root@centos82s ~]$lvcreate -n mylv -L 2G myvg
  Logical volume "mylv" created.

[root@centos82s ~]$lvs
  LV   VG   Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  mylv myvg -wi-a----- 2.00g     
#查看LV路径
[root@centos82s ~]$lvdisplay
  --- Logical volume ---
  LV Path                /dev/myvg/mylv
  LV Name                mylv
#建立ext4系统
[root@centos82s ~]$mkfs.ext4 /dev/myvg/mylv
#建立挂载点
[root@centos82s ~]$mkdir /mnt/mylvs
#开机自动挂载文件系统,在/etc/fstab中添加下面内容
/dev/myvg/mylv                            /mnt/mylvs              ext4    defaults        0 0
#手动挂载该文件系统
[root@centos82s ~]$mount -a
22.4.2 扩展逻辑卷
#添加硬盘,建立PV
[root@centos82s ~]$pvcreate /dev/sdb3
  Physical volume "/dev/sdb3" successfully created.
#扩展VG
[root@centos82s ~]$vgextend myvg /dev/sdb3
  Volume group "myvg" successfully extended
#扩展LV
[root@centos82s ~]$lvextend -r -L +3G /dev/myvg/mylv 
  Size of logical volume myvg/mylv changed from 2.00 GiB (128 extents) to 5.00 GiB (320 extents).
  Logical volume myvg/mylv successfully resized.
resize2fs 1.45.4 (23-Sep-2019)
Filesystem at /dev/mapper/myvg-mylv is mounted on /mnt/mylvs; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/mapper/myvg-mylv is now 1310720 (4k) blocks long.
#若是没有-r参数,需执行
[root@centos82s ~]$resize2fs /dev/myvg/mylv
22.4.3 缩减逻辑卷
#卸载目录挂载点
[root@centos82s ~]$umount /mnt/mylvs/
#检测文件系统
[root@centos82s ~]$fsck -f /dev/myvg/mylv 
#把文件系统空间大小缩减到10G
[root@centos82s ~]$resize2fs /dev/myvg/mylv
#缩减LV
[root@centos82s ~]$lvreduce -L 10G /dev/myvg/mylv 
#查看
[root@centos82s ~]$lvs
  LV   VG   Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  mylv myvg -wi-a----- 10.00g
22.4.4 从LVM系统中移除硬盘
#建立PV
[root@centos82s ~]$pvcreate /dev/sdb1
  Physical volume "/dev/sdb1" successfully created.
#建立vg
[root@centos82s ~]$vgcreate myvg /dev/sdb1
  Volume group "myvg" successfully created
#把/dev/sdb硬盘上已分配的PE移动到其它LVM上
[root@centos82s ~]$pvmove /dev/sdb1
  /dev/sdb1: Moved: 4.30%
  /dev/sdb1: Moved: 100.00%
#把sdb1移动到其它lvm上
[root@centos82s ~]$pvmove /dev/sdb1
  /dev/sdb1: Moved: 11.72%
  /dev/sdb1: Moved: 100.00%
#把/dev/sdb1从VG移除
[root@centos82s ~]$vgreduce myvg /dev/sdb1
  Removed "/dev/sdb1" from volume group "myvg"
22.4.5 跨主机迁移逻辑卷

把centos6上的LVM迁移到centos7上,centos6LVM总容量20G,centos7LVM总容量40G

#查看centos6磁盘使用状况
[root@centos610 ~]#lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0     11:0    1  3.7G  0 rom  
sda      8:0    0  200G  0 disk 
├─sda1   8:1    0    1G  0 part /boot
├─sda2   8:2    0 97.7G  0 part /
├─sda3   8:3    0 48.8G  0 part /data
├─sda4   8:4    0    1K  0 part 
└─sda5   8:5    0    2G  0 part [SWAP]
sdb      8:16   0   20G  0 disk 
[root@centos610 ~]#pvs
#建立PV
[root@centos610 ~]#pvcreate /dev/sdb
  Physical volume "/dev/sdb" successfully created
[root@centos610 ~]#pvs
  PV         VG   Fmt  Attr PSize  PFree 
  /dev/sdb        lvm2 ---- 20.00g 20.00g
#建立VG
[root@centos610 ~]#vgcreate centos6myvg /dev/sdb
  Volume group "centos6myvg" successfully created
[root@centos610 ~]#vgs
  VG          #PV #LV #SN Attr   VSize  VFree 
  centos6myvg   1   0   0 wz--n- 20.00g 20.00g
#建立LV
[root@centos610 ~]#lvcreate -l 100%FREE  -n mylv centos6myvg
  Logical volume "mylv" created.
[root@centos610 ~]#lvs
  LV   VG          Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  mylv centos6myvg -wi-a----- 20.00g  
#修改LV名称
[root@centos610 ~]#lvrename /dev/centos6myvg/mylv /dev/centos6myvg/centos6mylv
  Renamed "mylv" to "centos6mylv" in volume group "centos6myvg"
[root@centos610 ~]#lvs
  LV          VG          Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  centos6mylv centos6myvg -wi-a----- 20.00g   
#卸载  
[root@centos610 ~]#umount /data/mylvm/
#禁用VG
[root@centos610 ~]#vgchange -an centos6myvg
  0 logical volume(s) in volume group "centos6myvg" now active
[root@centos610 ~]#lvscan
  inactive          '/dev/centos6myvg/centos6mylv' [20.00 GiB] inherit

#导出VG后硬盘拆下来安装在centos7主机上
[root@centos7s ~]#lsblk
#导入原VG
[root@centos7s ~]#vgimport centos6myvg
[root@centos7s ~]#vgdisplay
[root@centos7s ~]#lvdisplay
#激活原VG
[root@centos7s ~]#vgchange -ay centos6myvg
[root@centos7s ~]#lvdisplay
#建立挂载点
[root@centos7s ~]#mkdir /data/centos6lvm
#挂载
[root@centos7s ~]#mount /dev/centos6myvg/centos6mylv /data/centos6mylvm
22.5 逻辑卷快照

注意:因为快照区与本来的LV共用不少PE的区块,所以快照与被快照的LV必须在同一个VG中。系统恢复时候的文件数量不能高于快照区的实际容量。快照实际上也是一个逻辑卷,因此建立快照前,要保证现有LVM系统中VG有足够的剩余空间。

建议:如非须要,不要使用快照,快照越多,对原LV和快照LV的IO写性能损失巨大,急剧降低。

#建立快照
[root@centos610 ~]#lvcreate -n centos6mylv-snapshot -s -L 1G -p r /dev/centos6myvg/centos6mylv 
  Logical volume "centos6mylv-snapshot" created.
#查看,-p r表示快照卷是只读
[root@centos610 ~]#lvdisplay
  --- Logical volume ---
  LV Path                /dev/centos6myvg/centos6mylv-snapshot
  LV Name                centos6mylv-snapshot
  VG Name                centos6myvg
  LV UUID                mj0Hqr-d468-W24p-edVH-GBZH-PIpE-bYa1hp
  LV Write Access        read only
  LV Creation host, time centos610, 2020-08-18 01:58:35 +0800
  LV snapshot status     active destination for centos6mylv
#建立挂载点
[root@centos610 ~]#mkdir /data/centos6snapshot
#挂载快照卷
[root@centos610 ~]#mount /dev/centos6myvg/centos6mylv-snapshot /data/centos6snapshot/
mount: block device /dev/mapper/centos6myvg-centos6mylv--snapshot is write-protected, mounting read-only
#卸载原始卷和快照卷
[root@centos610 ~]#umount /data/mylvm/
[root@centos610 ~]#umount /data/centos6snapshot/
#恢复快照卷在挂载使用
[root@centos610 ~]#lvconvert --merge /dev/centos6myvg/centos6mylv-snapshot 
  Merging of volume centos6mylv-snapshot started.
  centos6mylv: Merged: 100.0%
  Merge of snapshot into logical volume centos6mylv has finished.
  Logical volume "centos6mylv-snapshot" successfully removed
[root@centos610 ~]#mount /dev/centos6myvg/centos6mylv /data/mylvm/
相关文章
相关标签/搜索