Linux学习之CentOS(八)--Linux系统的分区概念

不知不觉已经记录了8篇Linux学习随笔了,虽然还是漂浮在Linux系统的表面,还有很多很多没有学,但是坚持学下去、坚持写下去就是成功的!!!!

在讲Linux系统分区之前,首先得介绍一下硬盘分区的知识,以及咱们用的最多的windows系统上的分区

一、系统分区

首先先普及一下有关系统分区的一些知识:

硬盘分区有三种,主磁盘分区、扩展磁盘分区、逻辑分区


一个硬盘主分区至少有1个,最多4个,扩展分区可以没有,最多1个。且主分区+扩展分区总共不能超过4个。逻辑分区可以有若干个。
在windows下激活的主分区是硬盘的启动分区,他是独立的,也是硬盘的第一个分区,正常分的话就是C区。

在linux下主分区和逻辑分区都可以用来放系统,引导os开机,grub会兼容windows系统开机启动。分出主分区后,其余的部分可以分成扩展分区,一般是剩下的部分全部分成扩展分区,也可以不全分,那剩的部分就浪费了。


但扩展分区是不能直接用的,他是以逻辑分区的方式来使用的,所以说扩展分区可分成若干逻辑分区。他们的关系是包含的关系,所有的逻辑分区都是扩展分区的一部分。


在linux中第一块硬盘分区为hda分区(或者是sda分区),主分区编号为hda1-4,逻辑分区从5开始。


硬盘的容量=主分区的容量+扩展分区的容量    扩展分区的容量=各个逻辑分区的容量之和


主分区也可成为“引导分区”,会被操作系统和主板认定为这个硬盘的第一个分区。所以C盘永远都是排在所有磁盘分区的第一的位置上。


MBR(主引导记录)的分区表(主分区表)只能存放4个分区,如果要分更多的分区的话就要一个扩展分区表(EBR),扩展分区表放在一个系统ID为0x05的主分区上,这个主分区就是扩展分区,扩展分区能可以分若干个分区,每个分区都是个逻辑分区

MBR、扩展分区、逻辑分区的概念

一个是放置该硬盘的信息区,称之为主引导分区(master boot recorder,MBR),一个是实际文件数据放置的地方.其中,MBR是整个硬盘最重要的区域.一旦MBR物理实体损坏时,则该硬盘就差不多报废了.一般来说,MBR有512个字节,且可以分为两个部分.
(1)第一部分有446个字节,用于存放引导代码,即bootloader.
(2)第二部分有64个字节,用于存放磁盘分区表.其中,每个分区的信息需要用16个字节来记录,因此,一个硬盘最多可以有4个分区.这4个分区称之为主分区和扩展分区(extended).


注:通常所说的"硬盘分区"就是指修改磁盘分区表,它定义了"第n个磁盘块是从第x个柱面到第y个柱面".因此,当系统要读取第n个磁盘块时,就是去读硬盘上第x个柱面到第y个柱面的信息.


由于扩展分区只能有一个所以这4个分区可以是4个主分区或者3个主分区加1个扩展分区,如下所示:
P + P + P + P
P + P + P + E
重点说明的是,扩展分区不能直接使用,还需要将其划分为逻辑分区才行.这样就产生了一个问题,既然扩展分区不能直接使用,但为什么还要划分出一定的空间来给扩展分区呢?这是因为,如果用户想要将硬盘划分为5个分区的话,那该如何?此时,就需要扩展分区来帮忙了.
由于MBR仅能保存4个分区的数据信息,如果超过4个,系统允许在额外的硬盘空间存放另一份磁盘分区信息,这就是扩展分区.若将硬盘分成3P+E,则E实际上是告诉系统,磁盘分区表在另外的那份分区表,即扩展分区其实是指向正确的额外分区表.本身扩展分区不能直接使用,还需要额外将扩展分区分成逻辑分区才能使用,因此,用户通过扩展分区就可以使用5个以上的分区了.


注意:
(1)实际上,不建议用户将硬盘分为4个主分区.这是因为,假如一个20GB的硬盘,若4个主分区占据了15GB的空间,则剩下的5GB空间完全不能使用,因为已经没有多余的分区表可以记录这些空间了.
(2)考虑到磁盘的连续性,一般建议将扩展分区放在最后面的柱面内.
(3)理论上允许一个硬盘只有1个主分区,其它空间都分配给扩展分区.

硬盘的分区主要分为基本分区(Primary Partion)和扩展分区(Extension Partion)两种,基本分区和扩展分区的数目之和不能大于四个,(根据上面的一些分区概念,是基本分区的数目不能超过4个,而扩展分区的数目最多只有1个,所以两者数目之和不能超过4个)。且基本分区可以马上被使用但不能再分区。扩展分区必须再进行分区后才能使用,也就是说 它必须还要进行二次分区。那么由扩展分区再分下去的是什么呢?它就是逻辑分区(Logical Partion),况且逻辑分区没有数量上限制。

如图,咱们最常用的windows系统的分区就是这样分区的,首先分出一个主分区(操作系统一般就是装在主分区里面),然后分了一个扩展分区,因为扩展分区不能直接使用,所以需要在扩展分区下面将其分为若干个逻辑分区(如图所示的D、E、F、G盘就是分出来的逻辑分区)。

二、Windows分区和Linux分区的区别

在Windows操作系统中,是先将物理地址分开(分出主分区和逻辑分区),再在分区上建立目录。在Windows操作系统中,所有路径都是从盘符开始,如C://Program Files.
 
Linux正好相反,是先有目录,再将物理地址(分区)映射到目录中.在Linux操作系统中,所有路径都是从根目录开始【/】。Linux默认可分为3个分区,分别是boot分区、swap分区和根分区.
 
无论是Windows操作系统,还是Linux操作系统,每个分区均可以有不同的文件系统,如FAT32、NTFS等。
 
对习惯于使用Dos或Windows的用户来说,有几个分区就有几个驱动器,并且每个分区都会获得一个字母标识符,然后就可以选用这个字母来指定在这个分区上的文件和目录,它们的文件结构都是独立的,非常好理解。但对于Linux系统来说,可不再是这样了,因为对Linux系统用户来说,无论有几个分区,分给哪一目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构。Linux中每个分区都是用来组成整个文件系统的一部分,因为它采用了一种叫"挂载"的处理方法,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来。这时要载入的一个分区将使它的存储空间在一个目录下获得。下面我们先来看看Linux的驱动器是如何标识的。
 
对于IDE硬盘,驱动器标识符为“hdx~”,其中“hd”表明分区所在设备的类型,这里 是指IDE硬盘了。“x”为盘号(a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘),“~”代表分区,前四个分区用数字1到4表示,它们是主分区或扩展分区,从5开始就是逻辑分区。例,hda3表示为第一个IDE硬盘上的第三个主分区或扩展分区,hdb2表示为第二个IDE硬盘上的第二个主分区或扩展分区。对于SCSI硬盘则标识为“sdx~”,SCSI硬盘是用“sd”来表示分区所在设备的类型的,其余则和IDE硬盘的表示方法一样。如,sda1表示第一个SCSI硬盘上的第一个主分区或者扩展分区。
 
三、Linux的分区
在Linux系统中,我们可以通过 fdisk -l (需要root权限)命令来查看安装的Linux系统的分区具体情况
[root@xiaoluo /]# fdisk -l

Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00066e2b

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          64      512000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              64        2611    20458496   8e  Linux LVM

Disk /dev/mapper/vg_xiaoluo-lv_root: 18.8 GB, 18832424960 bytes
255 heads, 63 sectors/track, 2289 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000


Disk /dev/mapper/vg_xiaoluo-lv_swap: 2113 MB, 2113929216 bytes
255 heads, 63 sectors/track, 257 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

通过上面的 fdisk -l 命令可以看到,在我安装的CentOS系统上,一共分了两个区sda1、sda2.以及swap区。

Linux的分区是不同于其它操作系统分区的,它的分区格式只有Ext2和Swap两 种,Ext2用于存放系统文件,Swap则作为Linux的交换分区。那么现在我们就可以知道Linux至少需要两个专门的分区(Linux Native和Linux Swap)况且不能将Linux安装在Dos/Windows分区。一般来说我们将Linux安装一个或多个类型为“Linux Native”的硬盘分区,但是在Linux的每一个分区都必须要指定一个“Mount Point”(挂载点),告诉Linux在启动时,这个目录要给哪个目录使用。对“Swap”分区来说,一般定义一个且它不必要定义载入点。下面我们先普及下“Linux Native”和“Linux Swap”。

 

*SWAP分区

SWAP分区是LINUX暂时存储数据的交换分区,它主要是把主内存上暂时不用得 数据存起来,在需要的时候再调进内存内,且作为SWAP使用的分区不用指定“Mout Point”(载入点),既然它作为交换分区,我们理所当然应给它指定大小,它至少要等于系统上实际内存的量,一般来说它的大小是内存的两倍,如果你是 16MB的内存,那么SWAP分区的大小是32MB左右,以此类推。但必须还要注意一点,SWAP分区不要大于128MB,如果你是64MB的内存,那么 SWAP分区最大也只能被定为127MB,再大就是浪费空间了,因为系统不需要太大的交换分区。以此类推,如果你是128MB或更大的内存,SWAP分区 也只能最大被定为127MB。况且你还必须注意的是如果你是128MB(或更大)的内存,你必须提醒系统你有这么大的内存,要不然它可不认你这个 128MB内存。具体如下:当顺利启动了安装过程后,会显示一个boot:提示符,这时你只要键入boot:linux mem=128MB就可以了。另外你也可以创建和使用一个以上的交换分区,最多16个。

 

*Linux Native

Linux Native是存放系统文件的地方,它只能用EXT2的分区类型,上面已说过。对Windows用户来说,操作系统必须装在同一分区里,它是商业软件吗! 所以你没有选择的余地!对Linux来说,你有了较大的选择余地,你可以把系统文件分几个区来装(必须要说明载入点),也可以就装在同一个分区中(载入点是“/”)。下面我们看看 可以创建哪些分区(仅列常用几种)。

/boot分区 它包含了操作系统的内核和在启动系统过程中所要用到的文件,建这个分区是有必要的,因为目前大多数的PC机要受到BIOS的限制,
      况且如果有了一个单独的/boot启动分区,即使主要的根分区出现了问题,计算机依然能够启动。这个分区的大小约在50MB—100MB之间(根据Linux版本不同,数值可以不一样)。
      但是如果想用LILO启动Linux系统的话,含有/boot的分区必须完全在柱面1023以下。又由于8GB后的数据LILO不能读取,所以Linux要安装在8GB的区域以内。

 

根据安装的Linux版本,可以选择为/boot分区划分不同的空间(我设置的是500M),查看具体某一个目录的所在的分区使用 df [目录全路径] 这个命令查看,如:

[root@xiaoluo /]# df /boot/
文件系统             1K-块      已用      可用 已用% 挂载点
/dev/sda1               495844     50655    419589  11% /boot
我们可以看到,我们的/boot目录是挂载在了 sda1 这个分区上,当然我们可以将/boot目录从该分区上卸载掉,通过如下命令就可以:
[root@xiaoluo /]# umount /boot

此时我们可以看到,/boot下面已经没有任何东西了,我们设置可以在 / 根目录下建立一个自己的目录,然后将自己的这个目录挂载到 sda1 这个分区上(不推荐)

/usr分区,是Linux系统存放软件的地方,如有可能应将最大空间分给它。

/home分区,是用户的home目录所在地,这个分区的大小取决于有多少用户。如果是多用户共同使用一台电脑的话,这个分区是完全有必要的,况且根用户也可以很好地控制普通用户使用计算机,如对用户或者用户组实行硬盘限量使用,限制普通用户访问哪些文件等。其实单用户也有建立这个分区的必要,因为没这个分区的话,那么你只能以根用户的身份登陆系统,这样做是危险的,因为根用户对系统有绝对的使用权,可一旦你对系统进行了误操作,麻烦也就来了。

/var/log分区,是系统日志记录分区,如果设立了这一单独的分区,这样即使系统的日志文件出现了问题,它们也不会影响到操作系统的主分区。

/tmp分区,用来存放临时文件。这对于多用户系统或者网络服务器来说是有必要的。这样即使程序运行时生成大量的临时文件,或者用户对系统进行了错误的操作,文件系统的其它部分仍然是安全的。因为文件系统的这一部分仍然还承受着读写操作,所以它通常会比其它的部分更快地发生问题。

/bin分区,存放标准系统实用程序。

/dev分区,存放设备文件。

/opt分区,存放可选的安装的软件。

/sbin分区,存放标准系统管理文件。 


我们可以如果要查看Linux磁盘的使用情况,使用如下命令即可:
[root@xiaoluo /]# df -h
文件系统          容量  已用  可用 已用%% 挂载点
/dev/mapper/vg_xiaoluo-lv_root
                       18G  8.2G  8.3G  50% /
tmpfs                 245M  228K  245M   1% /dev/shm
/dev/sda1             485M   50M  410M  11% /boot
/dev/sr0              391M  391M     0 100% /media/20130331_132633


所以,通过以上的概述,总结一下Linux分区需要注意的地方,在安装Linux系统时,我们一般为其分配三个区:

/boot区,通常情况下根据Linux的版本不同,个人分区习惯会不同,我这里分配了500M给这个分区。

swap区,交换区,通常分配给其的大小为物理内存的2倍,但是最好不要超过256M,所以我这里分配了256M给这个分区。

/ 区,也就是根目录,这个分区尽量给其分配大的空间,可以将安装Linux系统的这个硬盘上除去分给/boot、swap区以外的空间都分配给这个分区。

对于Linux系统分区的概念基本上就是这些,在后续的学习中将继续记录自己学习Linux系统的点点滴滴!!!

 

posted @ 2013-04-03 00:13  xiaoluo501395377  阅读(14252)  评论(2编辑  收藏  举报