The X670E I have with four M.2 slots on the board and also six SATA ports. I also have an old-school 8-ported Falcone SAS/SATA III RAID 0/1 controller. There are currently 3x4TB BLACK and the single 970 Pro in M.2 and 3x4TB SATA III backing it. The plan was to get the 8TB BLACK to replace the 970 Pro and then add two more 4TB SATA III (that I already have) as the secondaries for those. I'd have to mount the drives into each other so there are no more drive letters than previously.
There are two beautiful things that Windows has been able to do for a very long time that most users do not know:
Windows can use Directory Symbolic Links (filesystem-level shortcuts) and also Volume Mount Points (mount an entire drive or array as a directory) to lessen the need for drive letters. Windows
does not have to assign either a drive letter or volume mount point to access a drive, although not having one or the other does make your life more difficult; you can still access a drive by its GUID if you want to be that obtuse.
To make my life easy on Windows file servers, my standard is to make a folder called C:\mnt and then a volume mount point named after the drive's label, e.g. Intel8TB-02-06-24. I then mklink /d c:\share\2023images c:\mnt\Intel8TB-02-06-24\2023images.
The idea here is that I can browse the entire filesystem on each drive or volume but I can also put folders inside my shared folder structure in exactly the spot I want them, and it's relatively straightforward to rebalance what goes on which drive or array if something starts to run out of space.
Any *nix OS can do these same things.