Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.debian.kernel > #66685 > unrolled thread

Bug#955709: initramfs-tools: All LVM members of a Btrfs raid1 rootfs are not activated prior to btrfs device scan.

Started bySamuel Progin <samuel.progin@gmail.com>
First post2020-04-04 02:00 +0200
Last post2020-04-28 05:10 +0200
Articles 2 — 2 participants

Back to article view | Back to linux.debian.kernel


Contents

  Bug#955709: initramfs-tools: All LVM members of a Btrfs raid1 rootfs are not activated prior to btrfs device scan. Samuel Progin <samuel.progin@gmail.com> - 2020-04-04 02:00 +0200
    Bug#955709: initramfs-tools: All LVM members of a Btrfs raid1 rootfs are not activated prior to btrfs device scan. Ben Hutchings <ben@decadent.org.uk> - 2020-04-28 05:10 +0200

#66685 — Bug#955709: initramfs-tools: All LVM members of a Btrfs raid1 rootfs are not activated prior to btrfs device scan.

FromSamuel Progin <samuel.progin@gmail.com>
Date2020-04-04 02:00 +0200
SubjectBug#955709: initramfs-tools: All LVM members of a Btrfs raid1 rootfs are not activated prior to btrfs device scan.
Message-ID<zREo9-1xZ-1@gated-at.bofh.it>
Package: initramfs-tools
Version: 0.133+deb10u1
Severity: important

Dear Maintainer,


   * What led up to the situation?
1. A single Btrfs rootfs on the top of lvm is converted to a raid 1 array by adding a device (logical volume in this case) and running a Btrfs balance convert start.
2. # update-initramfs -u
3. # reboot
4. the reboot fails as the btrfs rootfs cannot be mounted, complaining that a device is missing, and dropping to an initramfs shell. The second device is missing as it is not yet active in lvm.

   * What exactly did you do (or not do) that was effective (or
     ineffective)?
I created a script in /etc/initramfs-tools/scripts/local-top that activates all LV with "lvm vgchange -ay" and chrooted and rebuilded with update-initramfs -u

   * What was the outcome of this action?
The logical volumes are activated, and the btrfs rootfs volume is mounted properly. The systems boots up.



-- Package-specific info:
-- initramfs sizes
-rw-r--r-- 1 root root 45M Mar 22 01:01 /boot/initrd.img-5.4.0-0.bpo.3-amd64
-rw-r--r-- 1 root root 44M Apr  4 00:46 /boot/initrd.img-5.4.0-0.bpo.4-amd64
-rw-r--r-- 1 root root 45M Apr  3 23:09 /boot/initrd.img-5.4.0-0.bpo.4-amd64.bak
-- /proc/cmdline
BOOT_IMAGE=/vmlinuz-5.4.0-0.bpo.4-amd64 root=/dev/mapper/bioserver-rootb ro console=tty0 console=ttyS0,115200n8

-- /proc/filesystems
	btrfs
	squashfs
	ext3
	ext2
	ext4
	fuseblk

-- lsmod
Module                  Size  Used by
fuse                  139264  2
xt_nat                 16384  1
xt_tcpudp              20480  3
veth                   32768  0
xt_conntrack           16384  2
xt_MASQUERADE          20480  3
nf_conntrack_netlink    53248  0
xfrm_user              40960  1
xfrm_algo              16384  1 xfrm_user
nft_counter            16384  26
xt_addrtype            16384  2
nft_compat             20480  11
nft_chain_nat          16384  4
nf_nat                 49152  3 xt_nat,nft_chain_nat,xt_MASQUERADE
nf_conntrack          159744  5 xt_conntrack,nf_nat,xt_nat,nf_conntrack_netlink,xt_MASQUERADE
nf_defrag_ipv6         24576  1 nf_conntrack
nf_defrag_ipv4         16384  1 nf_conntrack
nf_tables             172032  102 nft_compat,nft_counter,nft_chain_nat
nfnetlink              16384  4 nft_compat,nf_conntrack_netlink,nf_tables
br_netfilter           28672  0
overlay               135168  0
vboxnetadp             28672  0
vboxnetflt             32768  0
bridge                200704  1 br_netfilter
stp                    16384  1 bridge
llc                    16384  2 bridge,stp
vboxdrv               495616  2 vboxnetadp,vboxnetflt
algif_skcipher         16384  0
af_alg                 28672  1 algif_skcipher
intel_rapl_msr         20480  0
intel_rapl_common      28672  1 intel_rapl_msr
x86_pkg_temp_thermal    20480  0
intel_powerclamp       20480  0
kvm_intel             282624  0
kvm                   774144  1 kvm_intel
irqbypass              16384  1 kvm
snd_soc_skl           176128  0
ext4                  757760  1
snd_soc_hdac_hda       24576  1 snd_soc_skl
crct10dif_pclmul       16384  1
snd_hda_ext_core       32768  2 snd_soc_hdac_hda,snd_soc_skl
snd_soc_sst_ipc        20480  1 snd_soc_skl
snd_soc_sst_dsp        40960  1 snd_soc_skl
snd_soc_acpi_intel_match    32768  1 snd_soc_skl
snd_soc_acpi           16384  2 snd_soc_acpi_intel_match,snd_soc_skl
crc16                  16384  1 ext4
mbcache                16384  1 ext4
jbd2                  126976  1 ext4
crc32_pclmul           16384  0
snd_soc_core          274432  2 snd_soc_hdac_hda,snd_soc_skl
snd_hda_codec_hdmi     73728  1
ghash_clmulni_intel    16384  0
snd_compress           28672  1 snd_soc_core
snd_hda_intel          49152  0
snd_intel_nhlt         20480  2 snd_hda_intel,snd_soc_skl
squashfs               65536  4
snd_hda_codec         155648  3 snd_hda_codec_hdmi,snd_hda_intel,snd_soc_hdac_hda
radio_ma901            16384  0
aesni_intel           372736  6
cdc_ether              24576  0
snd_hda_core           98304  6 snd_hda_codec_hdmi,snd_hda_intel,snd_hda_ext_core,snd_hda_codec,snd_soc_hdac_hda,snd_soc_skl
snd_hwdep              16384  1 snd_hda_codec
crypto_simd            16384  1 aesni_intel
usbnet                 49152  1 cdc_ether
snd_pcm               118784  6 snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec,snd_soc_core,snd_soc_skl,snd_hda_core
videodev              249856  1 radio_ma901
cryptd                 24576  5 crypto_simd,ghash_clmulni_intel
glue_helper            16384  1 aesni_intel
r8152                  81920  0
intel_cstate           16384  0
iTCO_wdt               16384  0
snd_timer              40960  1 snd_pcm
mii                    16384  2 usbnet,r8152
intel_uncore          147456  0
mc                     57344  1 videodev
snd                    98304  8 snd_hda_codec_hdmi,snd_hwdep,snd_hda_intel,snd_hda_codec,snd_timer,snd_compress,snd_soc_core,snd_pcm
iTCO_vendor_support    16384  1 iTCO_wdt
mei_me                 45056  0
efi_pstore             16384  0
intel_rapl_perf        16384  0
soundcore              16384  1 snd
intel_wmi_thunderbolt    20480  0
serio_raw              20480  0
pcspkr                 16384  0
efivars                20480  1 efi_pstore
watchdog               28672  1 iTCO_wdt
mei                   118784  1 mei_me
sg                     40960  0
intel_pch_thermal      16384  0
it87                   65536  0
hwmon_vid              16384  1 it87
coretemp               20480  0
evdev                  28672  12
acpi_pad               28672  0
loop                   36864  8
ecryptfs              122880  0
parport_pc             32768  0
ppdev                  24576  0
lp                     20480  0
parport                61440  3 parport_pc,lp,ppdev
efivarfs               16384  1
ip_tables              32768  0
x_tables               49152  7 xt_conntrack,nft_compat,xt_tcpudp,xt_addrtype,xt_nat,ip_tables,xt_MASQUERADE
autofs4                53248  2
dm_mirror              28672  0
dm_region_hash         20480  1 dm_mirror
dm_log                 20480  2 dm_region_hash,dm_mirror
dm_crypt               40960  3
dm_cache_smq           28672  2
dm_cache               73728  3 dm_cache_smq
dm_persistent_data     86016  1 dm_cache
dm_bio_prison          20480  1 dm_cache
dm_bufio               32768  1 dm_persistent_data
dm_raid                45056  1
raid456               176128  1 dm_raid
async_raid6_recov      24576  1 raid456
async_memcpy           20480  2 raid456,async_raid6_recov
dm_mod                155648  56 dm_raid,dm_crypt,dm_log,dm_cache,dm_mirror,dm_bufio
btrfs                1466368  2
zstd_decompress        86016  2 squashfs,btrfs
zstd_compress         172032  1 btrfs
libcrc32c              16384  5 nf_conntrack,nf_nat,dm_persistent_data,btrfs,raid456
crc32c_generic         16384  0
raid0                  24576  1
raid1                  53248  0
md_mod                172032  4 raid1,dm_raid,raid0,raid456
async_pq               20480  2 raid456,async_raid6_recov
raid6_pq              122880  4 async_pq,btrfs,raid456,async_raid6_recov
async_xor              20480  3 async_pq,raid456,async_raid6_recov
async_tx               20480  5 async_pq,async_memcpy,async_xor,raid456,async_raid6_recov
xor                    24576  2 async_xor,btrfs
uas                    28672  2
usb_storage            77824  1 uas
hid_generic            16384  0
usbhid                 65536  0
hid                   143360  2 usbhid,hid_generic
sd_mod                 57344  8
ahci                   40960  2
xhci_pci               20480  0
libahci                40960  1 ahci
i915                 1974272  1
libata                274432  2 libahci,ahci
xhci_hcd              278528  1 xhci_pci
igb                   249856  0
psmouse               176128  0
crc32c_intel           24576  4
dca                    16384  1 igb
i2c_i801               32768  0
ptp                    20480  1 igb
drm_kms_helper        212992  1 i915
scsi_mod              249856  5 sd_mod,usb_storage,uas,libata,sg
usbcore               307200  9 xhci_hcd,usbnet,usbhid,radio_ma901,usb_storage,xhci_pci,cdc_ether,uas,r8152
pps_core               24576  1 ptp
i2c_algo_bit           16384  2 igb,i915
drm                   544768  3 drm_kms_helper,i915
usb_common             16384  2 xhci_hcd,usbcore
wmi                    36864  1 intel_wmi_thunderbolt
fan                    20480  0
video                  53248  1 i915
button                 20480  0

-- /etc/initramfs-tools/modules
xor
async_tx
async_xor
async_pq
async_memcopy
md_mod
raid1
raid0
btrfs
dm_raid
dm_cache_smq
dm_crypt
dm_mod
dm_log
dm_region_hash
dm_mirror
lvm

-- /etc/kernel-img.conf
# Kernel image management overrides
# See kernel-img.conf(5) for details
do_symlinks = yes
do_bootloader = no
do_initrd = yes
link_in_boot = no

-- /etc/initramfs-tools/initramfs.conf
MODULES=most
BUSYBOX=auto
KEYMAP=n
COMPRESS=gzip
DEVICE=
NFSROOT=auto
RUNSIZE=10%

-- /etc/initramfs-tools/update-initramfs.conf
update_initramfs=yes
backup_initramfs=yes

-- /etc/crypttab
# <target name>	<source device>		<key file>	<options>
REMOVED

-- /proc/mdstat
Personalities : [raid1] [raid0] [raid6] [raid5] [raid4] 
unused devices: <none>

-- mkinitramfs hooks
/etc/initramfs-tools/hooks/:
lvm_addition

/usr/share/initramfs-tools/hooks:
bcache
btrfs
cryptgnupg
cryptgnupg-sc
cryptkeyctl
cryptopensc
cryptpassdev
cryptroot
cryptroot-unlock
dmsetup
fsck
fuse
intel_microcode
keymap
klibc-utils
kmod
lvm2
ntfs_3g
plymouth
resume
thermal
thin-provisioning-tools
udev
zz-busybox


-- System Information:
Debian Release: 10.3
  APT prefers stable
  APT policy: (500, 'stable')
Architecture: amd64 (x86_64)

Kernel: Linux 5.4.0-0.bpo.4-amd64 (SMP w/4 CPU cores)
Kernel taint flags: TAINT_OOT_MODULE, TAINT_UNSIGNED_MODULE
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE=en_US:en (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Versions of packages initramfs-tools depends on:
ii  initramfs-tools-core  0.133+deb10u1
ii  linux-base            4.6

initramfs-tools recommends no packages.

Versions of packages initramfs-tools suggests:
ii  bash-completion  1:2.8-6

-- Configuration Files:
/etc/initramfs-tools/update-initramfs.conf changed:
update_initramfs=yes
backup_initramfs=yes


-- no debconf information

[toc] | [next] | [standalone]


#66911

FromBen Hutchings <ben@decadent.org.uk>
Date2020-04-28 05:10 +0200
Message-ID<A0oNc-6ex-9@gated-at.bofh.it>
In reply to#66685

[Multipart message — attachments visible in raw view] — view raw

On Sat, 04 Apr 2020 01:40:18 +0200 Samuel Progin <samuel.progin@gmail.com> wrote:
[...]
>    * What led up to the situation?
> 1. A single Btrfs rootfs on the top of lvm is converted to a raid 1 array by adding a device (logical volume in this case) and running a Btrfs balance convert start.
> 2. # update-initramfs -u
> 3. # reboot
> 4. the reboot fails as the btrfs rootfs cannot be mounted, complaining that a device is missing, and dropping to an initramfs shell. The second device is missing as it is not yet active in lvm.
> 
>    * What exactly did you do (or not do) that was effective (or
>      ineffective)?
> I created a script in /etc/initramfs-tools/scripts/local-top that activates all LV with "lvm vgchange -ay" and chrooted and rebuilded with update-initramfs -u
> 
>    * What was the outcome of this action?
> The logical volumes are activated, and the btrfs rootfs volume is mounted properly. The systems boots up.

I can see why this is going wrong, and I'm not sure quite how to fix
it.  We've historically tried to make the initramfs portable across
device changes, so that rather than recording device IDs we rely on the
kernel command line and /etc/fstab to tell us which devices are
needed[*].  But they only name one device for each filesystem.

I can think of several options:

1. initramfs-tools provides a way for btrfs (and similar filesystems)
   to tell it about any extra devices they need, and records those in
   the initramfs (by LVM path or UUID).  They are activated at boot in
   the same way as other devices.  Moving the / or /usr filesystem to a
   new LV or changing its UUID can require an initramfs rebuild.
   Hopefully this won't be too surprising.

2. initramfs-tools or lvm2 provides a way to name additional required
   devices or volume groups, on the kernel command line.  This could
   be done in addition to option 1, as a rescue mechanism.

3. lvm2 adds a configuration option to control which volume groups are
   activated at boot.  The default could be all volume groups, or the
   current behaviour.

I would welcome comments on these from other maintainers.

Ben.

[*] The hibernation/resume device is an exception to this, but
hibernation images won't work across a device change anyway.

-- 
Ben Hutchings
Larkinson's Law: All laws are basically false.


[toc] | [prev] | [standalone]


Back to top | Article view | linux.debian.kernel


csiph-web