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文件然后重启虚拟机

方法二:利用分区的剩余空间
如案例的第一题就是采用此方法

案例

1. 添加一个 swap 分区

在您的系统中添加一个新的 swap 分区,并满足以下要求:
swap 分区容量为 512 MiB
当您的系统启动时,swap 分区应该可以开机自动挂载
不要移除或者修改其他已经存在于您的系统中的 swap 分区

新建文件

[root@redhat ~]# dd if=/dev/zero of=/swaptest bs=1M count=512
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
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
swapon: /swaptest: insecure permissions 0644, 0600 suggested.
[root@redhat ~]# swapon -s
Filename                Type        Size    Used    Priority
/dev/dm-1                               partition   2129916 262912  -2
/swaptest                               file        524284

写入fstab文件然后重启

2. 创建一个逻辑卷

请按下列要求创建一个新的逻辑卷:
查看是否有lvm

[root@redhat ~]# rpm -qa | grep lvm

将一块硬盘进行多分区,然后对分区进行集合
如果用parted进行分区时出现下面的错误

将磁盘标签类型dos更为为gpt,更改成功

[root@redhat ~]# parted /dev/sda  mklabel gpt
Information: You may need to update /etc/fstab.

添加四个大小为2G的分区

[root@redhat ~]# parted /dev/sda  mklabel gpt
Information: You may need to update /etc/fstab.[root@redhat ~]# parted /dev/sda  mkpart p1 xfs 0% 2G
Information: You may need to update /etc/fstab.[root@redhat ~]# parted /dev/sda  mkpart p2 xfs 2G 4G
Information: You may need to update /etc/fstab.[root@redhat ~]# parted /dev/sda  mkpart p3 xfs 4G 6G
Information: You may need to update /etc/fstab.[root@redhat ~]# parted /dev/sda  mkpart p4 xfs 6G 8G
Information: You may need to update /etc/fstab.

创建分区成功

[root@redhat ~]# lsblk
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 ~]# pvcreate /dev/sda{1,2,3,4}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 ~]# pvsPV             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 ~]# vgcreate  datastore  /dev/sda1 /dev/sda2 Volume group "datastore" successfully created

查看卷组

[root@redhat ~]# vgsVG        #PV #LV #SN Attr   VSize   VFree datastore   2   0   0 wz--n-  <3.72g <3.72g

逻辑卷的名字为 database ,所属卷组为 datastore,该逻辑卷大小为3G

[root@redhat ~]# lvcreate -n  database -L 3G datastore Logical volume "database" created.

查看

[root@redhat ~]# lvsLV       VG        Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convertdatabase datastore -wi-a-----  3.00g

将新建的逻辑卷格式化为 xfs 文件系统,要求系统启动时,该逻辑卷能被开机自动挂载到 /database
格式化

[root@redhat ~]# mkfs.xfs /dev/datastore/database
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 ~]# mkdir /database

进入fstab实现开机自动挂载

[root@redhat ~]# vim /etc/fstab
//添加如下信息
/dev/datastore/database          /database      xfs     defaults        0 0

3. 扩大卷组扩展上题database逻辑卷的大小为5G。

注意我之前得卷组一共只有4G所以,所以逻辑卷扩不了5G,出现下面情况

所以扩大卷组

[root@redhat ~]# vgextend datastore  /dev/sda3 /dev/sda4Volume group "datastore" successfully extended

然后再扩大逻辑卷

[root@redhat ~]# lvextend -L 5G  /dev/datastore/databaseSize 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 ~]# lvsLV       VG        Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convertdatabase datastore -wi-a-----  5.00g

对扩大的部分进行格式化

[root@redhat ~]# xfs_growfs /database
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

5. 删除所有逻辑卷恢复到系统最初状

取消挂载

[root@redhat ~]# umount /dev/datastore/database

删除逻辑卷

[root@redhat ~]# lvremove databaseVolume group "database" not foundCannot process volume group database
[root@redhat ~]# lvremove  /dev/datastore/database
Do you really want to remove active logical volume datastore/database? [y/n]: yLogical volume "database" successfully removed

删除卷组

[root@redhat ~]# vgremove datastoreVolume group "datastore" successfully removed

删除物理卷

[root@redhat ~]# pvremove /dev/sda{1,2,3,4}  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.

查看

6. 添加一块硬盘大小为6G,按3:1的方式创建vdo卷,测试是否对该卷删除重复数据

[root@redhat ~]# lsblk
sde                                                    8:64   0    6G  0 disk

安装

[root@redhat ~]# mount /dev/sr0 /mnt    //挂载
mount: /mnt: /dev/sr0 already mounted on /run/media/root/RHEL-8-3-0-BaseOS-x86_64.
[root@redhat ~]# yum install vdo kmod-kvdo -y

格式化

[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%

7. 通过分层存储创建文件系统,确保文件系统可以正常存放文件

挂载

[root@redhat ~]# mount /dev/sr0 /mnt
mount: /mnt: /dev/sr0 already mounted on /run/media/root/RHEL-8-3-0-BaseOS-x86_64.

安装Stratis守护进程和Stratis命令行工具

[root@redhat ~]#  yum install stratisd stratis-cli  -y
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 ~]# systemctl restart stratised

将两块设备添加入池

[root@redhat ~]# stratis pool create pool1 /dev/sdb /dev/sdc
[root@redhat ~]# stratis blockdev list    //查看池设备
Pool Name   Device Node   Physical Size   Tier
pool1       /dev/sdb             10 GiB   Data
pool1       /dev/sdc             10 GiB   Data

创建文件系统

[root@redhat ~]# stratis filesystem create pool1 fs1
[root@redhat ~]# stratis filesystem list   //查看池文件系统
Pool Name   Name   Used      Created             Device                   UUID
pool1       fs1    546 MiB   Aug 24 2021 22:57   /dev/stratis/pool1/fs1   2bb8a3ea84824d1da3f3dde95fe0918a

挂载

[root@redhat ~]# mkdir /fs1
[root@redhat ~]# mount /dev/stratis/pool1/fs1  /fs1

存储文件

[root@redhat images]# cp /mnt/images/install.img /fs1
[root@redhat images]# stratis filesystem list
Pool Name   Name   Used       Created             Device                   UUID
pool1       fs1    1.10 GiB   Aug 24 2021 22:57   /dev/stratis/pool1/fs1   2bb8a3ea84824d1da3f3dde95fe0918a

Linux之LVM(逻辑卷管理)、分层存储Stratis、VDO、SWAP分区及相应案例相关推荐

  1. Linux中LVM(逻辑卷管理)的使用

    Linux 中我们使用fdisk命令划分好的分区就不能随意的改变,如果不够用的话不可能说把硬盘上的所有数据拷贝后再重新分区,这样可能会导致数据损坏.而在linux中LVM(逻辑卷管理)就可以实现动态的 ...

  2. 每天一个新知识之Linux的LVM逻辑卷管理

    一.什么是LVM逻辑卷 1.什么是逻辑卷 许多Linux使用者安装操作系统时都会遇到这样的困境:如何精确评估和分配各个硬盘分区的容量,如果当初评估不准确,一旦系统分区不够用时可能不得不备份.删除相关数 ...

  3. linux之LVM逻辑卷管理-模拟环境的实战练习

    前言:学习之余,做点笔记,以便后期参阅. 环境介绍: 1.基于虚拟机搭建的centos7.9 2.新增两块磁盘, /dev/sdb 20GB /dev/sdc 10GB 3.新增两个目录 /data1 ...

  4. Linux常用命令(八)LVM逻辑卷管理

    Linux常用命令(八)LVM逻辑卷管理 一.LVM概述     LVM是Linux系统中对磁盘分区进行管理的一种逻辑机制,它是建立在硬盘和分区之上,文件系统之下的一个逻辑层,在建立文件系统时屏蔽了下 ...

  5. 文件系统,磁盘配额,数据存储,lvm 逻辑卷管理器

    文件系统 文件系统包括:ext2 ext3 (比ext2多一个日志)ext4                 iso9660(光盘文件系统)                 vfat  (相当于win ...

  6. linux系统中的分区与挂载,以及使用LVM逻辑卷管理器管理物理卷,卷组,逻辑卷知识点总结

    物理设备的命名规则 在Linux系统中一切都是文件,硬件设备也不例外.既然是文件,就必须有文件名称.系统内核中的udev设备管理器会自动把硬件名称规范起来,目的是让用户通过设备文件的名字可以猜出设备大 ...

  7. Android逻辑卷管理LVM,LINUX——LVM逻辑卷管理

    LVM: logical volumes manager LVM逻辑卷部署 物理卷->卷组->逻辑卷 第一步:关机添加磁盘:两个磁盘可以构成一个磁盘组. 第二步:查看磁盘 # ls /de ...

  8. linux设置逻辑卷进不了图形界面,LVM逻辑卷管理器图形界面操作

    LVM逻辑卷管理器图形界面操作 LVM有关概念 LVM(Logical Volume Manager)即逻辑卷管理器,它最先是在Linux 2.4内核中被集成到内核中去的,它的出现改变了传统的磁盘空间 ...

  9. Linux如何查看LV的容量情况,LVM 逻辑卷管理器-增大LV容量

    LVM 逻辑卷管理器-增大LV的容量 步骤: (1)新增一个8e systemID的分区: (2)用pvcreate命令构建PV: (3)用vgextend命令将PV加入vg_1: (4)用lvres ...

  10. Linux LVM逻辑卷管理及扩容(二)

    四.LVM扩展逻辑卷 我们当如何对lvm扩容呢,在vg组有空余的空间时,可以lvextend增加空间:在vg组无空间时,可以通过先增加pv,再lvextend实现扩容 点击(此处)折叠或打开 [roo ...

最新文章

  1. 50本精品前端开发书籍免费下载
  2. iOS如何随意的穿插跳跃,push来pop去
  3. 使用 Oracle Datapump API 实现数据导出
  4. 开通qq邮箱的smtp服务的流程详情
  5. NetScaler的Web 2.0 Push技术
  6. rocketmq长轮询
  7. C++单例模式--线程安全
  8. NAO机器人语音识别
  9. 学习A-level课程能申请哪些国家
  10. 如何在 Mac 上更改文件夹颜色,改变 mac 文件夹颜色教程
  11. 26 JS常用数组方法Array对象内置方法——检索方法
  12. 研究生期间各方面规划
  13. 创业和创业团队的感想感悟
  14. 电路定理——替代定理
  15. 抽象基类与接口,共性与个性的选择!
  16. 2022河南萌新联赛第(二)场:河南理工大学(赛后总结)
  17. 使用Apple设备的看过来,你的Apple账户为什么莫名其妙地被扣款!
  18. 怎么从安卓设备转移数据到苹果_换手机了数据怎么办?这样做安卓、苹果手机数据一键转移...
  19. Armbian 笔记五_如何在 Armbian 上安装 xfce4 桌面
  20. 关于百度和Google的中文搜索

热门文章

  1. python--split方法
  2. 吴恩达深度学习——深度学习的实用指南
  3. 读书节第四日丨技术书单随心Pick,学院好课0元学
  4. 从例图中学习思维导图的基本概念
  5. 疯狂连连看之开发游戏界面组件
  6. 三段话搞明白什么是Krylov子空间迭代法
  7. C语言:指向指针的指针
  8. python复杂网络库networkx:基础
  9. 海量数据挖掘MMDS week5: 聚类clustering
  10. 将byte数组转换成十进制字符串输出_outputStream与InputStream使用只能传输字节byte...