使用 LVM 设置逻辑卷

来自 Alpine Linux
提示: 此过程可以使用 setup-disk 脚本自动完成,使用 -L 选项。

本文档介绍如何在 Alpine 中使用 lvm2 创建逻辑卷。

LVM 是一组程序,允许将物理磁盘重新组合成“逻辑”磁盘,这些磁盘可以根据数据需求的变化进行收缩或扩展。

在本文档中,我们将使用 软件 RAID1 设备 作为逻辑卷的物理存储。我们将设置一个交换分区和一个用于 vservers 的数据分区

安装 LVM 软件

首先,我们需要加载内核驱动程序 dm-mod

modprobe dm-mod

我们也希望在下次重启时加载它。

echo dm-mod >> /etc/modules-load.d/dm.conf

我们还需要用户空间程序。

apk add lvm2

准备物理卷

首先,我们需要告诉 LVM 分区可用作物理卷,并且可以添加到卷组。在本例中,我们使用软件 raid 阵列作为物理卷。

pvcreate /dev/md0

准备卷组

然后我们可以创建一个卷组并将物理卷 /dev/md0 添加到其中

vgcreate vg0 /dev/md0

如果以后需要更多空间,我们可以使用 vgextend 添加额外的物理卷。所有添加的物理磁盘/分区都需要使用 pvcreate 进行准备。

创建逻辑卷

在卷组中,我们可以创建逻辑卷。要创建名为 swap 的 1GB 卷和名为 vservers 的 6GB 卷,卷组为 vg0,我们运行

lvcreate -n swap -L 1G vg0 lvcreate -n vservers -L 6G vg0

显示逻辑卷

您现在可以使用 lvdisplay 实用程序查看逻辑卷。

lvdisplay
 --- Logical volume ---
 LV Name                /dev/vg0/swap
 VG Name                vg0
 LV UUID                a4NYOi-FQP6-Lj5Q-0TYk-Jjtk-Qxjt-nxeBPn
 LV Write Access        read/write
 LV Status              available
 # open                 0
 LV Size                1.00 GB
 Current LE             256
 Segments               1
 Allocation             inherit
 Read ahead sectors     0
 Block device           253:0
  
 --- Logical volume ---
 LV Name                /dev/vg0/vservers
 VG Name                vg0
 LV UUID                16VMmy-7I0s-eeoW-tL2V-JrlN-jM6C-d0wEg0
 LV Write Access        read/write
 LV Status              available
 # open                 0
 LV Size                6.00 GB
 Current LE             1536
 Segments               1
 Allocation             inherit
 Read ahead sectors     0
 Block device           253:1

重命名逻辑卷

lvrename /dev/vg0/vservers /dev/vg0/database

扩展逻辑卷

如果您想添加空间并且卷有可用空间...

lvextend -L +50G /dev/vg0/vservers

如果您想将空间设置为新的更大尺寸...

lvextend -L 10G /dev/vg0/vservers

启动时启动 LVM

我们希望 lvm 在启动期间初始化逻辑卷。有一个名为 lvm 的启动服务来执行此操作。如果您的卷位于 raid 上,请确保 /etc/init.d/lvm 在 mdadm-raid 之后启动。

rc-update add lvm boot

在 Alpine Linux 1.8 或更早版本上

rc_add -s 12 -k lvm

设置交换分区

现在我们在 /dev/vg0 中有了我们的设备,可以像使用普通磁盘分区一样使用它们。要设置交换分区

mkswap /dev/vg0/swap

将以下行添加到您的 /etc/fstab

/dev/vg0/swap   none            swap     sw    0 0

设置 /vservers 分区

最后,我们想要为 /vservers 设置一个 XFS 分区。

安装 xfsprogs。

apk add xfsprogs

在 /dev/vg0/vservers 上创建文件系统。

mkfs.xfs /dev/vg0/vservers

将挂载信息添加到您的 /etc/fstab:注意:tagxid 可能会导致无法挂载。手动尝试并检查 dmesg 以查看是否有任何错误

/dev/vg0/vservers /vservers     xfs     noatime,tagxid 0 0

请注意,tagxid 选项是专门为设置 vserver 磁盘限制 🔓 而设置的,因此您可能不需要它。noatime 选项可以提高性能,但是您将不再知道文件上次访问的时间。

启动 localmount 和交换分区

现在我们可以挂载我们的分区。

mount /vservers

我们需要在启动期间运行 localmount,但它必须在 lvm 之后发生。在 Alpine Linux 1.9 及更高版本中,这应该是不需要的

rc-update add localmount boot

在 Alpine Linux 1.8 或更早版本上

rc_add -s 14 -k localmount

启动交换分区服务并确保它在下次重启时启动,并且在 lvm 之后启动。

rc-service swap start rc-update add swap

在 Alpine Linux 1.8 或更早版本上

rc-service swap start rc_add -s 14 -k swap

更多关于 LVM 的信息

以下资源可能有所帮助