Btrfs setup EOS

Trying to get a better understanding of the btrfs setup on eos. It’s hard to formulate a proper question when you don’t know what it is you want to ask or how to go about it. So I can only try to in a way that makes sense to me when i think about it even though I’m probably wrong. :laughing:

First of all i don’t understand subvolumes nested or flat as talked about. What is the install on EOS?
This is my EOS btrfs as installed.

nvme0n1     259:0    0 465.8G  0 disk 
├─nvme0n1p1 259:2    0  1000M  0 part /boot/efi
└─nvme0n1p2 259:3    0 464.8G  0 part /var/cache
                                      /var/log
                                      /swap
                                      /home
                                      /

So the other thing i don’t understand is the @ symbol used and how the subvolumes are listed.

[ricklinux@eos-plasma ~]$ sudo mount /dev/nvme0n1p2 /mnt
[sudo] password for ricklinux: 

[ricklinux@eos-plasma ~]$ sudo btrfs subvolume list -p /mnt
ID 256 gen 12340 parent 5 top level 5 path @
ID 257 gen 12340 parent 5 top level 5 path @home
ID 258 gen 12319 parent 5 top level 5 path @cache
ID 259 gen 12340 parent 5 top level 5 path @log
ID 260 gen 789 parent 5 top level 5 path @swap
ID 261 gen 27 parent 256 top level 256 path @/var/lib/portables
ID 262 gen 28 parent 256 top level 256 path @/var/lib/machines
ID 263 gen 12270 parent 256 top level 256 path @/.snapshots
ID 267 gen 191 parent 263 top level 263 path @/.snapshots/4/snapshot
ID 274 gen 269 parent 263 top level 263 path @/.snapshots/11/snapshot
ID 312 gen 1503 parent 263 top level 263 path @/.snapshots/49/snapshot
ID 453 gen 6120 parent 263 top level 263 path @/.snapshots/190/snapshot
ID 505 gen 7755 parent 263 top level 263 path @/.snapshots/242/snapshot
ID 519 gen 8290 parent 263 top level 263 path @/.snapshots/256/snapshot
ID 530 gen 8695 parent 263 top level 263 path @/.snapshots/267/snapshot
ID 544 gen 9067 parent 263 top level 263 path @/.snapshots/281/snapshot
ID 559 gen 9870 parent 263 top level 263 path @/.snapshots/296/snapshot
ID 577 gen 10898 parent 263 top level 263 path @/.snapshots/314/snapshot
ID 578 gen 10899 parent 263 top level 263 path @/.snapshots/315/snapshot
ID 580 gen 11074 parent 263 top level 263 path @/.snapshots/317/snapshot
ID 581 gen 11075 parent 263 top level 263 path @/.snapshots/318/snapshot
ID 582 gen 11077 parent 263 top level 263 path @/.snapshots/319/snapshot
ID 584 gen 11215 parent 263 top level 263 path @/.snapshots/321/snapshot
ID 585 gen 11218 parent 263 top level 263 path @/.snapshots/322/snapshot
ID 586 gen 11220 parent 263 top level 263 path @/.snapshots/323/snapshot
ID 590 gen 11501 parent 263 top level 263 path @/.snapshots/327/snapshot
ID 591 gen 11502 parent 263 top level 263 path @/.snapshots/328/snapshot
ID 592 gen 11504 parent 263 top level 263 path @/.snapshots/329/snapshot
ID 596 gen 11748 parent 263 top level 263 path @/.snapshots/333/snapshot
ID 597 gen 11749 parent 263 top level 263 path @/.snapshots/334/snapshot
ID 598 gen 11751 parent 263 top level 263 path @/.snapshots/335/snapshot
ID 599 gen 11836 parent 263 top level 263 path @/.snapshots/336/snapshot
ID 600 gen 11893 parent 263 top level 263 path @/.snapshots/337/snapshot
ID 601 gen 11894 parent 263 top level 263 path @/.snapshots/338/snapshot
ID 602 gen 11896 parent 263 top level 263 path @/.snapshots/339/snapshot
ID 603 gen 11942 parent 263 top level 263 path @/.snapshots/340/snapshot
ID 604 gen 12042 parent 263 top level 263 path @/.snapshots/341/snapshot
ID 605 gen 12150 parent 263 top level 263 path @/.snapshots/342/snapshot
ID 606 gen 12237 parent 263 top level 263 path @/.snapshots/343/snapshot
ID 607 gen 12244 parent 263 top level 263 path @/.snapshots/344/snapshot
ID 608 gen 12246 parent 263 top level 263 path @/.snapshots/345/snapshot
ID 609 gen 12248 parent 263 top level 263 path @/.snapshots/346/snapshot
ID 610 gen 12250 parent 263 top level 263 path @/.snapshots/347/snapshot
ID 611 gen 12251 parent 263 top level 263 path @/.snapshots/348/snapshot
ID 612 gen 12252 parent 263 top level 263 path @/.snapshots/349/snapshot
ID 613 gen 12253 parent 263 top level 263 path @/.snapshots/350/snapshot
ID 614 gen 12263 parent 263 top level 263 path @/.snapshots/351/snapshot
[ricklinux@eos-plasma ~]$ 

Besides trying to understand the setup and terminolgy the reason I’m asking is because I’m trying to understand how to create other subvolumes that are the same under the @ such as a subvolume if i wanted to save files for music or documents etc?

If you create a directory it’s not a subvolume and is not under @?
I’m assuming you have to mount the btrfs file system partition in order to create another subvolume?

Do you mount the drive like above? Or like this?

sudo mount -o subvol=@ /dev/nvme0n1p2 /mnt

I’m just confused about the structure or tree and if i just open a terminal and create a directory compared to a subvolume and how does it get created so it is under @

The wiki is useless to explain this in a way that i could comprehend. I’m just a layman not a linux guru or a coder. I try my best with my own deep thoughts but it’s hard to understand it at a level i need to in order to get it which is deeper than to be told just do this and that to create it. That doesn’t help me understand anything except accomplish a task until it breaks.

I’m not having any issues. Matter of fact i never have any update problems on btrfs and I’m also using grub. It’s just trying to understand somethings so i can do more on my own and actually know what it is I’m doing and why it has to be that way.

I just can’t understand it reading about btrfs from wikis. :man_shrugging:

flat

The @ is part of the name. It doesn’t have any particular meaning it is just a convention. For example, the subvolume mounted at /home is called @home but it could just as easily be called bob. It doesn’t matter that much.

However, timeshift requires that the subvolume mounted at / be named @ and the one mounted at /home be named @home so if you use timeshift you should use those names. We use those by default.

If you want to mount the root of the partition to create flat subvolumes, you would do it like this:

sudo mount -o subvolid=5 /dev/nvme0n1p2 /mnt

Then you add an entry in /etc/fstab for the newly created subvolume.

The subvoid=5 is used because that is the parent?

Edit: The reason I’m asking these questions is because i tried to create a subvolume and when i listed the subvolumes it didn’t have the @ symbol?

Is this created when the installer creates the btrfs file system to install to?

sudo mount -o subvol=@ /dev/nvme0n1p2 /mnt

vs

sudo mount -o subvolid=5 /dev/nvme0n1p2 /mnt

So the first command is only mounting the subvolume on the drive but not the root of the partition?

subvolid=5 is always the root of the filesystem.

Right, I explained that above. @ is part of the name. It isn’t anything special. We name it @home by default but the @ has no special meaning.

If you want the subvolume to start with @, you need to put that in the name. Although, again, it doesn’t matter if contains @ or not.

Yes.

Yes. The first command you listed mounts the @ subvolume which is one normally mounted at /. However, that isn’t the root of the btrfs filesystem.

Okay … Thank you for the explanations. I might gain another 3% understanding. :sweat_smile:

This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.