• 物理卷 LVM > 卷组 VG > 逻辑卷 LV
物理卷: PV --> 最小单元: PE   (可以指定大小,默认4MB)
   |
    ——>	卷组: VG 
         |
          ——>	逻辑卷: LV --> 最小单元:LE    (LE = PE)

lvm 常用命令

image.png image.png

image.png

image.png

image.png

创建PV(物理卷)

image.png

查看物理卷信息

image.png

创建 vg (卷组)

==语法:vgcreate vg名字 pv名字== image.png

查看卷组信息

image.png

创建 LV(逻辑卷)

==lvcreate -n "指定新逻辑卷的名称" -L "指定lv大小的 SIZE(M,G) (-l:小l指定 LE 的数量)" vgname 卷组名==

大写 L 指定逻辑卷大小 (常用)

image.png

小写 L 指定 LE 的数量 (了解)

image.png

image.png

查看逻辑卷

image.png

其实 lv01 是 dm-0 的软链接

image.png

格式化

image.png

查看

image.png

开机自启动

echo "/dev/vg01/lv01 /lv01 ext4 defaults 0 0" >> /etc/fstab image.png image.png

指定PE大小

  • 指定 PE 大小用的选项 -s ,如果存储的数据都是大文件,那么 PE 尽量调大,读取速度快
vgcreate -s 16M vg02 /dev/sdb2
vgdisplay vg02

LV 扩容

  • 首先,确定一下是否有可用的扩容空间,因为空间是从 VG 里面创建的,并且 LV 不能跨 VG 扩容
vgs
  • 用的命令如下:extend 扩展 vgextend lvextend
# 扩容逻辑卷
lvextend -L +30m /dev/vg01/lv01
  • 说明:在指定大小的时候,扩容 30m 和扩容到 30m 是不一样的写法
  • 扩容 30m ====> -L +30M
  • 扩容到 30m =====> -L 30M 使用扩容到,那么新大小不能低于现有大小
lvs
 df -Th /lv01
resize2fs /dev/vg01/lv01
 df -Th /lv01
lvextend -L 80m -r /dev/vg01/lv01
 df -Th /lv01

VG 扩容

vgs
pvcreate /dev/sdb3
vgextend vg01 /dev/sdb3
vgs

LVM 缩小

lvreduce -L -20m -r /dev/vg01/lv01
 lvs
lvreduce -L -10m -r /dev/vg01/lv01
 df -Th | grep lv

扩容的时候 -r 参数
resize2fs /dev/vg01/lv01

VG 的缩减(没有被使用)

vgreduce vg01 /dev/sdb1
# 必须保证 sdb3 物理卷和 sdb1 物理卷属于一个卷组
 pvs
# 将物理卷 sdb1 上的数据移到新增加物理卷 sdb3 上
pvmove /dev/sdb1 /dev/sdb3
# 移完数据再把 sdb1 物理卷从 vg01 卷组中移除
 vgreduce vg01 /dev/sdb1
pvs

LVM 删除

创建 LVM 流程:
pvcreate 创建 pv -> vgcreate 创建卷组 -> lvcreate 创建逻辑卷 -> mkfs.xfs lv 格式化-> mount 挂载

删除 LVM 流程:
umount 卸载 -> lvremove lv 移出卷组中所有逻辑卷-> vgremove vg 移出卷组-> pvremove 移出 pv

 umount /lv01
lvremove /dev/vg01/lv01
lvs
vgremove vg01
vgs
pvs
pvremove /dev/sdb1

swap分区管理

mkswap:创建swap分区文件系统 swapon:启用swap分区

常用参数:
# swapon -a 启用配置文件中使用swap分区
# swapon -p 指定优先级,也可在/etc/fstab 在第4列指定:pri=value
# swapon -s 查看启用swap分区情况

swapoff 命令:禁用swap分区

# swapoff /dev/sda5 禁用单个swap分区
# swapoff -a 禁用所有swap分区,禁用前会把swap分区数据及时刷写到磁盘上
添加2G的整个磁盘作为swap分区
# 创建swap分区文件系统
[root@centos7 ~]# mkswap /dev/sdd
[root@centos7 ~]# lsblk -f /dev/sdd
# 编写/etc/fstab配置文件
[root@centos7 ~]# cat /etc/fstab
UUID=c96b1d66-9ee0-4adc-a77c-51cdf8e1c499 swap swap defaults 0 0
# 启用swap分区
[root@centos7 ~]# swapon -a
[root@centos7 ~]# swapon -s | column -t
Filename Type Size Used Priority
/dev/sda5 partition 2097148 0 -1
/dev/sdd partition 2097148 0 -2

free :查看系统内存使用情况和整个swap使用情况
free -h

# 命令设置swap分区优先级
[root@centos7 ~]# swapoff /dev/sdd
[root@centos7 ~]# swapon /dev/sdd -p 5
# 查看硬盘分区UUID
[root@centos7 ~]# blkid
[root@centos7 ~]# ls -l /dev/disk/by-uuid
[root@centos7 ~]# udevadm info -q all -n /dev/sdb1
[root@centos7 ~]# lsblk -o name,mountpoint,size,uuid

# 配置文件设置swap分区优先级
[root@centos7 ~]# cat /etc/fstab

[root@centos7 ~]# swapoff /dev/sdd
[root@centos7 ~]# swapon -a

文件swap( dd )

第一步:创建大文件
[root@centos7 ~]# mkdir /data
[root@centos7 ~]# dd if=/dev/zero of=/data/swap.img bs=1024M count=2
[root@centos7 ~]# ll -h /data/swap.img
-rw-r--r-- 1 root root 2.0G May 10 14:43 /data/swap.img

第二步:启用swap文件时,会有提示swapon建议文件权限为600
[root@centos7 ~]# chmod 600 /data/swap.img
[root@centos7 ~]# swapoff /data/swap.img
[root@centos7 ~]# swapon /data/swap.img

swap的使用策略

/proc/sys/vm/swappiness 的值决定了当内存占用达到一定的百分比时,会启用swap分区的空间

[root@centos7 ~]# cat /proc/sys/vm/swappiness

范例:腾讯云服务器创建swap空间 https://cloud.tencent.com/developer/article/1921236?from=15425

在/dev/sdb上新建3个主分区,第一个主分区文件系统为xfs,大小为500M,挂载到/mnt/p1上;第二个主分区为交换分区,大小为1G;第三个主分区做成物理卷,在其上创建卷组myvg和逻辑卷mylv,逻辑卷大小为800M,文件系统为xfs,挂载到/mnt/mylv上;这三个主分区全部设置为开机自动挂载
    1) 添加一块磁盘  /dev/sdb
    2) parted /dev/sdb mklabel gpt
    3) parted /dev/sdb mkpart part1 0 500M
    4) parted /dev/sdb mkpart part1 500M 1524M
    5) parted /dev/sdb mkpart part1 1524M 2548M
    6) mkfs.xfs /dev/sdb1
    7) mkswap /dev/sdb2 ; swapon -a ; free -h
    8) pvcreate /dev/sdb3
    9) mkdir /mnt/p1 ; mount /dev/sdb1 /mnt/p1 ; echo "/dev/sdb1 /mnt/p1 xfs defaults 0 0" >> /etc/fstab ; mount -a
    10) vgcreate myvg /dev/sdb2 ; vgs ; lvcreate -n mylv -l 200 myvg ; mkfs.xfs /dev/myvg/mylv ; mkdir /mnt/mylv ; mount /dev/myvg/mylv /mnt/mylv ; echo "/dev/myvg/mylv /mnt/mylv xfs defaults 0 0" >> /etc/fstab ; mount -a