我知道/dev/sda是原始设备,/dev/sda 1是分区或虚拟设备。
但是我有点困惑,为什么sda#只出现在某些时候,或者只出现在某些系统上。是什么导致这种情况发生的?也许sda#驱动器不出现的时候就是它没有分区的时候吗?或者硬件之间的情况不一样?
为什么我能同时骑上这两辆车?(有时)分区不应该是一个可挂载的吗?
您所能提供的任何资源或颜色都将不胜感激。提前谢谢你。
发布于 2011-12-08 13:00:09
在现代系统中,只有当分区实际存在时,才会出现分区设备。
在具有MBR分区表的磁盘上,分区号1到4对应于分区表中的四个槽,称为“主”分区。它们不必按顺序填充,因此,例如,可以有一个sda2,但没有sda1。分区号5及以上对应于扩展分区中的“逻辑驱动器”,并且这些驱动器总是按顺序编号的,因此如果没有sda5,您就不能拥有一个sda5。
在具有GPT分区表的磁盘上,可以有更多(通常多达128个)分区,并且所有分区都是“主分区”。例如,您可以有一个磁盘,其唯一的分区是sda9。
当然,如果磁盘没有分区表,那么它就没有分区设备。
较旧的系统--使用静态/dev而不是由udev管理的系统--通常会为所有可能的分区编号设置设备节点,而不管分区是否实际存在。(当然,尝试为不存在的分区打开设备文件将失败。)
可以放弃分区,直接将文件系统放在磁盘上。当您挂载块设备时,文件系统驱动程序通常在设备开头的预定偏移量处查找超级块,而且由于分区的开始不是磁盘本身的开始,所以分区中的文件系统的超级块位于磁盘上与在“全磁盘”设备上创建的文件系统的超级块不同的位置。
因此,如果磁盘过去只有一个文件系统,然后对它进行分区,并在分区中创建了一个文件系统,那么旧的超级块可能仍然存在,例如,在第一个分区开始之前的小间隙中。因此,磁盘似乎仍然在原始磁盘设备和分区设备上都有一个文件系统,因为无论您尝试安装哪个文件系统,当文件系统驱动程序去寻找超级块时,它都会找到一个。
但是,安装和使用这两个文件系统实际上并不安全,因为它们在磁盘上重叠。其中一个可能拥有重要的簿记数据,而另一个则认为是空闲空间。这就是为什么当您想要将原始磁盘更改为分区磁盘,或者相反,或者更改分区上使用的文件系统的类型时,将块设备的开始为零、移除任何不需要的超级块是一个好主意。
发布于 2011-12-08 12:54:08
据我所知,当内核检测到类似scsi的新块设备时(包括。总线,除了在/dev中为整个磁盘本身添加一个节点(例如,/dev/sda )之外,它还会尝试查看是否有一个分区表。如果有可读分区,那么它将根据分区是物理分区还是逻辑分区(我认为逻辑分区从#5开始)创建编号为它们的分区节点。
如果您看到一个磁盘节点,但是没有分区节点,这将意味着没有检测到任何分区。我不知道任何可以挂载物理设备的实例,因为这意味着没有任何分区表就有直接写入物理设备的文件系统。在只有一个解析的情况下,mount可能会将mount /dev/sda命令解释为/dev/sda1,但我从未测试过这一点。
发布于 2012-03-08 21:37:36
/dev/sda -原始设备
/dev/sda1 1-“虚拟”设备,类似于分区。
一个有趣的区别是,如果设备有分区(有MBR数据或类似的东西),就不能从任何虚拟设备中读取MBR数据,因为MBR数据驻留在设备上的任何分区之外。MBR驻留在设备的第一个扇区(CHS: 001)。有一个好的做法是在设备开始后在1 1MiB创建第一个分区。
要读取MBR数据,必须使用原始设备(/dev/sda),即:
dd if=/dev/sda of=mbr.bin bs=512 count=1https://serverfault.com/questions/338937
复制相似问题