TL;dr

cat /etc/redhat-release
CentOS Linux release 7.7.1908 (Core)

exp

## 创建磁盘
qemu-img create -f qcow2 disk000.qcow2 200G

## 挂载磁盘
virsh attach-disk \
--domain demo-server \
--source /data/images/disk000.qcow2 \
--target vdb \
--targetbus virtio \
--driver qemu \
--subdriver qcow2 \
--cache none \
--persistent

## 反挂载磁盘
virsh detach-disk \
--domain demo-server /data/images/disk000.qcow2 \
--persistent

## 启动虚机
virsh start demo-server

yum install lvm2

ls /dev/vd*
/dev/vda  /dev/vda1  /dev/vda2  /dev/vdb

vgs
  VG     #PV #LV #SN Attr   VSize   VFree
  centos   1   2   0 wz--n- <49.00g 4.00m


fdisk /dev/vdb
# (echo n; echo p; echo 1; echo ; echo ; echo w) | fdisk /dev/vdb


fdisk -l /dev/vdb

Disk /dev/vdb: 214.7 GB, 214748364800 bytes, 419430400 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xa07d338c

   Device Boot      Start         End      Blocks   Id  System
/dev/vdb1            2048   419430399   209714176   83  Linux

fdisk /dev/vdb
t
8e
w
#  或者直接执行这个命令
(echo t; echo 8e; echo w) | fdisk /dev/vdb
pvcreate /dev/vdb1

# pvdisplay

vgcreate vg1 /dev/vdb1

# vgdisplay

lvcreate --size 60G --name lv1 vg1
lvcreate --size 60G --name lv2 vg1
lvcreate --size 70G --name lv3 vg1


# lvdisplay

ls -l /dev/vg1
total 0
lrwxrwxrwx. 1 root root 7 Jan 31 12:49 lv1 -> ../dm-2
lrwxrwxrwx. 1 root root 7 Jan 31 12:49 lv2 -> ../dm-3
lrwxrwxrwx. 1 root root 7 Jan 31 12:49 lv3 -> ../dm-4


lsblk -l /dev/vdb
NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
vdb     252:16   0  200G  0 disk
vdb1    252:17   0  200G  0 part
vg1-lv3 253:4    0   70G  0 lvm
vg1-lv1 253:2    0   60G  0 lvm
vg1-lv2 253:3    0   60G  0 lvm


mkfs.xfs /dev/vg1/lv1
mkfs.xfs /dev/vg1/lv2
mkfs.xfs /dev/vg1/lv3

echo "/dev/vg1/lv1 /var/lib/docker/                     xfs     defaults        0 0" >> /etc/fstab
echo "/dev/vg1/lv2 /var/lib/containerd/                     xfs     defaults        0 0" >> /etc/fstab
echo "/dev/vg1/lv3 /var/lib/kubelet                       xfs     defaults        0 0" >> /etc/fstab



[root@localhost lib]$ df
Filesystem              1K-blocks     Used Available Use% Mounted on
devtmpfs                  2004520        0   2004520   0% /dev
tmpfs                     2017796        0   2017796   0% /dev/shm
tmpfs                     2017796     8732   2009064   1% /run
tmpfs                     2017796        0   2017796   0% /sys/fs/cgroup
/dev/mapper/centos-root  49250820 17657692  31593128  36% /
/dev/vda1                 1038336   216460    821876  21% /boot
/dev/mapper/vg1-lv1      62883840    33220  62850620   1% /var/lib/docker
/dev/mapper/vg1-lv2      62883840    33112  62850728   1% /var/lib/containerd
/dev/mapper/vg1-lv3      73364480    32992  73331488   1% /var/lib/kubelet
tmpfs                      403560        0    403560   0% /run/user/1000


[root@localhost ~]$ lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
vdb             252:16   0  200G  0 disk
└─vdb1          252:17   0  200G  0 part
  ├─vg1-lv3     253:4    0   70G  0 lvm  /var/lib/kubelet
  ├─vg1-lv1     253:2    0   60G  0 lvm  /var/lib/docker
  └─vg1-lv2     253:3    0   60G  0 lvm  /var/lib/containerd
vda             252:0    0   50G  0 disk
├─vda2          252:2    0   49G  0 part
│ ├─centos-swap 253:1    0    2G  0 lvm  [SWAP]
│ └─centos-root 253:0    0   47G  0 lvm  /
└─vda1          252:1    0    1G  0 part /boot


pvscan
lvscan


lvchange -ay /dev/vg1/lv1
[root@localhost ~]# lvscan
  ACTIVE            '/dev/vg1/lv1' [60.00 GiB] inherit
  inactive          '/dev/vg1/lv2' [60.00 GiB] inherit
  inactive          '/dev/vg1/lv3' [70.00 GiB] inherit

# 卸下挂载中的Vol01逻辑卷
umount /dev/VolGroup0/Vol01
# 检查文件系统的完整性
e2fsck –f /dev/VolGroup0/Vol01
# 将文件系统减小1G
resize2fs /dev/VolGroup0/Vol01 1G
# 关闭逻辑卷
lvchange –an /dev/VolGroup0/Vol01
# 减小Vol01逻辑卷1G的空间
lvreduce –L -1G /dev/VolGroup0/Vol01
# 打开逻辑卷
lvchange –ay /dev/VolGroup0/Vol01
# 如果不做lvchange操作而直接做减小逻辑卷,可能会导致数据寸坏
# 查看Vol01的大小已减少1G为
lvs
# 缩小逻辑卷组
# 将hda5中的数据传到hda6中
pvmove /dev/hda5 /dev/hda6
# 若VG由hda5 和hda6组成,这里去掉hda5就缩小了VG
vgreduce VolGroup0 /dev/hda5
# 将hda5从物理卷中移除
pvremove /dev/hda5
# 删除逻辑卷:
# 卸下正在使用的逻辑卷
mount /dev/VolGroup0/Vol01
# 关闭逻辑卷
lvchange –an /dev/VolGroup0/Vol01
#  删除逻辑卷Vol01
lvremove /dev/VolGroup0/Vol01
lvs
# 删除卷组:
vgchange –an /dev/VolGroup0
vgremove VolGroup0




# PV:物理卷
# VG:卷组(物理层面上一个VG由一个或多个PV组成)
# LV:逻辑卷(逻辑层面上一个VG由一个或多个LV组成)
# 建立逻辑卷,选定hda5来做逻辑,首先要确认hda5处于umount状态
# 查看挂载状态 hda5在mount状态
df –h
# 卸下hda5
umount /dev/hda5
# 将hda5创建为物理卷
pvcreate /dev/hda5
# 查看当前所有的物理卷,确认有hda5
pvscan
# 创建卷组VolGroup0 ,将hda5添加到卷组中
vgcreate VolGroup0 /dev/hda5
# 查看当前所有的卷组,确认有VolGroup0
vgscan
# 创建一个5G的逻辑卷Vol01 ,指定卷组为VolGroup0
lvcreate –L 5G –n Vol01 VolGroup0
# 查看当前所有的逻辑卷,确认有Vol01
lvscan
# 格式化新建的逻辑卷Vol01
mkfs.ext3  /dev/VolGroup0/Vol01
# 创建一个目录
mkdir  /test
# 将逻辑卷Vol01挂载到test目录下
mount /dev/VolGroup0/Vol01 /test

 
########################################################
# 扩展逻辑卷:VG的空间足够大,只扩展LV
########################################################
# 给逻辑卷Vol01加2G的空间
lvextend –L +2G /dev/VolGroup0/Vol01
# 重置Vol01的大小
resize2fs /dev/VolGroup0/Vol01
lvscan
reboot
df –h
########################################################
# 扩展逻辑卷:VG的空间不足,扩展VG
########################################################

# 扩展VG的前提是你的硬盘还有剩余未分配空间
# 新建一个5G的扩展分区 分区号是6
fdisk /dev/hda n -> e -> 6 -> +5G -> w
# 格式化新建的hda6
mkfs.ext3 /dev/hda6
fdisk –l

# 将hda6创建为物理卷
pvcreate /dev/hda6
pvscan
# 将hda6加入到VolGroup0卷组中
vgextend VolGroup0 /dev/hda6
vgs

# 查看磁盘uuid
ls -l /dev/disk/by-uuid
blkid -s UUID /dev/sda1
tune2fs -l /dev/sda1 |grep 'UUID'
dumpe2fs /dev/sda1 |grep 'UUID'
命令 命令解释
lvchange 修改指定LV的一些属性,包括是否是激活状态、是否只读……
lvconvert 转换指定LV的属性,从线性转化为镜像或者快照
lvcreate 创建LV
lvs 简略地查看系统内的LV情况
lvdisplay 详细地查看系统内的LV情况
lvextend 扩展指定LV的容量大小
lvm 管理LVM的一个shell工具
lvmconf LVM配置修改器
lvmconfig 查看LVM配置的工具
lvmdiskscan 扫描所有LVM2可见的设备
lvmdump 创建LVM的dump文件,用于诊断
lvmetad 缓存LVM元数据的守护程序
lvmpolld LVM操作命令的轮询守护程序
lvreduce 缩容指定的LV
lvremove 删除指定的LV
lvrename 重命名指定的LV
lvresize 调整指定LV的大小,即可以扩容也可以缩容
lvscan 扫描系统的LV

ref