LVM
是Logical Volument Manager(逻辑卷管理)的简写,将若干个磁盘或者磁盘分区连接为一个整块的卷组,形成一个存储池。管理员可以在卷组上任意创建逻辑卷,并进一步在逻辑卷上创建文件系统。管理员通过LVM可以方便的调整存储卷组的大小,并且可以对磁盘存储按照组的方式进行命名、管理和分配。
功能: 将一个或多个硬盘的分区在逻辑上集合,相当于一个大硬盘来使用,当硬盘的空间不够使用时,可以继续将其他的硬盘的分区加入其中,这样可以实现磁盘的动态管理,相当于普通的磁盘分区有很大的灵活性
优点: 与传统的磁盘与分区相比,LVM为计算机提供了更高层次的磁盘存储。 使系统管理员可以更方便的为应用与用户分配存储空间。 在LVM管理下的存储卷可以按需要随时改变大小与移除 允许按用户组对存储卷进行管理 允许管理员用更直观的名称代替物理磁盘名来标识存储卷
lvm模型结构
由四个磁盘分区可以组冲一个很大的空间,然后在这些空间上划分一些逻辑区,当一个逻辑分区的空间不够用的时候,可以从剩余空间上划分一些空间给不够用的分区使用
LVM基本术语
物理存储介质(The physical media) 这里指系统的存储设备:硬盘,如:/dev/sda1、/dev/sda2等等,是存储系统最低层的存储单元
物理卷(physic volume) 就是指硬盘分区或从逻辑上与磁盘分区具有相同功能的设备,是LVM的基本存储逻辑块,但和基本的物理存储设备(如分区、磁盘等)比较,却包含有与LVM想关的管理参数
卷组(logical Group) 卷组类似于非LVM系统中的物理硬盘,其由物理卷组成。可以在卷组上创建一个或多个LVM分区(逻辑卷),卷组由多个物理卷组成
逻辑卷(logical volume) 类似于非LVM系统中的硬盘分区,在逻辑卷上可以建立文件系统
PE(physical extent) 每个物理卷被划分为成PE的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可以改变的,默认4M
LE(logical extend) 逻辑卷也被划分为被称为LE的可被寻址的基本单元。在同一个卷组中,LE的大小和PE相同,并且一一对应
常用命令
创建 pvcreate(创建物理卷)、vgcreate(创建卷组)、lvcreate(创建逻辑卷) 删除 pvremove、vgremove、lvremove 扫描列表 pvscan、lgscan、lvscan 显示属性 pvdisplay、vgdisplay、lvdisplay 显示相关属性 pvs、vgs、lvs 扩展 vgextend、lvextend 缩减 vgreduce、lvreduce
分层存储(stratis)
近年来出现了新-代的存储管理解决方案,称为卷管理文件系统,它可以在创建文件系统及调整其大小时以动态、透明的方式来管理卷层。不过,尽管这些文件系统的社区开发已经持续了很多年,但仍未达到成为红帽企业Linux主要本地存储所震的功能支持和稳定性水平。 在RHEL8中,红帽推出了Stratis存储管理解决方案。与其他存储项目的尝试-样,Stratis的开发并不是从零开始,而是使用现有的RHEL存储组件。Stratis 以管理物理存储设备池的服务形式运行,并透明地为所创建的文件系统创建和管理卷。由于Stratis 使用现有的存储驱动程序和工具,因此Stratis也支持当前在LVM、XFS和设备映射器中使用的所有高级存储功能。 在卷管理文件系统中,文件系统借助–个名为精简配置的概念内置于磁盘设备的共享池中。Stratis文件系统没有固定大小,也不再预分配未使用的块空间。尽管文件系统仍构建在隐藏的LVM卷上,但Stratis会为您管理基础卷,并可在需要时对其进行扩展。文件系统的“使用中”大小可视作所含文件占用的实际块数量。文件系统的可用空间就是它所驻留的池设备中仍未使用的空间量。多个文件系统可以驻留在同—磁盘设备池中,共享可用空间,但文件系统也可以保留池空间,以便在需要时保证可用性。 Stratis使用存储的元数据来识别所管理的池、卷和文件系统。因此,绝不应该对Stratis创建的文件系统进行手动重新格式化或重新配置;只应使用Stratis工具和命令对它们进行管理。手动配置Stratis文件系统可能会导致i该元数据丢失,并阻止Stratis识别它已创建的文件系统。 您可以使用不同组的块设备来创建多个池。在每个池中,您可以创建一个或多个文件系统。目前,每个池最多可以创建2^24个文件系统
stratis元素 是一个卷管理文件系统volume-managing filesystem(VMF) Stratis 是本地存储管理器
优点
- 管理快照和精简配置
- 根据需要自动增加文件系统的大小
- 维护文件系统
Stratis三个概念 blockdevs、池、文件系统
SWAP
swap称之为交换分区,相当于Windows下的虚拟内存。
作用
当我们系统中的内存不够用的时候,可以通过SWAP来增加内存。安装Linux系统的时候,必须的两个分区一个是根,一个是SWAP。
SWAP分区的创建
方法一、利用磁盘的剩余空间 前提就是磁盘还有剩余空间没有划分,或者是已经划分的分区没有使用。这个时候才能使用此方法。 实现步骤: 新建分区–修改id号为82–格式化–启用swap分区–写入fstab文件然后重启虚拟机
方法二:利用分区的剩余空间 如案例的第一题就是采用此方法
案例
- 添加一个 swap 分区
在您的系统中添加一个新的 swap 分区,并满足以下要求: swap 分区容量为 512 MiB 当您的系统启动时,swap 分区应该可以开机自动挂载 不要移除或者修改其他已经存在于您的系统中的 swap 分区
新建文件
[root@redhat ~]
512+0 records in
512+0 records out
536870912 bytes (537 MB, 512 MiB) copied, 21.9238 s, 24.5 MB/s
格式化文件
[root@redhat ~]
mkswap: /swaptest: insecure permissions 0644, 0600 suggested.
Setting up swapspace version 1, size = 512 MiB (536866816 bytes)
no label, UUID=e039779d-17a9-4509-8bfa-6b31565d87b5
激活swap
[root@redhat ~]
swapon: /swaptest: insecure permissions 0644, 0600 suggested.
[root@redhat ~]
Filename Type Size Used Priority
/dev/dm-1 partition 2129916 262912 -2
/swaptest file 524284
写入fstab文件然后重启
- 创建一个逻辑卷
请按下列要求创建一个新的逻辑卷: 查看是否有lvm
[root@redhat ~]
将一块硬盘进行多分区,然后对分区进行集合 如果用parted进行分区时出现下面的错误 将磁盘标签类型dos更为为gpt,更改成功
[root@redhat ~]
Information: You may need to update /etc/fstab.
添加四个大小为2G的分区
[root@redhat ~]
Information: You may need to update /etc/fstab.
[root@redhat ~]
Information: You may need to update /etc/fstab.
[root@redhat ~]
Information: You may need to update /etc/fstab.
[root@redhat ~]
Information: You may need to update /etc/fstab.
[root@redhat ~]
Information: You may need to update /etc/fstab.
创建分区成功
[root@redhat ~]
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 10G 0 disk
├─sda1 8:1 0 1.9G 0 part
├─sda2 8:2 0 1.9G 0 part
├─sda3 8:3 0 1.9G 0 part
└─sda4 8:4 0 1.9G 0 part
创建一个名为 datastore 的卷组,卷组的大小为4G
添加物理卷
[root@redhat ~]
Physical volume "/dev/sda1" successfully created.
Physical volume "/dev/sda2" successfully created.
Physical volume "/dev/sda3" successfully created.
Physical volume "/dev/sda4" successfully created.
[root@redhat ~]
PV VG Fmt Attr PSize PFree
/dev/nvme0n1p2 rhel lvm2 a-- <29.00g 0
/dev/sda1 lvm2 --- 1.86g 1.86g
/dev/sda2 lvm2 --- 1.86g 1.86g
/dev/sda3 lvm2 --- 1.86g 1.86g
/dev/sda4 lvm2 --- 1.86g 1.86g
创建卷组,因为每个大小为2G所以添加两个刚好
[root@redhat ~]
Volume group "datastore" successfully created
查看卷组
[root@redhat ~]
VG
datastore 2 0 0 wz--n- <3.72g <3.72g
逻辑卷的名字为 database ,所属卷组为 datastore,该逻辑卷大小为3G
[root@redhat ~]
Logical volume "database" created.
查看
[root@redhat ~]
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
database datastore -wi-a----- 3.00g
将新建的逻辑卷格式化为 xfs 文件系统,要求系统启动时,该逻辑卷能被开机自动挂载到 /database 格式化
[root@redhat ~]
meta-data=/dev/datastore/database isize=512 agcount=4, agsize=196608 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
data = bsize=4096 blocks=786432, 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@redhat ~]
进入fstab实现开机自动挂载
[root@redhat ~]
//添加如下信息
/dev/datastore/database /database xfs defaults 0 0
- 扩大卷组扩展上题database逻辑卷的大小为5G。
注意我之前得卷组一共只有4G所以,所以逻辑卷扩不了5G,出现下面情况 所以扩大卷组
[root@redhat ~]
Volume group "datastore" successfully extended
然后再扩大逻辑卷
[root@redhat ~]
Size of logical volume datastore/database changed from 3.00 GiB (768 extents) to 5.00 GiB (1280 extents).
Logical volume datastore/database successfully resized.
查看
[root@redhat ~]
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
database datastore -wi-a----- 5.00g
对扩大的部分进行格式化
[root@redhat ~]
meta-data=/dev/mapper/datastore-database isize=512 agcount=4, agsize=327680 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
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@redhat ~]
删除逻辑卷
[root@redhat ~]
Volume group "database" not found
Cannot process volume group database
[root@redhat ~]
Do you really want to remove active logical volume datastore/database? [y/n]: y
Logical volume "database" successfully removed
删除卷组
[root@redhat ~]
Volume group "datastore" successfully removed
删除物理卷
[root@redhat ~]
Labels on physical volume "/dev/sda1" successfully wiped.
Labels on physical volume "/dev/sda2" successfully wiped.
Labels on physical volume "/dev/sda3" successfully wiped.
Labels on physical volume "/dev/sda4" successfully wiped.
查看
- 添加一块硬盘大小为6G,按照快照方式创建vdo卷,测试是否对该卷删除重复数据
[root@redhat ~]
sde 8:64 0 6G 0 disk
安装
[root@redhat ~]
mount: /mnt: /dev/sr0 already mounted on /run/media/root/RHEL-8-3-0-BaseOS-x86_64.
[root@redhat ~]
格式化
[root@redhat ~]# mkfs.xfs /dev/mapper/vdo1
meta-data=/dev/mapper/vdo1 isize=512 agcount=4, agsize=1179648 blks
= sectsz=4096 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
data = bsize=4096 blocks=4718592, 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=4096 sunit=1 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
挂载
[root@redhat ~]# mkdir /vdo
[root@redhat ~]# mount /dev/mapper/vdo1 /vdo
查看
[root@redhat ~]# vdostats --human-readable
Device Size Used Available Use% Space saving%
/dev/mapper/vdo1 6.0G 4.0G 2.0G 66% 98%
写入重复数据来测试一下vdo1能不能起作用
[root@redhat ~]# ll -h /mnt/images/install.img
-r--r--r--. 1 root root 583M Oct 9 2020 /mnt/images/install.img
[root@redhat ~]# cp /mnt/images/install.img /vdo/
[root@redhat ~]# cp /mnt/images/install.img /vdo/im
[root@redhat ~]# cp /mnt/images/install.img /vdo/ima
[root@redhat ~]# vdostats --human-readable
Device Size Used Available Use% Space saving%
/dev/mapper/vdo1 6.0G 4.8G 1.2G 80% 52%
- 通过分层存储创建文件系统,确保文件系统可以正常存放文件
挂载
[root@redhat ~]
mount: /mnt: /dev/sr0 already mounted on /run/media/root/RHEL-8-3-0-BaseOS-x86_64.
安装Stratis守护进程和Stratis命令行工具
[root@redhat ~]
Installed products updated.
Upgraded:
clevis-15-1.el8.x86_64 clevis-luks-15-1.el8.x86_64
Installed:
python3-dbus-client-gen-0.4-1.el8.noarch
python3-dbus-python-client-gen-0.7-3.el8.noarch
python3-dbus-signature-pyparsing-0.03-2.el8.noarch
python3-into-dbus-python-0.06-2.el8.noarch
python3-justbases-0.14-4.el8.noarch
python3-justbytes-0.14-2.el8.noarch
python3-psutil-5.4.3-10.el8.x86_64
python3-pyparsing-2.1.10-7.el8.noarch
python3-semantic_version-2.6.0-5.el8.noarch
stratis-cli-2.3.0-3.el8.noarch
stratisd-2.3.0-2.el8.x86_64
Complete!
重启
[root@redhat ~]
将两块设备添加入池
[root@redhat ~]
[root@redhat ~]
Pool Name Device Node Physical Size Tier
pool1 /dev/sdb 10 GiB Data
pool1 /dev/sdc 10 GiB Data
创建文件系统
[root@redhat ~]
[root@redhat ~]
Pool Name Name Used Created Device UUID
pool1 fs1 546 MiB Aug 24 2021 22:57 /dev/stratis/pool1/fs1 2bb8a3ea84824d1da3f3dde95fe0918a
挂载
[root@redhat ~]
[root@redhat ~]
存储文件
[root@redhat images]
[root@redhat images]
Pool Name Name Used Created Device UUID
pool1 fs1 1.10 GiB Aug 24 2021 22:57 /dev/stratis/pool1/fs1 2bb8a3ea84824d1da3f3dde95fe0918a
|