答案1
是的,块设备的设备号可以更改:这些是在系统启动时动态分配的。添加和删除设备(有时甚至更改 BIOS 固件)可能会导致以不同的顺序发现事物,从而具有不同的设备 ID。
如果您想唯一标识一个文件系统,请使用文件系统 UUID(例如可以通过命令获得blkid
)。
使用 inode 作为标识符也可能会出现问题,具体取决于您要执行的操作:例如,由于硬链接,单个文件可能存在于具有相同 inode 的多个位置,并且可以为新文件回收 inode当它们最初关联的文件被删除时。
答案2
是的,他们可以改变,但他们并不执着。举一个简单的例子 - 安装两个网络驱动器,然后以不同的顺序安装它们。
st_dev
由两部分组成:设备类别和该类别中的设备编号。设备类是在安装设备时学习的(基本上就是安装设备的方式)。但类中的数量是由安装顺序定义的。
当然,如果您正在谈论从 fstab 挂载的设备 - 此命令可能是可靠的...直到您修改 fstab。
寻找makedev(3)
如何分解st_dev
。