Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.debian.kernel > #66685 > unrolled thread
| Started by | Samuel Progin <samuel.progin@gmail.com> |
|---|---|
| First post | 2020-04-04 02:00 +0200 |
| Last post | 2020-04-28 05:10 +0200 |
| Articles | 2 — 2 participants |
Back to article view | Back to linux.debian.kernel
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
| From | Samuel Progin <samuel.progin@gmail.com> |
|---|---|
| Date | 2020-04-04 02:00 +0200 |
| Subject | Bug#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]
| From | Ben Hutchings <ben@decadent.org.uk> |
|---|---|
| Date | 2020-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