目录
一、认识
1、概念
2、术语:
1)物理存储设备
2)物理卷
3)卷组
4)PE物理区域
5)逻辑卷
6)LE逻辑区域
7)VGDA卷组描述符区域
二、部署逻辑卷
1、物理卷管理
2、卷组管理
3、逻辑卷管理
三、管理交换分区
1、命令
2、方式:
方式一
方式二
一、认识
LVM是 Logical Volume Manager(逻辑卷管理)的简写,LVM将若干个磁盘或者磁盘分区连接为一个整块的卷组,形成一个存储池。管理员可以在卷组上任意创建逻辑卷,并进一步在逻辑卷上创建文件系统。 管理员通过LVM可以方便的调整存储卷组的大小,并且可以对磁盘存储按照组的方式进行命名、管理和分配。
1、概念
通过LVM技术,屏蔽了磁盘分区的底层差异,在逻辑上给文件系统提供了一个卷的概念,然后在这些卷 上建立相应的文件系统
2、术语:
1)物理存储设备
——系统的存储设备文件,如:/dev/hda1、/dev/sda
2)物理卷
——简称PV(physical volume),物理卷可以是整个硬盘、硬盘分区或从逻辑上与磁盘分区 具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘 等)比较,却包含有与LVM相关的管理参数。
3)卷组
——简称VG(Volume Group),可以看成单独的逻辑磁盘,建立在PV之上,一个卷组中至少 要包括一个PV,在卷组建立之后可以动态的添加PV到卷组中。卷组的名称可以自定义。
4)PE物理区域
——物理区域(physical extent)是物理卷中可用于分配的最小存储单元,物理区域的 大小默认为4MB。物理区域大小一旦确定将不能更改,同一卷组中的所有物理卷的物理区域大小需要一 致。
5)逻辑卷
——简称LV(logical volume),相当于物理分区。逻辑卷建立在卷组之上,卷组中的未分配 空间可以用于建立新的逻辑卷,逻辑卷建立后可以动态的扩展或缩小空间。系统中的多个逻辑卷,可以 属于同一个卷组,也可以属于不同的多个卷组。
6)LE逻辑区域
——逻辑区域(logical extent)是逻辑卷中可用于分配的最小存储单元,逻辑区域的大 小取决于逻辑卷所在卷组中的物理区域大小。LE的大小和PE的大小一样。
7)VGDA卷组描述符区域
——和非LVM系统将包含分区信息的 元数据保存在位于分区的起始位置的分区表中一样,逻辑卷以及卷组相关的元数据也是保存在位于物理 卷起始处的卷组描述符区域中。VGDA包括以下内容:PV描述符、VG描述符、LV描述符和一些PE描述符。
二、部署逻辑卷
常见的LVM部署命令如图:
扩容思路:
-
给vg进行扩容/缩减(vgextend/vgreduce)
-
给lv进行扩容/缩减(lvextend/lvreduce)
-
lv虽然扩展了,但是建立在其上的文件系统需要再单独扩展,xfs需要使用xfs_growfs命令扩展(xfs不支持缩减),ext4支持扩容及缩减使用的命令时resize2fs。
lv扩容的前提是 vg有足够的空间可以挪给lv。
vg缩减,前提有未分配的空间可以用于缩减。
1、物理卷管理
[root@localhost ~]# pvcreate /dev/nvme0n2p1 # 创建物理卷pv
[root@localhost ~]# pvs # 查看pv,详细查看使用pvdisplay
2、卷组管理
[root@localhost ~]# vgcreate RedHat /dev/nvme0n2p{1,2} # 创建vg
[root@localhost ~]# vgcreate -s 1G RedHat /dev/nvme0n2p{1,2} # -s 指定PE大小
[root@localhost ~]# vgs # 查看vg
# 扩展卷组,创建后,需重启虚拟机才能看到新建的分区
[root@localhost dev]# gdisk /dev/nvme0n2 # 创建一个新的分区
# 将新创建的nvme0n2p3扩到RedHat中
[root@localhost ~]# vgextend RedHat /dev/nvme0n2p3
Physical volume "/dev/nvme0n2p3" successfully created.
Volume group "RedHat" successfully extended
3、逻辑卷管理
[root@localhost ~]# lvcreate -n RedHat_1v1 -L +1.5G RedHat
# -L 指定LV 的大小
# -n: LV 的名字
# RedHat: 你从哪个VG中创建的LV
[root@localhost ~]# lvs # 查看lv
# 扩容(注意:使用 -L +1.5G增加1.5G,如果增加到3G,使用-L 3G)
[root@localhost ~]# lvextend -L +1.5G /dev/RedHat/RedHat_1v1
Size of logical volume RedHat/RedHat_1v1 changed from 1.50 GiB (384 extents) to 3.00 GiB (768 extents).
Logical volume RedHat/RedHat_1v1 successfully resized.
[root@localhost ~]# lvs /dev/RedHat/RedHat_1v1
# 但此时文件系统并没有扩容,原因是创建卷组时只格式化了1.5G的容量,还需再格式化剩余的容量
# 如果df . -h 没有内容显示,可能是因为之前分区重启后没有进行挂载操作
[root@localhost Redhat_1v_one]# df . -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/RedHat-RedHat_1v1 1.5G 43M 1.5G 3% /Redhat_1v_one
# 使用xfs_growfs文件系统扩容(自动把所有未格式化的容量扩容,只能增不能减)
[root@localhost ~]# xfs_growfs /dev/RedHat/RedHat_1v1
[root@localhost ~]# df . -h # 扩容后再次查看
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/rhel-root 17G 5.5G 12G 32% /
# 使用ext文件系统扩容
[root@localhost ~]# umount /Redhat_1v_one # 先取消挂载
#检测文件系统,resize2fs之前会提示先要检测文件系统
[root@localhost ~]# e2fsck -f /dev/RedHat/RedHat_1v1
[root@localhost ~]# resize /dev/RedHat/RedHat_1v1 3G #重置文件系统大小
[root@localhost ~]# lvreduce -L 3G /dev/RedHat/RedHat_1v1
[root@localhost ~]# lvresize -L 3G /dev/RedHat/RedHat_1v1
[root@localhost ~]# mount /dev/RedHat/RedHat_1v1 /Redhat_1v_one/ # 重新挂载
[root@localhost ~]# df -h
xfs文件系统,只能扩容,不能缩减,用多少扩多少
ext文件系统,既支持扩容(使用resize2fs文件系统扩容),也支持缩减
无论是xfs还是ext4的逻辑卷调整大小都可以用该命令 lvresize -r -L 大小 -n lv设 备名
三、管理交换分区
在Linux系统中,swap交换分区的作用类似于Windows系统中“虚拟内存”。当有程序被调入内存后,但是该程序又不是常被CPU所取用时,那么这些不常被使用的程序将会被放到硬盘的swap交换分区当中, 而将速度较快的内存空间释放给真正需要的程序使用,以避免由于物理内存不足而造成的系统效能低的问题。如果系统没有swap交换分区,或者现有交换分区的容量不够用时,可扩展swap交换分区。
1、命令
mkswap 分区设备名 将指定的分区格式化为swap交换文件系统
swapon 交换分区设备名 | -a 启用(或激活)指定的交换分区或所有交换分区
swapoff 交换分区设备名 | -a 禁用指定的交换分区或所有交换分区
swapoff -s 查看交换分区的使用情况
free -m 以兆字节为单位显示物理内存、交换分区的使用情况
2、方式:
扩展swap交换分区的方式有两种:
- 以磁盘分区的方式扩展swap交换分区
- 以镜像文件的方式扩展swap交换分区
方式一
# 新建分区扩展交换空间
# 创建一个新的分区nvme0n2p4
[root@localhost ~]# fdisk /dev/nvme0n2
# 将nvme0n2p4格式化为swap交换文件系统
[root@localhost ~]# mkswap /dev/nvme0n2p4
Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes)
no label, UUID=1b83b30a-bd1b-4ea1-bf54-ff16115646dd
# 启用nvme0n2p4交换分区
[root@localhost ~]# swapon /dev/nvme0n2p4
# 查看nvme0n2p4的使用情况 或者使用cat /proc/swaps命令
[root@localhost ~]# swapon -s
Filename Type Size Used Priority
/dev/dm-1 partition 2097148 0 -2 #系统
/dev/nvme0n2p4 partition 1048572 0 -3 #新建交换分区
# 关闭交换分区
[root@localhost ~]# swapoff /dev/nvme0n2p4
# 写入/etc/fstab/,实现开机挂载
[root@localhost ~]# vim /etc/fstab
/dev/nvme0n2p4 swap swap defaults 0 0
方式二
# 使用一个文件来扩展交换空间
# if=input file of=output file /dev/zero生成一个无限长度的零字节数据
# 创建一个文件/swap,从无限零资源去读,每一块大小为1M,一共有1024块
[root@localhost ~]# dd if=/dev/zero of=/swap bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 8.06877 s, 133 MB/s
[root@localhost /]# ll -h #此时已生成swap的交换空间
...
-rw-r--r--. 1 root root 1.0G Oct 7 13:42 swap
...
# 格式化交换空间
[root@localhost /]# mkswap swap
# 激活当前的交换空间
[root@localhost /]# swapon swap
# 查看当前的虚拟内存
[root@localhost /]# swapon -s
Filename Type Size Used Priority
/dev/dm-1 partition 2097148 0 -2
/swap file 1048572 0 -3