磁盘分区的概念
不同操作系统的程序数据都是复制到磁盘上才可以运行,当我们在安装操作系统时一定会跟磁盘打交道,但是购买回来的磁盘并不能直接使用,我们要对其进行分区操作才可以正常使用。在一块磁盘上可以划分成多个分区(partition),例如,在windows操作系统里,磁盘可以被划分成C、D、E、F等等分区,而在Linux操作系统里所有的设备都是以文件的形式参与操作,因此,在Linux操作系统里如何分区、磁盘分区有怎样的限制等知识将是我们探讨的问题。
1.1 磁盘连接方式(interface接口)与在Linux系统中的表达(设备文件名)
特别说明:在此我们仅探讨个人计算机中常见磁盘的连接方式。就目前市面上的磁盘连接接口主要有SATA和SAS等接口,在服务器中经常见到的接口有SCSI等。而比较老旧的IDE接口已经被淘汰掉。早期版本的Linux对于不同的接口会使用不同的磁盘文件名给予表达,但是近期的版本已经没有这一要求,如SATA和SAS及SCSI等接口的磁盘文件名已经统一使用,甚至USB设备的接口文件名也都一样使用/dev/sdx(x为a-p中的字母等),而如果是采用Virtio接口(虚拟机环境下)的则变为/dev/vdx(x为a-p中的字母等)。
在不同接口中,设备文件名的表达:
①在SATA或SAS或SCSI接口中,如果你的电脑中只有一个SATA接口的硬盘,那么在Linux系统里的硬盘文件名为/dev/sda,而如果还有第二个硬盘则显示为/dev/sdb,依此类推第三个硬盘则为/dev/sdc等。这是根据Linux内核所检测到的磁盘设备的顺序来进行命名的。
②在Virtio接口中,如果你的电脑中只有一个这样的接口,那么在Linux系统中的磁盘设备显示的文件名则为/dev/vda,而如果有多个Virtio接口的虚拟磁盘接口则依此类推下去的设备文件名为/dev/vdb、/dev/vdc等等。
提示:如果是USB设备,那么由于它是最后一个检测的设备,也就是系统启动完成后才进行检测,那么它就是最后一个设备的检测名。如上所述第1种情况下这个USB设备的文件名为/dev/sdd,而第2种情况下则为/dev/sdb。
以上所述都是在没有对磁盘进行分区操作的情况下在Linux系统里磁盘设备的文件名表达方式,而如果对磁盘进行分区后应该有所改变。
1.2 磁盘的物理结构
通常一个磁盘它的物理结构包括如下的组件:①碟片;②机械臂;③磁头;④主轴电机等组成,如图1-1所示。
保存在磁盘上的数据都是写入到碟片上面。碟片上面可以分为扇区(Sector)与磁道(Track)两种单位,其中扇区的大小有512字节与4K字节,如果一个硬盘只有一个碟片那么结构如图1-2所示。
如果是多个碟片所组成的硬盘,则应该还有磁柱等概念。
在一个碟片上所划分的扇区并不是每一个扇区都是重要的,只有第0个扇区才是非常重要的扇区,因为这个扇区保存了整个磁盘的重要信息,早期磁盘的第1个扇区保存的重要信息被称为MBR(Master Boot Record主引导记录),但是这种类型的格式对硬盘进行分区有容量限制,大于2TB容量以上的磁盘无法进行分区操作,因此,后来又多出一个新的分区格式GPT(GUID partition table),这两种类型的分区格式与功能是有一些区别的。最主要的区别就是分区表的大小与工作方式的不同,分区表的作用就是把一块单独的物理硬盘,划分成几个各自相对独立的区域,便于我们更方便的运用和管理硬盘存储的空间。
在此提示,在Linux系统里所有的设备都是以文件名的方式进行操作,所有的磁盘都是必须进行分区操作并格式化成不同的文件系统(file system)才可以使用。
下节将讨论这两种分区的不同工作方式。