我正在尝试让 LVM VDO 在我的 Debian 11.3 上运行(从头开始安装的测试虚拟机)。我分享了我的安装过程这里如果有人想重现该问题。现在我被一个“基本”问题困住了:逻辑卷在启动时处于非活动状态。编译并安装 VDO 后,我运行以下脚本:
# Create zeroed VDO volume and format to ext4
DESTINATION_LVM_VG="/dev/Pepper-Potts-vg"
VDOLV_NAME="ZEROED-VDOLV-1"
VDOLV_PATH="$DESTINATION_LVM_VG/$VDOLV_NAME"
lvcreate -y --vdopool "ZEROED-VDOPOOL-1" --name $VDOLV_NAME --activate y --compression n --deduplication n --size 12G --virtualsize 24G --config "allocation/vdo_slab_size_mb=8192" $DESTINATION_LVM_VG && \
mkfs.ext4 -E nodiscard $VDOLV_PATH
# Reconfigure /etc/fstab to mount zeroed VDO partition to /mnt/ZEROED-VDOLV-1
MOUNT_POINT="/mnt/$VDOLV_NAME"
mkdir $MOUNT_POINT
DM_VDOLV_PATH=($(lvs --noheadings --options "lv_dm_path" $VDOLV_PATH))
# We use "@" because $DIRECTORY_TO_MOVE contains "/"
echo "$DM_VDOLV_PATH $MOUNT_POINT ext4 defaults,x-systemd.device-timeout=0,x-systemd.requires=vdo.service 0 0" >> /etc/fstab
mount -a
并且它运行良好,但重新启动虚拟机失败,因为 /dev/mapper/Pepper-Potts-vg-ZEROED--VDOPOOL--1 ( $DM_VDOLV_PATH
) 不再存在(我已经检查过了)。所以我调查了一下,lvscan
发现逻辑卷不存在于 /dev/mapper/ 中,因为它处于非活动状态。这样做vgchange -ay
解决了启动问题,但下次重新启动时它又卡住了。
我尝试使用“经典”/非 VDO 逻辑卷运行相同的脚本,但没有遇到问题,因为逻辑卷保持活动状态。
编辑1:lvs
输出如下:
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
ZEROED-VDOLV-1 Pepper-Potts-vg vwi-XXv-X- 24,00g ZEROED-VDOPOOL-1
ZEROED-VDOPOOL-1 Pepper-Potts-vg dwi-XX--X- 12,00g
home Pepper-Potts-vg -wi-ao---- <9,08g
root Pepper-Potts-vg -wi-ao---- <3,18g
swap_1 Pepper-Potts-vg -wi-ao---- 976,00m
tmp Pepper-Potts-vg -wi-ao---- 316,00m
var Pepper-Potts-vg -wi-ao---- 1,37g
编辑2:我运行systemctl status /dev/mapper/Pepper--Potts--vg-ZEROED--VDO
后得到以下结果:
● dev-mapper-Pepper\x2d\x2dPotts\x2d\x2dvg\x2dZEROED\x2d\x2dVDO.device - /dev/mapper/Pepper--Potts--vg-ZEROED--VDO
Loaded: loaded
Active: inactive (dead)
其他 LVloaded
包括active (plugged)
:
● dev-mapper-Pepper\x2d\x2dPotts\x2d\x2dvg\x2dhome.device - /dev/mapper/Pepper--Potts--vg-home
Follow: unit currently follows state of sys-devices-virtual-block-dm\x2d4.device
Loaded: loaded
Active: active (plugged) since Sat 2022-05-14 19:00:24 CEST; 5min ago
Device: /sys/devices/virtual/block/dm-4
有什么想法吗?也许我应该创建一个虚拟设备,就像其他默认逻辑卷一样?
编辑 3:不,虚拟设备(/dev/dm-X)是在执行 lvcreate 时由 LVM 创建的
建议:
- Debian 是否有任何逻辑卷列表可在启动时激活?CentOS和 RHEL ?
- 可不可能是这个旧的 Debian 错误??
答案1
解决了这里。
- 我的
/etc/fstab
台词直接取自Red Hat 文档但无法工作,因为vdo.service
不再存在;VDO 模块现在与 LVM 集成。所以现在我运行:
echo "$DM_VDOLV_PATH $MOUNT_POINT ext4 defaults,x-systemd.device-timeout=0 0 0" >> /etc/fstab
- 我发现这
lvm2-activation-generator
不是一个要安装的软件包,apt install ...
但它与 apt 一起打包,可以通过event_activation = 0
在 LVM 配置文件 (/etc/lvm/lvm.conf
) 中添加配置行来使用。此配置文件在 LVM 的初始化阶段加载 (来源)。一旦“启用”,此生成器将为每个/etc/fstab
条目(在/run/systemd/generator/
目录中)生成 systemd 挂载单元,并且系统将正确启动。