Linux常用命令之--逻辑卷

Linux常用命令之--逻辑卷,第1张

每个Linux使用者在安装Linux时都会遇到这样的困境:在为系统分区时,如何精确评估和分配各个硬盘分区的容量,因为系统管理员不但要考虑到当前某个分区需要的容量,还要预见该分区以后可能需要的容量的最大值。如果估计不准确,当遇到某个分区不够用时管理员可能甚至要备份整个系统、清除硬盘、重新对硬盘分区,然后恢复数据到新分区

逻辑卷管理器LVM(Logicl Volume Manager),通过使用逻辑卷管理器对硬盘存储设备进行管理,可以实现硬盘空间的动态划分和调整,而且可以将零碎的空间进行整合

物理卷(PV-Physical Volume)

物理卷在逻辑卷管理中处于最底层,它可以是实际物理硬盘上的分区,也可以是整个物理硬盘

• 卷组(VG-Volumne Group)

卷组建立在物理卷之上,一个卷组中至少要包括一个物理卷,在卷组建立之后可动态添加物理卷到卷组中。一个逻辑卷管理系统工程中可以只有一个卷组,也可以拥有多个卷组

• 逻辑卷(LV-Logical Volume)

逻辑卷建立在卷组之上,卷中的未分配空间可以用于建立新的逻辑卷,逻辑卷建立后可以动态地扩展和缩小空间。系统中的多个逻辑卷可以属于同一个卷组,也可以属于不同的多个卷组

逻辑卷管理器和是主分区还是逻辑分区没有关系

vgdisplay 里的PE Size是指逻辑卷的最小单位。假设PE Size是4M;比如我向里写东西。我一个文件可能只占用1B的容量,但是我先占上4M,其他的也是,不足4M我也先占上4M。等到每个块都用了,但是每个块都有剩余位置的时候,会把每个区的剩余位置都拼凑一下,以供使用。但是只要还有没被占用的块,都不会使用用过的块。逻辑卷大小为这个PE Size的整数倍

处在它所在的文件夹的时候是无法卸载的

我现在想创建两个卷组,vg1和vg2。sdc1和sdc2给vg1,sdc3和sdc4给vg2

修改卷组属性,用来设置卷组是否处于活动状态,活跃状态的时候卷组无法被删除,非活动状态的卷组才能被删除掉。VG Status:resizable是表示可被调整大小的状态。lvremove时有可能因为逻辑卷里东西过多导致删除逻辑卷的时候假删除,即逻辑卷没了,但是里面东西还在,这时卷组觉得它里面还有东西,就会处于活跃状态,这时需要↓

接下来resize1要用来做块(逻辑卷)的放大,resize2要用来做块的缩小。设备放大时不论是挂载状态下或非挂载状态下都可以做放大,即在线放大。但是缩小的话设备要是非挂载的状态,即离线缩小

df -lh

发现size大小变小了。之前给的resize1是800M,resize2是784M,这里的大小表示文件系统(filesystem)大小(即这个设备能存多少东西),剩下的容量mkfs,挂载的时候都会损耗一定的容量大小。文件系统大小不会随着块的变大或缩小而改变,需要手动才能改变文件系统大小。

放大要先放大块的大小,再放大文件系统的大小

lvresize -L +200M /dev/vg3/resize1 放大逻辑卷

如果不带+,会出现warning,+时是在原有基础之上加200M,不加+的话就是将现有逻辑卷的大小调整成200M。如果比之前设置的逻辑卷小的话就证明是要将其缩小,会造成数据丢失

resize2fs /dev/vg3/resize1 调整文件系统大小,但是不会管你到底是放大还是缩小,就是将文件系统调整到它可以变大的最大程度

df -lh 看设备容量变大了

缩小的时候要先将文件系统缩小,再缩小逻辑卷的大小

umount /mnt/rs2/

resize2fs /dev/vg3/resize2 700M

出现提示 [请先输入e2fsck -f /dev/vg3/resize2 命令],将处于多个块当中的内容整理到一起,以便进行缩小。但是也不能百分百保证数据不丢失

e2fsck -f /dev/vg3/resize2

resize2fs /dev/vg3/resize2 700M

lvresize -L 700M /dev/vg3/resize2

mount /dev/vg3/resize2 /mnt/rs2/ 重新挂载回来

df -lh 看系统里设备和文件系统挂载的使用情况

发现size变小了,缩小成功

在Linux磁盘 *** 作中,如果磁盘写满,那么就需要对磁盘进行扩容。把数据写入到更大的磁盘中,这个工作量是非常大的,而且非常容易出现错误,危险性很高,那么我们就可以使用逻辑卷管理器(LVM)来对磁盘进行管理扩容。这样就可以很轻松的,没有危险的对数据进行移动。

我们来看看LVM比传统硬盘管理的优点:

1.灵活性容量:允许多个磁盘或分区作为一个逻辑卷。

2.可以伸缩的存储池:不必格式化,用命令可以直接修改逻辑卷。

3.在线数据的分配:可以在线移动数据,可以热插拔硬盘更换磁盘。

4.设备命名方便。

5.镜像卷:很方便的做数据镜像。

6.卷快照:快照会把逻辑卷的全部内容保存。

那么逻辑卷要怎么来创建呢,我们做如下步骤:

1.在创建逻辑卷前,必须要有一块物理磁盘做物理卷(PV)。

2.由一个或多个物理卷组成一个存储池,我们叫他卷组(VG)。

3.根据卷组中的空闲物理空间,建立逻辑卷(LV)。

上面3步时创建逻辑卷的具体思路。下面我们具体 *** 作:

创建逻辑卷步骤:

1.使用fdisk创建一个物理分区,t 选项设置类型为:linuxLVM

2.使用partprobe向内核注册新的分区。

3.创建物理卷pvcreate /dev/sdb1(需要创建的硬盘分区名,根据自己服务器查找)

4.创建卷组 vgcreate 卷组名 /dev/sdb1

5.创建逻辑卷 lvcreate -n 逻辑卷名 -L 卷组大小 卷组名

lvcreate -n abc -L 10G myvg

6.创建文件系统 mkfs.ext4 /dev/卷组名/逻辑卷名

mkfs.ext4 /dev/myvg/abc

7.创建永久挂载点(写入文件/etc/fstab),这一步就不在赘述,可以查阅我前一文章,有详细记载。

这样,我们的逻辑卷就创建成功了。

那我们怎么查看物理卷,卷组,逻辑卷呢

查看物理卷信息:pvdisplay /dev/sdb1

查看卷组信息:vgdisplay myvg

查看逻辑卷信息:lvdisplay /dev/myvg/abc

逻辑卷的扩容

如果在建立的卷组还有空间,就可以给逻辑卷扩容。那怎么做呢。

1.lvextend -L +10G /dev/myvg/abc

给逻辑卷 abc 扩容10G。减少容量直接把 + 变为 - 即可。

2.resize2fs /dev/myvg/abc针对ext4文件

xfs_growfs /dev/myvg/abc针对xfs文件

使扩容生效。

如果卷组空间不够,需先增加卷组空间,在对逻辑卷扩容。

1.准备物理磁盘 fdisk ,partprobe ,mkfs.ext4

2.创建物理卷

3.给原来的卷组增加物理卷 vgextend myvg /dev/sdc1,然后vgdiaplay

创建完成,那么我们需要删除逻辑卷,怎么做呢。

1.取消挂载,同时删除 /etc/fstab 文件下的挂载内容。

2.删除逻辑卷 lvremove /dev/myvg/abc

3.删除卷组 vgremove myvg

4.删除物理卷 pvremove /dev/sdb1

步骤和创建相反。

Linux下磁盘管理的逻辑卷就总结完毕。

LVM(Logical Volume Manager)卷组管理器,通过对底层物理磁盘的封装,可以将多块物理磁盘组合成逻辑资源池,提供给上层应用使用(如文件系统). LVM的好处是,可以跨物理硬盘为文件系统提供容量,并且可以动态进行分区容量的调整,而不会损坏原有的文件系统.

物理磁盘 :物理存储介质,可以是整块物理存储或一个分区.

物理卷PV(physical volume) :LVM要使用物理磁盘,在物理磁盘的头部写入lvm标签头,就创建了一个PV,PV是组成VG的基本单元.

卷组VG(Volume Group) :VG相当于非LVM系统中的物理硬盘,一个卷组VG由一个或多个PV组成,形成一个存储资源池.

逻辑卷LV(logical volume) :LV相当于非LVM系统中的硬盘分区,LV建立在卷组VG之上,文件系统建立在LV之上.

物理块PE(physical Extent) :创建LV时可以分配的最小存储单元,大小可以指定,默认为4MB

如上是从物理磁盘到lvm逻辑卷的创建过程及映射关系,lv01、lv02被创建后,通过device-mapper映射为逻辑块设备(块设备路径/dev/vg01/lv01、/dev/vg01/lv02),供文件系统使用,通过mkfs.ext4 /dev/vg01/lv02可创建ext4文件系统.

元数据主要是两部分,PV header + metadata,位置一般是在PV的0~2048 sector中,从2048 sector开始是数据区域.

通过pvcreate创建pv时,会将pv header写入物理磁盘,位置一般是在磁盘的第二个sector(512B/sector),lvm扫描磁盘时,通过pv header来识别PV.

pv header主要信息包括,pv uuid、元数据位置和metadata位置.

pv header实例:

metadata记录的是vg和lv的配置信息,以ASCII码的方式写入metadata区域;vg和lv的每次配置变更,都会以追加的方式写入metadata区域,并打上时间戳,该区域写满后,新的变更记录会覆盖最早的一次记录. 进行vgscan时,猜测应该是通过读取最新一次的配置记录,进行激活.

vg配置信息,主要是包含的pv信息.

lv配置信息,主要是lv的起始位置和PE大小.

实例:

pvcreate /dev/vdb1

pvcreate /dev/vdb2

pvcreate /dev/vdb3

vgcreate /dev/vdb1 /dev/vdb2 /dev/vdb3

vgcreate wan /dev/vdb1 /dev/vdb2 /dev/vdb3

lvcreate -L 300M -n lv01 wan

将PV的前2048个sector通过dd拷贝出来,用cat查看如下.

假设我们有一块磁盘 /dev/sdb1 作为应用数据盘使用,以此为例创建lvm分区

先创建物理卷PV,命令: pvcreate /dev/sdb1

创建卷组VG,卷组命名为kylin,命令:vgcreate kylin /dev/sdb1

在VG中创建逻辑分区LV,命令:lvcreate -L 30G -n test kylin

创建逻辑分区后,进行格式化,然后便可以挂载使用.

mkfs.ext4 /dev/kylin/test

mount /dev/kylin/test /data

假设我们在上述基础上,又获得一块磁盘/dev/sdc1进行扩容,将磁盘容量增加到LV分区/dev/kylin/test中,具体 *** 作如下.

先创建物理卷PV,命令: pvcreate /dev/sdc1

将/dev/sdc1添加进VG kylin,命令:vgextend kylin /dev/sdc1

增加LV分区容量,命令:lvextend -L +30G /dev/kylin/test

lvm卷组配置备份

lvm的配置信息默认在/etc/lvm/backup、/etc/lvm/archive/两个目录存在备份,当lvm元数据损坏,lvm卷组读取异常时,可通过备份文件进行恢复.

/etc/lvm/backup: 保留了当前配置的备份

/etc/lvm/archive/:保留了每次配置更新前的备份

实例演示

逻辑卷/dev/wan/lv01

在/dev/wan/lv01上创建文件系统

挂载并创建文件

覆盖/dev/vdb1、/dev/vdb2的lvm元数据,并重启系统,vg已不能识别

通过pvcreate命令修复pv header 和metadata数据.

激活逻辑卷

挂载/dev/wan/lv01成功,说明成功修复


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/tougao/6056145.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-13
下一篇2023-03-13

发表评论

登录后才能评论

评论列表(0条)

    保存