当前位置:Linux教程 - Linux文化 - 给linux新人的分区解决方案的详细讨论

给linux新人的分区解决方案的详细讨论


常看到linux论坛上有人问linux该怎么分,得到的回答通常是:分两个区,一个/一个swap.短短一句话就没有了下文.让人看后还是不解.我想针对不同阶段不同水平的linux使用者给出我自己认为比较合理的分区方案以供大家参考.

一,linux新人.

对于这类linux sir 他们往往是对linux比较好奇,刚刚听说这个系统,对这个系统没有任何感性的了解.在这种情况下,他们安装linux的目的通常是满足一下好奇心或者是求异的心理,(和当初的我一样).对于linux能给他们带来什么,到底有什么用,他们没有明确的目标,也许今天刚刚装上去,明天就觉得linux是一滩难用的垃圾,于是就跑到他们心爱的Windows系统下去了.

他们即要尝尝鲜又不肯马上轻易舍弃心爱的Windows.所以,对于这样刚刚接触linux系统的新人,没有必要花很多心思去考虑如何把硬盘分区分得合理和高效.对于这些用户,只需要满足一下两点:

1,windows 无论如何要保留着,而且在分区的时候不能破坏原来的系统.

2,确保linux 能装上并且可以运行.

所以不能破坏原来的分区来重新给整块硬盘分区,所以常用的方案是采用现有的Windows分区来装linux系统. 通常使用windows中的最后一个盘,即最后一个分区来安装linux系统.

假设原来Windows系统中有6个分区: C,D,E,F,G,H通常的建议是把最后一个分区作为安装linux的根分区.linux完全安装需要5G左右的空间(指目前比较流行的Redhat8 Redhat9等).千万不要惊讶linux为何会耗费掉这么多空间,其实linux系统本身并不大,而且可以十分灵活的定制,小到几M,大到几G的空间上都可以装上不同用途,不同性能的linux系统.之所以完全安装要费5G的空间,是应为这5G中除了基本的系统外还包括了各种的数据库,OFFICE套件,各种应用程序,各种服务器程序,各种的桌面管理器等,花几十块钱买一套linux系统,你就不必要再花钱买任何常规软件了. 是不是要把这5G的东西全部装上呢?

对于初学者,如果硬盘空间不紧张的话我建议全部都装上,以免今后在安装其他软件的时候遇到各种烦人的动态库倚赖问题和找不到在教材上看到的命令的问题,而初学者又不知道如何装上那些他们在系统安装的时候没有装上的软件,这样就会浪费很多时间走很多弯路.就我而言,我第一次装linux的时候是装的Redhat7.1,由于空间不多,(更多原因是抱着Microsoft Windows不放),所以只分了1G的空间给linux,结果又什么都不懂,在安装的时候才发现默认安装空间不够,结果在不知道KDE是什么,GNOME是什么,X是什么的情况下把KDE和GNOME都勾掉了,只甚下一个X,当我兴致勃勃的按书上写的输入startx 命令后,屏幕上只出现了一个黑色的X一个灰色的背景,和一个闪着提示符的xterm,不知道该如何才好,胡乱在xterm中敲了一个DOS明令dir,结果被我瞎帽遇到死耗子,还真输出了些信息.最后不得不重新分了一个比较大的区再把KDE和GNOME装上.

因此,这里我建议初学者第一次装的时候把所有东西都装上,以免遇到各种问题,linux不像Windows,它十分的灵活,但是正因为这一点,它也十分麻烦,如果对它没有一定的了解是很难驾驭它的,所以为了避免麻烦,建议你把所有的东西都装上,在安装的时候选择全部.假如硬盘空间比较紧张,至少也要把安装程序默认的那些东西装上,估计会花费不到2G的空间.也可以不选择"定制",直接选工作站安装方式.等到将来对系统有了一定的了解,知道了自己的需求,明白了哪些东西是自己想要的,哪些对自己来说是多余的的时候就可以根据自己的需求重新划分分区,选择软件安装了. 具体的分区方案如下:

在Windows下把最后一个盘用分区工具删除,如果最后一个盘空间太小的话就把最后两个都删除.删除后硬盘上就有了多于的空间,就可以开始安装系统了,一般来说安装linux需要两个分区,一个是装系统文件的跟分区(/),一个是作为虚拟内存的交换分区(swap),这是和Windows不同的,需要注意.所以,我们可以现在Windows下借助Windows下的分区工具,在刚刚腾出来的空间上建立两个分区,前面一个根分区,后面一个交换分区,交换分区不用很大,按照官方的说法,虚拟内存应该是实际内存的两倍大小,或者是在32M和实际内存两倍这两个值中选较大值,这是针对内存十分少的老机器的.但是在实际应用中分实际内存的两倍大小显然有点浪费,就如我有256M内存,160M 的交换分区,实际使用中swap只用掉3~5M,即使在使用VMware等及费内存的软件时,swap的耗费量也只有60M,所以分100~200M的swap已经足够了,不闭按照官方文档说的分2倍的实际内存大小,如果你有512M内存难道你真的要分1G的交换分区吗?

注意,如果交换分区的大小小于内存两倍,安装程序会有警告,只要忽略警告继续安装就可以了,个别版本的linux在交换分区小于实际内存两倍的情况下,安装程序将不能通过,比如TURBO linux 6.0 这种情况下可以暂时分一个大点的分区,等装好后再把分区删除,划个小分区挂上.如果发现装好后交换分区不够用了也别急,你可以手工再建立交换文件,这将在后面说明.

分区分好后别急着格式化,linux有自己的文件系统,大部分版本的linux都不能装在Windows的FAT或者NTFS分区上.所以你要做的只是重新启动系统,启动电脑,放入安装光盘,安装程序会帮你格式化你分出的两个分区.其中的安装细节不在本文讨论范围之内,随便买一本入门教材上面都说的很清楚.

二,linux中鸟

对于这些linux Sir ,他们已经学会了linux的基本**作,学会了如何安装软件,常用linux命令等,也知道了linux系统的基本结构和linux跟文件系统下各个目录的意义并且知道了光盘上那么多东西哪些是自己需要的,哪些是自己可能一辈子都不会用到的.于是就想着开始自己定制系统划分出比较合理的分区大小和数目.下面我想以我目前的硬盘划分情况为列,给这些linux进阶用户给一个我自认为比较合理的分区方案.

下面是我的硬盘分区情况(我有两个硬盘,但是系统主要装在第一个,第二个只用来拷贝数据,装装实验性系统等)

Disk /dev/hda: 255 heads, 63 sectors, 2491 cylinders

Units = cylinders of 16065 * 512 bytes

Device Boot Start End Blocks Id System

/dev/hda1 * 1 392 3148708+ 83 Linux

/dev/hda2 393 589 1582402+ 83 Linux

/dev/hda3 590 981 3148740 7 HPFS/NTFS

/dev/hda4 982 2491 12129075 f Win95 Ext'd (LBA)

/dev/hda5 982 1504 4200966 83 Linux

/dev/hda6 1505 2027 4200966 b Win95 FAT32

/dev/hda7 2028 2289 2104483+ 83 Linux

/dev/hda8 2290 2420 1052226 83 Linux

/dev/hda9 2421 2471 409626 83 Linux

/dev/hda10 2472 2491 160618+ 82 Linux swap

Disk /dev/hdb: 128 heads, 63 sectors, 1023 cylinders

Units = cylinders of 8064 * 512 bytes

Device Boot Start End Blocks Id System

/dev/hdb1 * 1 520 2096608+ b Win95 FAT32

/dev/hdb2 521 910 1572480 83 Linux

/dev/hdb3 911 986 306432 83 Linux

/dev/hdb4 987 1023 149184 83 Linux

[root@gucuiwen root]#

挂装点和空间使用情况:

[root@gucuiwen root]# df -h

Filesystem Size Used Avail Use% Mounted on

/dev/hda1 3.0G 2.0G 839M 71% /

/dev/hda2 1.5G 990M 531M 66% /mnt/hda2

/dev/hda5 3.9G 2.8G 986M 75% /mnt/hda5

/dev/hda6 4.0G 1.6G 2.4G 40% /mnt/hda6

/dev/hda7 2.0G 1.2G 745M 62% /home

/dev/hda8 1011M 176M 784M 19% /mnt/hda8

/dev/hdb1 2.0G 1.8G 207M 90% /mnt/hdb1

/dev/hdb2 1.5G 185M 1.1G 14% /mnt/hdb2

none 125M 0 124M 0% /dev/shm

/dev/hda9 387M 180M 188M 49% /var

我把第一个硬盘分了三个主分区,以便在安装多套系统的时候互不影响.至于为什么要分三个主分区,我在一文中已经说过.其好处是很多的.详见:

http://go.6to23.com/gucuiwen/linux

我的硬盘虽然只有2OG,但是我却分了9个分区,这也是为了管理方便经过多次划分后做出的选择. 首先我把linux的跟(/)装在第一个主分区hda1.这个分区大小为3G,这上面包括:

/boot

/bin

/dev

/etc

/lib

/sbin

/usr

还有空目录和挂装点:

/opt

/mnt

/initrd

/var

/home

/proc

/misc

由于/boot /bin /dev /etc /lib /sbin 下的东西都比较小,没有必要单独划分分区挂装他们,事实上把这些目录单独划分区挂装反而不利,应为这些目录中放着系统启动时的关键信息和文件,系统启动之初却只挂装上/分区,因此,万一其中的某一个分挂装失败系统将不能正常启动.比如/etc目录中存放着系统软的硬件配置信息,包括分区的挂装点分区类型等配置信息,系统启动的时候需要读取这些信息,如果把/etc单独放在一个小的分区上,系统启动的时候到哪里去读分区的挂装点信息呢?类似的/sbin /dev等必需放在根分区上. 只有/boot中存放的是系统内核和引导工具,某些情况下为了解决一些老主板不支持大硬盘的情况下,才单独在硬盘1024柱面以内分一个小分区装/boot的内容.不过目前的主板大多不存在这个问题.另外/usr下的内容一般不经常改变,因此,我也把它放在/目录上.可以看出,我是把所有文件大小不经常变化的,不会引起文件系统碎的所有东西装在/分区上面.

另外,我分了2G的空间存放我自己平时下载的图片和资料以及软件等.挂装在了/home目录,重装系统的时候不动这个分区,就算格式化也只格掉 / 分区, /var 和swap分区,其他分区上的内容都可以保留,在装系统的时候再挂装到系统里.

我的第二个主分区hda2暂时放着些临时文件,平时主要是用来装一些实验性的系统的,比如出了一个新的linux版本,我就把它装在这个分区里体验,而swap /home可以和原来那套系统公用.

我的第三个主分区大小3G,我装了WIN2K系统,由于现在Windows系统使用的比较少了,(主要是给没有电脑的同学用)所以只分派了两个区,一个安装系统和常规的软件,就是第三个主分区 hda3,文件系统格式为NTFS.另外一个是一个逻辑分区hda6大小为4G,文件系统为FAT32,主要用来零时性的装装电影啊音乐啊,虚拟光盘印象GHOST印象文件等.这两个区在Windows下分别显示为C盘和D盘.

下面说说其他的几个逻辑分区:

分区设备名 挂装点 文件系统 大小 作用

/dev/hda5 /mnt/hda5 ext3 4G 存放音乐,电影等大而固定不变的文件

/dev/hda6 /mnt/hda6 FAT32 4G Windows下的D盘

/dev/hda7 /home ext3 2G 我的文档,下载的软件,书籍,图片等

/dev/hda8 /mnt/hda8 ext3 1G 编译大型软件用的零时分区.

/dev/hda9 /var ext3 400M 系统中经常变化大小的日志文件.

/dev/hda10 swap swap 160M 交换分区

对于已经进阶的linux用户,你可能不原意把硬盘分的那么细,甚至不分/home, /usr, /usr/local 但是/var是无论如何都应该分一下的.因为系统的所有日志文件,PID文件,RPM数据库文件等等,这些大小经常发声变化的文件都放在这个目录下,所以这个目录是最容易产生碎片的.如果不单独分一个分区而混在/一起的话,很容易弄乱/文件系统,使系统性能下将,特别是一个多用户环境和一个对外服务的网站主机系统,更应该如此,对于个人用户这个分区有300~500M就可以了.

还有/tmp也是一个文件大小经常变化的目录,但是对于个人用户来说,里面内容很少,单独分一个区也没必要,但和/分区混在一起又总觉得有一种"一滴鼻涕毁一锅粥"的感觉.我的解决方案是把原来的 /tmp目录删除,而作一个到 /var/tmp目录的链接,就像系统本身就有的 /usr/tmp目录一样. 还有 /root 目录大小也经常发生变化,我也把他删除,作了一个到 /var/root的链接,这样,系统中所有大小经常变化,易引起文件系统碎片的东西就全归到 /var 分区上,这就叫"烂也只烂一个苹果",以后可以只整理 /var 分区.

如何整理呢?通常我用一种最简单的办法:

用单用户模式启动系统 LILO: linux single 如果是用GRUB引导,在启动时按字母 a,然后追加内核参数 linux single (这种模式不挂装除/以外的其他文件系统,因此可以安全的对其他分区**作.) 然后删掉一些你认为没用的日志文件,再把/var 全考到其他地方去,接下来删除原来/var 下的所由内容,最后把刚才复制的 /var 分区下的内容拷贝回去,经过这么搬动一次后,文件系统上的碎片就可以消除.ext3本来是一个碎量很少的优秀文件系统,据说比NTFS还要少的多,因此没有必要经常这么做.

这里要提醒一点,把/tmp目录删除链接到 /var/tmp目录后一定要把/var/tmp目录的权限设置为 777否则普通用户将无法启动X.

如下图:

[root@gucuiwen /]# ll

total 189

drwxr-xr-x 2 root root 4096 2月 3 02:21 bin

drwxr-xr-x 3 root root 4096 2月 2 18:36 boot

drwxr-xr-x 20 root root 118784 2月 11 20:10 dev

drwxr-xr-x 59 root root 4096 2月 11 20:10 etc

drwxr-xr-x 22 root root 4096 2月 10 16:53 home

drwxr-xr-x 2 root root 4096 6月 22 2001 initrd

drwxr-xr-x 7 root root 4096 2月 6 23:29 lib

drwx------ 2 root root 16384 2月 3 01:54 lost+found

drwxr-xr-x 2 root root 4096 8月 27 2002 misc

drwxr-xr-x 12 root root 4096 2月 8 20:57 mnt

drwxr-xr-x 2 root root 4096 8月 24 1999 opt

dr-xr-xr-x 73 root root 0 2月 12 2004 proc

lrwxrwxrwx 1 root root 10 2月 2 18:29 root -> /var/root/

drwxr-xr-x 2 root root 8192 2月 6 23:29 sbin

lrwxrwxrwx 1 root root 9 2月 2 18:29 tmp -> /var/tmp/

drwxr-xr-x 17 root root 4096 2月 2 20:16 usr

drwxr-xr-x 23 root root 1024 2月 7 21:57 var

drwxr-xr-x 8 root root 4096 2月 6 23:25 www

[root@gucuiwen /]# ll -d /var/tmp

drwxrwxrwt 14 root root 1024 2月 12 01:04 /var/tmp

[root@gucuiwen /]#

当然由于很多用户还舍弃不下Windows系统,并且大部份时间都在用Windows系统,所以可以把我格式化成ext3格式的 hda5 hda7等分区格式化成fat32文件系统,这样在Windows和linux下都可以很方便的使用这些分区,两者兼顾.这里的方案也只是一个范例,用户可以根据自己硬盘的实际大小来划分.

三,系统管理员和网站管理员

对于这些用户,我想也不必要多说了,他们通常都是玩转系统的老手,把linux系统把玩的随心所欲,拿捏的恰到好处,他们总能根据实际需求定制出一个完美的方案.

对于一个服务器上的系统 /var /tmp /usr /home等目录是肯定要单独分区的,对于大型的站点,每天的系统日志都有好几百M,单独分一个几G大的/var分区甚至单独分派一个硬盘都是不为过的./tmp下的文件也不会像个人用户的系统那样只有几M的文件,所以对于一个服务器系统,分一个/tmp分区或者单独挂一个硬盘是每个系统管理员都会做的事情.除了这些目录外通常还需要分一个/usr/local分区,因为服务器上通常需要安装大量的软件.

对于大型的FTP服务器,HTTP服务器和代理服务器等,通常还要单独划出分区分区或者分派硬盘来存放文件.这些内容对于初学者来说不会遇到,所以就不多说了.

附: linux 分区的常见问题

1,只有一个分区可以装linux吗?

完全可以,linux的虚拟内存并不一定要单独分一个swap分区,也可以像Windows系统那样,在系统所在的分区划出空间来做虚拟内存.只是单独分出一个分区来作swap的话性能比在系统分区上划空间做swap要好.对于某些版本的linux,如果没有swap分区,安装程序会不允许安装,对于这些版本,可以先划一个大的区或暂时用一个没有用的Windows分区做swap,骗过安装程序,然后再装.

2,如何在一个分区上划出空间来做swap?

选一个有足够空间的分区用如下命令:

#dd if=/dev/zero of=swapfile bs=1k count=50000

这样就得到了一个大小为50M的连续文件(作swap的文件必需连续) 然后把这个50M的文件"格式化"成swap文件:

#mkswap swapfile

最后启用这个swap文件

#swapon swapfile

用free命令查看一下,是不是 swap多了50M呢? 可以把这个命令写进 /etc/rc.d/rc.local 中,让系统启动的时候自动开启swap.

如果是把整个分区做swap可以这样:

#mkswap /dev/hda? (?为具体的分区号)

#swapon /dev/hda?

3,linux最多支持多少个swap分区?

16个 (新版的可能支持更多)

4,如何备份linux系统?

专业的网站和多用户系统通常用磁带机等专用备份设备,对于个人用户最简单的办法是直接拷贝一份到空的分区上,等原系统坏了就用备份系统,给内核添加root=?参数就可以启动备份系统.比如你把系统备份在 /dev/hda6上,给内核参数 LILO:linux root=/dev/hda6 就可以启动备份系统,也可以直接写进lilo.conf,达到两套linux系统共存一块硬盘同时使用的目的.另外目前最新版本的GHOST已经可以支持EXT3文件系统的备份.

5,如何"格式化"一个分区?

其实,我们通常所说的"格式化",真正的含义是创建文件系统,"格式化"的最初的意思是我们平时说的"低级格式化".只有"低级格式化"才是真正的"格式化",而平时大家说的"格式化"或者"高级格式化"只是创见文件系统,由于微软的系统里一直不区分这两个概念的含义,所以谎言重复一千遍就成了真理,把"创见文件系统"统一说成了"格式化".

在linux系统里可以用 mkfs (make filesysge 创建文件系统) 来"格式化"一个分区.

#mkfs -t ext2 /dev/hda1

#mkfs.ext2 /dev/hda1

把 /dev/hda1"格式化"成ext2格式

#mkfs -t ext3 -c /dev/hda1

#mkfs.ext3 -c /dev/hda1

把 /dev/hda1"格式化"成ext3格式,并监查硬盘坏块

#mkfs -t vfat /dev/hda1

#mkfs.vfat /dev/hda1

把 /dev/hda1"格式化"成FAT32格式

#mkfs -t msdos /dev/hda1

#mkfs.msdos /dev/hda1

把 /dev/hda1"格式化"成FAT16或FAT12格式(具体由容量决定)

#mkfs -t minix /dev/hda1

#mkfs.minix /dev/hda1

把 /dev/hda1"格式化"成minix格式

对于软盘可以这样:

# fdformat /dev/fd0H1440 (注意,这里真正的格式化,即所谓的低级格式化)

#mkfs.msdos /dev/df0