和 minor 设备号?轻轻松松学 Linux:查看设备号的 major 和 minor 号是如何实现的? (linux 如何查看 major)

Linux 操作系统作为一种常用的服务器和嵌入式设备操作系统,拥有强大的功能和灵活的扩展性,其设备号的管理也是其中的一大特点。在 Linux 中,每个硬件设备都被分配一个唯一的设备号,以便操作系统能够轻松地管理它们。设备号分为两部分:主设备号(major)和次设备号(minor)。本文将介绍如何轻松地查看设备号的主要和次要编号。

主设备号

在 Linux 中,主设备号是一种唯一的整数值,它用于指定设备驱动程序的名称、标识以及所需的软件包。主设备号通常用于识别设备类型。例如,硬盘和 CD-ROM 驱动器将拥有相同的主设备号,但不同的次设备号,以便操作系统可以区分它们。

了解设备主要编号的最简单方法是使用以下命令之一:

ls -l /dev

cat /proc/devices

这些命令将显示当前系统中所有可用设备的主设备号及其相关信息。例如:

[root@localhost ~]# ls -l /dev

total 0

drwxr-xr-x 3 root root 60 Jan 28 13:07 mapper

crw-rw—- 1 root video 29, 0 Jan 28 13:07 fb0

brw-rw—- 1 root disk 252, 0 Jan 28 13:08 dm-0

brw-rw—- 1 root disk 252, 1 Jan 28 13:08 dm-1

在上面的例子中,之一列显示了设备的文件类型(d 表示目录,c 表示字符设备,b 表示块设备)。第二列表示该设备的权限和所有者,第三列表示该设备链接的总数,第四列表示所有者的用户名,第五列表示所有者所在的用户组,第六列表示设备的大小(以字节为单位),最后一列指定了设备的名称。之一个字符设备 fb0 的主设备号是 29(video),而之一个块设备 dm-0 的主设备号是 252(disk)。

次设备号

次设备号是一个整数值,它用于区分主设备号下的不同设备。在许多情况下,次设备号代表着设备的实际编号。对于字符设备,它可以代表设备的缓冲区;对于块设备,它可以代表物理块的编号。

一旦您知道设备的主要编号,就可以轻松地使用以下命令显示其次要编号:

ls -l /dev/

例如,如果您要查找 CD-ROM 驱动器的次要编号,则可以使用以下命令:

ls -l /dev/cdrom

通常,次设备号可以通过设备驱动程序的名称轻松地确定。例如,在以下输出中,设备 /dev/sda 的次设备号是 0:

[root@localhost ~]# ls -l /dev/sda

brw-rw—- 1 root disk 8, 0 Jan 28 13:08 /dev/sda

这告诉我们,设备 /dev/sda 是一个块设备,其主要编号为 8(disk),次要编号为 0。

相关问题拓展阅读:

如何在linux红帽子系统下查看磁盘阵列空间大小?用什么命令?

动手试吧,没有的话就找相关软件包安装\x0d\x0a\x0d\x0a一、df 命令;\x0d\x0a\x0d\x0adf 是来自于coreutils 软件包,系统安装时,就自带的;我们通过这个命令可以查看磁盘的使用情况以及文件系统被挂载的位置;\x0d\x0a\x0d\x0a举例:\x0d\x0a\x0d\x0a# df -lh\x0d\x0a\x0d\x0aFilesystem 容量 已用 可用 已用% 挂载点\x0d\x0a\x0d\x0a/dev/hda8 11G 6.0G 4.4G 58% /\x0d\x0a\x0d\x0a/dev/shm 236M 0 236M 0% /dev/shm\x0d\x0a\x0d\x0a/dev/sda1 56G 22G 35G 39% /mnt/sda1\x0d\x0a\x0d\x0a我们从中可以看到,系统安装在/dev/hda8 ;还有一个56G的磁盘分区/dev/sda1挂载在 /mnt/sda1中;\x0d\x0a\x0d\x0a其它的参数请参考 man df\x0d\x0a\x0d\x0a二、fdsik\x0d\x0a\x0d\x0afdisk 是一款强大的磁盘操作工具,来自util-linux软件包,我们在这里只说他如何查看磁盘分区表及分区结构;参数 -l ,通过-l 参数,能获得机器中所有的硬盘的分区情况;\x0d\x0a\x0d\x0a# fdisk -l\x0d\x0a\x0d\x0aDisk /dev/hda: 80.0 GB,bytes\x0d\x0a\x0d\x0a255 heads, 63 sectors/track, 9729 cylinders\x0d\x0a\x0d\x0aUnits = cylinders of* 512 =bytes\x0d\x0a\x0d\x0aDevice Boot Start End Blocks Id System\x0d\x0a\x0d\x0a/dev/hda1 * 7 HPFS/NTFS\x0d\x0a\x0d\x0a/dev/hda86300 c W95 FAT32 (LBA)\x0d\x0a\x0d\x0a/dev/hdaExtended\x0d\x0a\x0d\x0a/dev/hda93118+ 83 Linux\x0d\x0a\x0d\x0a/dev/hdaLinux\x0d\x0a\x0d\x0a/dev/hda7153+ 82 Linux swap / Solaris\x0d\x0a\x0d\x0a/dev/hdaLinux\x0d\x0a\x0d\x0a/dev/hda87523+ 83 Linux\x0d\x0a\x0d\x0a在上面Blocks中,表示的是分区的大小,Blocks的单位是byte ,我们可以换算成M,比如之一个分区/dev/hda1的大小如果换算成M,应该是/1024=6000M,也就是6G左右,其实没有这么麻烦,粗略的看一下把小数点向前移动三位,就知道大约的体积有多大了;\x0d\x0a\x0d\x0aSystem 表示的文件系统,扰手比如/dev/hda1 是NTFS格式的;/dev/hda2 表示是fat32格式的文件系激坦统;.\x0d\x0a\x0d\x0a在此例中,我们要特别注意的是/dev/hda3分区,这是扩展分区;他下面包含着逻辑分区,其实这个分区相当于一个容器;从属于她的有 hda5,hda6,hda7,hda8,hda9 ;\x0d\x0a\x0d\x0a我们还注意到一点,怎么没有hda4呢?为什么hda4没有包含在扩展分区?一个磁盘最多有四个主分区; hda1-4算都是主分明李桐区;hda4不可能包含在扩展分区里,另外扩展分区也算主分区;在本例中,没有hda4这个分区,当然我们可以把其中的一个分区设置为主分区,只是我当时分区的时候没有这么做而已;\x0d\x0a\x0d\x0a再仔细统计一下,我们看一看这个磁盘是不是还有空间?hda1+hda2+hda3=实际已经分区的体积,所以我们可以这样算 hda1+hda2+hda3=++=(b),换算成M单位,小数点向前移三位,所以目前已经划分好的分区大约占用体积是62259.876(M),其实最精确的计算/1024=60800.67(M);而这个磁盘大小是80.0 GB (byte),其实实际大小也就是78150.744(M);通过我们一系列的计算,我们可以得出这个硬盘目前还有使用的空间;大约还有18G未分区的空间;\x0d\x0a\x0d\x0afdisk -l 能列出机器中所有磁盘的个数,也能列出所有磁盘分区情况;比如:\x0d\x0a\x0d\x0a# fdisk -l\x0d\x0a\x0d\x0aDisk /dev/hda: 80.0 GB,bytes\x0d\x0a\x0d\x0a255 heads, 63 sectors/track, 9729 cylinders\x0d\x0a\x0d\x0aUnits = cylinders of* 512 =bytes\x0d\x0a\x0d\x0aDevice Boot Start End Blocks Id System\x0d\x0a\x0d\x0a/dev/hda1 * 7 HPFS/NTFS\x0d\x0a\x0d\x0a/dev/hda86300 c W95 FAT32 (LBA)\x0d\x0a\x0d\x0a/dev/hdaExtended\x0d\x0a\x0d\x0a/dev/hda93118+ 83 Linux\x0d\x0a\x0d\x0a/dev/hdaLinux\x0d\x0a\x0d\x0a/dev/hda7153+ 82 Linux swap / Solaris\x0d\x0a\x0d\x0a/dev/hdaLinux\x0d\x0a\x0d\x0a/dev/hda87523+ 83 Linux\x0d\x0a\x0d\x0aDisk /dev/sda: 60.0 GB,bytes\x0d\x0a\x0d\x0a64 heads, 32 sectors/track,cylinders\x0d\x0a\x0d\x0aUnits = cylinders of 2023 * 512 =bytes\x0d\x0a\x0d\x0aDevice Boot Start End Blocks Id System\x0d\x0a\x0d\x0a/dev/sdaLinux\x0d\x0a\x0d\x0a通过上面我们可以知道此机器有两块硬盘,我们也可以指定fdisk -l 来查看其中一个硬盘的分区情况;\x0d\x0a\x0d\x0a# fdisk -l /dev/sda\x0d\x0a\x0d\x0aDisk /dev/sda: 60.0 GB,bytes\x0d\x0a\x0d\x0a64 heads, 32 sectors/track,cylinders\x0d\x0a\x0d\x0aUnits = cylinders of 2023 * 512 =bytes\x0d\x0a\x0d\x0aDevice Boot Start End Blocks Id System\x0d\x0a\x0d\x0a/dev/sdaLinux\x0d\x0a\x0d\x0a通过上面情况可以知道,在/dev/sda 这个磁盘中,只有一个分区;使用量差不多是百分百了;\x0d\x0a\x0d\x0a我们还可以来查看 /dev/hda的\x0d\x0a\x0d\x0a# fdisk -l /dev/hda\x0d\x0a\x0d\x0a自己试试看?\x0d\x0a\x0d\x0a三、cfdisk 来自于util-linux的软件包;\x0d\x0a\x0d\x0acfdisk 也是一款不错的分区工具;在有些发行版中,此工具已经从util-linux包中剔除;cfdisk 简单易用是他的特点;和DOS中的fdisk 相似;在本标题中,我们只来解说如何查看机器的中的磁盘分区状况及所用的文件系统等;\x0d\x0a\x0d\x0a查看磁盘分区的用法 cfdisk -Ps 磁盘设备名;\x0d\x0a\x0d\x0a比如\x0d\x0a\x0d\x0acfdisk -Ps\x0d\x0a\x0d\x0acfdisk -Ps /dev/hda\x0d\x0a\x0d\x0acfdisk -Ps\x0d\x0a\x0d\x0aPartition Table for /dev/hda\x0d\x0a\x0d\x0aFirst Last\x0d\x0a\x0d\x0a# Type Sector Sector Offset Length Filesystem Type (ID) Flag\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a1 PrimaryLinux (83) Boot\x0d\x0a\x0d\x0a2 Primary550 Extended (05) None\x0d\x0a\x0d\x0a5 Logical9390 Linux (83) None\x0d\x0a\x0d\x0a6 Logical160 Linux swap (82) None\x0d\x0a\x0d\x0a我们只用的参数 -Ps,就列出了磁盘的分区情况;目前在Slackware Debian Mandrake 等主流发行版中存在cfdisk ,而fedora 4.0把这个小工具剔除了;有点可惜;这是我在Slackware中操作的;\x0d\x0a\x0d\x0a如果您这样操作,就更直观了;\x0d\x0a\x0d\x0acfdisk 磁盘设备名\x0d\x0a\x0d\x0a举例:\x0d\x0a\x0d\x0acfdisk /dev/hda\x0d\x0a\x0d\x0a您所看到的是如下的模式:\x0d\x0a\x0d\x0acfdisk 2.12a\x0d\x0a\x0d\x0aDisk Drive: /dev/hda\x0d\x0a\x0d\x0aSize:bytes, 80.0 GB\x0d\x0a\x0d\x0aHeads: 255 Sectors per Track: 63 Cylinders: 9729\x0d\x0a\x0d\x0aName Flags Part Type FS Type


数据运维技术 » 和 minor 设备号?轻轻松松学 Linux:查看设备号的 major 和 minor 号是如何实现的? (linux 如何查看 major)