复习之linux高级存储管理

一、lvm----逻辑卷管理

1.lvm定义

LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制。

逻辑卷管理器(LogicalVolumeManager)本质上是一个虚拟设备驱动,是在内核中块设备和物理设备之间添加的一个新的抽象层次,如图所示。它可以将几块磁盘(物理卷,PhysicalVolume)组合起来形成一个存储池或者卷组(VolumeGroup)。LVM可以每次从卷组中划分出不同大小的逻辑卷(LogicalVolume)创建新的逻辑设备。底层的原始的磁盘不再由内核直接控制,而由LVM层来控制。对于上层应用来说卷组替代了磁盘块成为数据存储的基本单元。LVM管理着所有物理卷的物理盘区,维持着逻辑盘区和物理盘区之间的映射。LVM逻辑设备向上层应用提供了和物理磁盘相同的功能,如文件系统的创建和数据的访问等。但LVM逻辑设备不受物理约束的限制,逻辑卷不必是连续的空间,它可以跨越许多物理卷,并且可以在任何时候任意的调整大小。相比物理磁盘来说,更易于磁盘空间的管理。

  • pv  :物理卷,被处理过的物理分区
  • pe:物理扩展,设定存储最小单元
  • vg:物理卷组,捆绑pv到一个组中
  • lv:逻辑卷 分配最终的使用设备

2.实验素材

  • 建立lvm分区
  • 新建目录
  • 建立监控

建立lvm分区:

首先建立分区,然后设置标签--8e 即lvm分区

建立成功后记得wq保存! 以及同步分区表!

实验建立监控查看:watch  -n   1 "pvs;echo ====;vgs;echo =====;lvs;echo =====;df -h /westosdir"

新建目录: /westosdir/

 3. lvm设备建立

(1)创建pv---物理卷

# pvcreate    /dev/vdb3

(2)创建vg---物理卷组

-s设定pe大小位2M

# vgcreate   -s   2M   westos_vg    /dev/vdb3

(3)创建lv---逻辑卷

-L指定大小   -n指定名称

# lvcreate   -L   100M   -n   westos_lv   westos_vg

(4)格式化--创建文件系统

# mkfs.xfs    /dev/westos_vg/westos_lv

(5)挂载设备至目录

# mount /dev/westos_vg/westos_lv     /westosdir/

 监控界面如下:

 4. lvm拉伸

(1)vg容量充足

vg容量为1G.容量充足直接拉伸!

# lvextend   -L   200M   /dev/westos_vg/westos_lv:拉伸到200M

# xfs_growfs   /dev/westos_vg/westos_lv:拉伸文件系统,否则无法使用

 (2)vg容量不足

  •  pvcreate   /dev/vdb5:创建新pv
  • vgextend   westos_vg   /dev/vdb5:扩展vg容量
  • lvextend   -L   1500M   /dev/westos_vg/westos_lv :拉伸lvm
  • xfs_growfs    /dev/westos_vg/westos_lv:格式化文件系统

想要拉伸lvm为1.5G,发现容量不够

 此时进入磁盘,寻找lvm分区来创建新pv

 扩展原来的vg容量,然后进行lvm拉伸,格式化文件系统

 最后查看监控,该设备容量拉伸成功!

 5.lvm缩减

  • 卸载设备:umount   /westosdir
  • 扫描文件大小,看看缩减大小是否合适:e2fsck -f /dev/westos_vg/westos_lv
  • 缩减文件系统: resize2fs /dev/westos_vg/westos_lv 500M
  • 缩减lvm:lvreduce   -L   500M    /dev/westos_vg/westos_lv
  • 重新挂载设备:mount     /dev/westos_vg/westos_lv /westosdir/

(1)前提

缩减lvm设备的前提是:文件系统是ext或者ext4,xfs文件系统不能缩减!

由于之前实验我们使用的是xfs文件系统,因此本节首先给lvm设备更换文件系统!

# mkfs.ext4     /dev/westos_vg/westos_lv:设定文件系统为ext4

 (2)卸载设备+扫描

扫描设备的文件大小,防止lvm缩减太小不可用!

 (3)缩减文件系统+lvm,重新挂载设备

 挂载成功后查看,lvm设备已经成功缩减到500M

 6. vg缩减

  • vgreduce   westos_vg   /dev/vdb3 :把分区3从该vg中缩减
  • pvmove  /dev/vdb3 :删除该pv

假如想缩减3,首先将3的东西转移到5

 pvmove   /dev/vdb3   /dev/vdb5

然后直接将pv3从vg中减去

最后彻底删除pv3

7.lvm快照

LVM 机制还提供了对 LV 做快照的功能,也就是说可以给⽂件系统做⼀个备份,这也是设计 LVM 快照的主要⽬的。快照可以用于记录系统当前状态,以便后续进行回滚操作回到此状态,或将这些状态用于系统备份。这⽐传统的备份技术的效率要⾼很多。创建快照时不⽤停⽌服务,就可以对数据进⾏备份。

  • 创建快照:快照名:westos_lvbackup  原始:/dev/westos_vg/westos_lv
  • 重新挂载即可生效
  • [root@westosa ~]# lvcreate -L 50M -n westos_lvbackup -s /dev/westos_vg/westos_lv 
      Logical volume "westos_lvbackup" created.
    [root@westosa ~]# mount /dev/westos_vg/westos_lvbackup /westosdir/
    

    =================================实验==================================

接上节,建立的lvm设备挂载在/westosdir目录上!

此时在目录中建立10个重要的文件!由于设备挂载在该目录上,因此该设备也有该数据!

 创建该设备的快照,可记录下此时的系统状态!便于备份!

将快照挂载在该目录。

[root@westosa ~]# umount /westosdir 
[root@westosa ~]# lvcreate -L 50M -n westos_lvbackup -s /dev/westos_vg/westos_lv 
  Logical volume "westos_lvbackup" created.
[root@westosa ~]# mount /dev/westos_vg/westos_lvbackup /westosdir/
[root@westosa ~]# df
Filesystem                            1K-blocks    Used Available Use% Mounted on
devtmpfs                                 391196       0    391196   0% /dev
tmpfs                                    419040       0    419040   0% /dev/shm
tmpfs                                    419040    6872    412168   2% /run
tmpfs                                    419040       0    419040   0% /sys/fs/cgroup
/dev/vda3                               9450496 4344352   5106144  46% /
/dev/vda1                                506528  218856    287672  44% /boot
tmpfs                                     83808    1180     82628   2% /run/user/42
tmpfs                                     83808      28     83780   1% /run/user/0
/dev/mapper/westos_vg-westos_lvbackup     96928    6068     90860   7% /westosdir
[root@westosa ~]# ls /westosdir/
westosfile1   westosfile2  westosfile4  westosfile6  westosfile8
westosfile10  westosfile3  westosfile5  westosfile7  westosfile9

如果不小心删除了10个重要的文件,怎么办?

因为有快照的存在,可以恢复!

首先卸载设备,删除快照,重新建立快照,再次挂载至该目录!

发现文件仍然存在!

[root@westosa ~]# umount /westosdir 
[root@westosa ~]# lvremove /dev/westos_vg/westos_lvbackup 
Do you really want to remove active logical volume westos_vg/westos_lvbackup? [y/n]: y
  Logical volume "westos_lvbackup" successfully removed
[root@westosa ~]# lvcreate -L 50M -n westos_lvbackup -s /dev/westos_vg/westos_lv
  Logical volume "westos_lvbackup" created.
[root@westosa ~]# mount /dev/westos_vg/westos_lvbackup /westosdir/
[root@westosa ~]# ls /westosdir/
westosfile1   westosfile2  westosfile4  westosfile6  westosfile8
westosfile10  westosfile3  westosfile5  westosfile7  westosfile9

8. lvm设备删除

  • 卸载设备
  • 删除快照
  • 删除lv设备
  • 删除vg
  • 删除pv
[root@westosa ~]# umount /westosdir 
[root@westosa ~]# lvremove /dev/westos_vg/westos_lvbackup 
Do you really want to remove active logical volume westos_vg/westos_lvbackup? [y/n]: y
  Logical volume "westos_lvbackup" successfully removed
[root@westosa ~]# lvremove /dev/westos_vg/westos_lv
Do you really want to remove active logical volume westos_vg/westos_lv? [y/n]: y
  Logical volume "westos_lv" successfully removed
[root@westosa ~]# vgremove westos_vg 
  Volume group "westos_vg" successfully removed
[root@westosa ~]# pvremove /dev/vdb3 
  Labels on physical volume "/dev/vdb3" successfully wiped.

删除成功!查看监控!

 二、vdo(Virtual Data Optimize)----虚拟数据优化器

VDO是一个内核模块,目的是通过压缩和优化重复数据来节省磁盘空间,从而降低数据中心的成本。原理主要是压缩和优化重复数据,优化重复数据就是硬盘里拷贝来相同的数据,以前要占多份空间,现在只需要1份空间就可以了。

1. vdo的创建及使用

  • 前提:vdo必须要用没使用过的硬盘

ps:在创建新硬盘时空间不足,在虚拟机管理界面把其他硬盘删除也不行!!

解决方法:进入主机的硬盘存放地址,删除不用的硬盘!!

983  cd /var/lib/libvirt/images/
  984  ls
  985  rm -fr aa.qcow2 qq.qcow2 westosa-2.qcow2 westosa-4.qcow2 bb.qcow2 westosa-1.qcow2 westosa-3.qcow2 westosa-5.qcow2 westos.qcow2

删除后添加新硬盘,发现空间足够了!

  • vdo的安装
  • vdo的创建: vdo create --name=westosvdo --device=/dev/vdb
[root@westosa ~]# dnf install vdo -y
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
AppStream                                       169 MB/s | 5.8 MB     00:00    
BaseOS                                          144 MB/s | 2.3 MB     00:00    
Package vdo-6.2.2.117-13.el8.x86_64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!
[root@westosa ~]# vdo create --name=westosvdo --device=/dev/vdb
Creating VDO westosvdo
vdo: ERROR - Not enough available memory in system for index requirement of 256M

vdo的创建出现问题,提示内存不足!!!

只需要增加虚拟机的物理内存即可!

 增加后再次创建vdo!成功!

[root@westosa ~]# dnf install vdo -y
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Last metadata expiration check: 0:05:08 ago on Sun 30 Jul 2023 02:56:24 PM CST.
Package vdo-6.2.2.117-13.el8.x86_64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!
[root@westosa ~]# vdo create --name=westosvdo --device=/dev/vdb
Creating VDO westosvdo
      Logical blocks defaulted to 1569686 blocks.
      The VDO volume can address 6 GB in 3 data slabs, each 2 GB.
      It can grow to address at most 16 TB of physical storage in 8192 slabs.
      If a larger maximum size might be needed, use bigger slabs.
Starting VDO westosvdo
Starting compression on VDO westosvdo
VDO instance 0 volume is ready at /dev/mapper/westosvdo
  • 查看vdo的功能

数据压缩和重复检测功能均开启!

[root@westosa ~]# vdo status --name=westosvdo 
VDO status:
  Date: '2023-07-30 15:06:08+08:00'
  Node: westosa.org
Kernel module:
  Loaded: true
  Name: kvdo
  Version information:
    kvdo version: 6.2.2.117
Configuration:
  File: /etc/vdoconf.yml
  Last modified: '2023-07-30 15:01:44'
VDOs:
  westosvdo:
    Acknowledgement threads: 1
    Activate: enabled
    Bio rotation interval: 64
    Bio submission threads: 4
    Block map cache size: 128M
    Block map period: 16380
    Block size: 4096
    CPU-work threads: 2
    Compression: enabled
    Configured write policy: auto
    Deduplication: enabled
    Device mapper status: 0 12557488 vdo /dev/vdb normal - online online 1049638 2621440
    Emulate 512 byte: disabled
    Hash zone threads: 1

  •  vdo格式化:文件系统的建立
  • 挂载vdo设备,可以使用拉!
[root@westosa ~]# mkfs.xfs /dev/mapper/westosvdo 
meta-data=/dev/mapper/westosvdo  isize=512    agcount=4, agsize=392422 blks
         =                       sectsz=4096  attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=1569686, 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@westosa ~]# mkdir /westosdir
[root@westosa ~]# mount /dev/mapper/westosvdo /westosdir/
[root@westosa ~]# df
Filesystem            1K-blocks    Used Available Use% Mounted on
devtmpfs                 906060       0    906060   0% /dev
tmpfs                    935132       0    935132   0% /dev/shm
tmpfs                    935132    9784    925348   2% /run
tmpfs                    935132       0    935132   0% /sys/fs/cgroup
/dev/mapper/rhel-root   8374272 4331900   4042372  52% /
/dev/vda1               1038336  234160    804176  23% /boot
tmpfs                    187024    1180    185844   1% /run/user/42
tmpfs                    187024      24    187000   1% /run/user/0
/dev/mapper/westosvdo   6268504   76808   6191696   2% /westosdir

2.vdo的优化重复数据功能测试

  • 建立监控:查看测试结果
[root@westosa ~]# vdostats --human-readable 
Device                    Size      Used Available Use% Space saving%
/dev/mapper/westosvdo     10.0G      4.0G      6.0G  40%           98%
[root@westosa ~]# watch -n 1 vdostats --human-readable 

监控界面如下:

  • 实验素材:将主机大小为797M的截图发给虚拟机的/iso目录

  •  重复数据检测:将/iso的数据复制2次到/westsodir目录,发现之占用了一份空间!

因为此时vdo设备挂载在该目录上!

[root@westosa westosdir]# df
Filesystem            1K-blocks    Used Available Use% Mounted on
devtmpfs                 906060       0    906060   0% /dev
tmpfs                    935132       0    935132   0% /dev/shm
tmpfs                    935132    9784    925348   2% /run
tmpfs                    935132       0    935132   0% /sys/fs/cgroup
/dev/mapper/rhel-root   8374272 5149108   3225164  62% /
/dev/vda1               1038336  234160    804176  23% /boot
tmpfs                    187024    1180    185844   1% /run/user/42
tmpfs                    187024      24    187000   1% /run/user/0
/dev/mapper/westosvdo   6268504   76808   6191696   2% /westosdir
[root@westosa westosdir]# cp -r /iso/ /westosdir/
[root@westosa westosdir]# ls
iso
[root@westosa westosdir]# cp -r /iso/ /westosdir/iso-1
[root@westosa westosdir]# ls
iso  iso-1
[root@westosa westosdir]# du -h *
797M	iso
797M	iso-1

查看监控,两份内容一样的数据只占用了一份空间!!这就是vdo的重复数据优化功能!!

 3. vdo设备开机自动挂载

  • 编辑/etc/fstab文件,注意,需要添加x-systemd.requires=vdo.service

 利用man  vdo命令查看模板

 重启虚拟机后,该设备自动挂载!!

 5. 删除vdo设备

  • 卸载设备
  • 停止设备,ps:停止后还可以打开
  • 删除设备
[root@westosa ~]# umount /westosdir 
[root@westosa ~]# df
Filesystem            1K-blocks    Used Available Use% Mounted on
devtmpfs                 906232       0    906232   0% /dev
tmpfs                    935300       0    935300   0% /dev/shm
tmpfs                    935300    9428    925872   2% /run
tmpfs                    935300       0    935300   0% /sys/fs/cgroup
/dev/mapper/rhel-root   8374272 5149588   3224684  62% /
/dev/vda1               1038336  234460    803876  23% /boot
tmpfs                    187060    1180    185880   1% /run/user/42
tmpfs                    187060       4    187056   1% /run/user/0
[root@westosa ~]# vdo stop --name westosvdo 
Stopping VDO westosvdo
[root@westosa ~]# vdo remove --name westosvdo 
Removing VDO westosvdo
Stopping VDO westosvdo

删除设备后,该vdo设备删除成功!

  • 打开设备
[root@westosa ~]# vdo stop --name westosvdo 
Stopping VDO westosvdo
[root@westosa ~]# vdo start --name westosvdo 
Starting VDO westosvdo
Starting compression on VDO westosvdo
VDO instance 1 volume is ready at /dev/mapper/westosvdo
[root@westosa ~]# df
Filesystem            1K-blocks    Used Available Use% Mounted on
devtmpfs                 906232       0    906232   0% /dev
tmpfs                    935300       0    935300   0% /dev/shm
tmpfs                    935300    9432    925868   2% /run
tmpfs                    935300       0    935300   0% /sys/fs/cgroup
/dev/mapper/rhel-root   8374272 5149608   3224664  62% /
/dev/vda1               1038336  234460    803876  23% /boot
tmpfs                    187060    1180    185880   1% /run/user/42
tmpfs                    187060       4    187056   1% /run/user/0
/dev/mapper/westosvdo   6268504 1711180   4557324  28% /westosdir

注意:打开设备后,该设备自动挂载!记得删除/etc/fstab里的自动挂载语句!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值