一、LVM基本组成
LVM(Logical Volume Manager,逻辑卷管理)逻辑卷管理器是负责管理物理卷、卷组和逻辑卷的软件层。它提供了创建、调整和管理这些组件的命令和工具,使得用户能够灵活地调整和管理磁盘空间。
1.物理卷(PV,Physical Volume)
物理卷是LVM识别和管理的基本单位,它通常是硬盘分区或整个硬盘。物理卷可以是硬盘、SSD、RAID组等。
2.卷组(VG,Volume Group)
卷组是由一个或多个物理卷组成的逻辑磁盘。它可以跨越多个物理卷,通过添加或移除物理卷来扩展或缩小卷组的容量。卷组是LVM中的基本管理单元。
3.逻辑卷(LV,Logical Volume)
逻辑卷是在卷组中创建的逻辑磁盘分区。逻辑卷的大小可以根据需要进行调整,并且可以动态地进行快照和迁移。用户可以将逻辑卷格式化并挂载到系统的目录中以使用存储空间。
LVM在Linux的磁盘管理下的位置图如下:
依次为:disk(磁盘) -> partition(分区) -> PV(物理卷) -> VG(卷组) -> LV(逻辑卷) -> fs(文件系统)
二、磁盘分区
在Linux中,磁盘是通过分区来使用的。分区是将一个硬盘划分成几个逻辑部分来使用,在每个分区中可以存储不同的文件系统。因此,在挂载磁盘之前,我们需要先对磁盘进行分区。磁盘分区的过程可以通过命令行工具或图形界面工具来完成。
常用的磁盘分区工具有:
cfdisk:命令行工具,适用于创建主分区和扩展分区,支持MBR和GPT分区表。
fdisk:命令行工具,适用于创建主分区和扩展分区,支持MBR分区表。
gdisk:命令行工具,适用于创建主分区、扩展分区和逻辑分区,支持GPT分区表。
gparted:图形界面工具,适用于创建主分区、扩展分区和逻辑分区,支持MBR和GPT分区表。
分区的目的是将一个硬盘划分成多个逻辑部分,每个部分可以单独使用和管理。当然,分区并不是必需的,我们也可以直接将整个硬盘作为一个单一的分区进行挂载。
三、文件系统
在Linux中,文件系统是挂载磁盘的重要概念。文件系统是指一种组织数据的方式,可以帮助我们在磁盘上存储和管理文件。常见的Linux文件系统有ext2、ext3、ext4、XFS等。
(1)ext2(第二扩展文件系统):是 Linux 最早引入的日志文件系统之一。它使用索引节点(inode)来管理文件和目录,并使用位图来管理磁盘块的分配。然而,ext2 没有日志功能,这使得在发生意外掉电或系统崩溃时恢复文件系统变得较慢。
(2)ext3(第三扩展文件系统):是 ext2 文件系统的升级版本。它引入了日志功能,使用日志记录(journaling)来跟踪文件系统操作。这样,在系统异常关机后可以更快地进行恢复,减少数据丢失的风险。与 ext2 相比,ext3 提供了更好的可靠性和性能。
(3)ext4(第四扩展文件系统):是 ext3 文件系统的进一步改进和扩展。它增强了文件系统的大小和性能,并支持更大的文件和分区。ext4 引入了多块分配、延迟分配和其他改进,以提高文件系统的性能和可靠性。它是目前最常用的 Linux 文件系统之一。
(4)XFS:是一个高性能的日志文件系统,最初由 SGI 开发。它设计用于处理大型文件和大容量存储,并针对高吞吐量的工作负载进行了优化。XFS 支持快速分配和回收磁盘空间,并具有出色的可扩展性和鲁棒性。它被广泛用于服务器环境和高性能计算领域。
在挂载磁盘之前,我们需要先在磁盘上创建文件系统。创建文件系统的命令为mkfs。
四、实操
1.创建分区
(1)使用lsblk命令查看新加入的磁盘信息
上述中我们可以看到vda磁盘挂载的是根目录并且已经有了一个分区为vda1,而vdb磁盘暂时还没有挂载任何目录并且没有分区信息,所以vdb就是系统新增的磁盘。
(2)fdisk -l命令查看系统中磁盘分区详细信息
包括磁盘设备名称、分区表类型、起始扇区、结束扇区、总扇区数等。
(3)使用fdisk分区新磁盘,并将分区标记为Linux文件系统类型(8e)
命令:sudo fdisk /dev/vdb
说明:在此对新增的磁盘500GB做了两个分区第一个是300GB,第二个是200GB.
Command (m for help): n Partition type p primary (0 primary, 0 extended, 4 free) e extended (container for logical partitions) Select (default p): p Partition number (1-4, default 1): 1 First sector (2048-209715199, default 2048): Last sector, +sectors or +size{K,M,G,T,P} (2048-209715199, default 209715199): +300G Created a new partition 1 of type 'Linux' and of size 300 GiB. Command (m for help): n Partition type p primary (1 primary, 0 extended, 3 free) e extended (container for logical partitions) Select (default p): Using default response p. Partition number (2-4, default 2): First sector (629147648-1048575999, default 629147648): Last sector, +sectors or +size{K,M,G,T,P} (629147648-1048575999, default 1048575999): Created a new partition 2 of type 'Linux' and of size 200 GiB. |
磁盘分区类型:
说明:
n: 创建新分区。出现选择分区类型的提示时,默认选择主分区(primary)。
p: 选择分区类型为 "p",即主分区。
1: 输入分区号码为 "1",表示创建第一个分区,如果不选默认就是1。
First sector: 输入第一个扇区的起始位置,默认值为 2048。你可以保持默认值(按 Enter 键),这样分区将从第一个可用扇区开始。
Last sector: 输入最后一个扇区的位置,可以输入结束位置或者分区大小。默认值为设备的最大扇区数(2048-209715199)。你可以输入具体的扇区数或者可选的单位表示分区大小(如 "100G" 表示 100GB)。根据你的输入,分区大小将为 100 GiB。
t: 更改分区类型。选择分区编号为 1 的分区。
8e: 设置分区类型为 8e,表示 LVM 文件系统类型。
w: 保存并写入分区表更改。
(4)查看分区情况
fdisk -l /dev/vdb
2.物理卷(PV)
(1)列出可作为PV的设备
命令:lvmdiskscan
从上图可以看到只有/dev/vdb1、/dev/vdb2可以用于创建PV,所以下面我们可以对/dev/vdb1、/dev/vdb2创建PV。
(2)使用pvcreate创建pv
语法:pvcreate 磁盘分区1 磁盘分区2
pvcreate /dev/vdb1 /dev/vdb2
(3)查看当前所有pv分区信息
可以通过pvs、pvscan、pvdisplay这三个命令查看pv信息。
3.卷组(VG)
(1)创建卷组
语法:vgcreate 卷组名称 磁盘分区
如:vgcreate vg_dizuo_ll /dev/vdb1
创建卷组vg_dizuo_ll,并把物理卷 /dev/vdb1加入该卷组。
(2)查看卷组信息
vgs、vgscan、vgdisplay
4.逻辑卷(LV)
(1)创建逻辑卷
语法:lvcreate -l +100%FREE <vg_name> -n <lv_name>
比如:将在卷组 "vg_dizuo_ll" 中创建一个名为 "lv_dizuo_1" 的逻辑卷,并使用卷组中的所有可用空闲空间。
lvcreate -l +100%FREE vg_dizuo_ll -n lv_dizuo_1
(2)查看逻辑卷
lvs、lvscan、lvdisplay
5.格式化并挂载逻辑卷
(1)查看磁盘信息
lsblk
可以看见逻辑卷已经成功在磁盘上创建。
(2)格式化逻辑卷
mkfs -t ext4 /dev/vg_dizuo_ll/lv_dizuo_1
或
mkfs.ext4 /dev/vg_dizuo_ll/lv_dizuo_1
· mkfs:表示创建文件系统的意思。
· -t ext4:指定要创建的文件系统类型为 ext4。
(3)挂载逻辑分区
mkdir /datanew
mount /dev/vg_dizuo_ll/lv_dizuo_1 /datanew
注意:不能挂载当前目录下已经存在数据的目录,一定要是空目录,否则可能会导致已存在目录下的文件和子目录被隐藏。
(4)验证挂载是否成功,使用df -h命令查看所有文件系统的储存器使用情况
df -h
出现如下图所示:即成功的将/dev/vg_dizuo_ll/lv_dizuo_1的逻辑分区挂载到/datanew目录下
五、将逻辑卷挂载到原有/data目录
1.拷贝/data目录到新硬盘/datenew目录
cp -a /data/* /datanew
2.取消磁盘挂载
umount /dev/vg_dizuo_ll/lv_dizuo_1
3.备份/data
mv /data /dataold
确定后续服务没问题之后,可以将/dataold目录删除。
4.重新挂载
mkdir /data
mount /dev/vg_dizuo_ll/lv_dizuo_1 /data
5.验证是否挂载成功
df -h
6.永久挂载(重启不失效)
永久挂载:通过修改 /etc/fstab文件,实现永久挂载。防止重启的时候挂在的目录失效。
vim /etc/fstab
添加如下一行:
/dev/vg_dizuo_ll/lv_dizuo_1 /data ext4 defaults 1 0
说明:
· /dev/vg_dizuo_ll/lv_dizuo_1 指定了待挂载的源设备或逻辑卷。在此例中,它指向名为lv_dizuo_1的逻辑卷,该逻辑卷属于名为vg_dizuo_ll的卷组。
· /data: 这是指定的挂载点,也就是将设备挂载到文件系统中的哪个目录下。
· ext4: 这是设备的文件系统类型,表示该设备采用 ext4 文件系统格式。
· defaults: 这里列出了用于挂载的选项。defaults 表示使用默认的挂载选项,包括读写权限等。
· 第五字段(dump备份标志):
-
非零正整数:通常设为
1
或更大数值,表示应该使用dump
命令定期备份这个文件系统。数值越大,表示备份的优先级相对较低。具体的备份频率和计划通常由系统管理员在备份脚本或计划任务中设定,与/etc/fstab
中的数值对应。注意:现代Linux系统中,使用
dump
进行备份的情况已经较少见,许多管理员转而使用其他更现代、功能更丰富的备份工具(如rsync
、tar
配合cron
,或者专用的备份软件)。因此,这一字段在很多环境中可能被设置为0
,表示不使用dump
进行备份。
· 第六字段(检查顺序):
-
非零正整数:用于指定在系统启动时,
fsck
(文件系统一致性检查)工具检查文件系统的优先级。较小的数字表示较高的检查优先级。通常,根文件系统(/
)会被赋予最小的非零值(如1
),以确保其首先被检查,因为它是系统启动过程中最重要的文件系统。其他非根文件系统则可以根据其重要性和数据敏感性设置适当的优先级。举例来说,如果系统中有三个需要检查的文件系统,它们在
/etc/fstab
中的第六字段可能会分别设置为1
、2
和3
,表示检查顺序依次为:根文件系统、第二个重要文件系统、第三个重要文件系统。注意:对于大多数现代Linux发行版,如果文件系统使用的是日志型文件系统(如
ext4
、XFS
等),它们通常在系统运行过程中就能自我修复,因此在启动时通常不需要进行fsck
检查。对于这些文件系统,第六字段通常设置为0
。
参考:Linux下的磁盘管理之LVM详解及lvm的常用磁盘操作命令_lvm命令-CSDN博客