Kinda miss the Wild West days where you’d recompile and suddenly there’d be a whole new device naming convention.
I just run arch. It self compiled.
Maybe you’re making a joke, but Arch didn’t exist then.
Depends on how far you wanna go back, but Arch was released in 2002 which definitely covers the time period of the drive naming changes in this meme.
Of course not. It hadn’t compiled yet.
It’s called that because it’s Never the Value you Might Expect.
Can you elaborate? I like mine a lot. It’s super fast.
If you reboot, it might have a different name in /dev/, just like ethernet ports.
This is a feature of SATA devices too. Use UUIDs in your fstab unless you enjoy playing musical chairs with your mount points
NO IT IS YOU WHO DONT UNDERSTAND IT IS PERFECT LOGIC
Dude, chill, it’s a meme… sheesh.
You’re a meme
I’m a Linux admin
Grovel before me or I will go through your browsing history
(hit me up if you want to hear what distro i run btw)
What distro? Tho if you’re an admin it should be multiple distros, no?
Nope. Just the one.
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.
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?
I still muscle-memory type
/dev/hd[TAB]
once in a while when looking for storage devices.I thought they standardized on sd* even for IDE drive a few years back…
Yeah, that’s what I think as well…
Got a few old rigs with IDE drives in them running Void x86, yhe drives in
/dev
are namedsdx
.I didn’t know that. Maybe nvme hasn’t been added to the standard yet then.
No, they decided that nvme were too fancy to be modeled by mundane ‘sdxn’ scheme. They hypothetically have ‘namespaces’ and ‘controller paths’ and they wanted to have the naming scheme model that fully.
Yeah, but I think they switched to also use sdx for IDE devices as well.
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 is to use the symlinks in
/dev/disk/by-id/
or/dev/disk/by-uuid
instead, since both are consistent. Theby-id
ones are easier to read than the UUIDs.This is also why Ethernet devices now have names like
enp0s3
- the numbers are based on physical location on the bus. The oldeth0
andeth1
could swap positions between Linux upgrades (or even between reboots) since they were also just the order the drivers were initialized in.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/secondary 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.
It is only the nvme drives that do it. That damn PCI busses and iommu groups get renumbered every damn time I remove or add one. The SATA is safe though.
The arch wiki lists some methods to permanently name network interfaces at https://wiki.archlinux.org/title/Network_configuration#Change_interface_name
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.
root@prox1:~# cat /etc/systemd/network/10-persistent-10g.link [Match] Driver=atlantic [Link] Name=nic10g root@prox1:~# cat /etc/systemd/network/10-persistent-1g.link [Match] Driver=igb [Link] Name=nic1g
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.
You’re thinking of
partuuid
, regular uuids are part of the filesystem and made at mkfs timeAh. Makes sense.
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.
So if we swap drives about, the OS will see them as the same drive and/or partition?
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.
I could have RTFM but you guys are more fun.
Yeah, you get the best Linux info when reading meme comments 😁.
I tried a gentoo stage 2 or 3 like 20 years ago. I’m still good.
It’s fun to have people around who read the friendly manual
hardware-configuration.nix has entered the chat
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 agree. Also, I can swap a disk with a new one with the same label, no need to change fstab
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.
Right :) the original meme was just talking about drive names (/dev/sdX)
How are the uuids going to change unexpectedly?
Right. I don’t think they and I are in disagreement - just trying to help expand their statement. Thanks!
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.
Mine is easy - /dev/nvme[tab][tab][tab]
Shouldn’t that be
hdX, sdX, and nvmewtfisthisp1
PATA HDDs are
hdX
SATA and SCSI HDDs are
sdX
Yes but with zeros also.
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.
You mean Linux? Other Unixes don’t necessarily use this naming convention.
Also I’m quite sure /dev/hdx is a thing
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.
Just use the /dev/disk/by-id/ symlinks.
Doesn’t work for some things unfortunately
Different bus, different naming.
Now, memory kinda hazy, but weren’t ide devices /dev/hdX?
Yeah, they used to be, but they switched a few years back to consistently call all block devices sdx.
srsly? so it’s just all “grab whatever dev” and not at all associated with the bus?
ATA was rolled into the SCSI subsystem, so both sata and pata are covered by SDX.
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
nvme0n1p1
ONIPI
This made me chuckle, thank you!!
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 0
You 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.
mmcblkxpy
(SD Card)x = device number
y = partition numberThe other dragons aren’t specifying a partition