Skip to contentSkip to conversation

Mount multiple-device-filesystem by UUID

DISCUSSION Hendrik Friedel 3 participants 6 messages Jul 27, 2013 – Jul 28, 2013 Btrfs file system

lore
Share & tools
lore
#1 lore raw

Hello,

As stated in the wiki, multiple-device filesystems (e.g. raid 1) will only mount after a btfs device scan, or if all devices are passed with the mount options.

I remember, that for Ubuntu 12.04 I changed the initrd. But after a re-install, I have to do this again, and I don't remember how I did it.

So, the other option would be passing the devices in the fstab. But here, I'd prefer UUIDs rather than device names, as they can change.

Is this possible? What is the syntax?

Regards,
Hendrik

#2 lore raw
Quoted 7 lines · Hendrik Friedel

As stated in the wiki, multiple-device filesystems (e.g. raid 1) will only mount after a btfs device scan, or if all devices are passed with the mount options.

I remember, that for Ubuntu 12.04 I changed the initrd. But after a re-install, I have to do this again, and I don't remember how I did it.

With Ubuntu, just install the btrfs-tools package. It should modify
the initrd correctly.

Quoted 2 lines

So, the other option would be passing the devices in the fstab. But here, I'd prefer UUIDs rather than device names, as they can change.

This is why we don't recommend using device= mount flags.

Quoted 1 line

Is this possible? What is the syntax?

I don't believe it is possible. Finding filesystems by UUID is (I
think) a userspace-based thing, so you'd have to have an initrd anyway.

Hugo.

Signature · 3 lines
=== Hugo Mills: hugo@... carfax.org.uk | darksatanic.net | lug.org.uk ===
  PGP key: 65E74AC0 from wwwkeys.eu.pgp.net or http://www.carfax.org.uk
   --- "No!  My collection of rare, incurable diseases! Violated!" ---   
#3 lore raw

Hugo Mills posted on Sat, 27 Jul 2013 20:44:48 +0100 as excerpted:

Quoted 14 lines · Hendrik Friedel
Quoted 6 lines

As stated in the wiki, multiple-device filesystems (e.g. raid 1) will only mount after a btfs device scan, or if all devices are passed with the mount options.

I remember, that for Ubuntu 12.04 I changed the initrd. But after a re-install, I have to do this again, and I don't remember how I did it.

With Ubuntu, just install the btrfs-tools package. It should modify
the initrd correctly.

Quoted 2 lines

So, the other option would be passing the devices in the fstab. But here, I'd prefer UUIDs rather than device names, as they can change.

Quoted 6 lines

This is why we don't recommend using device= mount flags.

Quoted 1 line

Is this possible? What is the syntax?

I don't believe it is possible. Finding filesystems by UUID is (I
think) a userspace-based thing, so you'd have to have an initrd anyway.

btrfs raid1 root here, was initr*less until I switched to btrfs which is broken with direct-kernel-root-mount rootflags=device=whatever syntax.

UUIDs are indeed userspace -- udev/systemd. However, if your initr* includes udev, at least here, it "just works".

I use root=LABEL=whatever here on the kernel commandline for root, and LABEL=whatever for non-root in fstab, but as long as udev has the directory in /dev/disk/*, mount should work with it, so root=UUID=whatever at the kernel commandline should work, as should UUID=whatever in fstab as the first field.

Signature · 3 lines
Duncan - List replies preferred.   No HTML msgs.
"Every nonfree program has a lord, a master --
and if you use the program, he is your master."  Richard Stallman
#4 lore raw

Duncan posted on Sat, 27 Jul 2013 22:14:02 +0000 as excerpted:

Quoted 11 lines

btrfs raid1 root here, was initr*less until I switched to btrfs which is broken with direct-kernel-root-mount rootflags=device=whatever syntax.

UUIDs are indeed userspace -- udev/systemd. However, if your initr* includes udev, at least here, it "just works".

I use root=LABEL=whatever here on the kernel commandline for root, and LABEL=whatever for non-root in fstab, but as long as udev has the directory in /dev/disk/*, mount should work with it, so root=UUID=whatever at the kernel commandline should work, as should UUID=whatever in fstab as the first field.

I can add...

* I use dracut as my initramfs generator, but with some of the default modules stripped in ordered to create a leaner initramfs.

* It has a(n optional but obviously activated here) btrfs module that among other things, runs btrfs device scan before attempting to mount real-root. That's the critical bit that should be in your initramfs before attempting to mount a multi-device btrfs. With the btrfs executable and a call to btrfs device scan, mount, and udev creating the /dev/disk/by-*/ subdirs, an initramfs environment should really handle pretty much all the mount options available to you at a full-booted commandline.

Signature · 3 lines
Duncan - List replies preferred.   No HTML msgs.
"Every nonfree program has a lord, a master --
and if you use the program, he is your master."  Richard Stallman