lvm管理磁盘过程记录

lvm管理磁盘过程记录.md

  • 0.参考文章
  • 一、使用lvm在Linux系统上进行磁盘管理
    • 1.安装 LVM 工具
    • 2.创建物理卷(PV)
    • 3.创建卷组(VG)
    • 4.创建逻辑卷(LV)
    • 5.格式化逻辑卷
    • 6.挂载使用
    • 7.开机自动挂载(可选)
  • 二、LVM的在线扩展
    • 1.缩减
    • 2.扩容
  • 三、LVM的删除
  • 案例
    • 1. 创建物理卷(PV)
    • 2.创建卷组(VG)
    • 3.创建逻辑卷(LV)
    • 4. 格式化逻辑卷
    • 5. 挂载逻辑卷
    • 6. 自动挂载(可选)


lvm管理磁盘过程记录

0.参考文章

https://blog.csdn.net/qq_27281257/article/details/81603410
https://blog.csdn.net/lovektm/article/details/78461453

一、使用lvm在Linux系统上进行磁盘管理

以下为使用 LVM(Logical Volume Manager)在 Linux 系统上进行磁盘管理的步骤,主要创建了物理卷(PV)、卷组(VG)和逻辑卷(LV)。让我逐步解释这些命令及其作用。

1.安装 LVM 工具

rpm -qa |grep lvm
  • 解释:这条命令用来检查系统上是否已经安装了与 LVM 相关的包。rpm -qa 列出所有已安装的 RPM 包,而 grep lvm 过滤出包含 lvm 字样的包。
yum install lvm2 -y 
  • 解释:这条命令通过 yum 包管理器安装 lvm2,这是 LVM 的用户空间工具包,用于管理逻辑卷。

2.创建物理卷(PV)

pvcreate /dev/sdb /dev/sdc
  • 解释:pvcreate 将物理磁盘(在这里是 /dev/sdb 和 /dev/sdc)初始化为物理卷(PV),这是 LVM 管理的最底层基础。
pvs
  • 解释:列出系统中的物理卷信息,包括 PV 的名称、卷组(VG)、物理卷的大小等。它可以帮助你查看当前系统中有哪些可用的物理卷。

3.创建卷组(VG)

vgcreate -s 16M vg01 /dev/sdb
  • 解释:vgcreate 用来创建卷组(VG),卷组是由一个或多个物理卷组成的逻辑存储池。在这里:
    • vg01 是新建的卷组名称。
    • /dev/sdb 是要加入卷组的物理卷。
    • -s 16M 是指定物理扩展块(PE,Physical Extent)的大小为 16MB。PE 是 LVM 中分配逻辑卷的最小单位。
vgs
  • 解释:列出系统中的卷组信息,包括卷组的名称、物理卷数量、逻辑卷数量、空闲空间等。
vgs -o +vg_free_count,vg_extent_count
  • 解释:这条命令会在默认输出的基础上,显示额外的信息:卷组中的空闲 PE 数量(vg_free_count)和总的 PE 数量(vg_extent_count),这可以帮助你知道卷组还剩多少空间可以分配。
vgdisplay
  • 解释:显示卷组的详细信息,包括卷组名称、卷组大小、已分配空间、可用空间、物理卷数量、PE 大小等。

4.创建逻辑卷(LV)

lvcreate -l 8191 -n lvtest1 vg01
  • 解释:lvcreate 用来创建逻辑卷(LV)。逻辑卷是 LVM 中用户实际使用的磁盘分区。在这里:
    • -l 8191 表示创建一个大小为 8191 个 PE 的逻辑卷。
    • -n lvtest1 表示逻辑卷的名称为 lvtest1。
    • vg01 是逻辑卷所属的卷组。
lvs
  • 解释:列出系统中的逻辑卷信息,包括逻辑卷的名称、所属卷组、大小等。

5.格式化逻辑卷

创建完逻辑卷 lvtest1 后,你需要对其进行格式化,以便能够在操作系统中使用它。LVM 的逻辑卷在创建时并没有特定的文件系统,所以在使用前必须格式化为你需要的文件系统类型。

  • 格式化逻辑卷(ext4)

目前了解是这个格式用得比较多,可以使用df -T或lsblk -f查看系统中使用的是哪一种。

# 方式一
df -T# 方式二
lsblk -f

格式化命令如下:

mkfs.ext4 /dev/vg01/lvtest1
  • 格式化逻辑卷(xfs)
mkfs.xfs /dev/vg01/lvtest1

6.挂载使用

# 创建挂载点
mkdir /data# 挂载逻辑卷
mount /dev/vg01/lvtest1 /data# 验证
df -h

7.开机自动挂载(可选)

如果你希望在系统重启后逻辑卷自动挂载,可以编辑 /etc/fstab 文件,添加一行配置, 有两种挂载方式。

  • 使用设备路径(如 /dev/vg01/lvtest1)
/dev/vg01/lvtest1  /data  ext4  defaults  0  0

根据你使用的文件系统类型(如 ext4 或 xfs),修改对应字段。

优点:简洁易读:设备路径比较直观,容易理解。适用于不常变动的设备:如果你的设备路径不会变动(例如虚拟机环境或硬盘较少的系统),使用路径是个简单的选择。
缺点:设备重命名问题:在某些情况下,设备路径可能会因为硬件变化(如插入新磁盘或更改设备顺序)而发生变化,这可能导致系统找不到对应的设备。

  • 使用 UUID(推荐方式)
UUID=123e4567-e89b-12d3-a456-426614174000  /data  ext4  defaults  0  0

优点:稳定性更高:UUID 是唯一的,不会随着设备路径的变化而改变。即使设备路径变动(例如 /dev/vg01/lvtest1 变为 /dev/vg02/lvtest1),UUID 依然保持不变,确保文件系统能够正确挂载。避免设备顺序变化问题:当你有多个硬盘或设备,系统在启动时重新分配设备路径时,UUID 可以确保挂载不会失败。

缺点:可读性较低:UUID 由一串长字符组成,不如设备路径直观易读。

  • 如何获取 UUID:

你可以使用 blkid 命令来查看逻辑卷的 UUID:

# 查看uuid
blkid /dev/vg01/lvtest1
或者
lsblk -f /dev/vdb1# 输出示例
/dev/vg01/lvtest1: UUID="123e4567-e89b-12d3-a456-426614174000" TYPE="ext4"

将输出的 UUID 替换到 /etc/fstab 中。

二、LVM的在线扩展

1.缩减

  • xfs缩减
####缩容##缩减逻辑卷,xfs不支持,缩减前先unmount##安装备份工具
yum install -y xfsdump##备份
xfsdump -f /home/data.dump /data##卸载
umount /dev/vg01/lvtest1##缩减
lvresize -L 7G /dev/vg01/lvtest1
lvreduce -L 7G /dev/vg01/lvtest1##格式化以更新到最新大小
mkfs.xfs -f /dev/vg01/lvtest1##挂载
mount /dev/vg01/lvtest1 /data##恢复
xfsrestore -f /home/data.dump /data
  • ext4缩减
umount /data
e2fsck -f /dev/vg01/lvtest1  #检查磁盘错误 (针对ext4执行) 
resize2fs /dev/vg01/lvtest1 10G  #更新逻辑卷信息(针对ext4执行)
lvresize -L 10G /dev/vg01/lvtest1  #重新设定大小
mount /dev/vg01/lvtest1 /data

2.扩容

  • 扩容前准备
pvcreate /dev/sdc
vgextend vg01 /dev/sdc
vgs -o +vg_free_count,vg_extent_count

这些命令的步骤是将一块新物理磁盘(/dev/sdc)添加到现有的 LVM(逻辑卷管理)结构中。以下是每个命令的解释:

  1. 创建物理卷
pvcreate /dev/sdc

解释:将 /dev/sdc 初始化为物理卷,使其可以被 LVM 管理。执行此命令后,LVM 将能够识别并使用该磁盘。这是使用 LVM 的第一步。

  1. 扩展卷组
vgextend vg01 /dev/sdc

解释:将新创建的物理卷 /dev/sdc 添加到现有的卷组 vg01 中。执行此命令后,卷组 vg01 的可用空间将增加,这样你可以在该卷组中创建新的逻辑卷,或者扩展现有的逻辑卷。

  1. 查看卷组信息
vgs -o +vg_free_count,vg_extent_count

解释:vgs 命令用于显示卷组的详细信息,包括总大小、已用空间和可用空间等。-o +vg_free_count,vg_extent_count 选项用于额外显示卷组中可用的物理块数量和总的物理块数量。这有助于确认扩展后卷组的状态。

  • xfs扩容(xfs文件格式)

xfs扩容,xfs可以不卸载unmount

lvextend -l +100%FREE /dev/vg01/lvtest1
###lvextend -L 20G /dev/vg01/lvtest1
xfs_growfs /dev/vg01/lvtest1
df -Th# 1. lvextend 用于扩展逻辑卷的大小。
### -l +100%FREE 表示将逻辑卷 lvtest1 扩展至卷组 vg01 中所有剩余的可用空间。
### /dev/vg01/lvtest1 是你要扩展的逻辑卷。
lvextend -l +100%FREE /dev/vg01/lvtest1### 如果你想扩展到一个特定的大小,可以用下面的命令代替:
### 解释:这条命令将逻辑卷 lvtest1 的大小扩展到 20 GB。
###lvextend -L 20G /dev/vg01/lvtest1# 2. 扩展 XFS 文件系统
###解释:xfs_growfs 用于扩展 XFS 文件系统的大小。这个命令在逻辑卷扩展后运行,以确保文件系统能够使用新分配的空间。XFS 文件系统支持在线扩展,所以可以在逻辑卷挂载时执行此操作。
xfs_growfs /dev/vg01/lvtest1# 3.查看磁盘使用情况
###验证操作:通过 df -Th 检查文件系统的实际大小,确保扩展成功。
df -Th
  • ext4扩容(ext4文件格式)

扩容逻辑卷,扩容前需要先unmount后,扩容不影响扩容前磁盘里面的内容

umount /data
lvextend -l +100%FREE /dev/vg01/lvtest1
e2fsck -f /dev/vg01/lvtest1
resize2fs /dev/vg01/lvtest1
mount /dev/vg01/lvtest1 /data# 1.解释:umount 命令卸载挂载在 /data 的文件系统。在进行文件系统的扩展之前,通常需要卸载文件系统,以防止正在使用时发生错误。
umount /data# 2. 扩展逻辑卷
### lvextend 用于扩展逻辑卷的大小。
### -l +100%FREE 表示将逻辑卷 lvtest1 扩展至卷组 vg01 中所有剩余的可用空间。
lvextend -l +100%FREE /dev/vg01/lvtest1# 3. 检查文件系统
### 解释:e2fsck 用于检查并修复 ext 文件系统的错误。
### -f 选项强制检查,即使文件系统被认为是干净的。这是一个安全措施,以确保文件系统没有错误,准备好扩展。
e2fsck -f /dev/vg01/lvtest1# 4. 调整文件系统大小
### 解释:resize2fs 用于调整 ext4 文件系统的大小,使其适应扩展后的逻辑卷。这个命令确保文件系统使用新增加的存储空间。
resize2fs /dev/vg01/lvtest1# 5. 重新挂载文件系统
mount /dev/vg01/lvtest1 /data

详细说明如下:

  1. 卸载文件系统
umount /data

解释:umount 命令用于卸载挂载在 /data 目录的文件系统。在扩展逻辑卷之前,必须确保它不在使用中,以避免数据损坏。

  1. 扩展逻辑卷
lvextend -l +100%FREE /dev/vg01/lvtest1

解释:
lvextend 命令用于扩展逻辑卷的大小。
-l +100%FREE 表示将逻辑卷扩展到卷组中所有可用的剩余空间。
/dev/vg01/lvtest1 是要扩展的逻辑卷的路径。

执行此命令后,逻辑卷的大小将增加,利用卷组中的全部空闲空间。

  1. 检查文件系统
e2fsck -f /dev/vg01/lvtest1

解释:
e2fsck 命令用于检查和修复 ext2/ext3/ext4 文件系统的错误。
-f 参数强制检查,即使文件系统看起来是干净的。这一步是确保文件系统没有错误,并准备好进行扩展。

  1. 调整文件系统大小
resize2fs /dev/vg01/lvtest1

解释:resize2fs 命令用于调整 ext2/ext3/ext4 文件系统的大小,使其匹配扩展后的逻辑卷大小。执行此命令后,文件系统将使用新的更大空间。

  1. 重新挂载逻辑卷
mount /dev/vg01/lvtest1 /data

解释:mount 命令将扩展后的逻辑卷重新挂载到 /data 目录,以便可以使用新的存储空间。

三、LVM的删除

umount /dev/vg01/lvtest1
lvremove /dev/vg01/lvtest1 -y
vgremove /dev/vg01 -y
pvremove /dev/sdb /dev/sdcblkid
lsblk -fmore /etc/fstab

这里的步骤是删除 LVM(逻辑卷管理)配置,包括卸载文件系统、删除逻辑卷(LV)、卷组(VG)、物理卷(PV)等。下面是每个命令的解释:

    1. 卸载文件系统
umount /dev/vg01/lvtest1

解释:umount 命令用于卸载挂载的文件系统。在这里,卸载逻辑卷 /dev/vg01/lvtest1 所挂载的文件系统(假设之前已挂载到某个目录,比如 /mnt/lvtest1)。这是删除逻辑卷前的必要步骤。

    1. 删除逻辑卷(LV)
lvremove /dev/vg01/lvtest1 -y

解释:lvremove 用于删除逻辑卷 lvtest1。/dev/vg01/lvtest1 是逻辑卷的路径,-y 参数表示跳过确认提示,直接删除。该操作不可逆,删除后逻辑卷及其数据将丢失。

  • 3.删除卷组(VG)
vgremove /dev/vg01 -y

解释:vgremove 用于删除卷组 vg01。该操作必须在卷组中的所有逻辑卷(LV)删除后才能执行。-y 参数表示跳过确认提示,直接删除卷组。

    1. 删除物理卷(PV)
pvremove /dev/sdb /dev/sdc

解释:pvremove 用于删除物理卷标记,释放物理磁盘 /dev/sdb 和 /dev/sdc,使它们恢复到未分配的状态。执行此命令后,LVM 将不再管理这些磁盘。

  • 5.查看当前设备信息
blkid

解释:blkid 命令用于列出所有块设备的信息,包括设备的 UUID、文件系统类型等。在执行删除操作后,可以用这个命令确认设备是否仍然存在,以及它们是否已被清除。

lsblk -f

解释:lsblk -f 命令会列出块设备及其文件系统类型。在删除 LVM 组件后,可以通过该命令检查设备是否已被移除,或者卷组和逻辑卷是否仍然存在。

    1. 查看 /etc/fstab
more /etc/fstab

解释:more /etc/fstab 命令用于查看系统的文件系统挂载配置文件。如果 /dev/vg01/lvtest1 之前有配置为开机自动挂载(比如写入到 /etc/fstab),你需要手动删除相关的挂载项,以防止系统启动时尝试挂载已删除的卷。

案例

如何使用lvm将两块盘合并一起使用

要使用 LVM 将两块磁盘合并到一起,可以通过以下步骤将它们组合成一个逻辑卷(LV),这样系统会将它们视为一个单独的大容量存储空间。以下是步骤概述:

  • 步骤概览
    • 创建物理卷(PV)
    • 创建卷组(VG)
    • 创建逻辑卷(LV)
    • 格式化逻辑卷
    • 挂载逻辑卷

假设你有两个磁盘 /dev/sdb 和 /dev/sdc,并且你希望将它们合并为一个逻辑卷。

1. 创建物理卷(PV)

使用 pvcreate 命令将两个磁盘初始化为物理卷:

pvcreate /dev/sdb /dev/sdc

这一步将 /dev/sdb 和 /dev/sdc 转换为 LVM 可以使用的物理卷。

2.创建卷组(VG)

创建一个卷组,将两个物理卷添加到卷组中。你可以使用 vgcreate 命令:

vgcreate vg_data /dev/sdb /dev/sdc

vg_data 是新创建的卷组名称,你可以自定义这个名字。在这一步中,LVM 会将两个物理卷合并为一个卷组。

3.创建逻辑卷(LV)

使用 lvcreate 命令在卷组中创建一个逻辑卷。可以通过 -l 100%FREE 来使用卷组中的全部空间:

lvcreate -l 100%FREE -n lv_data vg_data
  • -l 100%FREE 表示使用卷组中所有可用的空间。
  • -n lv_data 表示创建的逻辑卷名称为 lv_data。
  • vg_data 是之前创建的卷组名称。

4. 格式化逻辑卷

现在你需要对新创建的逻辑卷进行格式化,使其能够存储数据。例如,使用 ext4 文件系统格式化:

mkfs.ext4 /dev/vg_data/lv_data

如果你想使用其他文件系统,比如 xfs,可以使用:

mkfs.xfs /dev/vg_data/lv_data

5. 挂载逻辑卷

创建一个挂载点并将逻辑卷挂载到系统中:

mkdir /mnt/data
mount /dev/vg_data/lv_data /mnt/data

这样,你就可以在 /mnt/data 目录下使用这个合并后的逻辑卷了。

6. 自动挂载(可选)

如果你希望在系统重启后自动挂载逻辑卷,可以将它添加到 /etc/fstab 中。编辑 /etc/fstab 文件,添加以下行:

/dev/vg_data/lv_data  /mnt/data  ext4  defaults  0  0

将 ext4 替换为你的文件系统类型。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/55063.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity 的Event的Use()方法

对于Event的Use方法,其在调用后将不会再判断同类型的事件 这种情况下,第二个MosueDown不会进入,因为已经Use 如果把Use注释掉 依旧能进入第二个MosueDown 也就是说当使用了Use方法,相同的事件类型不会进第二遍

【反素数】

题目 思路 首先分析 的性质 一定是 中约数最大的一定是约数同是最大的数字中值中最小的进一步挖掘性质,紧贴枚举的做法 约数最大值最小(也决定了层数、其它约束),是枚举的比较条件实现上述目的,枚举的质数种类在大小…

Tensorflow 2.0 cnn训练cifar10 准确率只有0.1 [已解决]

cifar10 准确率只有0.1 问题描述踩坑解决办法 问题描述 如果你看的是北京大学曹健老师的tensorflow2.0,你在class5的部分可能会遇见这个问题 import matplotlib.pyplot as plt import tensorflow as tf from tensorflow.keras.layers import Dense, Dropout,MaxPooling2D,Fla…

VS Code breadcrumbs view 是什么

VS Code breadcrumbs view 是什么 正文 正文 breadcrumbs view:中文翻译,面包屑视图,乍听起来感觉十分抽象。这里我们来解释一下这个视图的含义? 如下图所示,红色框标记的部分就是 这个视图可以显示出当前打卡文件所…

新手答疑 | 零基础该怎么学习嵌入式?嵌入式Linux学习路线是什么?嵌入式开发板推荐?

很多初学者想要涉足嵌入式Linux开发领域,但往往在刚入门阶段,会因为初次接触到大量复杂的概念术语和深奥的技术文档感到压力重重,面对这些内容不知从何下手,感到十分迷茫,网上的内容也纷繁复杂,没有清晰的学…

从 Kafka 到 WarpStream: 用 MinIO 简化数据流

虽然 Apache Kafka 长期以来一直是流数据的行业标准,但新的创新替代方案正在重塑生态系统。其中之一是 WarpStream,它最近在 Confluent 的所有权下进入了新的篇章。此次收购进一步增强了 WarpStream 提供高性能、云原生数据流的能力,巩固了其…

SAP Message - self-explanatory 自身说明

SAP Message 解释、创建和应用可见如下文章:SAP Abap】SE91 - SAP MESSAGE 消息类创建与应用-CSDN博客 SE91 SAP消息类型 - tongxiaohu - 博客园 这里主要想聊一下常用的SE91 中不常用的功能 - 自身说明 选项的作用。 以 VF - 004 为例: 我们都知道自…

2024双十一买啥最划算?2024双十一五款值得入手的好物入手

2024双十一购物狂欢节将至,还在为买什么而纠结吗?这里为你入手五款值得入手的好物。从生活必备到时尚单品,涵盖多个领域,让你在双十一以划算的价格买到心仪之物,开启品质生活新旅程。 一、西圣find可视挖耳勺 入手理…

毕业设计选题:基于ssm+vue+uniapp的校园订餐小程序

开发语言:Java框架:ssmuniappJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:M…

【补充】倒易点阵定义

晶体点阵:晶体内部结构在三维空间周期平移的客观存在的数学抽象,反映晶体实际原子排列。 倒易点阵:通过对晶体的正点阵进行傅里叶变换得到的,其中正点阵中每个阵点的位置矢量方向代表晶面族的法向,位置矢量的长度是晶…

CSS04-Chrome调试工具

Chrome 浏览器提供了一个非常好用的调试工具,可以用来调试我们的 HTML结构和 CSS 样式。

wpf如何进行数据绑定与动态数据操作?

前面两篇博文,我们比较清楚的介绍了开启wpf项目已经如何生成和使用事件来操作控件,这一篇到了我们把数据放进来的时候了,没有数据实际上任何软件都是没有灵魂的,下面我们详细介绍。 文章原出处:https://blog.csdn.net…

工作笔记20240927——vscode + jlink调试

launch.json的配置,可以用的 {"name": "Debug","type": "cppdbg","request": "launch","miDebuggerPath": "./arm-gnu-toolchain-12.2.rel1-x86_64-arm-none-eabi/bin/arm-none-eabi-g…

Java 入门指南:并发设计模式 —— Copy-on-Write 模式

文章目录 Copy-On-Write工作原理Copy-On-Write 的应用场景Java 中的 CopyOnWriteArrayListCopyOnWriteArrayList 的特点 示例代码Copy-On-Write 的优缺点 Copy-On-Write CopyOnWrite(写时复制,简称COW)是一种在计算机领域中广泛应用的优化策…

Go函数式编程与闭包

1. 什么是函数式编程 函数式编程(Functional Programming)是一种编程范式,它将计算视为数学函数的求值,强调使用高阶函数和不可变数据。在函数式编程中,函数是第一类公民,意味着函数可以像其他数据类型一样…

自动化办公-Python-os模块的使用

os.path 模块的使用 在指定文件路径时,由于操作系统的差异,直接使用硬编码的路径可能会导致程序在不同平台上无法正常运行。为了解决这个问题,Python 提供了 os.path 模块,它包含了一系列用于路径操作的函数,可以帮助您…

Python:lambda 函数详解 以及使用

一、lambda 语法 lambda 函数的语法只包含一个语句,表现形式如下: lambda [arg1 [,arg2,.....argn]]:expression 其中,lambda 是 Python 预留的关键字,[arg…] 和 expression 由用户自定义。 具体如下: [arg…] 是参数列表&#…

Java2 实用教程(第6版)习题2 第五题

五、编程题 1、编写一个应用程序,给出汉字“你”“我”“他”在Unicode表中的位置。 public class F2_1 {public static void main(String args[]){char ch1你,ch2我,ch3他;System.out.println("\""ch1"\"的位置"(int)ch1);System.…

Unity开发绘画板——01.前言

在做这个之前其实是想研究一下在Unity中交互雪的实现,交互雪顾名思义就是可以进行交互的雪,玩家角色从雪上走过时雪被踩凹陷的效果;交互雪的一种实现方案就是将地面看做一个画板,将玩家角色的躯体看做笔刷,将角色经过的…

钉钉如何请求webhook发送信息

代码:js const myHeaders new Headers(); myHeaders.append("Content-Type", "application/json");const raw JSON.stringify({"at": {"atMobiles": ["180xxxxxx"],"atUserIds": ["user123&qu…