Quantcast
Viewing all articles
Browse latest Browse all 35

Filesystem superblocks and their backup copies

I’d like to understand how (modern) filesystems are implemented and having trouble to fully understand superblocks and their backups. I reference ext4 and btrfs, but the questions may also apply to other filesystems.

Ext4 stores a couple of superblocks (my fs for example has one primary and seven backup SBs). I do understand that, since the superblock defines important characteristics of the filesystem, an inline backup makes sense. But I don’t get why so many backups, so:

  • Why store so many superblocks? What’s the benefit of having 7 backup SBs versus e.g just one?

According to ext4 documentation ext4 stores a “write time” within the SB (last write since epoch). That would imply that every write-transaction also consists of a write to the SB. Given my system, having 7 backup SBs, each write-transaction would consist of 8 SB writes. That seems a ridiculous amount of non-sequential metadata writes for a single transaction, leading to the question:

  • Am I correct that on ext4 SBs are written that often?

The same questions basically apply to btrfs where SBs are distributed among static address blocks (primary block at 0×10000) and only in SSD mode (due to wear leveling concerns) only one is written per commit.

  • Is there a benefit for btrfs to store the primary superblock at 0×10000 instead of 0×0?

The documentation of btrfs also states:
Note that btrfs only recognizes disks with a valid 0×10000 superblock; otherwise, there would be confusion with other filesystems. This is even more confusing since a broken SB at 0×10000 would lead to an invalid filesystem, even if there’re other valid SBs at other locations.

  • How does btrfs benefit from superblock backups, if the filesystem is invalid on a broken primary superblock?

Viewing all articles
Browse latest Browse all 35

Trending Articles