When I was streaming audio and video in PlayStation 2 games, I had to care a lot about physical disk layout. But, even then it boiled down to: Seek times are huge, sector and cluster sizes are your atomic ops under the hood, inner rings are low-bandwidth-low-variance, outer rings are high-bandwidth-high-variance.
Since then, not so much.
These days with NVMe drives, things are much easier. But, there are still things to keep in mind. I haven't dug deep. But, my impression is: Even though 4K random reads are incredibly faster than they used to be, large (256K-2MB) reads are yet faster still. Maxing out modern drives requires having multiple requests in flight. So, multiple threads or async operations. Modern drives are so fast that the memory copies involved in buffered fread() can add 33ish% overhead. Consider memory-mapped read-only files. Even better: If you have millions of users, you need 1-in-a-million reliability. Consider SQLite or LMDB as alternatives to fwrite().