You are not logged in.
Pages: 1
I'm trying to get smarter on btrfs, snapper, and timeshift. So like many, I watch a lot of Youtube videos and play with a lot of VMs to experiment.
I find one thing that is really confusing and that is how mounting a root subvolume for maintenance at the subvolume level is done differently between distros.
As an example, if I'm in Archlinux and want to move snapshots around I want access to the whole snapshots world so I mount this way.
mount -o subvolid=5 /dev/sda3 /mnt
That partition is mounted in fstab as:
UUID=klsdjfldkfjslkfj / btrfs defaults,subvol=@,compress=zstd,......
So my root subvolume is mounted for normal use at / as normal, but after the first mount above I have the /mnt look like:
ls /mnt
@ @home @snapshots
So my confusion comes when I watch or read a btrfs tutorial where they are using an ubuntu/debian distro, they don't need the subvolid=5 that I needed for Archlinux. They just use:
mount /dev/sda3 /mnt
to see the same subvolume structure.
Anyone know why the differences?
Offline
If you don't specify a subvol, the default subvol is used.
Offline
If you don't specify a subvol, the default subvol is used.
Thanks for your help. I'm still having issues really understanding this. They didn't have btrfs back in the '60s on IBM System 360. :-)
here is my fstab:
# <file system> <mount point> <type> <options> <dump> <pass>
UUID=C173-C18E /boot/efi vfat defaults,noatime 0 2
UUID=09158dc0-4ab9-4401-9c3e-b3a3855a03c1 / btrfs subvol=/@,defaults,noatime,compress=zstd 0 0
UUID=09158dc0-4ab9-4401-9c3e-b3a3855a03c1 /home btrfs subvol=/@home,defaults,noatime,compress=zstd 0 0
UUID=09158dc0-4ab9-4401-9c3e-b3a3855a03c1 /.snapshots btrfs subvol=/@snapshots,defaults,noatime,compress=zstd 0 0
UUID=09158dc0-4ab9-4401-9c3e-b3a3855a03c1 /var btrfs subvol=/@var,defaults,noatime,compress=zstd 0 0
and here is my subvol list:
ID 257 gen 290 top level 5 path @home
ID 258 gen 272 top level 5 path @snapshots
ID 259 gen 290 top level 5 path @var
ID 260 gen 25 top level 259 path @var/lib/portables
ID 261 gen 26 top level 259 path @var/lib/machines
ID 263 gen 63 top level 258 path @snapshots/1/snapshot
ID 264 gen 64 top level 258 path @snapshots/2/snapshot
ID 265 gen 174 top level 258 path @snapshots/3/snapshot
ID 268 gen 113 top level 258 path @snapshots/6/snapshot
ID 269 gen 114 top level 258 path @snapshots/7/snapshot
ID 270 gen 115 top level 258 path @snapshots/8/snapshot
ID 271 gen 116 top level 258 path @snapshots/9/snapshot
ID 272 gen 126 top level 258 path @snapshots/10/snapshot
ID 273 gen 285 top level 5 path @
ID 274 gen 173 top level 258 path @snapshots/11/snapshot
ID 275 gen 186 top level 258 path @snapshots/12/snapshot
ID 276 gen 242 top level 258 path @snapshots/13/snapshot
ID 277 gen 269 top level 258 path @snapshots/14/snapshot
ID 278 gen 270 top level 258 path @snapshots/15/snapshot
Note that:
sudo btrfs su get-default /
ID 275 gen 186 top level 258 path @snapshots/12/snapshot
Drives look like this:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sr0 11:0 1 1024M 0 rom
vda 254:0 0 50G 0 disk
├─vda1 254:1 0 300M 0 part /boot/efi
└─vda2 254:2 0 49.7G 0 part /home
/var
/.snapshots
/
So if I mount without the subvolid I set this:
sudo mount /dev/vda2 /mnt
ls /mnt
bin boot dev etc home lib lib64 mnt opt proc root run sbin srv sys tmp usr var
However, if I switch to using subvolid I see this:
sudo umount /mnt
sudo mount -o subvolid=5 /dev/vda2 /mnt
ls /mnt
@ @home @snapshots @var
This is what I see in Archlinux tutorials on working with subvols where subvolid=5 is like some god mode looking down above everything. Whereas if I look at a newly install Linux Mint 21 with btrfs I see
sudo btrfs su get-default /
ID 5 (FS_TREE)
And the mounts without subvolid=5 shows this:
sudo mount /dev/nvme0n1p3 /mnt
ls /mnt
@ @home snapshots timeshift-btrfs
So maybe something about snapper's usage did a set-default to some id and was not 5 and that's why I needed to use ID 5 to get to god mode as I call it.
Offline
I think you are confusing the btrfs root subvolume (ID=0 or 5) with the Linux / (which is called the root directory). They can be, but don't have to be the same btrfs subvolume. For example, on my system:
UUID=20db1fe2-60a4-4eb7-87ac-1953a55dda16 / btrfs rw,relatime,ssd,space_cache,subvolid=460,subvol=/@ 0 0
Note that the subvolume id is 460. It is a subvolume of the btrfs root subvolume. You have to make sure how your system has configured this, or manage it yourself.
As to different distros doing it differently, I don't think so. btrfs is now part of the kernel, and the package that provides the tools (btrfs-progs in Arch Linux) is also provided by the btrfs upstream developers.
PS - I would never put the Linux / in the btrfs root subvolume, but that is me. I also think most people do not.
Last edited by ratcheer (2022-08-05 14:25:44)
Offline
@ratcheer Thanks, it's getting a little clearer.
Offline
Pages: 1