1、Linux中如何表示硬盘和分区
在安装操作系统之前,一般需要先对硬盘进行分区。我们都知道硬盘分区包括主分区、扩展分区、逻辑分区三种类型,之所以会有这样的区分,是因为在硬盘的主引导扇区中用来存放分区信息的空间只有64个字节(主引导扇区一共只有512字节空间),而每一个分区的信息都要占用16字节空间,因而理论上一块磁盘最多只能拥有4个分区,当然这4个分区都是主分区。这在计算机早期是没什么问题的,但后来随着硬盘空间越来越大,4个分区就远远不够了,所以才又引入了扩展分区的概念。扩展分区也是主分区,但是在扩展分区中可以再创建新的分区,这些分区就被称为逻辑分区,逻辑分区的数量就不再受主引导扇区空间大小的限制了,像IDE磁盘最多可以创建60个逻辑分区。
在Windows系统中,我们一般都是只创建一个主分区(也就是C盘),再将剩余的磁盘空间全部划给扩展分区,最后在扩展分区中创建逻辑分区。在“磁盘管理”工具中可以清楚地查看到这种逻辑关系。
好了,基础知识复习完了,下面我们来看看在Linux系统中是如何来表示硬盘以及分区的。
首先,在Linux系统中所有的磁盘以及磁盘中的每个分区都是用文件的形式来表示的。比如在你的电脑中有一块硬盘,硬盘上划分了3个分区,那么在Linux系统中就会有相应的4个设备文件,一个是硬盘的设备文件,另外每个分区也有一个设备文件,所有的设备文件都统一存放在/dev目录中。
不同类型的硬盘和分区的设备文件命名都有统一的规则,具体表述形式如下:
硬盘:对于IDE接口的硬盘设备,表示为“hdX”形式的文件名,对于SATA或SCSI接口的硬盘设备,则表示为“sdX”形式的文件名,其中“X”可以为a、b、c、d等字母序号。例如,将系统中的第1个IDE设备表示为“hda”,将第2个SATA设备表示为“sdb”。
分区:表示分区时,以硬盘设备的文件名作为基础,在后边添加该分区对应的数字序号即可。例如,第1个IDE硬盘中的第1个分区表示为“hda1”、第2个分区表示为“hda2”,第2个SATA硬盘中的第3个分区表示为“sdb3”,第4个分区表示为“sdb4”等。
需要注意的是,由于主分区的数目最多只有四个,因此主分区和扩展分区的序号也就限制在1~4之间,而逻辑分区的序号将始终从5开始。例如,即便第1个IDE硬盘中只划分了一个主分区、一个扩展分区,则新建的第1个逻辑分区的序号仍然是从5开始,应表示为“sda5”,第2个逻辑分区表示为“sda6”。
一个磁盘分区设备文件的各部分含义可参考下图图示。
Windows和Linux系统中对磁盘分区的不同表示方式可参看下图:
2. Linux使用的文件系统类型
文件系统类型决定了向分区中存放、读取文件数据的方式和效率,在对分区进行格式化时需要选择所使用的文件系统类型。在Windows系统中,硬盘分区通常都是采用FAT32或NTFS文件系统,而在Linux系统中,硬盘分区则大都是采用EXT4文件系统。
EXT4,第4代扩展文件系统,是RHEL6中默认使用的文件系统类型,属于典型的日志型文件系统。其特点是保持有磁盘存取记录的日志数据,便于恢复,性能和稳定性更加出色。
除了EXT4文件系统之外,Linux中还有一个比较特殊的SWAP类型的文件系统,swap文件系统是专门给交换分区使用的。交换分区类似于Windows系统中的虚拟内存,能够在一定程度上缓解物理内存不足的问题。不同的是,在Windows系统中是采用一个名为pagefile.sys的系统文件作为虚拟内存使用,而在Linux系统中则是划分了一个单独的分区作为虚拟内存,这个分区就被称为交换分区。交换分区的大小通常设置为主机物理内存的2倍,如主机的物理内存大小为1GB,则交换分区大小设置为2GB即可。
3. Linux的目录结构
在Windows系统中,为每个分区分配一个盘符,在资源管理器中通过盘符就可以访问相应的分区。每个分区使用独立的文件系统,在每一个盘符中都会有一个根目录。
在Linux系统中,将所有的目录和文件数据组织为一个树型的目录结构,整个系统中只存在一个根目录,所有的分区、目录、文件都在同一个根目录下面。
在Linux系统中定位文件或目录位置时,使用“/”进行分隔(区别于Windows中的“\”)。在整个树型目录结构中,使用独立的一个“/”表示根目录,根目录是Linux文件系统的起点。在根目录下面按用途不同划分有很多子目录,而一个硬盘分区只有挂载到某个目录中才能被访问,这个指定的目录就被称为挂载点。例如将分区“/dev/hda2”挂载到根目录“/”,那么通过访问根目录“/”就可以访问到“/dev/hda2”分区,这个分区也就称为根分区。
在根目录下,Linux系统将默认建立一些特殊的子目录,分别用于不同的用途。比如前面提到的/dev目录就是专门用来存放各种设备文件的,再如/boot目录用来存放Linux系统的引导文件,/root目录是root用户的主目录,/home目录是其他普通用户的主目录……等等。如果应用需要,Linux系统中所有的子目录都可以创建为独立的硬盘分区,没有进行独立分区的子目录则都会保存在根分区中。对于初学者,除了交换分区以外,一般只需要再创建2个分区,分别作为根分区和/boot分区,基本就可以满足需求了。