Rd.lvm.lv On CentOS Stream 9 (first-boot Failure)

Home » CentOS » Rd.lvm.lv On CentOS Stream 9 (first-boot Failure)
CentOS 2 Comments

I’ve install a CentOS Stream 9 system from a kickstart file that specified (among other things) several logical volumes:

logvol / –fstype=”ext4″ –size=10240 –name=lv_root –vgname=VolGroup logvol /var –fstype=”ext4″ –size=4096 –name=lv_var –vgname=VolGroup logvol swap –fstype=”swap” –size=2048 –name=lv_swap –vgname=VolGroup

When that system rebooted, the kernel args did specify
“rd.lvm.lv=VolGroup/lv_root rd.lvm.lv=VolGroup/lv_swap”, but did not specify “rd.lvm.lv=VolGroup/lv_var”, so boot failed because the filesystem required for /var couldn’t be found.

The dracut.cmdline documentation does record that it will only activate the LVs given as “rd.lvm.lv”, but I’m confused about several things.

1: The system also includes a volume group named “BackupGroup” and that group activates on boot (post-dracut).  Why are those LVs activated when rd.lvm.lv is specified?
2: Why didn’t Anaconda add the “var” LV to the kernel arguments?
3: This seems like a change from earlier releases, but I can’t find any documentation to that effect.  Under CentOS 7, after dracut had finished, the remaining logical volumes in that group would be activated.  Because they aren’t, currently, libvirtd cannot start any of its guests until I manually activate the group.  How can I restore the old behavior of activating all of the LVs on boot?

2 thoughts on - Rd.lvm.lv On CentOS Stream 9 (first-boot Failure)

  • As far as I can tell, this is because in the dracut boot process, the device backing VolGroup is activated, but the device backing BackupGroup is not.  As a result, the latter device triggers a udev event after the normal root FS is mounted, and udev creates a transient systemd unit to start the BackupGroup VG.  No udev event for VolGroup == no furter activation.

    I still don’t know the answer to this, but the current arrangement seems like a bug.  As far as I know, the LVs inside VolGroup can’t be activated unless that VG is complete, and if it’s complete, then I can see no good reason why Anaconda should add individual LVs to the kernel command line rather than “rd.lvm.vg=VolGroup”.  Activating the group as a whole would fix both the boot failure resulting from lv_var not being activated, as well as the libvirt failure resulting from the guest LVs being absent.

    Once I replaced Anaconda’s boot args with “rd.lvm.vg=VolGroup”, the system works properly.

    I believe the regression is the result of deprecating lvmetad in favor of udev event-based activation.

  • T24gMTAvMDEvMjAyMiAyMzoyMiwgR29yZG9uIE1lc3NtZXIgd3JvdGU6DQo+IE9uIDEvOS8y MiAxNTozNywgR29yZG9uIE1lc3NtZXIgd3JvdGU6DQo+PiAxOiBUaGUgc3lzdGVtIGFsc28g aW5jbHVkZXMgYSB2b2x1bWUgZ3JvdXAgbmFtZWQgIkJhY2t1cEdyb3VwIiBhbmQgDQo+PiB0
    aGF0IGdyb3VwIGFjdGl2YXRlcyBvbiBib290IChwb3N0LWRyYWN1dCkuwqAgV2h5IGFyZSB0
    aG9zZSBMVnMgDQo+PiBhY3RpdmF0ZWQgd2hlbiByZC5sdm0ubHYgaXMgc3BlY2lmaWVkPw0K
    PiANCj4gDQo+IEFzIGZhciBhcyBJIGNhbiB0ZWxsLCB0aGlzIGlzIGJlY2F1c2UgaW4gdGhl IGRyYWN1dCBib290IHByb2Nlc3MsIHRoZSANCj4gZGV2aWNlIGJhY2tpbmcgVm9sR3JvdXAg aXMgYWN0aXZhdGVkLCBidXQgdGhlIGRldmljZSBiYWNraW5nIEJhY2t1cEdyb3VwIA0KPiBp cyBub3QuwqAgQXMgYSByZXN1bHQsIHRoZSBsYXR0ZXIgZGV2aWNlIHRyaWdnZXJzIGEgdWRl diBldmVudCBhZnRlciB0aGUgDQo+IG5vcm1hbCByb290IEZTIGlzIG1vdW50ZWQsIGFuZCB1
    ZGV2IGNyZWF0ZXMgYSB0cmFuc2llbnQgc3lzdGVtZCB1bml0IHRvIA0KPiBzdGFydCB0aGUg QmFja3VwR3JvdXAgVkcuwqAgTm8gdWRldiBldmVudCBmb3IgVm9sR3JvdXAgPT0gbm8gZnVy dGVyIA0KPiBhY3RpdmF0aW9uLg0KPiANCj4gDQo+PiAyOiBXaHkgZGlkbid0IEFuYWNvbmRh IGFkZCB0aGUgInZhciIgTFYgdG8gdGhlIGtlcm5lbCBhcmd1bWVudHM/DQo+IA0KPiANCj4g SSBzdGlsbCBkb24ndCBrbm93IHRoZSBhbnN3ZXIgdG8gdGhpcywgYnV0IHRoZSBjdXJyZW50
    IGFycmFuZ2VtZW50IHNlZW1zIA0KPiBsaWtlIGEgYnVnLsKgIEFzIGZhciBhcyBJIGtub3cs IHRoZSBMVnMgaW5zaWRlIFZvbEdyb3VwIGNhbid0IGJlIA0KPiBhY3RpdmF0ZWQgdW5sZXNz IHRoYXQgVkcgaXMgY29tcGxldGUsIGFuZCBpZiBpdCdzIGNvbXBsZXRlLCB0aGVuIEkgY2Fu IA0KPiBzZWUgbm8gZ29vZCByZWFzb24gd2h5IEFuYWNvbmRhIHNob3VsZCBhZGQgaW5kaXZp ZHVhbCBMVnMgdG8gdGhlIGtlcm5lbCANCj4gY29tbWFuZCBsaW5lIHJhdGhlciB0aGFuICJy ZC5sdm0udmc9Vm9sR3JvdXAiLsKgIEFjdGl2YXRpbmcgdGhlIGdyb3VwIGFzIA0KPiBhIHdo b2xlIHdvdWxkIGZpeCBib3RoIHRoZSBib290IGZhaWx1cmUgcmVzdWx0aW5nIGZyb20gbHZf dmFyIG5vdCBiZWluZyANCj4gYWN0aXZhdGVkLCBhcyB3ZWxsIGFzIHRoZSBsaWJ2aXJ0IGZh aWx1cmUgcmVzdWx0aW5nIGZyb20gdGhlIGd1ZXN0IExWcyANCj4gYmVpbmcgYWJzZW50Lg0K
    PiANCj4gT25jZSBJIHJlcGxhY2VkIEFuYWNvbmRhJ3MgYm9vdCBhcmdzIHdpdGggInJkLmx2
    bS52Zz1Wb2xHcm91cCIsIHRoZSANCj4gc3lzdGVtIHdvcmtzIHByb3Blcmx5Lg0KPiANCj4g DQo+PiAzOiBUaGlzIHNlZW1zIGxpa2UgYSBjaGFuZ2UgZnJvbSBlYXJsaWVyIHJlbGVhc2Vz LCBidXQgSSBjYW4ndCBmaW5kIA0KPj4gYW55IGRvY3VtZW50YXRpb24gdG8gdGhhdCBlZmZl Y3QuwqAgVW5kZXIgQ2VudE9TIDcsIGFmdGVyIGRyYWN1dCBoYWQgDQo+PiBmaW5pc2hlZCwg dGhlIHJlbWFpbmluZyBsb2dpY2FsIHZvbHVtZXMgaW4gdGhhdCBncm91cCB3b3VsZCBiZSAN
    Cj4+IGFjdGl2YXRlZC7CoCBCZWNhdXNlIHRoZXkgYXJlbid0LCBjdXJyZW50bHksIGxpYnZp cnRkIGNhbm5vdCBzdGFydCBhbnkgDQo+PiBvZiBpdHMgZ3Vlc3RzIHVudGlsIEkgbWFudWFs bHkgYWN0aXZhdGUgdGhlIGdyb3VwLsKgIEhvdyBjYW4gSSByZXN0b3JlIA0KPj4gdGhlIG9s ZCBiZWhhdmlvciBvZiBhY3RpdmF0aW5nIGFsbCBvZiB0aGUgTFZzIG9uIGJvb3Q/DQo+IA0K
    PiANCj4gSSBiZWxpZXZlIHRoZSByZWdyZXNzaW9uIGlzIHRoZSByZXN1bHQgb2YgZGVwcmVj YXRpbmcgbHZtZXRhZCBpbiBmYXZvciANCj4gb2YgdWRldiBldmVudC1iYXNlZCBhY3RpdmF0
    aW9uLg0KPiANCg0KDQpTZWUgbXVsdGlwbGUgYnVnemlsbGEgcmVwb3J0cyBvcGVuIChpbmNs dWRpbmcgb25lIGluIFNlcHRlbWJlcikgYWJvdXQgDQpzb21lIG11bHRpcGxlIGlzc3VlcyBh bGwgbWl4ZWQgYWxsIHRvZ2V0aGVyIDoNCg0KaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29t L3Nob3dfYnVnLmNnaT9pZD0yMDAyNjQwDQpodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20v c2hvd19idWcuY2dpP2lkPTIwMzM3MzcNCg0KDQotLSANCkZhYmlhbiBBcnJvdGluDQpUaGUg Q2VudE9TIFByb2plY3QgfCBodHRwczovL3d3dy5jZW50b3Mub3JnDQpncGcga2V5OiAxN0Yz QjdBMSB8IHR3aXR0ZXI6IEBhcnJmYWINCg=