Hello list, I've noticed ActiveStorage::Service::DiskService does two levels of directory sharding <https://github.com/rails/rails/blob/6-0-stable/activestorage/lib/active_storage/service/disk_service.rb#L143-L145> for Blob pathnames:
$ tree storage/ > storage/ > +-- aa/ > +-- bb/ > | +-- aabb00... > +-- cc/ > +-- aacc11... However, when it comes to variants, the sharding is circumvented: $ tree storage/ > storage/ > +-- aa/ > | +-- bb/ > | | +-- aabb00... > | +-- cc/ > | +-- aacc11... > +-- va/ > +-- ri/ > +-- variants/ > +-- aabb00.../ > | +-- <encoded variant file name> > +-- aacc11.../ > +-- <encoded variant file name> Should sharding exclude variant/ key prefixes? Maybe the directory layout can look like this: $ tree storage/ > storage/ > +-- aa/ > | +-- bb/ > | | +-- aabb00... > | +-- cc/ > | +-- aacc11... > +-- variants/ > +-- aa/ > +-- bb/ > | +-- aabb00.../ > | +-- <encoded variant file name> > +-- cc/ > +-- aacc11.../ > +-- <encoded variant file name> This might not actually a problem at all, as the limiting factor on ext4 file systems is the inode index (which allow directories to contain ~10 million entries with 32 character long names (reference <https://medium.com/@hartator/benchmark-deep-directory-structure-vs-flat-directory-structure-to-store-millions-of-files-on-ext4-cac1000ca28>); the Base58 blob id is only 24 characters long). I guess with ZFS it's even less of a problem. I was going to create an issue for this, but this might actually be expected/desired behaviour. I'm also not sure if this is a bug or feature request either. I *know* changing this will cause some headache. I'm primarily looking for other opinions. Kind Regards, Dominik -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-talk+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/6624225b-b14e-4143-82d2-c75a94e56c6c%40googlegroups.com.