/dev/sda 和 /dev/sda1 之间的区别

/dev/sda 和 /dev/sda1 之间的区别

我知道 /dev/sda 是原始设备,而 /dev/sda1 是分区或虚拟设备。

但我有点困惑,为什么 sda# 只在某些时候出现,或者只在某些系统上出现。是什么原因导致这种情况发生?也许 sda# 驱动器未出现的时候是未分区的时候?或者也许不同硬件的情况不一样?

为什么我可以同时挂载这两个?(有时)分区不应该是可挂载的吗?

如果您能提供任何资源或颜色,我们将不胜感激。提前谢谢您。

答案1

在现代系统上,只有分区实际存在时,分区设备才会出现。

在具有 MBR 分区表的磁盘上,分区号 1 到 4 对应于分区表中的四个槽位,称为“主”分区。它们不必按顺序填充,因此例如可能存在 sda2 但没有 sda1。分区号 5 及以上对应于扩展分区中的“逻辑驱动器”,这些逻辑驱动器始终按顺序编号,因此您不能只拥有 sda6 而没有 sda5。

在具有 GPT 分区表的磁盘上,可以有更多分区(通常最多 128 个),并且所有分区都是“主”分区。因此,例如,您可能有一个磁盘,其唯一分区是 sda9。

如果磁盘没有分区表,那么它当然就没有分区设备。

较旧的系统(使用静态 /dev 而不是由 udev 管理的系统)通常会为所有可能的分区号设置设备节点,无论这些分区是否实际存在。(当然,尝试打开不存在的分区的设备文件将会失败。)


可以放弃分区,直接将文件系统放在磁盘上。当您安装块设备时,文件系统驱动程序通常会在距设备开头的预定偏移处查找超级块,并且由于分区的开头不是磁盘本身的开头,因此分区中文件系统的超级块与在“全磁盘”设备上创建的文件系统的超级块在磁盘上的位置不同。

因此,如果磁盘以前只有一个文件系统,然后对其进行了分区并在分区中创建了文件系统,则旧的超级块可能仍在那里,例如在第一个分区开始之前的小间隙中。因此,磁盘在原始磁盘设备和分区设备上似乎仍然有一个文件系统,因为无论您尝试安装哪一个,当文件系统驱动程序寻找超级块时,它都会找到一个。

但是,由于两个文件系统在磁盘上重叠,因此挂载和使用这两个文件系统实际上并不安全。其中一个文件系统可能在另一个文件系统认为是可用空间的地方保存重要的记账数据。这就是为什么将块设备的开头清零是个好主意,以便删除任何不需要的超级块,当您想要将原始磁盘更改为分区磁盘或反之亦然时,或者更改分区上使用的文件系统类型等。

答案2

据我所知,当内核在类似 scsi(包括 sata)总线上检测到新的块设备时,除了/dev为整个磁盘本身添加节点外,/dev/sda它还会尝试查看是否存在分区表。如果有可读分区,它将创建分区节点,并根据它们是物理分区还是逻辑分区进行编号(我相信逻辑分区从 #5 开始)。

如果您看到磁盘节点但没有分区节点,则意味着没有检测到任何分区。我不知道有任何可以挂载物理设备的实例,因为这意味着有一个文件系统直接写入物理设备而没有任何分区表。在只有一个分区的情况下,可能mount会将命令解释mount /dev/sda/dev/sda1,但我从未测试过这一点。

答案3

/dev/sda——原始设备

/dev/sda1-“虚拟”设备,像分区一样。

一个有趣的区别是,如果设备有分区(有 MBR 数据或类似的东西),您无法从任何虚拟设备读取 MBR 数据,因为 MBR 数据位于设备上任何分区之外。MBR 位于设备的第一个扇区(CHS:0 0 1)。在设备开始后的 1MiB 处创建第一个分区是一种很好的做法。

要读取 MBR 数据,您必须使用原始设备 (/dev/sda),即:

dd if=/dev/sda of=mbr.bin bs=512 count=1

答案4

啊,分区表和设备名称。准备好对它们感到困惑吧。

有配备 Compaq RAID 控制器的 HP 服务器吗?没有 /dev/sda,请向 /dev/ccsis 问好。

有一台带有旧 IDE 接口的旧台式电脑吗?没有 /dev/sda,请向 /dev/hda 问好。

有没有一台现代服务器,上面显示 /dev/sda,但安装后却几乎看不到它?向 LVM 问好,您的操作系统安装已将您的 /dev/sda 设为 LVM 物理卷,并在其中创建了一个卷组,并在其中创建了一个逻辑卷。

所以...如果您没有看到类似 /dev/sda1 的东西,那么您可能正在使用 LVM 或类似的东西,它创建了自己的“分区”。

这是否回答你的问题?

相关内容