Linux LVM Logical Volume Management 逻辑卷的管理

时间:2021-10-15 18:46:07

博主是一个数据库DBA,但是一般来说,是不做linux服务器LVM 逻辑卷的创建、扩容和减容操作的,基本上有系统管理员操作,一是各司其职,专业的事专业的人做,二是做多了你的责任也多了,哈哈!

但是linux运维的人员肯定的要会的,面试的时候如果这个不会,基本上是OVER了。

参考资料来自网站:

https://opensource.com/business/16/9/linux-users-guide-lvm

https://wiki.archlinux.org/index.php/LVM

对于系统运维人员来说,管理磁盘空间一直是一项重要任务。耗尽磁盘空间通常是一系列漫长而复杂的任务的开始,以增加磁盘分区的可用空间。它还需要使系统脱机。这通常涉及安装新的硬盘驱动器,引导至恢复或单用户模式,在新的硬盘驱动器上创建分区和文件系统,使用临时挂载点将数据从太小的文件系统移至新的更大的文件系统。 更改/etc/fstab文件的内容以反映新分区的正确设备名称,然后重新引导以在正确的安装点上重新安装新的文件系统。

David Both大神说:“当LVM(逻辑卷管理器)首次出现在Fedora Linux中时,他强烈反对它,他最初的反应是,我和硬盘之间不需要这个额外的抽象层。原来我错了,逻辑卷管理非常有用”。

LVM允许非常灵活的磁盘空间管理。它提供了诸如在挂载和激活该逻辑卷的同时向逻辑卷及其文件系统添加磁盘空间的功能,并允许将多个物理硬盘驱动器和分区收集到单个卷组中,然后可以将其划分为逻辑卷。 。

卷管理器还允许减少分配给逻辑卷的磁盘空间量,但是有一些要求。首先,必须卸载该卷。第二,必须减小文件系统本身的大小,然后才能减小其所在的卷。

重要的是要注意文件系统本身必须允许调整大小才能使此功能起作用。EXT2、3和4文件系统在增加文件系统大小时都允许脱机(卸载)和联机(挂载)大小调整,而在减小大小时允许脱机大小调整。您应该检查要使用的文件系统的详细信息,以验证它们是否可以完全调整大小,尤其是在联机时是否可以调整大小。

一.LVM结构

下面的图1说明了Logical Volume Manager磁盘环境的结构。逻辑卷管理可将多个单独的硬盘驱动器和/或磁盘分区组合到一个卷组(VG)中。然后可以将该卷组细分为逻辑卷(LV)或用作单个大卷。然后可以在逻辑卷上创建常规文件系统,例如EXT3或EXT4。

Linux LVM Logical Volume Management 逻辑卷的管理

在图1中,两个完整的物理硬盘驱动器和第三个硬盘驱动器的一个分区已合并到一个卷组中。已从卷组中的空间创建了两个逻辑卷,并且已在两个逻辑卷中的每个逻辑卷上创建了一个文件系统,例如EXT3或EXT4文件系统。

向主机添加磁盘空间非常简单,但是以我的经验,这种操作相对很少。下面列出了所需的基本步骤。您可以创建一个全新的卷组,也可以将新空间添加到现有的卷组中,然后扩展现有的逻辑卷或创建一个新的逻辑卷。

二.LVM说明

LVM利用Linux内核的device-mapper功能来实现存储系统的虚拟化(系统分区独立于底层硬件)。 通过LVM,你可以实现存储空间的抽象化并在上面建立虚拟分区(virtual partitions),可以更简便地扩大和缩小分区,可以增删分区时无需担心某个硬盘上没有足够的连续空间,避免为正在使用的磁盘重新分区的麻烦、为调整分区而不得不移动其他分区的不便。

LVM的基本组成部分如下:

物理卷 (PV)

一个可供存储LVM的块设备. 例如: 一块硬盘, 一个MBR或GPT分区, 一个回环文件, 一个被内核映射的设备 (例如 dm-crypt).它包含一个特殊的LVM头。
卷组 (VG)
物理卷的一个组,作为存放逻辑卷的容器。 PE是从VG分配给LV的。
逻辑卷 (LV)
"虚拟/逻辑卷"存放在一个卷组中并由物理块组成。是一个类似于物理设备的块设备,例如,你可以直接在它上面创建一个文件系统文件系统
物理块 (PE)
一个卷组中最小的连续区域(默认为4 MiB),多个物理块将被分配给一个逻辑卷。你可以把它看成物理卷的一部分,这部分可以被分配给一个逻辑卷。 

三.LVM方式挂载磁盘

cat /etc/redhat-release

Linux LVM Logical Volume Management 逻辑卷的管理

版本是7.5的。

(1) 查看分区情况

fdisk -l

Linux LVM Logical Volume Management 逻辑卷的管理

两块盘,/dev/sdb(这个是新加的一块专门拿来做实验的) ,/dev/sda(/dev/sda1,/dev/sda2这两个分区)

(2) 查看磁盘卷组信息

lvmdiskscan

Linux LVM Logical Volume Management 逻辑卷的管理

lsblk

Linux LVM Logical Volume Management 逻辑卷的管理

sda2分区采用了lvm管理,vg名为centos,sda1是我用的作为boot分区

查看pv

Linux LVM Logical Volume Management 逻辑卷的管理

查看vg

vgdisplay

Linux LVM Logical Volume Management 逻辑卷的管理

查看 lv

lvdisplay

[root@19c home]# lvdisplay

--- Logical volume ---
LV Path /dev/centos/swap
LV Name swap
VG Name centos
LV UUID F3q7AE-E6rC-eq2H-0hvr-zjdt-r9ic-lvxHf7
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2020-12-21 00:22:16 +0800
LV Status available
# open 2
LV Size 7.00 GiB
Current LE 1792
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:1

--- Logical volume ---
LV Path /dev/centos/home
LV Name home
VG Name centos
LV UUID TzHMql-idEA-JYY0-IrFO-Nnxe-4lLQ-h8gtHU
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2020-12-21 00:22:16 +0800
LV Status available
# open 1
LV Size <20.34 GiB
Current LE 5207
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:2

--- Logical volume ---
LV Path /dev/centos/root
LV Name root
VG Name centos
LV UUID wkKvYa-wMT2-OZmN-N1yW-2817-cpCt-PpJEE9
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2020-12-21 00:22:17 +0800
LV Status available
# open 1
LV Size <41.66 GiB
Current LE 10664
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0

做了三个LV,路径分别是:

/dev/centos/swap,/dev/centos/home,/dev/centos/root

(3) LVM的操作

添加新逻辑卷的基本步骤如下。

  1. 如有必要,请安装新的硬盘驱动器。
  2. 可选:在硬盘驱动器上创建一个分区。
  3. 创建整个硬盘驱动器或硬盘驱动器上的分区的物理卷(PV)。
  4. 将新的物理卷分配给现有的卷组(VG)或创建一个新的卷组。
  5. 从卷组中的空间创建一个新的逻辑卷(LV)。
  6. 在新的逻辑卷上创建一个文件系统。
  7. 将适当的条目添加到/etc/fstab以挂载文件系统。
  8. 挂载文件系统

3.1创建物理卷 pv

pvcreate /dev/sdb

Linux LVM Logical Volume Management 逻辑卷的管理

3.2创建新的卷组 vg

我有两个pv,此次,我想新建一个vg(MyVolGroup ),不把原来的vg进行扩展,后面做完实验了在进行扩展。

vgcreate MyVolGroup /dev/sdb

Linux LVM Logical Volume Management 逻辑卷的管理

3.3创建逻辑卷

本次测试创建2个lv,每个各站MyVolGroup一半的空间。

lvcreate -l +50%FREE MyVolGroup -n LogVo1         ##注意啊,这个50%是占MyVolGroup 的50%

lvcreate -l +100%FREE MyVolGroup -n LogVo2        ##注意啊,这个100%是占MyVolGroup 所有没有分配的空间,第一次我也是搞错了

弄成了lvcreate -l +50%FREE MyVolGroup -n LogVo2 ;如果你也写成50%,那么分配的空间是MyVolGroup*(1-50%) *50%=0.25MyVolGroup

删除后重建LV:

lvremove MyVolGroup/LogVo2

Linux LVM Logical Volume Management 逻辑卷的管理

lvcreate -l +100%FREE MyVolGroup -n LogVo2

Linux LVM Logical Volume Management 逻辑卷的管理

3.4文件系统的挂载和开机自启动

Linux LVM Logical Volume Management 逻辑卷的管理

格式化

mkfs.ext4 /dev/mapper/MyVolGroup-LogVo1

mkfs.ext4 /dev/mapper/MyVolGroup-LogVo2

mkdir lvtest01 lvtest02

mount /dev/mapper/MyVolGroup-LogVo1 /lvtest01
mount /dev/mapper/MyVolGroup-LogVo2 /lvtest02

加载到/etc/fstab 开机自启

Linux LVM Logical Volume Management 逻辑卷的管理

Linux LVM Logical Volume Management 逻辑卷的管理

3.5扩展逻辑卷

把挂载的目录unmount,删除lv以及 /etc/fstab 记录的新加内容

Linux LVM Logical Volume Management 逻辑卷的管理

如下

Linux LVM Logical Volume Management 逻辑卷的管理

Linux LVM Logical Volume Management 逻辑卷的管理

vgremove MyVolGroup

pvremove /dev/sdb

Linux LVM Logical Volume Management 逻辑卷的管理

此刻我想把 home 这个逻辑卷多余的空间到根目录下。

lvresize -L -15G --resizefs centos/home

xfs格式不支持

Linux LVM Logical Volume Management 逻辑卷的管理

算了只有扩展lv了。

扩展空间操作:磁盘我的前面测试已经格式化了(可以不分区)-->扩展卷组-->扩展逻辑卷

3.6扩展卷组

vgextend centos /dev/sdb

Linux LVM Logical Volume Management 逻辑卷的管理

3.7扩展逻辑卷

lvextend -l +100%free  /dev/mapper/centos-root

也可以把+100% 换成大小 +10G

Linux LVM Logical Volume Management 逻辑卷的管理

# CentOS 7重新读取磁盘大小:

xfs_growfs /dev/mapper/centos-root

# CentOS 6.5重新读取磁盘大小: # ext4格式, resize2fs会遍历整个磁盘, 速度比较慢, 但是不影响读写数据, 可以令其在后台运行.

resize2fs xfs_growfs /dev/mapper/centos-root

Linux LVM Logical Volume Management 逻辑卷的管理

ok! 完事。