IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Linux之LVM(逻辑卷管理)、分层存储Stratis、VDO、SWAP分区及相应案例 -> 正文阅读

[系统运维]Linux之LVM(逻辑卷管理)、分层存储Stratis、VDO、SWAP分区及相应案例

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

  1. 创建一个逻辑卷

请按下列要求创建一个新的逻辑卷:
查看是否有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 ~]# pvs
  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 ~]# vgcreate  datastore  /dev/sda1 /dev/sda2 
  Volume group "datastore" successfully created

查看卷组

[root@redhat ~]# vgs
  VG        #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 ~]# lvs
  LV       VG        Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  database 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 
  1. 扩大卷组扩展上题database逻辑卷的大小为5G。
    注意我之前得卷组一共只有4G所以,所以逻辑卷扩不了5G,出现下面情况
    在这里插入图片描述
    所以扩大卷组
[root@redhat ~]# vgextend datastore  /dev/sda3 /dev/sda4
  Volume group "datastore" successfully extended

然后再扩大逻辑卷

[root@redhat ~]# lvextend -L 5G  /dev/datastore/database
  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 ~]# lvs
  LV       VG        Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  database 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
  1. 删除所有逻辑卷恢复到系统最初状
    取消挂载
[root@redhat ~]# umount /dev/datastore/database

删除逻辑卷

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

删除卷组

[root@redhat ~]# vgremove datastore
  Volume 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.

查看
在这里插入图片描述

  1. 添加一块硬盘大小为6G,按照快照方式创建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%
  1. 通过分层存储创建文件系统,确保文件系统可以正常存放文件

挂载

[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
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-08-25 12:36:42  更:2021-08-25 12:36:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/29 9:08:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计