返回归档
🚤技术分享

LVM

文章目录

📎 入门LVM,简单说说LVM中的LV、VG和PV,以及如何创建它们

存储的分类

按照物理介质分类

  • 机械硬盘 HDD
    • 特点:磁盘旋转存储,成本低,容量大,速度较慢(寻道时间影响数据的访问速度
    • 优点:适合海量数据的存储)(冷数据、归档
    • 缺点:随机读写性能差
  • 固态硬盘SSD
    • 特点:基于闪存芯片,随机读写性能强
    • 优点:低延迟、高性能
    • 缺点:成本高,写入寿命有限(芯片写入次数寿命有限

按照存储结构分类

  • block storage
    • 数据已固定的块设备存储和访问
    • 适合场景:数据库、虚拟机磁盘
    • 实例:传统SAN存储、iSCSI卷
  • file storage
    • 基于块设备,构建文件系统(ext4、xfs)
    • 数据通过文件路径访问,支持文件系统层级结构
    • 适合场景:共享路径、文档存储
    • 实例:NFS
  • object storage
    • 非结构化数据
    • 数据通过唯一的对象id访问,元数据可以扩展
    • 适合场景:海量非结构化数据,比图片、视频
    • 实例:AWS的s3(simple storage service, ceph object
  • network storage device
    • 通过网络协议(NFS、iSCSI、CephFS)访问远程存储资源
    • 存储的底层可以块设备或文件设备,支持集中化管理

文件系统类型

  • ext4(fourth extended file system
    • 提供日志功能(journaling):减少意外关机导致的数据损坏
    • 支持大文件和大分区
    • 广泛应用于linux的服务器和桌面系统
    • 是linux的默认文件系统之一
  • xfs
    • 高性能日志文件系统,支持超大文件和分区
    • 支持并发I/O操作,适合多线程读写
    • 设计注重高吞吐和低延迟
    • 支持实时子卷(real-time-subvolume),提供了更加细粒度的大磁盘I/O控制

LVM是什么

LVM(Logical Volume Manager)是 Linux 中的一种逻辑卷管理工具,它通过将物理磁盘分割成更灵活的逻辑卷,提供了更高效的磁盘空间管理方式。LVM的优势在于支持在线扩展和调整存储,不需要重启或大规模停机,非常适合动态变化的存储需求。

PV、VG、LV是什么

lv:logical volume LVM的底层单位,实际的物理存储设备或分区

vg:volume group将多个pv聚合在一起,形成一个存储池

pv:physical volume 从vg中分配可用存储空间,格式化后可以使用

image

#用于列出块设备(如硬盘、U 盘、光驱等)信息的命令。
#它能展示系统中所有的块设备及其分区情况,以及每个分区的挂载点,通常用于查看磁盘的分区和挂载状态
#list block devices
lsblk
  • physical volume
#list all physical volumes 
sudo pvscan

#create physical volumes 
sudo pvcreate /dev/sdb1 /dev/sdb2 /dev/sdc

#view physical volume disktype
sudo disktype /dev/sdc
  • volume group
#search for all volume groups
sudo vgscan 

#create volume groups
sudo vgcreate GUEST_VG /dev/sdb1
sudo vgcreate SERVER_VG /dev/sdb2 /dev/sdc
  • logical volume
#list all logical volumes
lvscan 

#create logical volume 
sudo lvcreate --name $name --size xxG VG
  • mount
#init 
mkdfs.*

#mount 
sudo mkdir /mnt/guest
sudo mount /dev/GUEST_VG/disk1 /mnt/guest

总结

  1. create PV — pvcreate
  2. create VG — vgcreate
  3. create LV — lvcreate
  4. create a filesystem — mkdf.*
  5. mkdir, mount volume and use

understanding snapshot

理解snapshot之前,得先了解logical volume 是如何存储数据的

logical volume由两个基本部分组成

  • metadata pointers
  • data block

创建snapshot时,lvm只需要创建lv的metadata poniter 的副本

lvm snapshot example

流程:

  1. 创建一个physical volume pv1
  2. 创建一个volume group vp1
  3. 创建一个logical volume lv1
  4. 初始化lv1文件系统
  5. mount 某个路径到lv1
  6. 向lv1文件系统写入一些数据
  7. 给lv1创建 snapshot
  8. 删除lv1文件系统中的数据
  9. 利用snapshot 恢复数据
    1. 将snapshot的lv_snap 合并到lv1中
    2. unmount 之前的路径
    3. 重新激活lv1
    4. 再次mount,可以发现之前已删除数据已经恢复
#create one lv
lvcreate -L 100 -n vol01 openebs_vg_1

#mkdir 
sudo mkdir /mnt/volum1

#init 文件系统
mkfs.ext4 -m 0 /dev/openebs_vg_1/vol01

#mount
sudo mount /dev/openebs_vg_1/vol01 /mnt/volum1

#往/mnt/volu1 写入一些数据
cp /home/wtadmin/* ./
#看看文件有多大,后续从快照中恢复数据时,可以做一个对比
du -s

#创建快照
lvcreate -s -n lv1_sanpshot -L 100 /dev/openebs_vg_1/vol01


#将之前数据删除...

#从快照中恢复数据
lvconvert --merge /dev/openebs_vg_1/lv1_sanpshot


umount /mnt/volum1

lvchange -a n /dev/openebs_vg_1/vol1
lvchange -a y /dev/openebs_vg_1/vol1

ref

  • 在linux中,通过lvm来创建pv、gv和lv;快照创建和恢复教程

bookmark

  • k8s从1.20以后开始支持从snapshot导数据进一个新的pvc中

bookmark

  • lvm对于snapshot 的支持

link_preview

  • youtube lvm 讲解

bookmark

bookmark