第 11 章 控制 LVM 分配
默认情况下,卷组使用 normal
分配策略。这会根据通用规则(如不在同一物理卷上放置并行条带)分配物理扩展。您可以使用 vgcreate
命令的 --alloc
参数指定不同的分配策略(contiguous
、anywhere
或 cling
)。通常,只在特殊情况下需要指定非通常或非标准扩展分配时,才需要不同于 normal
的分配策略。
11.1. 从指定的设备分配扩展 复制链接链接已复制到粘贴板!
您可以在 lvcreate
和 lvconvert
命令的命令行末尾使用 device 参数来限制特定设备的分配。您可以为每个设备指定实际的扩展范围,以提供更多控制。命令只使用指定的物理卷(PV)作为参数,来为新逻辑卷(LV)分配扩展。它使用每个 PV 的可用扩展,直到它们耗尽,然后使用列出的下一个 PV 中的扩展。如果所有列出的 PV 上没有足够的空间用于请求的 LV 大小,则命令失败。请注意,命令只从指定的 PV 进行分配。RAID LV 对单独的 raid 镜像或单独的条带使用顺序 PV 。如果对于整个 raid 镜像来说 PV 不够大,则生成的设备的使用是不能完全预测的。
流程
创建卷组(VG):
vgcreate <vg_name> <PV> ...
# vgcreate <vg_name> <PV> ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中:
-
<vg_name>
是 VG 的名称。 -
<PV>
是 PV。
-
您可以分配 PV 来创建不同的卷类型,如 linear 或 raid :
分配扩展以创建线性卷:
lvcreate -n <lv_name> -L <lv_size> <vg_name> [ <PV> ... ]
# lvcreate -n <lv_name> -L <lv_size> <vg_name> [ <PV> ... ]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中:
-
<lv_name>
是 LV 的名称。 -
<lv_size>
是 LV 的大小。默认单位是 MB。 -
<vg_name>
是 VG 的名称。 [ <PV …> ]
是 PV。您可以在命令行上指定其中一个 PV、所有 PV 或 none :
如果您指定一个 PV,则会从它分配 LV 的扩展。
注意如果对整个 LV 来说 PV 没有足够的可用扩展,则
lvcreate
失败。- 如果您指定了两个 PV,则 LV 的扩展将从其中一个 PV 或两者的组合中分配。
如果没有指定任何 PV,则扩展将从 VG 中的一个 PV 或者 VG 中所有 PV 的组合中分配。
注意在这些情况下,LVM 可能没有使用所有命名的 PV 或可用的 PV。如果第一个 PV 有足够的空闲扩展用于整个 LV,则可能不使用其他 PV。但是,如果第一个 PV 没有设置空闲扩展的分配大小,则 LV 可能会从第一个 PV 中分配一部分,并从第二个 PV 中分配一部分。
例 11.1. 从一个 PV 分配扩展
在这个示例中,
lv1
扩展将从sda
中分配。lvcreate -n lv1 -L1G vg /dev/sda
# lvcreate -n lv1 -L1G vg /dev/sda
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例 11.2. 从两个 PV 中分配扩展
在这个示例中,
lv2
扩展将从sda
或sdb
或两者的组合中分配。lvcreate -n lv2 L1G vg /dev/sda /dev/sdb
# lvcreate -n lv2 L1G vg /dev/sda /dev/sdb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例 11.3. 在不指定 PV 的情况下分配扩展
在本例中,
lv3
扩展将从 VG 中的一个 PV 或 VG 中所有 PV 的组合中分配。lvcreate -n lv3 -L1G vg
# lvcreate -n lv3 -L1G vg
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 或者
-
分配扩展以创建 raid 卷:
lvcreate --type <segment_type> -m <mirror_images> -n <lv_name> -L <lv_size> <vg_name> [ <PV> ... ]
# lvcreate --type <segment_type> -m <mirror_images> -n <lv_name> -L <lv_size> <vg_name> [ <PV> ... ]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中:
-
<segment_type>
是指定的片段类型(如raid5
、mirror
、snapshot
)。 -
<mirror_images>
创建一个raid1
或具有指定镜像数的镜像 LV。例如,-m 1
会产生具有两个镜像的raid1
LV。 -
<lv_name>
是 LV 的名称。 -
<lv_size>
是 LV 的大小。默认单位是 MB。 -
<vg_name>
是 VG 的名称。 <[PV …]>
是 PV。第一个 raid 镜像将从第一个 PV 中分配,第二个 raid 镜像将从第二个 PV 中分配,以此类推。
例 11.4. 从两个 PV 中分配 raid 镜像
在这个示例中,第一个镜像
lv4
将从sda
中分配,第二个镜像将从sdb
中分配。lvcreate --type raid1 -m 1 -n lv4 -L1G vg /dev/sda /dev/sdb
# lvcreate --type raid1 -m 1 -n lv4 -L1G vg /dev/sda /dev/sdb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例 11.5. 从三个 PV 中分配 raid 镜像
在本例中,第一个 raid 镜像
lv5
将从sda
中分配,第二个镜像将从sdb
中分配,第三个镜像将从sdc
中分配。lvcreate --type raid1 -m 2 -n lv5 -L1G vg /dev/sda /dev/sdb /dev/sdc
# lvcreate --type raid1 -m 2 -n lv5 -L1G vg /dev/sda /dev/sdb /dev/sdc
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-