Linux系统运维之Linux磁盘管理LVM使用手册
白羽 2018-07-11 来源 :网络 阅读 1050 评论 0

摘要:本文将带你了解Linux系统运维之Linux磁盘管理LVM使用手册,希望本文对大家学Linux有所帮助。


一、LVM简介

LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制.Linux用户安装Linux操作系统时遇到的一个常见的难以决定的问题就是如何正确地评估各分区大小,以分配合适的硬盘空间。普通的磁盘分区管理方式在逻辑分区划分好之后就无法改变其大小,当一个逻辑分区存放不下某个文件时,这个文件因为受上层文件系统的限制,也不能跨越多个分区来存放,所以也不能同时放到别的磁盘上。而遇到出现某个分区空间耗尽时,解决的方法通常是使用符号链接,或者使用调整分区大小的工具,但这只是暂时解决办法,没有从根本上解决问题。随着Linux的逻辑卷管理功能的出现,这些问题都迎刃而解,用户在无需停机的情况下可以方便地调整各个分区大小。

二、基本术语

· 物理卷(Physical Volume,PV):指系统的物理存储设备:磁盘,如:/dev/hda、/dev/sda等,是存储系统最底层的存储单元;

· 卷组(Volume Group,VG):类似于非LVM系统中的物理磁盘,其由一个或多个物理卷PV组成。可以在卷组上创建一个或多个LV(逻辑卷);

· 逻辑卷(Logical Volume,LV):类似于非LVM系统中的磁盘分区,逻辑卷建立在卷组VG之上。在逻辑卷LV之上可以建立文件系统(比如/home或者/usr等)。

从上面的定义我们可以了解到:逻辑卷(LV)是建立在卷组(VG)上的,而卷组(VG)则是建立在物理卷(PV)上的。 
从中还可以作更深一层的理解:LVM的可伸缩性无非是建立在卷组(VG)和逻辑卷(LV)的可伸缩性的基础上的: 
- 只要存在尚未使用的磁盘或者分区,就可以动态的扩展卷组(VG)的大小; 
- 只要卷组(VG)中存在尚未分配的空间,就可以动态的扩展逻辑卷的大小。 
从以上二点出发就可以达到动态调整分区大小的目的。

因为本文中很多的命令都是以上述术语的缩写开头,因此了解各个缩写对命令的记忆和使用是非常有帮助的。

三、基本命令

示例中的 vg1 和 lv1 分别为物理卷组名和逻辑卷名,可自行替换成任意名称。

分类

   

命令

   

说明

   

示例

   

PV

   

pvcreate

   

创建物理卷

   

pvcreate /dev/sdb1

   

PV

   

pvdisplay

   

显示已创建的物理卷的详细信息

   

PV

   

pvs

   

显示已创建的物理卷的汇总信息

   

PV

   

pvremove

   

删除物理卷

   

pvremove /dev/sdb1

   

VG

   

vgcreate

   

创建卷组

   

pvcreate vg1 /dev/sdb1 /dev/sdb2 …

   

VG

   

vgdisplay

   

显示已创建的卷组的详细信息

   

VG

   

vgs

   

显示已创建的卷组的汇总信息

   

VG

   

vgextend

   

扩展卷组

   

vgextend vg1 /dev/sdb3 …

   

VG

   

vgreduce

   

收缩卷组

   

vgreduce vg1 /dev/sdb5

   

VG

   

vgremove

   

删除卷组

   

vgremove vg1

   

LV

   

lvcreate

   

创建逻辑卷

   

lvcreate -L 1000M -n lv1 vg1

   

LV

   

lvdisplay

   

显示已创建的逻辑卷的详细信息

   

LV

   

lvs

   

显示已创建的逻辑卷的汇总信息

   

LV

   

lvresize

   

重设逻辑卷大小

   

lvresize -L 1000M /dev/vg1/lv1

   

LV

   

resize2fs

   

更新逻辑卷信息(ext4)

   

resize2fs /dev/vg1/lv1

   

LV

   

lvremove

   

删除逻辑卷

   

lvremove /dev/vg1/lv1

   

LV

   

xfs_growfs

   

更新逻辑卷信息(xfs)

   

xfs_growfs /dev/vg1/lv1

   

LV

   

e2fsck

   

检查逻辑卷错误(ext4)

   

e2fsck -f /dev/vg1/lv1

   

四、实验的操作环境

· 虚拟机:VirtualBox 5.6.2

· 操作系统:CentOS 7.4

· 磁盘:二块:一块安装操作系统(/dev/sda),容量为20GB; 另一块用于进行lvm分区操作(/dev/sdb),容量为10GB

· 因为CentOS 7.4默认没有安装支持上述命令的软件包,因此需要提前安装lvm2软件包,具体命令为:yum install -y lvm2

五、创建LVM

在这里我带着大家从一块全新的磁盘开始,一步步创建LVM分区。

流程

先介绍一下流程,以便大家从总体上对创建LVM有一个了解。 
1. 对新磁盘进行分区操作(fdisk); 
2. 逐一变更分区类型为Linux LVM(Hex代码为:8e); 
3. 针对每个分区创建物理卷(pvcreate); 
4. 创建卷组(vgcreate); 
5. 创建逻辑卷(lvcreate); 
6. 格式化(mkfs.ext4/mkfs.xfs),并挂载(mount)。

(一)、磁盘分区及分区类型更改

使用命令fdisk对需要进行LVM操作的磁盘/dev/sdb进行分区

fdisk /dev/sdb

· 1

输入n进行分区,一共分五个分区,前三个是主分区,后二个分区在扩展分区里,每个分区2GB。以下只列出第一个分区的操作:

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

Partition type:

   p   primary (1 primary, 0 extended, 3 free)

   e   extendedSelect (default p): p

分区号 (2-4,默认 2):

起始 扇区 (4196352-20971519,默认为 4196352):

将使用默认值 4196352Last 扇区, +扇区 or +size{K,M,G} (4196352-20971519,默认为 20971519):+2G

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

输入p打印分区完成后的情况:

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

 

磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区

Units = 扇区 of 1 * 512 = 512 bytes

扇区大小(逻辑/物理):512 字节 / 512 字节I/O 大小(最小/最佳):512 字节 / 512 字节

磁盘标签类型:dos

磁盘标识符:0x231b271d

 

   设备 Boot      Start         End      Blocks   Id  System

/dev/sdb1            2048     4196351     2097152   83  Linux

/dev/sdb2         4196352     8390655     2097152   83  Linux

/dev/sdb3         8390656    12584959     2097152   83  Linux

/dev/sdb4        12584960    20971519     4193280    5  Extended

/dev/sdb5        12587008    16781311     2097152   83  Linux

/dev/sdb6        16783360    20971519     2094080   83  Linux

分区完成后除了扩展分区(上图的Extended)外,需要变更所有分区的磁盘类型:原类型为Linux,变更后为Linux LVM。这里只列出针对第一个分区的操作:

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

分区号 (1-6,默认 6):1Hex 代码(输入 L 列出所有代码):8e

已将分区“Linux”的类型更改为“Linux LVM”

输入p打印分区类型变更后的情况:

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

 

磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区

Units = 扇区 of 1 * 512 = 512 bytes

扇区大小(逻辑/物理):512 字节 / 512 字节I/O 大小(最小/最佳):512 字节 / 512 字节

磁盘标签类型:dos

磁盘标识符:0x231b271d

 

   设备 Boot      Start         End      Blocks   Id  System

/dev/sdb1            2048     4196351     2097152   8e  Linux LVM

/dev/sdb2         4196352     8390655     2097152   8e  Linux LVM

/dev/sdb3         8390656    12584959     2097152   8e  Linux LVM

/dev/sdb4        12584960    20971519     4193280    5  Extended

/dev/sdb5        12587008    16781311     2097152   8e  Linux LVM

/dev/sdb6        16783360    20971519     2094080   8e  Linux LVM

以上操作完成后,输入w将操作写入磁盘,完成分区:

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

The partition table has been altered!

 

Calling ioctl() to re-read partition table.

正在同步磁盘。

(二)、创建物理卷

针对新创建的分区创建物理卷,这是创建LVM的第一步。使用如下命令对每一个分区进行操作:

pvcreate /dev/sdb1

· 1

其他分区的操作类似,这里就不逐一介绍了。 
创建完物理卷后,有二种查看的方法:

1、详细信息:pvdisplay,这里只列出第一个分区的信息:

[root@localhost ~]# pvdisplay

  "/dev/sdb1" is a new physical volume of "2.00 GiB"

  --- NEW Physical volume ---

  PV Name               /dev/sdb1

  VG Name

  PV Size               2.00 GiB

  Allocatable           NO

  PE Size               0

  Total PE              0

  Free PE               0

  Allocated PE          0

  PV UUID               SCIOKN-i2fO-PylF-CJGI-T8Yw-e2dH-BYX0xq

2、汇总信息:pvs

[root@localhost ~]# pvs

  PV         VG Fmt  Attr PSize  PFree

  /dev/sdb1     lvm2 ---   2.00g  2.00g

  /dev/sdb2     lvm2 ---   2.00g  2.00g

  /dev/sdb3     lvm2 ---   2.00g  2.00g

  /dev/sdb5     lvm2 ---   2.00g  2.00g

  /dev/sdb6     lvm2 ---  <2.00g <2.00g

(三)、创建卷组

创建物理卷完成后,就需要将物理卷加入到特定的卷组。 
下面的操作将前二个分区/dev/sdb1和/dev/sdb2加入到名称为gv1的卷组中:

[root@localhost ~]# vgcreate vg1 /dev/sdb1 /dev/sdb2

  Volume group "vg1" successfully created

· 1

· 2

查看卷组也有二种方法进行查看:详细信息和汇总信息:

1、详细信息:

[root@localhost ~]# vgdisplay

  --- Volume group ---

  VG Name               vg1

  System ID

  Format                lvm2

  Metadata Areas        2

  Metadata Sequence No  1

  VG Access             read/write

  VG Status             resizable

  MAX LV                0

  Cur LV                0

  Open LV               0

  Max PV                0

  Cur PV                2

  Act PV                2

  VG Size               3.99 GiB

  PE Size               4.00 MiB

  Total PE              1022

  Alloc PE / Size       0 / 0

  Free  PE / Size       1022 / 3.99 GiB

  VG UUID               N2mK2P-tvev-bex2-LX4C-1DIs-nFci-Ay5e8H

2、汇总信息:

[root@localhost ~]# vgs

  VG  #PV #LV #SN Attr   VSize VFree

  vg1   2   0   0 wz--n- 3.99g 3.99g

(四)、创建逻辑卷

创建卷组完成后,我们就可以在卷组上创建逻辑卷。使用下面的命令,我们在卷组vg1上创建一个名称为lv1、大小为1GB的逻辑卷:

[root@localhost ~]# lvcreate -L 1G -n lv1 vg1

  Logical volume "lv1" created.

查看逻辑卷也有二种方法进行查看:详细信息和汇总信息:

1、详细信息:

[root@localhost ~]# lvdisplay

  --- Logical volume ---

  LV Path                /dev/vg1/lv1

  LV Name                lv1

  VG Name                vg1

  LV UUID                LaLTid-eLAG-DNlq-h4fT-Xiia-PTDG-HnXL3i

  LV Write Access        read/write

  LV Creation host, time localhost.localdomain, 2017-11-08 09:27:21 +0800

  LV Status              available

  # open                 0

  LV Size                1.00 GiB

  Current LE             256

  Segments               1

  Allocation             inherit

  Read ahead sectors     auto

  - currently set to     8192

  Block device           253:0

2、汇总信息:

[root@localhost ~]# lvs

  LV   VG  Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert

  lv1  vg1 -wi-a----- 1.00g

(五)、格式化逻辑卷并挂载

使用下面的命令,对逻辑卷lv1进行格式化:

[root@localhost ~]# mkfs.ext4 /dev/vg1/lv1

格式化完成后,将该逻辑卷挂载到目录/mnt上:

[root@localhost ~]# mount /dev/vg1/lv1 /mnt

查看挂载后的情况:

[root@localhost ~]# df -h

文件系统             容量  已用  可用 已用% 挂载点

/dev/sda2             17G  1.5G   15G   10% /devtmpfs             488M     0  488M    0% /devtmpfs                497M     0  497M    0% /dev/shmtmpfs                497M  6.6M  490M    2% /runtmpfs                497M     0  497M    0% /sys/fs/cgroup

/dev/sda1            976M  115M  795M   13% /boottmpfs                100M     0  100M    0% /run/user/0

/dev/mapper/vg1-lv1  976M  2.6M  907M    1% /mnt

(六)、设置开机自动挂载分区

1、查看逻辑卷的UUID:

[root@localhost ~]# blkid

/dev/sda1: UUID="ee8a3a12-cb3e-4890-b255-4b706a718600" TYPE="ext4"

/dev/sda2: UUID="5863f890-3eb8-41a5-8239-4f41f48299bd" TYPE="ext4"

/dev/sda3: UUID="f7c02dd9-73e9-4a26-8da7-a2ca29f58747" TYPE="swap"

/dev/sdb1: UUID="2l1Llw-yFjj-YwbF-TtiN-P0XI-i7W8-9Lq4CF" TYPE="LVM2_member"

/dev/sdb2: UUID="h3uEZx-gw1W-1PMM-PPVT-dAuQ-zf1i-3RZThD" TYPE="LVM2_member"

/dev/sdb3: UUID="aFBSn0-0hwb-Mklg-vCKU-nhmF-lk1k-0uP9Ns" TYPE="LVM2_member"

/dev/sdb5: UUID="5kT4gk-6TRC-2jCj-Sbb5-HAeo-P0CE-cJZzm8" TYPE="LVM2_member"

/dev/sdb6: UUID="57LR2H-Kaua-vY0v-QgbQ-9Eej-qHJe-zXsVvf" TYPE="LVM2_member"

/dev/mapper/vg1-lv1: UUID="11262806-d796-4f49-8f08-897181e8ec33" TYPE="ext4"

最后一行就是逻辑卷的信息,把该行的UUID复制出来,不含引号。

2、编辑fstab: 
在最后添加一行,输入如下内容:

UUID=11262806-d796-4f49-8f08-897181e8ec33 /mnt                    ext4    defaults        0 0

然后保存退出(:wq),重启后查看结果,如果能正常挂载就没有问题了。

以上便完成的了LVM的创建和挂载的全部流程。

六、卷组扩容

我们上一节创建LVM中创建了五个分区,但只使得了其中二个分区,在这一节中,我们要把剩余的三个分区加入到卷组vg1中,对其进行扩容。下面的流程只针对新加入的磁盘或者分区,因此这里对流程1-3步的操作就不再做介绍了,具体的操作方法可参照创建LVM。

流程

1. 创建新的磁盘分区(fdisk);

2. 变更分区类型为Linux LVM(Hex代码为:8e);

3. 创建物理卷(pvcreate);

4. 扩展卷组(vgextend);

扩展卷组

使用如下命令将剩余的三个分区加入到卷组vg1

[root@localhost ~]# vgextend vg1 /dev/sdb3 /dev/sdb5 /dev/sdb6

  Volume group "vg1" successfully extended

查看扩展后的卷组:

[root@localhost ~]# vgs

  VG  #PV #LV #SN Attr   VSize VFree

  vg1   5   1   0 wz--n- 9.98g 8.98g

已经完了卷组的扩容。

七、卷组缩容

如果想要对卷组缩容,实际上就是要把加入的卷组的物理卷从卷组中移除。 
这时需要注意的是:如果要移除的物理卷,已经被使用的话,移除操作可能会对文件系统造成操作。因此移除操作应针对未被使用的物理卷。

(一)、确认物理卷使用情况

[root@localhost ~]# pvs

  PV         VG  Fmt  Attr PSize  PFree

  /dev/sdb1  vg1 lvm2 a--  <2.00g     0

  /dev/sdb2  vg1 lvm2 a--  <2.00g     0

  /dev/sdb3  vg1 lvm2 a--  <2.00g <1.99g

  /dev/sdb5  vg1 lvm2 a--  <2.00g <2.00g

  /dev/sdb6  vg1 lvm2 a--  <2.00g <2.00g

只有PFree等于PSize,也就是说没有被使用的物理卷,还能被列入考虑范围。根据上面命令的执行结果,只有/dev/sdb5和/dev/sdb6二个可以被移除。 
查看卷组的使用情况:

[root@localhost ~]# vgs

  VG  #PV #LV #SN Attr   VSize VFree

  vg1   5   0   0 wz--n- 5.99g 9.98g

(二)、卷组缩容


[root@localhost ~]# vgreduce vg1 /dev/sdb5 /dev/sdb6 
Removed "/dev/sdb5" from volume group "vg1" 
Removed "/dev/sdb6" from volume group "vg1" 

查看结果: 

[root@localhost ~]# vgs 
VG #PV #LV #SN Attr VSize VFree 
vg1 3 1 0 wz--n- <5.99g <1.99g 

可以看到VFree的容量已经减少了,到此完成了卷组缩容

 


本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标系统运维之Linux!


本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程