使用 LVM 设置逻辑卷
本文档介绍如何在 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 的信息
以下资源可能有所帮助