磁盘配额与进阶文件系统管理(二)

逻辑卷管理(Logical Volume Manager)

简介:lvm可以弹性调节filesystem容量;lvm可以整合多个实体partion在一起,使得多个partion看起来像一个磁盘。

LVM基本概念

PV:物理卷  PE:实体范围区块   VG:卷组  LV:逻辑卷

软件包

lvm2

软链接

  • /dev/mapper/VG_NAME-LV_NAME
  • /dev/VG_NAME/LV_NAME

实际对应的设备是:/dev/dm-数字

数据写入磁盘时有两种方式:

线性模式(linear):假如将/dev/vda1, /dev/vdb1这两个partition 加入到VG当中,并且整个VG只有一个LV时,那么所谓的线性模式就是:当/dev/vda1 的容量用完之后,/dev/vdb1 的硬盘才会被使用到。推荐,且是LVM默认模式

交错模式(triped):将一份数据分为两份,分别写入/dev/sda1和/dev/vdb1。类似RAID0

LVM工作过程

1-pv阶段

pvcreate:将实体partition建立为PV     命令:pvcreate 实体分区名

pvscan:搜寻目前系统内任何具有PV的磁盘

pvdisplay:显示出目前系统上的PV状态

pvremove:将PV属性移除,使该partition不再具有PV属性

2-vg阶段

vgcreate:建立vg卷组     命令:vgcreate 选项 vg卷组名 pv名

选项:-s  : 后面接PE大小,单位为m,g,t(大小写都可)

vgscan:搜寻系统上是否有vg存在

vgdisplay:显示目前系统上面的vg

vgextend:在vg内增加额外的pv     命令:vgextend vg卷组名 pv名

vgreduce:从vg内移除pv

vgchange:设定vg是否启动

vgremove:删除一个vg

后又添加一块硬盘 /dev/sdc ,经分区、创建pv后需将 /dev/sdc1 添加至 vgsdb1 卷组里

3-lv阶段

lvcreate:建立lv

lvcreate [-L N[mgt]] [-n lv名] vg名

-L:后接容量,容量单位可以是M,G,T等,最小单位为PE。

-l:后接PE个数,需要自行计算。

-n:后面接新创建出来的lv的名称

lvscan:查询系统上的lv

lvdisplay:显示系统上的lv状态

lvextend:增加lv容量

lvreduce:较少lv容量

lvremove:删除一个lv

lvresize:对lv进行容量大小调整

4-文件系统阶段

格式化

挂载

后需要增加 /dev/vgsdb1/lvsdb1 容量,目前 vgsdb1 还有容量,可进行操作

1、lvextend -L +具体单位容量 目标lv

lvsdb1 增加100M容量

将 vg卷组中剩余所有容量分配给 /dev/vgsdb1/lvsdb1

调整此lv文件系统容量  xfs_grows 

最后再修改下 /etc/fstab 文件,使得以上分区设置永久生效

关闭并移除LVM流程

1、卸载系统上的lvm文件系统,包含快照与所有lv

2、使用 lvremove 移除lv

3、使用 vgchange -a n vg名字 使该vg卷组不具有 active 标志

4、使用 vgremove 移除 vg

5、使用 pvremove 移除 pv

6、使用fdisk将分区id修改回去

lvm相关指令汇总

EXT家族支持增加、减少文件系统容量;XFS仅支持增加文件系统容量。

ubuntu实验:

实现基础lvm

 新增一块20G硬盘sda

从/dev/sda划分10G

创建PV /dev/sda1

创建VG wenzi

创建LV ceshi

同样的操作创建出VG aabb 和LV ccdd

创建挂载点

将 /dev/mapper/wenzi-ceshi 格式化为xfs文件系统,并挂载至 dir1

将 /dev/mapper/aabb-ccdd 格式化为ext4文件系统,并挂载至 dir2

查看现状

拓展逻辑卷 /dev/mapper/aabb-ccdd

从 /dev/sda 再划分5G空间,最终加给 /dev/mapper/aabb-ccdd

方法一:lvextend 和 resize2fs

拓展只使用2.5G

方法二:lvresize -r -l

拓展使用剩余2.5G

缩减逻辑卷

缩减有数据损坏的风险,建议先备份再缩减,不支持在线缩减,要先取消挂载;xfs文件系统不支
持缩减

ext4文件系统-/dev/mapper/aabb-ccdd

方法一:resize2fs 和 lvreduce

缩减为3G

1、取消挂载

2、文件系统检测

3、缩减文件系统到指定大小

4、缩减逻辑卷到指定大小

5、重新挂载

方法二:lvreduce

缩减为1G

1、取消挂载

2、同时缩减文件系统和逻辑卷

3、重新挂载

xfs文件系统-/dev/mapper/wenzi-ceshi

xfs文件系统不支持缩减,可变相实现缩减

下载工具 xfsdump
[root@wenzi ~]#apt install xfsdump

创建xfs文件系统文件数据
[root@wenzi ~]#echo "123" > /data/dir1/123.txt

备份xfs文件系统数据,备份文件为 data.img
[root@wenzi ~]#xfsdump -f data.img /data/dir1   挂载点后不要加 / 否则会报错
[root@wenzi ~]#ls
data.img  snap

卸载文件系统
[root@wenzi ~]#umount /data/dir1

缩减逻辑卷
[root@wenzi ~]#lvreduce -L 7G /dev/mapper/wenzi-ceshi
  WARNING: Reducing active logical volume to 7.00 GiB.
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce wenzi/ceshi? [y/n]: y
  Size of logical volume wenzi/ceshi changed from <10.00 GiB (2559 extents) to 7.00 GiB (1792 extents).
  Logical volume wenzi/ceshi successfully resized.

重建文件系统
[root@wenzi ~]#mkfs.xfs -f /dev/mapper/wenzi-ceshi
meta-data=/dev/mapper/wenzi-ceshi isize=512    agcount=4, agsize=458752 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=1835008, 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@wenzi ~]#mount /dev/mapper/wenzi-ceshi /data/dir1

还原数据
[root@wenzi ~]#xfsrestore -f data.img /data/dir1
xfsrestore: using file dump (drive_simple) strategy
xfsrestore: version 3.1.6 (dump format 3.0) - type ^C for status and control
xfsrestore: searching media for dump
xfsrestore: examining media file 0
xfsrestore: dump description:
xfsrestore: hostname: wenzi
xfsrestore: mount point: /data/dir1
xfsrestore: volume: /dev/mapper/wenzi-ceshi
xfsrestore: session time: Tue Dec 19 14:29:27 2023
xfsrestore: level: 0
xfsrestore: session label: ""
xfsrestore: media label: ""
xfsrestore: file system id: aae5658f-02f7-4744-a28e-0f6092294ea1
xfsrestore: session id: dddee877-fdb8-4bec-a413-84225c75ae68
xfsrestore: media id: 23726ccb-2b37-4562-8d47-471bfad8534d
xfsrestore: using online session inventory
xfsrestore: searching media for directory dump
xfsrestore: reading directories
xfsrestore: 1 directories and 1 entries processed
xfsrestore: directory post-processing
xfsrestore: restoring non-directory files
xfsrestore: restore complete: 0 seconds elapsed
xfsrestore: Restore Summary:
xfsrestore:   stream 0 /root/data.img OK (success)
xfsrestore: Restore Status: SUCCESS
[root@wenzi ~]#cat /data/dir1/123.txt
123

LVM thin Volume 动态自动调整磁盘使用率

LVM的LV磁盘快照 

快照就是将当时的系统信息记录下来,将来若有任何数据变动,则原始数据会被移动至快照区,没有变动的区域则由快照去和文件系统共享;

在数据变化前,会看到快照区内容和文件系统是一模一样的,当数据变化时,则变动前系统会将该区域的数据移动至快照区

图解:

vg中需要预留存放快照的空间,不能被占满。

快照区与被快照的lv必须在同一个vg卷组中。

系统新增了一个3G的磁盘,进行操作后如下

利用同一个卷组 vgsdb1 空闲的3G空间为 lvsdb1 建立快照区

-s :即建立快照的意思

因为xfs系统不允许相同uuid的文件系统挂载,所以加入参数 nouuid ,让系统忽略相同uuid的问题。

利用快照区复原系统

前提:要复原的数据量不能高于快照区能负载的实际容量,不然快照功能失效。

1、在 /lvmceshi 加个100M文件作为和快照 /snap1 的对比

 2、利用 xfsdump 将快照区备份

3、卸载快照,卸载 /lvmsdb1 格式化清空 /lvsdb1 ,再恢复最初的数据(一次快照都没做的时候)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值