在讲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分区的区别
[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
[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系统的点点滴滴!!