LVM代表”逻辑卷管理器”(Logical Volume Manager),是Linux环境中提供更高级磁盘管理功能的一套工具,使用LVM可以提供比传统分区管理更多的灵活性。 通过LVM,你可以实现存储空间的抽象化并在上面建立虚拟分区(virtual partitions),可以更简便地扩大和缩小分区,可以增删分区时无需担心某个硬盘上没有足够的连续空间。
【术语解释】
物理卷Physical volume (PV):LVM允许用户将多个物理磁盘驱动器组合成一个或多个物理卷。物理卷可以是整个磁盘驱动器,也可以是磁盘驱动器的一部分。
卷组Volume group (VG):物理卷可以组合成一个或多个卷组。卷组是一个逻辑概念,它将多个物理卷组合在一起,形成一个大容量的存储池。
逻辑卷Logical volume (LV):虚卷组可以划分为一个或多个逻辑卷。逻辑卷是用户可见的存储单元,可以像普通磁盘分区一样使用。逻辑卷可以根据需要动态调整大小。
卷组描述区域 Volume Group Descriptor Area (VGDA):用于描述物理卷、卷组、逻辑卷分配的所由信息。逻辑卷以及卷组相关的元数据也是保存在位于物理卷起始处的 VGDA( 卷组描述符区域 ) 中。
这里有两块物理硬盘
硬盘1 (/dev/sda):
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
| 分区1 20GB (物理卷) | 分区2 30GB (物理卷) |
| /dev/sda1 | /dev/sda2 |
|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|
硬盘2 (/dev/sdb):
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
| 分区1 100GB (物理卷) |
| /dev/sdb1 |
| _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|
LVM方式
卷组VG1 (/dev/mapper/ = /dev/sda1 + /dev/sda2 + /dev/sdb1):
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
| 逻辑卷1 20GB | 逻辑卷2 30GB | 逻辑卷3 100GB |
| /dev/mapper/homevol | /dev/mapper/datavol | /dev/mapper/mediavol |
|_ _ _ _ _ _ _ _ _ _ _ _ _ __|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|
比起正常的硬盘分区管理,LVM更富于弹性:
LVM是一种功能强大的磁盘管理工具,可以提供灵活的存储管理和数据保护功能。它广泛应用于服务器和企业环境中,但也可以在个人计算机上使用。`
快速预览:
提示:注意: 尽管多数情况下推荐首先对磁盘设备进行分区,但根据实际用户需要,该步骤是可选的。
使用fdisk或其他分区工具创建分区。fdisk是一个用来管理磁盘分区的传统命令行工具。当你使用fdisk命令并附加-l参数以及一个磁盘设备名(比如/dev/sda),这个命令将会列出指定的磁盘设备上所有分区的信息。
# fdisk /dev/sda
依次输入:n、p、1、p、t、L、8e、p、w
n:新建分区 (Add a new partition)
p:新建主分区 (Create a primary partition)
1:指定分区号为 1 (Set the partition number to 1)
输入两次 p 时,初次没有给出其含义,它通常不是用作输入命令。 如果是错误输入,第二次的 p 将展示当前分区表 (Print the partition table)
t:改变分区类型 (Change the partition’s system id)
L:列出所有已知的分区类型 (List known partition types)
8e:将分区类型设置为 Linux LVM (Set the partition type to Linux LVM)
再次:展示当前分区表,展示进行的修改 (Print the partition table to show the changes made)
w:将更改保存到磁盘然后退出 fdisk (Write the changes and exit fdisk)
使用pvcreate命令将分区标记为LVM物理卷。例如,如果分区为/dev/sda2,可以运行以下命令:pvcreate /dev/sda2
。
可通过以下命令列出可被用作物理卷的设备:
# lvmdiskscan
警告: 请确认你对正确的设备进行操作,否则会导致文件丢失!
在列出的设备上创建物理卷:
# pvcreate DEVICE
该命令在各个设备上创建LVM使用的头部。如#LVM基本组成所示, DEVICE可以是磁盘(如/dev/sda或/dev/xvda),分区(如/dev/sda2或/dev/xvda1)或环回设备。例如:
# pvcreate /dev/sda2
你可以用以下命令查看已创建好的物理卷:
# pvdisplay
注意: 如果你用的是未格式化过且擦除块(erase block)大小小于1M的SSD,请采用以下命令pvcreate --dataalignment 1m /dev/sda来设置对齐(alignment),可以参考链接(英文)
使用vgcreate命令创建LVM卷组。例如,可以运行以下命令:vgcreate myvg /dev/sda2
,其中myvg是卷组的名称。
创建完成物理卷(PV)之后,下一步就是在该物理卷创建卷组(VG)了。 首先必须先在其中一个物理卷(PV)创建一个卷组。
# vgcreate <volume_group> <physical_volume>
例如:
# vgcreate myvg /dev/sda2
然后让该卷组扩大到其他所有的物理卷:
# vgextend <volume_group> <physical_volume>
# vgextend <volume_group> <another_physical_volume>
...
例如:
# vgextend myvg /dev/sdb1
# vgextend myvg /dev/sdc
其中,“VolGroup00”名字换成你自己起的名字即可。接下来可以用以下命令查看卷组:
# vgdisplay
注意: 你可以创建多个的卷组,但这将使你的硬盘空间分布在不同(逻辑)磁盘上。
LVM支持将卷组与物理卷的创建聚合在一个命令中。例如,为了在前文提到的三个设备中创建名为VolGroup00的卷组,可以执行如下命令:
# vgcreate myvg /dev/sda2 /dev/sdb1 /dev/sdc
该命令首先会在分区上创建物理卷(如果之前没有创建过),再创建一个包含三个物理卷的卷组。如果设备上已经存在文件系统,命令会提出警告。
使用lvcreate命令创建LVM逻辑卷。例如,可以运行以下命令:lvcreate -L 20G myvg -n lvoldata
,其中mylv是逻辑卷的名称,-L参数指定逻辑卷的大小。
创建完卷组(VG)之后,就可以开始创建逻辑卷(LV)了。输入下面命令以指定新逻辑卷的名字、大小及其所在的卷组:
# lvcreate -L <size> <volume_group> -n <logical_volume>
例如:
# lvcreate -L 10G myvg -n lvoldata
该逻辑卷创建完后,你就可以通过/dev/mapper/myvg-lvoldata或/dev/myvg/lvoldata来访问它。与卷组命名类似,你可以按你的需要将逻辑卷命名。
你可以指定一个或多个物理卷来限制LVM分配数据空间的位置。比如你希望在较小的SSD硬盘上创建根文件系统,并在较慢的机械硬盘上创建家目录卷,仅需把物理卷设备加入到命令中,例如:
# lvcreate -L 10G myvg -n lvoldata /dev/sdc1
如果你想让要创建的逻辑卷拥有卷组(VG)的所有未使用空间,请使用以下命令:
# lvcreate -l +100%FREE <volume_group> -n <logical_volume>
可以通过以下命令来查看逻辑卷:
# lvdisplay
注意: 为了使上述命令能正常运行,你可能需要加载device-mapper内核模块(请使用命令modprobe dm-mod)。
提示: 一开始可以创建小一点的逻辑卷,在卷组里留下一部分未使用空间,以后就可以根据需要再作扩展了。
现在你的逻辑卷应该已经在/dev/mapper/和/dev/YourVolumeGroupName中了。如果你无法在以上位置找到它,请使用以下命令来加载模块、并扫描与激活卷组:
# modprobe dm-mod
# vgscan
# vgchange -ay
格式化逻辑卷:使用mkfs命令格式化逻辑卷。例如,如果逻辑卷为/dev/mapper/myvg-lvoldata,可以运行以下命令:mkfs.ext4 /dev/mapper/myvg-lvoldata
。
挂载逻辑卷:创建一个目录作为挂载点,并使用mount命令将逻辑卷挂载到该目录。例如,可以运行以下命令:mkdir -p /data
和mount /dev/mapper/myvg-lvoldata /data
。
现在你可以在逻辑卷上创建文件系统并像普通分区一样挂载它了:
# mkfs.<fstype> /dev/mapper/<volume_group>-<logical_volume>
# mount /dev/mapper/<volume_group>-<logical_volume> /<mountpoint>
例如:
# mkfs.ext4 /dev/mapper/myvg-lvoldata
# mount /dev/mapper/myvg-lvoldata /data
警告: 挂载点请选择你所新建的逻辑卷(例如:/dev/mapper/myvg-lvoldata),不要使用逻辑卷所在的实际分区设备(即不要使用:/dev/sda2)。
以上是在LVM上安装Arch Linux的基本步骤。请注意,这只是一个简要的概述,具体步骤可能因个人需求和系统配置而有所不同。在进行此类操作之前,请确保备份重要数据,并在熟悉LVM和Arch Linux安装过程的情况下进行操作。
更精彩企业LVM案例与最佳实战经验