暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Linux-LVM(逻辑卷管理)

IT那活儿 2021-05-30
1562

一. lvm简介
逻辑卷管理LVM是一个多才多艺的硬盘系统工具。无论在Linux或者其他类似的系统,都是非常的好用。传统分区使用固定大小分区,重新调整大小十分麻烦。但是,LVM可以创建和管理“逻辑”卷,而不是直接使用物理硬盘。可以让管理员弹性的管理逻辑卷的扩大缩小,操作简单,而不损坏已存储的数据。可以随意将新的硬盘添加到LVM,以直接扩展已经存在的逻辑卷。LVM并不需要重启就可以让内核知道分区的存在。
首先是实际的物理磁盘及其划分的分区和其上的物理卷(PV)。一个或多个物理卷可以用来创建卷组(VG)。然后基于卷组可以创建逻辑卷(LV)。只要在卷组中有可用空间,就可以随心所欲的创建逻辑卷。文件系统就是在逻辑卷上创建的,然后可以在操作系统挂载和访问。
这里来对整个LVM的工作原理进行一个简单表述:
  • 物理磁盘被格式化为PV,空间被划分为一个个的PE

  • 不同的PV加入到同一个VG中,不同PV的PE全部进入到了VG的PE池内

  • LV基于PE创建,大小为PE的整数倍,组成LV的PE可能来自不同的物理磁盘

  • LV现在就直接可以格式化后挂载使用了

  • LV的扩充缩减实际上就是增加或减少组成该LV的PE数量,其过程不会丢失原始数据

常用的LVM部署命令

功能/命令

物理卷管理

卷组管理

逻辑卷管理

扫描

pvscan

vgscan

lvscan

建立

pvcreate

vgcreate

lvcreate

显示

pvdisplay

vgdisplay

lvdisplay

删除

pvremove

vgremove

lvremove

扩展

vgextend

lvextend

缩小

vgreduce

lvreduce

二. lvm测试说明
本文将介绍怎么在linux中创建和管理LVM卷。我们将会分成两个部分。第一个部分,我们首先要在一个硬盘上创建多个逻辑卷,然后将它们挂载在/dirmount目录。然后我们将要对创建好的卷调整大小。而第二部分,我们将会从另外一块硬盘增加额外的卷到LVM中。

三. 创建磁盘分区
通过使用fdisk,创建磁盘分区。我们需要创建3个分区,分区的大小根据盘的大小需求划分。
查看可使用的磁盘

# fdisk -l ###查看是否有新加的sdb磁盘# fdisk dev/sdb命令(输入 m 获取帮助):n ##新建Partition type:   p primary (0 primary, 0 extended, 4 free)   e extendedSelect (default p): p ##主分区分区号 (1-4,默认 1):1   ##分区号起始 扇区 (2048-10485759,默认为 2048):##默认回车将使用默认值 2048Last 扇区, +扇区 or +size{K,M,G} (2048-10485759,默认为 10485759):+1G ##分区大小分区 1 已设置为 Linux 类型,大小设为 1 GiB######重复上面的操作来创建其他两个分区。分区创建完成后,我们应该有类似如下的输出:命令(输入 m 获取帮助):p ##查看分区结果   设备 Boot Start End Blocks Id System/dev/sdb1 2048     2099199     1048576   83  Linux/dev/sdb2 2099200     4196351     1048576   83  Linux/dev/sdb3 4196352     6293503     1048576   83  Linux命令(输入 m 获取帮助):w ##保存退出The partition table has been altered!
#fdisk -l  ##也可以看到已经创建好的分区

四. 创建物理卷(PV)
pvcreate将物理硬盘分区初始化为物理卷,以便LVM使用。
# pvcreate  /dev/sdb1

# pvcreate  /dev/sdb2

# pvcreate  /dev/sdb3

查看创建情况

# pvdisplay
可以使用pvremove删除物理卷
如:# pvremove dev/sdb3

五. 创建卷组(vg)
创建名为‘vg-group1’的卷组
# vgcreate  vg-group1  /dev/sdb1 dev/sdb2
验证创建情况
# vgdisplay
可以使用vgremove删除卷组
如:# vgremove vg-group1

六. 创建逻辑卷(lv)

语法

lvcreate(选项)(参数)
查看命令说明:
# lvcreate  --help
常用的选项:

-l    ##逻辑扩展数

-L    ##逻辑卷大小

-n    ##逻辑卷名字

创建一个名为Lv-1,大小为1000M的逻辑卷。
# lvcreate  -L 1000M -n Lv-1  vg-group1
验证创建情况:
# lvdisplay

将创建好的逻辑卷格式化并挂载逻辑卷。本次使用的是EXT4的格式。

# mkfs.ext4  /dev/vg-group1/Lv-1

创建挂载目录/dirmount。

mkdir  /dirmount

挂载逻辑卷到dirmount目录下

# mount  /dev/vg-group1/Lv-1  /dirmount/

# df -h |grep dirmount

/dev/mapper/vg--group1-Lv--1  969M  2.5M  900M    1% dirmount

验证挂载的读写情况:

# echo 'test-lvm'  >>  /dirmount/test.txt

# cat dirmount/test.txt

test-lvm

如要删除逻辑卷,要先取消挂载。

# umount  /dirmount/

# lvremove  /dev/vg-group1/Lv-1

七. 扩展一个lvm卷
调整逻辑卷大小的功能是LVM最有用的功能。这个部分会讨论我们怎么样扩展一个存在的逻辑卷。下面,我们将会扩展先前创建的逻辑卷‘Lv-1’扩大到1500MB。

注意:要求在原来的卷组里有空闲的未分配的空间,如果没有空闲空间,后面有讲扩卷组的操作。

查看卷使用情况,及是否还有空闲。

这里的以下操作是针对本次的ext4文件系统。(ext2/3文件系统也类同)。

在这里卸载逻辑卷(当然也可以动态扩盘不用卸载)

# umount  /dirmount/

在原来1000M的基础上扩500M

# lvresize  -L +500  /dev/vg-group1/Lv-1

这里可以检查下磁盘错误

# e2fsck  -f dev/vg-group1/Lv-1

加载更新已经扩展的文件系统

# resize2fs   dev/vg-group1/Lv-1

查看验证扩展情况

# lvdisplay

之后就可以挂载使用。

八. 缩减一个lvm卷
注意:减少逻辑卷的大小值若小于储存的数据大小,存储在后面的数据会丢失。
将上一步扩展到1500M缩减到1000M

这里要先卸载掉卷

# umount  /dev/vg-group1/Lv-1

# e2fsck -f dev/vg-group1/Lv-1

缩小文件系统,更新ext4信息

# resize2fs  /dev/vg-group1/Lv-1  1500M

减少逻辑卷大小到1000M

# lvresize  -L 1000M  /dev/vg-group1/Lv-1

验证调整后的逻辑卷大小。

# lvdisplay   dev/vg-group1/Lv-1

九. 扩展一个卷组
LVM扩容的思路:物理分区(fdisk)----创建PV(pvcreate)----扩展卷组容量(vgextend)----扩展逻辑卷空间容量(lvextend)

假设我们的卷组'vg-group1'已经满了,需要扩大。当前的硬盘(sdb)已经没有其他空闲分区,我们新增加一块硬盘(sdc)。我们将sdc的分区添加到卷组以扩展。

检查现在卷组状态

# vgdisplay  vg-group1

可以参考之前步骤将sdc进行分区,在这里我将磁盘sbc整体划分为sdc1

# fdisk  /dev/sdc

命令(输入 m 获取帮助):n

Partition type:

p   primary (0 primary, 0 extended, 4 free)

e   extended

Select (default p): p

分区号 (1-4,默认 1):##默认回车,分区号按顺序1-4分

起始 扇区 (2048-10485759,默认为 2048): ##默认回车

将使用默认值 2048

Last 扇区, +扇区 or +size{K,M,G} (2048-10485759,默认为 10485759): ##回车默认分配全部扇区

将使用默认值 10485759

分区 1 已设置为 Linux 类型,大小设为 5 GiB

命令(输入 m 获取帮助):w   ##保存退出

The partition table has been altered!


# fdisk -l


创建PV

# pvcreate  /dev/sdc1

Physical volume "/dev/sdc1" successfully created.

扩展卷组容量

# vgextend  vg-group1 /dev/sdc1

Volume group "vg-group1" successfully extended

查看卷组大小

# vgdisplay  vg-group1

之后就可以根据需求去扩容lvm卷

十. 总结
总结一下,LVM是一个非常给力的工具,用来创建和管理可变大小的分区。本文中,我们已经介绍了如何在LVM中创建和使用。我们也介绍了扩展/缩小逻辑卷和卷组的方法,和如何增加一个新的磁盘到LVM。
END


更多精彩干货分享

点击下方名片关注

IT那活儿

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论