Yeah yeah, we know you're special
Yeah yeah, we know you're special
Yeah yeah, we know you're special
Well it's sdx because they both use the SATA interface. The sdx convention actually comes from scsi though, and the fact that SATA and USB drives use it might point to some code reuse, or maybe a temporary solution that never got fixed due to breaking backwards compatibility.
Fun fact: IDE drives use the hdx naming convention.
I still muscle-memory type /dev/hd[TAB]
once in a while when looking for storage devices.
Yeah, but I think they switched to also use sdx for IDE devices as well.
Virtual drives also have a fun and relevant prefix!
Yea, I get that the s in sdX stands for sata, but why cant we have an ndX with n for nvme?
A yes, my beloved nvme1p2 partition that changes name every reboot
thats a reason to use the uuid in the fstab
Anyone else chuckle on the parallel in saying to use the UUID is no different than saying "just hardcore the IP bro"
I'm not hating on you, but it's an extremely flawed system where you are forced to use a direct ID mapping as a reference.
From what I'm understanding from people you can assign an alias to the UUID that sounds better?
Lol I seem to remember that I once had /home mapped to a partition that did that for all sorts of fun and games for a while.
my nvme is always nvme1pX, with X being 1-4 depending on the partition, and its always the same.
Wonder why? Weird that some change and some dont.
https://wiki.archlinux.org/title/Solid_state_drive/NVMe
Namespaces are the construct in NVMe technology that hold user data. An NVMe controller can have multiple namespaces attached to it. Most NVMe SSDs today just use a single namespace, but multi-tenant applications, virtualization and security have use cases for multiple namespaces.
device v /dev/nvme0n1p1 < partition namespace ^
There are two types of people: Those who are able to identify gaps in their knowledge and actively seek to fill them... and whatever this meme is.
Dude, chill, it's a funny take on naming conventions.
I can't chill ever
It's a curse
We can enjoy the meme and also use it as a learning opportunity :)
I for one didn't know about NVMe namespaces.
Funny? In a meme? C'mon man, we're trying to be serious here and know which technologies we can shame to feel good about ourselves. Stop ruining my quest for self-egrandifying tech-snobbery with your so-called humour!!1!
P.S. thanks to @vampire even so; that was interesting to learn
Oh god damn it I came here to look at memes and now I friggin learned something that's going to make my life easier
🤓
Interesting. I learned something. Again.
Well, I hadn't actively searched for what the NVMe naming convention was for, but this meme made me learn something new. Thanks!
All this and you missed the chance to also point out that the meme misspelled "conventions."
What a rookie.
In short; sd
stands for SCSI Disk and SSD and USB all use the SCSI protocol. While SD-cards/emmc (flash-on-CPU) are named emmcblkpX
for emmc block device, partition X. And NVME have additionally namespaces, which is the nX
part.
So, EMMC is even worse
nvme0n1p1
mmcblkxpy
(SD Card)
x = device number
y = partition number
NVMe device names follow this pattern: nvme
<number>
n<namespace>
, where:<number>
is an integer that is assigned by Linux during the boot process. The first NVMe device that is detected is assigned 0You also can have a 'c' in there, when it wants to model multipath nvme...
I still don't understand the point of namespaces. I guess it's less overhead to pass through a namespace to a VM rather than having a virtualised disk image or bind mount.
The other dragons aren't specifying a partition
So the 3rd dragon should just be /dev/nvme%d
ONIPI
This made me chuckle, thank you!!
Forgot /dev/hdx
?
That one hasn't been around for a long time, since the Linux kernel started using a SCSI abstraction layer above many of the other storage protocols. Really cool stuff: https://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/The_Linux_Storage_Stack_Diagram.svg/1161px-The_Linux_Storage_Stack_Diagram.svg.png
I'm guessing it's for some shit to make sure some ridiculous setup with two gazillion drives doesn't have conflicts
obligatory xkcd? Nah, you know exactly which one I mean.
I'm not sure if it is the standards one or the usecase one
No one mentioned the Solaris convention yet ?
/dev/cXtXdXsX
The letters mean controller, SCSI target, disk and slice (Solaris equivalent to a partition).
I always thought this was the most elegant naming scheme in the Unix world.
Mine is easy - /dev/nvme[tab][tab][tab]
Back in the olden times the Linux kernel had a dedicated parallel-ATA subsystem with /dev/hda devices. It was then rolled up in to the scsi subsystem to simplify maintaining drivers (everything using the same library for disk access). I'm old :(
Raises a glass in Debian 3.0
And who could forget /dev/fd0 for floppies
Having both IDE and SATA together was awesome. "Sooo which one is which?". Good times.
Doesn't work for some things unfortunately
It's a lot better than the system that just randomly throws in your USB drives with your SCSI/SAS/SATA/PATA drives. Or the systems that calls everything a SCSI drive when it usually isn't a SCSI drive.
I thought this was a Wendy's.
Yeah wasn't it something like SATA and USB got lumped in with the SATA SCSI storage controller or whatever which is why it's practically all /dev/sdx? Back in the days of yore when men were men and sheep were scared there'd be /dev/hdx and /dev/fdx for hard and floppy drives?
It all falls under the SCSI protocol now, they get separated at low level by another driver.
Shouldn't that be
hdX, sdX, and nvmewtfisthisp1
Yes but with zeros also.
PATA HDDs are hdX
SATA and SCSI HDDs are sdX
That USED to be true. Now every block device is sdx... except to nvme.
You mean Linux? Other Unixes don't necessarily use this naming convention.
Also I'm quite sure /dev/hdx is a thing
That's for IDE drives. And there's /dev/vdX for virtual block devices.
babe wake up, we heard you like dynamic interface IDs that happen to be mostly static, so we applied it to your nvme drives, because fuck it, why not.
Same with SD cards and similar interfaces.
/dev/nvme0n1
actually, but sure. Change bad
I will take a look at it, but the fundamental issue is it screws with the iommu groups too and then I have to go fix that in proxmox. If I can at least guarantee a network connection then I can remote in and fix it in the event something goes really wrong.
Ummm... replying to the wrong thread I think 😁.
Thank you! I will give that a shot tomorrow and test it
and you shouldn't be using any of those, since the order can and will change. The numbers are based on the order the devices and device drivers are initialized in, not based on physical location in the system. The modern approach (assuming you're using udev) is to use the symlinks in
/dev/disk/by-id/
or/dev/disk/by-uuid/
instead, since both are consistent across reboots (andby-id
should be consistent across reinstalls, assuming the same partitioning scheme on the same physical drives)This is also why Ethernet devices now have names like
enp0s3
- the numbers are based on physical location on the bus. The oldeth0
,eth1
, etc. could swap positions between Linux upgrades (or even between reboots) since they were also just the order the drivers were initialized in.I'm sure you know this, but to to supplement your comment for future readers, UUIDs are also a good solution for partitions.
Labels are better. IMO; they're semantic.
I think OP's point was that UUIDs can still change, but the stuff that makes up the /by-id/ names cannot. Granted, those aren't applicable to partitions.
Are UUIDs built into the hardware, or something your computer decides on based on the drive's serial number and shit?
Uuids are part of the gpt (table) on the disk.
According to Arch Wiki they get generated and stored in the partition when it is formatted. So kinda like labels but automated and with (virtually) no collision risk.
No. Since each partition gets its own UUID, it means it's generated by the OS on creation, no matter the number of partitions. On boot kernel will scan all UUIDs and then mount and map according to them, which is sightly less efficient method than naming block device directly, but far easier for humans and allows you to throw your drives to whichever port you like.
Back in my day, /dev/hda was the primary master, hdb was the primary slave, hdc was the secondary master and hdd was the secondary slave.
Nothing ever changed between reboots. Primary/secondary depended on which port the ribbon cable connected to on the motherboard, and
primary/secondarymaster/slave was configured by a jumper on the drive itself.Yeah, and ide only supported 4 drives at a time in most systems
I have a hatred for the enp id thing as it isn't any better for me. It changes on me every time I add/remove a hard drive or enable/disable the WiFi card in the BIOS. For someone who is building up a server and making changes to it, this becomes a real pain. What happens if a drive dies? Do I have to change the network config yet again over this?
How is that happening? The number on the bus shouldn't change from adding or removing drives. I could imagine this with disabling a card in UEFI / BIOS if that basically stops reporting the bus entry completely. But drives?
Anyhow, if I'm not mistaken, you can assign a fixed name based on the reported MAC.
Use a systems rule to give it a consistent name based on its MAC address, driver, etc. I just had this exact same problem setting up my servers.
hardware-configuration.nix has entered the chat
Having used gentoo for quite some time, there have been several occations where my network broke because the changing names and naming conventions of the network interfaces.