Linux磁盘分区
一、硬盘结构
磁道:我们想象硬盘被一圈圈分成若干个等分的同心圆,这些同心圆就是磁道。但打开硬盘,用户不能看到这些,它实际上是被磁头磁化的同心圆.这些磁道是有间隔的,因为磁化单元太近会产生干扰。
扇区:每个磁道中被分成若干等份的区域。扇区是硬盘数据存储的最小单位。
柱面(cylinder):假如一个硬盘n个磁盘片,每一片中的磁道数是相等的。从外圈开始,这些磁道被分成了0磁道、1磁道、2磁道...具有相同磁道编号的同心圆组成面就称作柱面。柱面数就是磁盘上的磁道数。柱面是硬盘分区的最小单位。教材中常以单盘片进行讲解,此时的磁道和柱面是同一概念。
二、MBR分区方案
主引导记录(MBR,Main Boot Record),是整个硬盘最重要的区域,一般来说,MBR有512个字节,且可以分为三个部分。
(1)第一部分有446个字节,用于存放引导代码,即bootloader。
(2)第二部分有64个字节,用于存放磁盘分区表.其中,每个分区的信息需要用16个字节来记录。因此,一个硬盘最多可以有4个分区,这4个分区称之为主分区和扩展分区(extended)。
(3)第三部分有2个字节,用于存放MagicNumber。当使用小端模式处理器时MagicNumber固定为0xAA55,大端处理器时则固定为0x55AA。
MBR分区方案就是指修改MBR的第二部分,磁盘分区表。它定义了"第n个磁盘块是从第x个柱面到第y个柱面".因此,当系统要读取第n个磁盘块时,就是去读硬盘上第x个柱面到第y个柱面的信息。
由于扩展分区只能有一个,所以这4个分区可以是4个主分区或者3个主分区加1个扩展分区,如下所示:
P + P + P + P
P + P + P + E(推荐)
由于MBR仅能保存4个分区的数据信息,如果超过4个,系统允许在额外的硬盘空间存放另一份磁盘分区信息,这就是扩展分区.若将硬盘分成3P+E,则E实际上是告诉系统,磁盘分区表在另外的那份分区表,即扩展分区其实是指向正确的额外分区表。本身扩展分区不能直接使用,还需要额外将扩展分区分成逻辑分区才能使用,因此,用户通过扩展分区就可以使用5个以上的分区了。
若硬盘的MBR已坏,则该磁盘就不能再作为引导盘,只能作为数据盘.因为MBR位于硬盘的起始处,用户不能通过软件进行修复,也不能跳过起始处.而硬盘中间的某个磁道坏了,用户可以软件修复,也可以跳过该磁道。
由于MBR分区表的最大可寻址的存储空间只有2Tb(232×512字节)。因此,在大硬盘出现的现在,MBR分区方式逐渐被GUID分区表取代。
三、Linux磁盘分区
在Windows操作系统中,是先将物理地址分开,再在分区上建立目录.在Windows操作系统中,所有路径都是从盘符开始,如C:\program file。
Linux正好相反,是先有目录,再将物理地址映射到目录中。在Linux操作系统中,所有路径都是从根目录开始。Linux默认可分为2个分区,分别是swap分区和根分区。
(1)swap分区。该分区没有对应的目录,用户无法访问。Linux下的swap分区即为虚拟内存。32位操作系统支持的最大内存为4G,对于32位的Linux操作系统swap分区大小加上内存大小在4G以内即可;64位操作系统支持的最大内存过大,此时的swap分区等于内存大小或2倍于内存大小即可。
(2)根分区。在Linux操作系统中,所有目录都对应于该分区。
四、分区操作
1、查看磁盘
Linux允许使用fdisk -l命令和df -h命令来查询其硬盘分区。其中,df无法显示出swap分区的大小。
2、进行磁盘分区
使用fdisk命令,我们可以对磁盘进行分区。
首先使用df命令找到可用的磁盘文件名,例如找到设备/dev/sda1。
输入fdisk /dev/sda。(sda,不要加数字)。
此时按下m键可以获得帮助信息。
阅读可知,按p键(print)可以打印当前分区信息,d键(delete)可以删除分区,n键(new)可以新建分区,最后使用w键(write)写入。
3、格式化
mkfs命令(make file system)可以让我们对磁盘进行格式化。这个命令其实是个综合的命令,它会去调用正确的文件系统格式化工具软件。
将磁盘/dev/sda1格式化为ext3文件系统,可使用mkfs -t ex3 /dev/sda1。
使用mkfs命令进行格式化时,我们没有详细指定文件系统的具体选项,因此系统会使用默认值进行格式化。其中比较重要的部分为:文件系统的卷标,block的大小以及inode的数量。如果需要指定这些选项,则需要使用mke2fs这个命令。
4、磁盘挂载
根据我们的需要,可以临时挂载磁盘或开机自动挂载磁盘。
(1)临时挂载
作为挂载点的目录应该为空目录,否则内容在挂载后将被隐藏。
使用mkdir命令新建目录,使用mount命令进行挂载。
(2)开机挂载
直接到/etc/fstab里进行修改即可实现开机挂载,当然也有修改时必须遵循的原则。
根目录是必须挂载,且优于其他挂载点;新挂载点必须为已存在的空目录;同一个目录只能挂载一次;同一个分区只能挂载一次;如若进行卸载,必须讲工作目录移到挂载目录之外。
fstab文件(file system table)
同一目录下的文件可能在不同分区中。比如/home目录下有a、b、c三个目录,可将不同的分区挂载到这三个目录下,这种操作是允许的。