Linux 逻辑卷管理
如果用标准分区在硬盘上创建了文件系统,为已有的文件系统添加额外的空间是一件十分痛苦的事情。只能在已有的硬盘上的可用空间范围内调整分区大小,如果硬盘空间不够的话,就只能换一个大容量的硬盘,然后手动将已有的文件系统移动到新的硬盘上。
这个时候可以通过将另外一个硬盘上的分区加入已有的文件系统,动态地添加存储空间。Linux 可以通过 LVM(逻辑卷管理)来完成这项工作
逻辑卷管理布局
逻辑卷管理的核心在于如何处理安装在系统上的硬盘分区。在逻辑卷管理的世界中,硬盘分区被称为 “物理卷”(physical volume PV),每个物理卷都会映射到硬盘上特定的物理分区
多个物理卷集中在一起可以形成一个卷组(volume group VG)。逻辑卷管理系统将卷组视为一个物理硬盘,但事实上卷组可能是由分布在多个物理硬盘上的不同分区组成的。卷组提供了一个创建逻辑分区的平台,而这些逻辑分区则包含了文件系统
整个结构中的最后一层是逻辑卷(logical volume LV)。逻辑卷为 Linux 提供了创建文件系统的分区环境,作用类似于 Linux 中的物理硬盘分区。Linux 系统将逻辑卷视为物理分区
可以使用任意一种标准的 Linux 文件系统来格式化逻辑卷,然后再将他们加入 Linux 虚拟目录中的某个挂载点
逻辑卷和物理分区之间的关系如下图所示:

图中一共包含了三个不同的物理硬盘,根据这三个硬盘的情况,得到了每个硬盘的分区,对应到不同的物理卷。这些物理卷共同组成了一个卷组,此时 Linux 的 LVM 将整个卷组看作是一个硬盘,然后在这个硬盘上创建逻辑卷。现在,Linux 就可以单独对每个逻辑卷使用不同的文件系统进行格式化(Unix 编程哲学之“加一层”)
可以注意到硬盘 \(3\) 有一部分的空间是没有被使用的,通过逻辑卷可以轻松地管理这部分未使用的空间:将这部分空间加入到已有的卷组中,或者为它单独创建一个逻辑卷
Linux 的 LVM
Linux 的 LVM 有两个可用的版本:
- LVM 1:最初 LVM 于 1998 年发布,只能用于 Linux 2.4 版本,该 LVM 仅仅提供了基本的逻辑卷管理功能
- LVM 2:LVM 的更新版本,它在标准的 LVM 功能外提供了一些额外的功能
一般情况下建议使用 LVM 2,LVM 2 提供了以下的一些新功能:
快照
Linux LVM允许你在逻辑卷在线的状态下将其复制到另一个设备,这个功能被称为 “快照”。这个功能在备份数据时特别有用,比如:MySQL 的数据备份可以通过快照进行备份,而不需要显式地加锁。
LVM 1 创建的快照在创建完成之后就不能再写入数据,而 LVM 2 则允许创建可读写的快照,在这种情况下,如果某一个逻辑卷出现了问题,就可以直接将快照替换掉原来的逻辑卷,这个特性对于故障转移来讲特别有用
条带化
当 Linux LVM 文件写入逻辑卷时,文件中的数据块会被分散到多个物理硬盘上
条带化这一特性可以提高 IO 的访问速度,因为此时将数据的读写分散到了多个硬盘中。LVM 条带化和 RAID 条带化不同,LVM 条带化不提供用来创建容错环境的校验信息,这会增加文件由于磁盘故障而丢失的概率,并且单个磁盘的故障将会导致整个逻辑卷都无法使用
镜像
通过 LVM 安装文件系统不能确保文件系统不再出现问题,一旦出现问题,就有可能再也无法恢复
尽管 LVM 提供的快照功能提供了一些可能的帮助,但是对于某些情况快照功能并不能完全避免问题(比如涉及到大量数据的系统,自上次快照之后可能要存储上千条记录)。
解决这种问题的一个方案就是使用 LVM 镜像,镜像是一个实时更新的逻辑卷的完整副本,当创建镜像逻辑卷时,LVM 会将原始逻辑卷同步到镜像副本中。一旦同步完成,LVM 会为文件系统的每次写入都执行两次(一次写入住主逻辑卷,一次写入镜像逻辑卷),尽管降低了写入性能,但是提高了系统的可靠性
使用 Linux LVM
这里使用 LVM 2,如果没有安装,可以使用相关的软件安装工具安装 lvm2,对于 Ubuntu 来讲,可以执行如下的安装命令:
sudo apt install lvm2
定义物理卷
创建逻辑卷的第一步是定义物理卷,将硬盘上的物理分区转换为 Linux LVM 使用的物理卷。在这个过程中,可以使用 fdisk 来管理安装在系统上的任何存储设备上的分区。
首先,使用 fdisk 来查看磁盘的分区情况:
fdisk -l
可能会看到类似下面的输出:
…………………………
Disk /dev/sdc:8 GiB,8589934592 字节,16777216 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
Disk /dev/mapper/cs-root:12.5 GiB,13417578496 字节,26206208 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
Disk /dev/mapper/cs-swap:1.5 GiB,1610612736 字节,3145728 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
…………………………
可以看到,当前系统中存在一个名为 ‘/dev/sdc’ 的分区,并且这个分区目前还没有被格式化,现在,让我们把这个分区创建为基本的 Linux 的分区,可以使用 fdisk 的交互式 n 命令来添加该分区:

至此将 ‘/dev/sdc’ 转换为了基本的 Linux 分区,接下来将通过这个分区创建对应的物理卷,这个过程可以通过 pvcreate 命令来完成:
sudo pvcreate /dev/sdc
如果看到类似下面的输出信息,则说明已经创建了该分区对应的物理卷:
Physical volume "/dev/sdc" successfully created.
创建完成之后可以通过 pvdisplay 来查看当前的创建情况,对于当前的分区,可以执行如下的命令查看创建进度:
sudo pvdisplay /dev/sdc

创建卷组
创建物理卷之后,就需要将这些物理卷组合到一个卷组中,形成一个新的 “磁盘”。创建卷组可以使用 vgcreate 命令,如果希望创建一个名为 Vo11 的卷组,并将 /dev/sdc 添加到卷组中,可以执行如下的命令:
sudo vgcreate Vo11 /dev/sdc
在这个过程中会自动创建 Vo11 卷组,如果希望物理卷添加到已有的卷组中,可以使用 vgextend 命令,如下所示:
# 将 /dev/sdc 添加到 Vo10 卷组中
sudo vgextend Vo10 /dev/sdc
创建逻辑卷
Linux 使用逻辑卷来模拟物理分区,并在其中保存文件系统。Linux 会像处理物理分区一样处理逻辑卷,允许自定义逻辑卷中的文件系统,然后将文件系统挂载到虚拟目录上
要创建逻辑卷,可以使用 lvcreate 命令来完成,例如上文中已经创建的卷组,可以执行如下的命令创建一个逻辑卷:
# -l 指定逻辑卷占用卷组的空间大小,-n 指定创建的逻辑卷的名称
sudo lvcreate -l 100%FREE -n lvtest Vo11
创建完成之后,可以使用 lvdisplay 来查看创建的逻辑卷的详细情况:
sudo lvdisplay Vo11
创建文件系统
运行完 lvcreate 命令之后,逻辑卷就已经创建完成了,但是此时的逻辑卷还没有对应的文件系统。在一般物理分区上创建文件系统的命令在逻辑卷上同样有效。例如,如果希望给创建的逻辑卷设置为 ext4 文件系统,可以执行如下的命令:
sudo mkfs.ext4 /dev/Vo11/lvtest
创建了文件系统之后,就可以将这个逻辑卷挂载到虚拟目录中,和物理分区的使用一样,唯一需要注意的是需要使用特殊的路径来引用这个逻辑卷。如下所示:
# 将创建好的逻辑卷挂在到 /mnt/lxh_part,注意在挂载之前确保挂载点存在
# 即 /mnt/lxh_part 目录必须存在
sudo mount /dev/Vo11/lvtest /mnt/lxh_part
挂载之后,就可以像使用物理分区一样使用逻辑卷了
修改 fstab
为了避免每次启动系统都要手动挂载,可以在 fstab 中进行配置,使得系统在启动时自动挂载。如下所示:
#
# /etc/fstab
# Created by anaconda on Sun Jan 16 13:14:50 2022
#
# Accessible filesystems, by reference, are maintained under '/dev/disk/'.
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
/dev/mapper/cs-root / xfs defaults 0 0
UUID=e36a4b91-186c-48f0-850d-e3c90ebfeb20 /boot xfs defaults 0 0
/dev/mapper/cs-swap none swap defaults 0 0
# 逻辑卷的挂载配置
/dev/Vo11/lvtest /mnt/lxh_part ext4 defaults 0 0
有关 fstab 的配置可以参考:https://www.cnblogs.com/FatalFlower/p/15419794.html
修改 LVM
具体可以参考以下的相关命令:vgchange、vgremove、vgreduce、lvextend、lvreduce
如果可以的话,使用 LVM 的 GUI 工具是一个有用的手段
参考:
[1] https://www.cnblogs.com/gaojun/archive/2012/08/22/2650229.html
[2] 《Linux 命令行和 Shell 脚本编程大全》
Linux 逻辑卷管理的更多相关文章
- Linux逻辑卷管理器(LVM)
LVM基础 通过使用Linux的逻辑卷管理器(Logical Volume Manager, LVM),用户可以在系统运行时动态调整文件系统的大小,把数据从一块硬盘重定位到另一块硬盘,也可以提高I/O ...
- linux逻辑卷管理
近期在进行linux充电,依据网络资料自己整理的资料,分享一下 ---------------------------------------------------------- Linux逻辑卷管 ...
- Linux逻辑卷管理器concept
Linux逻辑卷管理concept-------------------------转载2013/10/09 通过使用Linux的逻辑卷管理器(Logical Volume Manager, LVM) ...
- linux逻辑卷管理(LVM)
1. 逻辑卷(LVM)的原理 LVM(Logical Volume Manager)逻辑卷管理 是在物理磁盘和文件系统的之间添加一个逻辑层,通过对底层物理磁盘的封装,以逻辑卷的方式呈现给上层应用,通过 ...
- Linux 逻辑卷管理LVM
LVM概述 Logical Volume Manager,逻辑卷管理 屏蔽了底层磁盘布局,便于动态调整磁盘容量 需要注意:/boot分区用于存放引导文件,不能应用LVM机制 LVM结构 目标:将sdb ...
- 【转】Linux逻辑卷管理
一. 前言 LVM是逻辑卷管理(Logical Volume Manager)的简称,它是建立在物理存储设备之上的一个抽象层,允许你生成逻辑存储卷,与直接使用物理存储在管理上相比,提供了更好灵活性.L ...
- linux逻辑卷管理 (LVM)(转)
1.什么是 LVM LVM 是逻辑盘卷管理(Logical Volume Manager)的简称,它是 Linux 环境下对磁盘分区进行管理的一种机制,LVM 是建立在硬盘和分区之上的一个逻辑层,来为 ...
- linux 逻辑卷管理 调整分区大小
测试机各种报错,创建个目录都报错,df看了一下,发现VolGroup-lv_root 100%,虚拟磁盘满了,怎么办呢 1,解决过程 # df -h //查看分区 # umount /home //取 ...
- linux 逻辑卷管理 /dev/mapper/VolGroup-lv_root 100%调整分区大小
1.解决过程 # df -h // 查看分区 # umount /home // 取消挂载 # e2fsck -f /dev/mapper/VolGroup-lv_home // 分区检测 ...
- CentOS6.5 linux 逻辑卷管理 调整分区大小
[root@localhost ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup-lv_root 50 ...
随机推荐
- Python中的可迭代对象和迭代器
1.可迭代对象 1.1.可迭代对象概念 可迭代对象,最直观的感觉就是可以使用for来循环迭代每一个元素.例如Python内置的类型:str.list.tuple.dict等类型的对象,都是可迭代对象. ...
- WebKit Insie: Active 样式表
WebKit Inside: CSS 样式表的匹配时机介绍了当 HTML 页面有不同 CSS 样式表引入时,CSS 样式表开始匹配的时机.后续文章继续介绍 CSS 样式表的匹配过程,但是在匹配之前,首 ...
- Elasticsearch 6.8.6
mac;centos;unix; 下载 wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.8.6. ...
- YbtOJ 「图论」第3章 最短路径
例题1.单源最短路径 dij 板子.(w36557658 原版 dij 代码! code #include<cmath> #include<queue> #include< ...
- Python:基础&爬虫
Python:基础&爬虫 Python爬虫学习(网络爬虫(又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另 ...
- TPshop商城的安装流程(windows)----超详细版
提前准备 phpStudy下载:https://www.xp.cn/download.html 选择适合自己的版本下载 TPshop商城源文件下载链接:https://pan.baidu.com/s/ ...
- 聊一聊 .NET高级调试 中的一些内存术语
一:背景 1. 讲故事 在高级调试的旅程中,经常会有一些朋友问我什么是 工作集(内存),什么是 提交大小,什么是 Virtual Size, 什么是 Working Set ...截图如下: 既然有很 ...
- 从根上理解elasticsearch(lucene)查询原理(2)-lucene常见查询类型原理分析
大家好,我是蓝胖子,在上一节我提到要想彻底搞懂elasticsearch 慢查询的原因,必须搞懂lucene的查询原理,所以在上一节我分析了lucene查询的整体流程,除此以外,还必须要搞懂各种查询类 ...
- Rong晔大佬教程学习(0):前言
2023-12-13 在安装了tinyriscv的工具链之后,本想着说去看那个技术文档,但是那个技术文档只是相当于一个"使用手册",而不是技术教程,所以说还是得去补一补计组的知识. ...
- N100低功耗win11安装wsl2当入门nas
前言 最近入了一台16gb+512gb的N100,想着用来存些资源,当个nas,偶尔要用用windows系统,所以想直接在这上面搞个虚拟机算了,WSL2似乎是一个不错的选择,下面介绍捣鼓的教程. 没用 ...