174 points
*

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 (and by-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 old eth0, eth1, etc. could swap positions between Linux upgrades (or even between reboots) since they were also just the order the drivers were initialized in.

permalink
report
reply
45 points

I’m sure you know this, but to to supplement your comment for future readers, UUIDs are also a good solution for partitions.

permalink
report
parent
reply

Labels are better. IMO; they’re semantic.

permalink
report
parent
reply
4 points

I agree. Also, I can swap a disk with a new one with the same label, no need to change fstab

permalink
report
parent
reply
8 points

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.

permalink
report
parent
reply
4 points
*

Right. I don’t think they and I are in disagreement - just trying to help expand their statement. Thanks!

permalink
report
parent
reply
3 points

Right :) the original meme was just talking about drive names (/dev/sdX)

permalink
report
parent
reply
1 point

How are the uuids going to change unexpectedly?

permalink
report
parent
reply
17 points

Are UUIDs built into the hardware, or something your computer decides on based on the drive’s serial number and shit?

permalink
report
parent
reply
33 points

Uuids are part of the gpt (table) on the disk.

permalink
report
parent
reply
10 points

You’re thinking of partuuid, regular uuids are part of the filesystem and made at mkfs time

permalink
report
parent
reply
3 points

Ah. Makes sense.

permalink
report
parent
reply
29 points

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.

permalink
report
parent
reply
10 points

I could have RTFM but you guys are more fun.

permalink
report
parent
reply
6 points

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.

permalink
report
parent
reply
1 point

So if we swap drives about, the OS will see them as the same drive and/or partition?

permalink
report
parent
reply
15 points
*

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 master/slave was configured by a jumper on the drive itself.

permalink
report
parent
reply
5 points

Yeah, and ide only supported 4 drives at a time in most systems

permalink
report
parent
reply
1 point
*

If you had a Sound Blaster 16, you had an extra IDE port on the board, which DOS couldn’t see and you had to load special drivers to use them. Usually it was used for the CD-ROM.

permalink
report
parent
reply
11 points

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?

permalink
report
parent
reply
7 points
*

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.

permalink
report
parent
reply
3 points
*

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.

permalink
report
parent
reply
4 points
*

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

permalink
report
parent
reply
1 point
*
Deleted by creator
permalink
report
parent
reply
4 points

hardware-configuration.nix has entered the chat

permalink
report
parent
reply
3 points

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.

permalink
report
parent
reply
101 points
*

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.

permalink
report
reply
48 points

I still muscle-memory type /dev/hd[TAB] once in a while when looking for storage devices.

permalink
report
parent
reply
15 points

I thought they standardized on sd* even for IDE drive a few years back…

permalink
report
parent
reply
5 points
*

Yeah, that’s what I think as well…

Got a few old rigs with IDE drives in them running Void x86, the drives in /dev are named sdx.

permalink
report
parent
reply
3 points

I didn’t know that. Maybe nvme hasn’t been added to the standard yet then.

permalink
report
parent
reply
11 points

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.

permalink
report
parent
reply
6 points

Yeah, but I think they switched to also use sdx for IDE devices as well.

permalink
report
parent
reply
4 points

Virtual drives also have a fun and relevant prefix!

permalink
report
parent
reply
3 points

Yea, I get that the s in sdX stands for sata, but why cant we have an ndX with n for nvme?

permalink
report
parent
reply
96 points

A yes, my beloved nvme1p2 partition that changes name every reboot

permalink
report
reply
59 points

thats a reason to use the uuid in the fstab

permalink
report
parent
reply
11 points
*

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?

permalink
report
parent
reply
6 points

Anyone else chuckle on the parallel in saying to use the UUID is no different than saying “just hardcore the IP bro”

It’s more like setting a static IP. The UUID is set when you create the partition and won’t change unless you force it to change.

You can also use any of the GUI utilities which can add it to your fstab.

There’s a lot of things that are made way too difficult on Linux for seemingly no reason. This isn’t one of them.

permalink
report
parent
reply
4 points

I mean you can also use partition labels but who does that

permalink
report
parent
reply
3 points

If filesystem UUIDs are IP equivalents. Then device paths are MAC addresses. FS labels are DNS. Device mapper entries are service discovery.

permalink
report
parent
reply
2 points
*
Deleted by creator
permalink
report
parent
reply
1 point

The alternative being running os-prober at boottime, on every boot.

Currently, we set UUID using os-prober whenever we remake grub.cfg, analogous to that would be registering web-server static IPs with a DNS, which provides the domain name aliases (we don’t need to see UUID in the GRUB menu right? We see the OS names).

An analogy to the alternative would be to ask all devices on the internet to send their usage methods everytime you try to look for another site.

permalink
report
parent
reply
4 points
*

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.

permalink
report
parent
reply
2 points
*

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.

permalink
report
parent
reply
2 points
*

I got two drives with one being nvme1pX and the other nvme2pX and I don’t know why but they just swap names sometime. I’m new to linux though so it may be some misconfiguration on my part and I rarely need to access them with their name.

permalink
report
parent
reply
2 points

Ah, sorry. I only have 1 nvme drive, so thats probably why. Didnt realize until your post that it was a multi-drive issue.

permalink
report
parent
reply
81 points
*

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.

permalink
report
reply
35 points

Dude, chill, it’s a funny take on naming conventions.

permalink
report
parent
reply
24 points
*

I can’t chill ever

It’s a curse

permalink
report
parent
reply
9 points

It’s like you’re sucking the fun out of us… Wait a minute

permalink
report
parent
reply
1 point
*

Username checks out 🤷.

permalink
report
parent
reply
15 points

We can enjoy the meme and also use it as a learning opportunity :)

I for one didn’t know about NVMe namespaces.

permalink
report
parent
reply
3 points

Or an opportunity to be technically correct! Wouldn’t want to waste one!

permalink
report
parent
reply
5 points
*

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

permalink
report
parent
reply
4 points

“I am irrationally angry, but you are also right, now fuck off”

I can respect this

permalink
report
parent
reply
10 points

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

permalink
report
parent
reply
7 points

Interesting. I learned something. Again.

permalink
report
parent
reply
7 points

🤓

permalink
report
parent
reply
4 points

Ackhsually

permalink
report
parent
reply
3 points

I know my role. Someone’s gotta do it.

permalink
report
parent
reply
1 point

The unsung hero is often the least paid

permalink
report
parent
reply
3 points

Well, I hadn’t actively searched for what the NVMe naming convention was for, but this meme made me learn something new. Thanks!

permalink
report
parent
reply
3 points

All this and you missed the chance to also point out that the meme misspelled “conventions.”

permalink
report
parent
reply
1 point

What a rookie.

permalink
report
parent
reply
2 points

Of course the offended guy links arch wiki article

permalink
report
parent
reply
2 points

Who’s offended?

permalink
report
parent
reply
2 points

Who fucking isn’t these days, amirite?

permalink
report
parent
reply
1 point

Its always the guy asking the stupid question.

permalink
report
parent
reply
57 points

nvme0n1p1

permalink
report
reply

mmcblkxpy
(SD Card)

x = device number
y = partition number

permalink
report
parent
reply
16 points

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

permalink
report
parent
reply
5 points

You also can have a ‘c’ in there, when it wants to model multipath nvme…

permalink
report
parent
reply
3 points

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.

permalink
report
parent
reply
4 points

The other dragons aren’t specifying a partition

permalink
report
parent
reply
1 point

So the 3rd dragon should just be /dev/nvme%d

permalink
report
parent
reply
3 points

ONIPI

permalink
report
parent
reply
2 points

This made me chuckle, thank you!!

permalink
report
parent
reply

linuxmemes

!linuxmemes@lemmy.world

Create post

I use Arch btw


Sister communities:
Community rules
  1. Follow the site-wide rules and code of conduct
  2. Be civil
  3. Post Linux-related content
  4. No recent reposts

Please report posts and comments that break these rules!

Community stats

  • 7.7K

    Monthly active users

  • 1.3K

    Posts

  • 69K

    Comments