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

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

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

为什么我可以同时安装? (有时候)分区是不是可以安装的?

任何资源或颜色,你可以给予不胜感激。 先谢谢你。

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

在具有MBR分区表的磁盘上,分区编号1至4对应分区表中的四个插槽,称为“主”分区。 他们不必按顺序填写,所以有可能,例如,有一个sda2,但没有sda1。 分区号5和分区号对应扩展分区中的“逻辑驱动器”,并且这些分区号总是按顺序编号的,所以如果没有sda5,也不能有sda6。

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

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

较老的系统 – 那些使用静态/ dev而不是由udevpipe理的系统 – 通常会有所有可能的分区号的设备节点,而不pipe分区是否真的存在。 (当然,试图打开不存在分区的设备文件将会失败。)


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

因此,如果磁盘只用于文件系统,然后将其分区,并在分区中创build文件系统,则旧的超级块可能仍然存在,例如在第一个分区开始之前的小间隙中。 因此,磁盘仍然在原始磁盘设备和分区设备上都有一个文件系统,因为无论您试图挂载哪个文件系统,当文件系统驱动程序查找超级块时,它都会find一个文件系统。

但是,安装和使用这两个文件系统并不安全,因为它们在磁盘上重叠。 一个人可能有重要的簿记数据,而另一个人则认为这是自由空间。 这就是为什么要将块设备的开始置零,删除任何不需要的超级块,当要将原始磁盘更改为分区时,或者更改分区上使用的文件系统的types等等。 。

据我所知,当内核在scsi-like(包括sata)总线上检测到一个新的块设备时,除了在/dev为整个磁盘本身添加一个节点,例如/dev/sda ,它将尝试看看有没有分区表。 如果有可读的分区,它将创build分区节点,这取决于它们是物理还是逻辑分区(我认为逻辑分区从#5开始)。

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

/ dev / sda – 裸设备

/ dev / sda1 – “虚拟”设备,就像一个分区。

一个有趣的区别是,如果设备具有分区(具有MBR数据或类似),则不能从任何虚拟设备读取MBR数据,因为MBR数据驻留在设备上的任何分区之外。 MBR驻留在设备的第一个扇区(CHS:0 0 1)。 在设备开始之后,在1MiB处创build第一个分区是一种很好的做法。

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

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

啊,分区表和设备名称。 准备好与他们混淆。

有一个惠普服务器与康柏RAID控制器? 没有/ dev / sda,打个招呼/ dev / ccsis。

有一个旧的IDE接口的旧桌面计算机? 没有/ dev / sda,打个招呼/ dev / hda。

有一个现代的服务器,说你/ dev / sda但安装后,你几乎看不到? 向LVM问好,您的操作系统安装已经将您的/ dev / sda作为LVM物理卷,在其中创build了一个卷组,并在其中创build了一个逻辑卷。

所以…如果你没有看到像/ dev / sda1这样的东西,你可能会使用LVM或类似的东西,它已经创build了自己的“分区”。

这是否回答你的问题?