逻辑卷管理
1. LVM 介绍
LVM( Logical Volume Manager )是一个device mapper框架,用来提供逻辑卷管理能力。逻辑卷存在于块设备和具体文件系统之间,可以让上层应用忽略块设备的物理布局,达到更方便更灵活使用设备的目的。
使用LVM的正常流程:
- 将物理设备映射为物理卷
- 将物理卷组成逻辑卷组
- 在逻辑卷组中划分逻辑卷
- 使用逻辑卷,格式化文件系统
2. 物理卷管理
2.1 创建物理卷
[root@localhost ~]# pvcreate /dev/vdb
Physical volume "/dev/vdb" successfully created.
通过pvcreate命令创建物理卷,如果目标设备中已存在文件系统会提示是否需要格式化
WARNING: ext4 signature detected on /dev/vdb at offset 1080. Wipe it? [y/n]:
创建时默认会以设备目前可用最大大小创建
2.2 查看物理卷
pvdisplay 命令用于显示物理卷(Physical Volume)的属性信息,包括物理卷的名称、UUID、大小、状态、分配情况等等。
[root@localhost ~]# pvdisplay
--- Physical volume ---
PV Name /dev/vdb
VG Name test
PV Size 200.00 GiB / not usable 4.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 51199
Free PE 51199
Allocated PE 0
PV UUID gQB42U-IKt2-517n-RB3q-p9ob-bAz7-Ggvjtd
使用 pvdisplay 命令时,可以不带任何参数,直接执行该命令,它会列出系统中所有的物理卷的信息。也可以指定一个或多个物理卷的名称作为参数,只显示指定物理卷的信息。
pvdisplay 命令的输出结果包括以下信息:
- 物理卷的名称(PV Name)
- 物理卷的 UUID(UUID)
- 物理卷的大小(Total PE / Free PE)
- 物理卷的状态(Allocatable / Exported / Missing)
- 物理卷的属性(例如,是否加密、是否只读等等)
- 物理卷所属的卷组(VG Name)
- 物理卷上的逻辑卷(LV Name)
pvs则用来查看物理卷的状态
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/vdb lvm2 --- <200.00g <200.00g
2.3 修改物理卷属性
pvchange 命令是 Linux 系统中 LVM(逻辑卷管理)的一个命令,用于更改物理卷的属性。以下是 pvchange 命令的使用方法:
pvchange [options] [PhysicalVolumePath...]
其中,PhysicalVolumePath 是要更改属性的物理卷路径,可以指定多个物理卷路径,用空格分隔。
以下是一些常用的选项:
-
-a, --all: 更改所有物理卷的属性。
-
-x, --allocatable y/n: 设置物理卷是否可分配。y 表示可分配,n 表示不可分配。
-
-t, --test: 测试模式,不会实际更改物理卷的属性,而是显示将要执行的操作。
以下是一些示例:
1、将物理卷 /dev/sdb1 设置为不可分配(需要先将其分配给逻辑卷组,下同):
pvchange -x n /dev/sdb1
2、将所有物理卷设置为可分配:
pvchange -x y -a
3、测试将物理卷 /dev/sdb1 设置为不可分配的操作:
pvchange -x n -t /dev/sdb1
在使用 pvchange 命令时,请注意备份重要数据,并谨慎操作,以免造成数据丢失或其他不必要的损失。
2.4 删除物理卷
[root@localhost ~]# pvremove /dev/vdb
Labels on physical volume "/dev/vdb" successfully wiped.
3. 逻辑卷组管理
3.1 创建卷组
vgcreate 命令用于创建一个新的卷组(Volume Group),并将一个或多个物理卷(Physical Volume)添加到该卷组中。它是 LVM(Logical Volume Manager) 管理工具中的一个命令,可以帮助管理员创建新的卷组,以便在该卷组上创建逻辑卷(Logical Volume)。
使用 vgcreate 命令时,需要指定要创建的卷组的名称作为参数,以及要添加到该卷组中的物理卷的名称。例如,要创建一个名为 myvg 的卷组,并将物理卷 /dev/sdb1 添加到该卷组中,可以使用以下命令:
vgcreate myvg /dev/sdb1
如果要将多个物理卷添加到卷组中,可以在命令中指定多个物理卷的名称,例如:
vgcreate myvg /dev/sdb1 /dev/sdc1 /dev/sdd1
在创建卷组时,还可以使用一些选项来指定卷组的属性,例如卷组的大小、PE(Physical Extent)的大小等等。常用的选项包括:
- -s:指定 PE 的大小。
- -c:指定卷组的最大 PE 数量。
- -A:指定卷组的自动扩展属性。
- -v:显示详细的创建过程。
例如,要创建一个 PE 大小为 16MB 的卷组,并将物理卷 /dev/sdb1 添加到该卷组中,可以使用以下命令:
vgcreate -s 16M myvg /dev/sdb1
需要注意的是,创建卷组时需要指定至少一个物理卷,否则无法创建卷组。同时,创建卷组时需要确保物理卷的状态正常,并且没有被其他卷组使用。
3.2 查看卷组
vgdisplay 命令用于显示卷组(Volume Group)的属性信息,包括卷组的名称、UUID、大小、状态、物理卷的数量、逻辑卷的数量等等。它是 LVM(Logical Volume Manager) 管理工具中的一个命令,可以帮助管理员查看卷组的详细信息。
使用 vgdisplay 命令时,可以不带任何参数,直接执行该命令,它会列出系统中所有的卷组的信息。也可以指定一个或多个卷组的名称作为参数,只显示指定卷组的信息。
vgdisplay 命令的输出结果包括以下信息(通过-v可以显示更多属性):
- 卷组的名称(VG Name)
- 卷组的 UUID(VG UUID)
- 卷组的大小(VG Size)
- 卷组的状态(VG Status)
- 卷组的属性(例如,是否只读、是否自动扩展等等)
- 卷组中物理卷的数量(PV Count)
- 卷组中逻辑卷的数量(LV Count)
- 卷组中可用的 PE 数量(Free PE)
- 卷组中已分配的 PE 数量(Allocated PE)
- 卷组中 PE 的大小(PE Size)
通过 vgdisplay 命令,管理员可以查看卷组的详细信息,了解卷组的使用情况,以及卷组中物理卷和逻辑卷的情况,从而更好地管理 LVM 系统。
3.3 修改卷组属性
vgchange 命令用于修改卷组(Volume Group)的属性信息,例如修改卷组的 UUID、标记卷组为只读或可写等等。
使用 vgchange 命令时,需要指定要修改的卷组的名称作为参数,以及要修改的属性选项。常用的选项包括:
- -u:修改卷组的 UUID。
- -x:标记卷组为不可用状态。
- -a:标记卷组为可用状态。
- -r:标记卷组为只读状态。
- -w:标记卷组为可写状态。
例如,要将卷组 myvg 标记为只读状态,可以使用以下命令:
vgchange -r myvg
需要注意的是,修改卷组的属性信息可能会对 LVM 系统的运行产生影响,因此在使用 vgchange 命令时,需要谨慎操作,确保修改的属性信息是正确的,并且不会对系统造成不良影响。同时,修改卷组的属性信息可能会影响到卷组中的逻辑卷,因此在修改卷组属性之前,需要确保卷组中的逻辑卷的状态正常,并且没有被其他进程使用。
3.4 伸缩卷组
3.4.1 拓展
vgextend 命令用于将一个或多个物理卷(Physical Volume)添加到已有的卷组(Volume Group)中。
使用 vgextend 命令时,需要指定要扩展的卷组的名称作为参数,以及要添加到该卷组中的物理卷的名称。例如,要将物理卷 /dev/sdc1 添加到卷组 myvg 中,可以使用以下命令:
vgextend myvg /dev/sdc1
如果要将多个物理卷添加到卷组中,可以在命令中指定多个物理卷的名称,例如:
vgextend myvg /dev/sdc1 /dev/sdd1
在扩展卷组时,还可以使用一些选项来指定卷组的属性,例如卷组的大小、PE(Physical Extent)的大小等等。常用的选项包括:
- -s:指定 PE 的大小。
- -c:指定卷组的最大 PE 数量。
- -v:显示详细的扩展过程。
例如,要将物理卷 /dev/sdc1 添加到卷组 myvg 中,并将 PE 大小设置为 16MB,可以使用以下命令:
vgextend -s 16M myvg /dev/sdc1
需要注意的是,扩展卷组时需要确保物理卷的状态正常,并且没有被其他卷组使用。同时,扩展卷组可能会影响到卷组中的逻辑卷,因此在扩展卷组之前,需要确保卷组中的逻辑卷的状态正常,并且没有被其他进程使用。
3.4.2 缩减
vgreduce 命令可以将物理卷从卷组中删除,并将其空间返回给卷组。以下是 vgreduce 命令的语法:
vgreduce [options] VG PV [PV...]
其中,VG 表示要操作的卷组名称,PV 表示要从卷组中移除的物理卷名称。以下是 vgreduce 命令的一些常用选项:
- -a, --all: 移除卷组中的所有物理卷。
- -f, --force: 强制执行操作,即使可能会导致数据丢失。
- -t, --test: 执行测试操作,不会实际执行移除操作。
以下是 vgreduce 命令的一些示例:
- 移除卷组 vg01 中的物理卷 /dev/sdb1:
vgreduce vg01 /dev/sdb1
- 移除卷组 vg01 中的所有物理卷:
vgreduce -a vg01
- 在测试模式下移除卷组 vg01 中的物理卷 /dev/sdb1:
vgreduce -t vg01 /dev/sdb1
需要注意的是,在执行 vgreduce 命令时,需要谨慎操作,以避免数据丢失或其他不良后果。在执行实际操作之前,建议先使用 -t 选项进行测试,以确保操作不会对数据造成损害。
3.5 删除卷组
vgremove 命令可以将卷组及其相关的逻辑卷和物理卷全部删除。以下是 vgremove 命令的语法:
vgremove [options] VG
其中,VG 表示要删除的卷组名称。以下是 vgremove 命令的一些常用选项:
- -f, --force: 强制执行操作,即使可能会导致数据丢失。
- -t, --test: 执行测试操作,不会实际执行删除操作。
以下是 vgremove 命令的一些示例:
- 删除卷组 vg01:
vgremove vg01
- 在测试模式下删除卷组 vg01:
vgremove -t vg01
需要注意的是,在执行 vgremove 命令时,需要谨慎操作,以避免数据丢失或其他不良后果。在执行实际操作之前,建议先使用 -t 选项进行测试,以确保操作不会对数据造成损害。
4. 逻辑卷管理
4.1 创建逻辑卷
lvcreate 命令可以从一个或多个卷组中分配空间来创建逻辑卷,并指定逻辑卷的大小、名称、文件系统类型等参数。以下是 lvcreate 命令的语法:
lvcreate [options] VG -n LV
其中,VG 表示要创建逻辑卷的卷组名称,LV 表示要创建的逻辑卷名称。以下是 lvcreate 命令的一些常用选项:
- -L, --size: 指定逻辑卷的大小,可以使用单位 B、K、M、G、T 或 P。
- -n, --name: 指定逻辑卷的名称。
- -r, --readahead: 指定逻辑卷的预读块数。
- -y, --yes: 自动回答所有提示,不需要确认。
以下是 lvcreate 命令的一些示例:
- 创建一个大小为 10GB 的逻辑卷 lv01:
lvcreate -L 10G -n lv01 vg01
- 创建一个大小为 100MB 的逻辑卷 lv02,并指定文件系统类型为 ext4:
lvcreate -L 100M -n lv02 vg01 -t ext4
- 创建一个大小为 1TB 的逻辑卷 lv03,并指定预读块数为 256:
lvcreate -L 1T -n lv03 vg01 -r 256
需要注意的是,在执行 lvcreate 命令时,需要确保卷组中有足够的空间来创建逻辑卷。在创建逻辑卷之前,建议先使用 vgdisplay 命令查看卷组的空间使用情况。另外,创建逻辑卷之后,还需要使用 mkfs 命令创建文件系统,并使用 mount 命令将逻辑卷挂载到文件系统中。
4.2 查看逻辑卷
lvdisplay 命令可以显示逻辑卷的名称、大小、卷组、状态等信息。以下是 lvdisplay 命令的语法:
lvdisplay [options] [LV...]
其中,LV 表示要显示信息的逻辑卷名称。如果不指定 LV 参数,则会显示所有逻辑卷的信息。以下是 lvdisplay 命令的一些常用选项:
- -a, --all: 显示所有逻辑卷的信息。
- -c, --colon: 以冒号分隔的格式显示信息。
- -m, --maps: 显示逻辑卷和物理卷之间的映射关系。
- -v, --verbose: 显示详细信息。
以下是 lvdisplay 命令的一些示例:
- 显示逻辑卷 lv01 的信息:
lvdisplay lv01
- 显示所有逻辑卷的信息:
lvdisplay -a
- 以冒号分隔的格式显示逻辑卷 lv01 的信息:
lvdisplay -c lv01
需要注意的是,在执行 lvdisplay 命令时,需要确保当前用户具有足够的权限来访问逻辑卷的信息。在显示逻辑卷的信息之前,建议先使用 vgdisplay 命令查看卷组的信息,以确保逻辑卷所在的卷组存在且正常。
4.3 拓展逻辑卷
lvextend 命令是 LVM(逻辑卷管理器)中的一个命令,用于扩展一个逻辑卷的大小。它可以从一个或多个卷组中分配空间来扩展逻辑卷,并将其大小增加到指定的大小。以下是 lvextend 命令的语法:
lvextend [options] LV
其中,LV 表示要扩展的逻辑卷名称。以下是 lvextend 命令的一些常用选项:
- -L, --size: 指定逻辑卷的新大小,可以使用单位 B、K、M、G、T 或 P。
- -r, --resizefs: 自动调整逻辑卷上的文件系统大小。
- -y, --yes: 自动回答所有提示,不需要确认。
以下是 lvextend 命令的一些示例:
- 将逻辑卷 lv01 的大小增加到 20GB:
lvextend -L 20G lv01
- 将逻辑卷 lv02 的大小增加到 200MB,并自动调整文件系统大小:
lvextend -L 200M -r lv02
需要注意的是,在执行 lvextend 命令时,需要确保卷组中有足够的空间来扩展逻辑卷。在扩展逻辑卷之前,建议先使用 lvdisplay 命令查看逻辑卷的信息,以确保逻辑卷存在且正常。另外,扩展逻辑卷之后,还需要使用 resize2fs 命令(如果是 ext 文件系统)或其他相应的命令来调整文件系统大小。
4.4 伸缩逻辑卷
lvresize 命令可以从一个或多个卷组中分配空间来调整逻辑卷的大小,并将其大小调整到指定的大小。与 lvextend 命令不同的是,lvresize 命令可以同时缩小和扩展逻辑卷的大小。以下是 lvresize 命令的语法:
lvresize [options] LV
其中,LV 表示要调整大小的逻辑卷名称。以下是 lvresize 命令的一些常用选项:
- -L, --size: 指定逻辑卷的新大小,可以使用单位 B、K、M、G、T 或 P。
- -r, --resizefs: 自动调整逻辑卷上的文件系统大小。
- -y, --yes: 自动回答所有提示,不需要确认。
以下是 lvresize 命令的一些示例( lvresize需要lv先格式化成具体的文件系统,并且不同的文件系统可能有不同的大小限制 ):
- 将逻辑卷 lv01 的大小增加到 20GB:
lvresize -L 20G lv01
- 将逻辑卷 lv02 的大小缩小到 100MB,并自动调整文件系统大小:
lvresize -L 100M -r lv02
需要注意的是,在执行 lvresize 命令时,需要确保卷组中有足够的空间来调整逻辑卷的大小。在调整逻辑卷的大小之前,建议先使用 lvdisplay 命令查看逻辑卷的信息,以确保逻辑卷存在且正常。另外,调整逻辑卷的大小之后,还需要使用 resize2fs 命令(如果是 ext 文件系统)或其他相应的命令来调整文件系统大小。
4.5 删除逻辑卷
lvremove 命令可以将逻辑卷及其相关的文件系统、逻辑卷快照等全部删除。以下是 lvremove 命令的语法:
lvremove [options] LV
其中,LV 表示要删除的逻辑卷名称。以下是 lvremove 命令的一些常用选项:
- -f, --force: 强制执行操作,即使可能会导致数据丢失。
- -y, --yes: 自动回答所有提示,不需要确认。
以下是 lvremove 命令的一些示例:
- 删除逻辑卷 lv01:
lvremove lv01
- 强制删除逻辑卷 lv02,即使可能会导致数据丢失:
lvremove -f lv02
需要注意的是,在执行 lvremove 命令时,需要谨慎操作,以避免数据丢失或其他不良后果。在执行实际操作之前,建议先使用 -y 选项进行确认,以确保操作不会对数据造成损害。另外,删除逻辑卷之后,还需要使用 umount 命令将逻辑卷从文件系统中卸载。
5. 文件系统管理
接下来就是在设备上创建并挂载使用一个文件系统。需要执行以下步骤:
- 使用 fdisk 命令对设备进行分区(如果大于2T,需要使用parted工具)。可以根据需要创建一个或多个分区,例如:
fdisk /dev/sdb
- 使用 mkfs 命令创建文件系统。可以根据需要选择不同的文件系统类型,例如:
mkfs.ext4 /dev/sdb1
- 创建一个目录,作为文件系统的挂载点。可以使用 mkdir 命令创建一个目录,例如:
mkdir /mnt/myfs
- 使用 mount 命令将文件系统挂载到目录中。例如:
mount /dev/sdb1 /mnt/myfs
现在,文件系统已经成功挂载到 /mnt/myfs 目录中,可以在该目录下进行文件操作了。如果需要卸载文件系统,可以使用 umount 命令,例如:
umount /mnt/myfs
需要注意的是,在执行这些操作时,需要确保当前用户具有足够的权限来进行分区、创建文件系统和挂载文件系统。另外,需要根据实际情况选择合适的文件系统类型和存储介质大小。