学习过linux的人在一开始可能都会对linux的分区的认识感觉很复杂,因为习惯了windows下简单明了的c,d,e,f,g盘的表示方法,其实linux的分区看似复杂难懂,但是搞清楚了它的分区解构后,就很好理解,而且这样的分区系统也更加灵活好用。
一.linux下分区的定义
我们都知道,一块新的硬盘买回来后是不能直接使用的,我们需要对他进行分区,这一点对windows和linux是一样的,那么为什么要对硬盘进行分区呢,首先是如果把所有的文件当放在当前的硬盘中,也就是放在一个分区中,那么操作系统运行起来的效率就会很低,因为当运行一条命令时要找寻的东西太多,其次,分区也可以增强系统的安全性,美国经济学家——詹姆斯·托宾说过:“不要把所有的鸡蛋放在一个篮子里。”就是这样一个道理,若是我们把所有的文件都放在一个分区中,那么当系统出现问
题需要重装或者格式化文件系统的时候,我们的数据就会丢失,这时候如果我们进行了分区,那么就可
以避免这种情况的发生。最后,磁盘的使用寿命是有限的,如果我们只有一个分区,那么对这一个的分
区的读写就会很频繁,这样就加快了磁盘的损耗。综上所述,硬盘分区是很有必要的。
知道了为什么要进行分区后,我们来讨论一下linux下分区的定义,一块硬盘的主引导扇区 = 硬盘主引导记录(MBR)+ 硬盘分区表(DPT),一共是512个字节,其中MBR是446,分区表一共64字节,然后是2个字节的结束标志。分区表一共64个字节,一个分区占用16个字节,也就是最多有4个主分区。而分区又有三种类型,主分区,扩展分区,和逻辑分区,其中可以在主分区上安装操作系统,系统启动的时候,会自动找到主分区来寻找引导文件,所以系统的引导文件必须在主分区上,否则系统就无法启动了。扩展分区其实也是主分区,只不过可以在扩展分区上面继续划分逻辑分区,一个磁盘,若是有了四个主分区,那么就没有了扩展分区的地方,但是扩展分区只能有一个,所以一般在分区的时候最好给系统分配一个扩展分区。在一个扩展分区内可最多再建立23个逻辑分区,其中的每个分区都单独分配一个盘符,可以被计算机作为独立的物理设备使用。下面这张图可以更加清楚地展示linux分区的结构。
那么如何查看我们的分区信息呢,如下图在命令行中输入fdisk -l ,然后enter,就会有如下的效果,我们逐行的来分析。
首先,第一行指的是硬盘的总共的大小,可以看到我的这块硬盘是214.7G,也就是后面的241748364800 bytes。第二行的heads代表的是磁头,也就是磁盘的盘面数,63 sectors/track,表示每个磁道上有63个扇区,26108cylinders也就是由26108个柱面的意思。一个扇区有多少字节呢,看第三行,可以看到一个扇区有512个字节,那么我们的硬盘的总大小为 heads*sectors/track*cylinders*512=214745610240bytes,有木有发现咱们算出来的这个字节数,与第一行的字节数不太一样,这与磁盘的结构是有关的,大家看下图,磁盘外圈和磁盘内圈的扇区数是一样的,但是磁盘外圈的磁道显然更大一些,可是他们却是同样的512b,这样就造成了资源的浪费,所以现在在设计磁盘的时候会将外圈的扇区数增多,这样的话用我们刚才的算法结果就会是算出来的比实际的要小了。
第五第六第七行都是我们系统的主分区,而第八行是扩展(extend )分区,第九行是交换分区,前面的/dev/sda1,2,3,4,5,分别就像windos下的cdefg盘一样,dev代表这块磁盘,他后面的/代表在这块磁盘下面,sd代表磁盘的类型,我这里的磁盘是SCSI硬盘所以是sda,如果是IDE磁盘的话就是hd了,sd后的a代表盘号,若是有其他的sdb,sdc,那么就该知道a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘,我的这个盘只分了基本盘,所以就都是sda,而sda后面的12345则代表分区号,我这里123是主分区,4是扩展分区,5是交换分区。这里要提到一个概念,交换分区(swap),交换分区是linux下的虚拟内存分区,它的作用是在物理内存使用完之后,将磁盘空间虚拟成内存来使用.交换分区的合理值一般在内存的2倍左右,可以适当加大。实际上具体还是以实际应用为准,swap为内存的2倍也不过是一种以讹传讹的说法。
介绍完了分区的一些概念下面我们来看看具体如何给一块磁盘进行分区,当然在安装linux的时候也可以分区,但是在日后的使用中,难免要再进行一些分区,来适应工作环境的需要。在进行分区前我们应该先用发fdisk -l来查看是否分区已满,我这里本来是已经满了但是为了展示需要我把自己的第三个分区给删除了,输入fdisk -l 后可以看到如下,可以看到是没有第三个分区的。
然后我们就可以进行linux分区了,用到的命令是fdisk /dev/sda(hda) ,输入这个指令后我们可以看到如下
在左上角的WARNING下面的第一个command的右边提示我们输入m来查看帮助选项,我这里已经
输入了m,可以看到,有下面很多的选项,我们输入n(add a new partition)来分出一个分区,输入后
如下提示
可以看到输入n后,下面出现了command action即选择分区类型的选项,我这里有logical和
primary两个选项,即逻辑分区和主分区这两个选项,这是因为我已经有扩展分区了,而我们上面讲过,
逻辑分区是在扩展分区已经存在的前提下才可去分的,所以如果我没有扩展分区,那么这里的逻辑分区
选择logical就会变成extend也就是扩展分区选项,好的,让我们输入p选择主分区,接下来也就是箭头2指
的地方,提示我们输入分区号,这里系统自动为我输入了3,这是因为我已经有了12的主分区和4的扩展
分区,如果大家是一块新的磁盘,那么就可以选择分区的号码了,输入3回车后,会看到箭头3指的地
方,这是提示我们选择此分区开始的柱面,一般都是默认(default),所以就是直接回车,然后会看到
系统提示using default value 6553,也就是使用默认的开始柱面6553,如果大家的是一块新的磁盘,那么
默认的肯定是从0开始的了,接下来,提示我们为这个分区划定大小,同时可以使用K,M,G这样的单
位,格式为+然后具体数字然后单位(记得大写),例如+2G,我这里依然选择了默认选项,也就是我即
将要分的这个区,会把剩余的空间都用掉,也就是箭头4指的地方,输入回车后,我们已经完成了分区,
但是还没生效,再输入w即箭头5指的地方进行保存,回车后就会自动退出分区命令,接下来我们再用
fdisk -l来查看现在的分区,如下
可以看到,已经添加了一个新的sda3的分区。
然而这并没有结束,我们还要将其格式化,才能使用它,输入如下命令,并回车,然后等待inode表写入完成。
接下来就可以使用我们刚分好的区了。
二.挂载
什么是挂载呢,在linux里,没有盘符这个概念,我们用目录的形式进行管理,把每一个分区和某一个目录对应,那么,我们对这个目录的操作就是对这个分区的操作,这样就实现了硬件管理手段和软件目录管理手段的统一,这个把分区和目录对应的过程就叫做挂载,也就是-mount,挂载可以由用户随时中断和改变,常用的挂载命令是mount和umount,即挂载和解除挂载,如umount /dev/sda 就是解除sda的挂载,而mount /dev/sda /app 就是把sda挂载到app目录下。