介绍
LVM,或逻辑卷管理,是一种存储设备管理技术,使用户能够集中电源和部件的存储设备,以方便和灵活的管理抽象的物理布局。 利用设备映射器Linux内核框架,当前迭代LVM2可以用于将现有存储设备聚集成组,并根据需要从组合空间中分配逻辑单元。
LVM的主要优点是提高了抽象,灵活性和控制。 逻辑卷可以具有有意义的名称,例如“databases”或“root-backup”。 随着空间需求的改变,卷可以动态调整大小,并在正在运行的系统上的池中的物理设备之间迁移或轻松导出。 LVM还提供了高级功能,如快照,条带化和镜像。
在本指南中,我们将简要讨论LVM如何工作,然后演示快速启动和运行所需的基本命令。
LVM架构和术语
在我们深入了解实际的LVM管理命令之前,了解LVM如何组织存储设备及其使用的术语非常重要。
LVM存储管理结构
LVM通过在物理存储设备之上分层抽象来实现功能。 LVM使用的基本层,从最原始的开始,是。
- 物理卷 :
- LVM实用前缀 :
pv...
- 描述 :物理块设备或其他圆盘状设备(例如,通过设备映射器,如RAID阵列创建的其他装置)用于通过LVM作为原料建筑材料为更高级别的抽象。 物理卷是常规存储设备。 LVM将头写入设备以将其分配给管理。
- LVM实用前缀 :
- 卷组 :
- LVM实用前缀 :
vg...
- 说明 :LVM结合物理卷成称为卷组的存储池。 卷组提取底层设备的特性,并作为具有组件物理卷的组合存储容量的统一逻辑设备。
- LVM实用前缀 :
- 逻辑卷 :
- LVM实用前缀 :
lv...
(通用LVM实用程序可能会首先lvm...
) - 说明 :一个卷组可切片成任意数量的逻辑卷。 逻辑卷在功能上等同于物理磁盘上的分区,但具有更大的灵活性。 逻辑卷是用户和应用程序将与之交互的主要组件。
- LVM实用前缀 :
总之,LVM可用于将物理卷组合成卷组以统一系统上可用的存储空间。 之后,管理员可以将卷组分段为任意逻辑卷,作为灵活分区。
什么是范围?
卷组内的每个卷分割成小的,固定大小的块称为扩展 。 扩展区的大小由卷组确定(组内的所有卷都符合相同的扩展区大小)。
一个物理卷上的盘区被称为物理盘 ,而逻辑卷的盘区被称为逻辑盘区 。 逻辑卷只是LVM在逻辑和物理盘区之间维护的映射。 由于这种关系,区段大小表示LVM可分配的最小空间量。
范围背后了LVM的大部分灵活性和强大功能。 由LVM呈现为统一设备的逻辑盘区不必映射到连续的物理盘区。 LVM可以复制和重新组织构成逻辑卷的物理盘区,而不会对用户造成任何中断。 通过向卷中添加扩展数据块或从卷中删除扩展数据块,也可以轻松地扩展或缩小逻辑卷。
简单用例
现在,您已经熟悉了LVM使用的一些术语和结构,我们可以探索一些常用的LVM使用方法。 我们将开始通过一个基本过程,将使用两个物理磁盘来形成四个逻辑卷。
将物理设备标记为物理卷
我们的第一步是扫描LVM可以查看和管理的块设备的系统。 您可以输入以下命令:
sudo lvmdiskscan
输出将显示LVM可以与之交互的所有可用块设备:
Output /dev/ram0 [ 64.00 MiB]
/dev/sda [ 200.00 GiB]
/dev/ram1 [ 64.00 MiB]
. . .
/dev/ram15 [ 64.00 MiB]
/dev/sdb [ 100.00 GiB]
2 disks
17 partitions
0 LVM physical volume whole disks
0 LVM physical volumes
从上面的输出,我们可以看到目前有两个磁盘和17个分区。 分区大多是/dev/ram*
所使用的系统为一个分区RAM磁盘的性能增强。 在本实施例的磁盘/dev/sda
,其具有空间200G,和/dev/sdb
,它有100G。
警告 :请确保您仔细检查您打算使用LVM使用的设备没有任何做重要数据已写入其中。 在LVM中使用这些设备将覆盖当前内容。 如果您的服务器上已有重要数据,请在继续之前进行备份。
现在,我们知道我们想要使用物理设备,我们可以将其标记为使用LVM中的物理卷pvcreate
命令:
sudo pvcreate /dev/sda /dev/sdb
Output Physical volume "/dev/sda" successfully created
Physical volume "/dev/sdb" successfully created
这将向设备写入LVM头以指示它们已准备好添加到卷组。
您可以通过键入以下内容快速验证LVM是否已注册物理卷:
sudo pvs
Output PV VG Fmt Attr PSize PFree
/dev/sda lvm2 --- 200.00g 200.00g
/dev/sdb lvm2 --- 100.00g 100.00g
正如你所看到的,这些设备都是在目前PV
列,它代表物理卷。
将物理卷添加到卷组
现在我们已经从我们的设备创建了物理卷,我们可以创建一个卷组。 我们将必须为卷组选择一个名称,我们将保留通用名称。 大多数情况下,每个系统只有一个卷组,以实现最大的分配灵活性。 我们会打电话给我们的卷组LVMVolGroup
为简单起见。
要在单个命令中创建卷组并向其中添加两个物理卷,请键入:
sudo vgcreate LVMVolGroup /dev/sda /dev/sdb
Output Volume group "LVMVolGroup" successfully created
如果我们检查pvs
再次输出,我们可以看到,我们的物理卷正与新的卷组关联:
sudo pvs
Output PV VG Fmt Attr PSize PFree
/dev/sda LVMVolGroup lvm2 a-- 200.00g 200.00g
/dev/sdb LVMVolGroup lvm2 a-- 100.00g 100.00g
我们可以通过键入以下内容查看卷组本身的简要摘要:
sudo vgs
Output VG #PV #LV #SN Attr VSize VFree
LVMVolGroup 2 0 0 wz--n- 299.99g 299.99g
如您所见,我们的卷组目前有两个物理卷,零逻辑卷,并具有底层设备的组合容量。
从卷组池创建逻辑卷
现在我们有一个卷组可用,我们可以使用它作为一个池,我们可以从中分配逻辑卷。 与传统分区不同,在使用逻辑卷时,您不需要知道卷的布局,因为LVM会为您映射和处理此卷。 您只需要提供卷的大小和名称。
我们将从卷组中创建四个单独的逻辑卷:
- 10G“投射”音量
- 5G“www”卷的Web内容
- 20G“db”卷
- “工作区”卷将填充剩余空间
要创建逻辑卷,我们使用lvcreate
命令。 我们必须通过卷组从拉中,并且可以命名与逻辑卷-n
选项。 直接指定大小,你可以使用-L
选项。 相反,如果你希望在扩展的数量方面指定大小,您可以使用-l
选项。
我们可以创建一个与前三逻辑卷-L
这样的选项:
sudo lvcreate -L 10G -n projects LVMVolGroup
sudo lvcreate -L 5G -n www LVMVolGroup
sudo lvcreate -L 20G -n db LVMVolGroup
Output Logical volume "projects" created.
Logical volume "www" created.
Logical volume "db" created.
我们可以看到逻辑卷,并通过选择自定义输出自己的卷组关系vgs
命令:
sudo vgs -o +lv_size,lv_name
Output VG #PV #LV #SN Attr VSize VFree LSize LV
LVMVolGroup 2 3 0 wz--n- 299.99g 264.99g 10.00g projects
LVMVolGroup 2 3 0 wz--n- 299.99g 264.99g 5.00g www
LVMVolGroup 2 3 0 wz--n- 299.99g 264.99g 20.00g db
我们添加了最后两列输出,以便我们可以看到分配给逻辑卷的空间。
现在,我们可以在卷组中的空间分配给其余使用的“工作空间”卷-l
标志,这在程度上起作用。 我们还可以提供一个百分比和一个单位,以更好地沟通我们的意图。 在我们的例子中,我们要分配剩余的可用空间,因此,我们可以通过100%FREE
sudo lvcreate -l 100%FREE -n workspace LVMVolGroup
Output Logical volume "workspace" created.
如果我们重新检查卷组信息,我们可以看到我们已用尽所有可用空间:
sudo vgs -o +lv_size,lv_name
Output VG #PV #LV #SN Attr VSize VFree LSize LV
LVMVolGroup 2 4 0 wz--n- 299.99g 0 10.00g projects
LVMVolGroup 2 4 0 wz--n- 299.99g 0 5.00g www
LVMVolGroup 2 4 0 wz--n- 299.99g 0 20.00g db
LVMVolGroup 2 4 0 wz--n- 299.99g 0 264.99g workspace
如您所见,“工作区”卷已创建,“LVMVolGroup”卷组已完全分配。
格式化和安装逻辑卷
现在我们有逻辑卷,我们可以使用它们作为正常块设备。
逻辑器件是中可用/dev
目录下,就像其他的存储设备。 您可以在两个地方访问它们:
-
/dev/ volume_group_name / logical_volume_name
-
/dev/mapper/ volume_group_name - logical_volume_name
因此,要使用Ext4文件系统来格式化四个逻辑卷,我们可以键入:
sudo mkfs.ext4 /dev/LVMVolGroup/projects
sudo mkfs.ext4 /dev/LVMVolGroup/www
sudo mkfs.ext4 /dev/LVMVolGroup/db
sudo mkfs.ext4 /dev/LVMVolGroup/workspace
或者我们可以输入:
sudo mkfs.ext4 /dev/mapper/LVMVolGroup-projects
sudo mkfs.ext4 /dev/mapper/LVMVolGroup-www
sudo mkfs.ext4 /dev/mapper/LVMVolGroup-db
sudo mkfs.ext4 /dev/mapper/LVMVolGroup-workspace
格式化后,我们可以创建安装点:
sudo mkdir -p /mnt/{projects,www,db,workspace}
然后,我们可以将逻辑卷安装到适当的位置:
sudo mount /dev/LVMVolGroup/projects /mnt/projects
sudo mount /dev/LVMVolGroup/www /mnt/www
sudo mount /dev/LVMVolGroup/db /mnt/db
sudo mount /dev/LVMVolGroup/workspace /mnt/workspace
为了让坐骑持续性,把它们添加到/etc/fstab
,就像你会与正常的块设备:
sudo nano /etc/fstab
. . .
/dev/LVMVolGroup/projects /mnt/projects ext4 defaults,nofail 0 0
/dev/LVMVolGroup/www /mnt/www ext4 defaults,nofail 0 0
/dev/LVMVolGroup/db /mnt/db ext4 defaults,nofail 0 0
/dev/LVMVolGroup/workspace /mnt/workspace ext4 defaults,nofail 0 0
操作系统现在应该在引导时自动安装LVM逻辑卷。
结论
希望,到目前为止,您将对LVM管理的各种组件有相当好的了解,以创建灵活的存储系统。 您还应该基本了解如何在LVM设置中启动和运行存储设备。
本指南仅简要介绍了LVM为Linux系统管理员提供的功能和控制。 要了解更多关于使用LVM,看看我们的指南,使用LVM与Ubuntu 16.04 。