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(逻辑卷管理)结构中。以下是每个命令的解释:
- 创建物理卷
pvcreate /dev/sdc
解释:将 /dev/sdc 初始化为物理卷,使其可以被 LVM 管理。执行此命令后,LVM 将能够识别并使用该磁盘。这是使用 LVM 的第一步。
- 扩展卷组
vgextend vg01 /dev/sdc
解释:将新创建的物理卷 /dev/sdc 添加到现有的卷组 vg01 中。执行此命令后,卷组 vg01 的可用空间将增加,这样你可以在该卷组中创建新的逻辑卷,或者扩展现有的逻辑卷。
- 查看卷组信息
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
详细说明如下:
- 卸载文件系统
umount /data
解释:umount 命令用于卸载挂载在 /data 目录的文件系统。在扩展逻辑卷之前,必须确保它不在使用中,以避免数据损坏。
- 扩展逻辑卷
lvextend -l +100%FREE /dev/vg01/lvtest1
解释:
lvextend 命令用于扩展逻辑卷的大小。
-l +100%FREE 表示将逻辑卷扩展到卷组中所有可用的剩余空间。
/dev/vg01/lvtest1 是要扩展的逻辑卷的路径。
执行此命令后,逻辑卷的大小将增加,利用卷组中的全部空闲空间。
- 检查文件系统
e2fsck -f /dev/vg01/lvtest1
解释:
e2fsck 命令用于检查和修复 ext2/ext3/ext4 文件系统的错误。
-f 参数强制检查,即使文件系统看起来是干净的。这一步是确保文件系统没有错误,并准备好进行扩展。
- 调整文件系统大小
resize2fs /dev/vg01/lvtest1
解释:resize2fs 命令用于调整 ext2/ext3/ext4 文件系统的大小,使其匹配扩展后的逻辑卷大小。执行此命令后,文件系统将使用新的更大空间。
- 重新挂载逻辑卷
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)等。下面是每个命令的解释:
-
- 卸载文件系统
umount /dev/vg01/lvtest1
解释:umount 命令用于卸载挂载的文件系统。在这里,卸载逻辑卷 /dev/vg01/lvtest1 所挂载的文件系统(假设之前已挂载到某个目录,比如 /mnt/lvtest1)。这是删除逻辑卷前的必要步骤。
-
- 删除逻辑卷(LV)
lvremove /dev/vg01/lvtest1 -y
解释:lvremove 用于删除逻辑卷 lvtest1。/dev/vg01/lvtest1 是逻辑卷的路径,-y 参数表示跳过确认提示,直接删除。该操作不可逆,删除后逻辑卷及其数据将丢失。
- 3.删除卷组(VG)
vgremove /dev/vg01 -y
解释:vgremove 用于删除卷组 vg01。该操作必须在卷组中的所有逻辑卷(LV)删除后才能执行。-y 参数表示跳过确认提示,直接删除卷组。
-
- 删除物理卷(PV)
pvremove /dev/sdb /dev/sdc
解释:pvremove 用于删除物理卷标记,释放物理磁盘 /dev/sdb 和 /dev/sdc,使它们恢复到未分配的状态。执行此命令后,LVM 将不再管理这些磁盘。
- 5.查看当前设备信息
blkid
解释:blkid 命令用于列出所有块设备的信息,包括设备的 UUID、文件系统类型等。在执行删除操作后,可以用这个命令确认设备是否仍然存在,以及它们是否已被清除。
lsblk -f
解释:lsblk -f 命令会列出块设备及其文件系统类型。在删除 LVM 组件后,可以通过该命令检查设备是否已被移除,或者卷组和逻辑卷是否仍然存在。
-
- 查看 /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 替换为你的文件系统类型。