[zt]关于桌面 Linux 分区的一点看法

新手涉及到的教学或入门贴,推荐新手必看,版主维护
delectate
帖子: 18311
注册时间: 2008-01-09 22:41
送出感谢: 0
接收感谢: 6 次

[zt]关于桌面 Linux 分区的一点看法

#1

帖子 delectate » 2009-10-04 12:04

from:
author:
正文:

今天看了 LinuxTOY 上推荐的《Arch Linux 安装指南》,看到其中关于分区的部分,我突然想写篇文章来讨论一下 Linux 中应该怎么分区、应该怎么选文件系统、应该怎么配置才会比较不错。

第一个问题是哪些东西单独分区比较好。我在 Ubuntu 的社区上看到的建议有很多种,比如最基本的把 /boot、/home 单独分出来的,也有把 /tmp、/var 或 /usr 也单独分出来的。不过根据我的观察以及设想来说,我觉得,而且我个人采用的是把 /boot、/tmp 及 /home 单独分区,为什么这样选择呢?

首先是 /boot 区,由于装载的是启动器,一般来说比较建议单独分区,这样可以减小损坏导致完全不能启动的风险,而且由于单独分区,在磁盘上的区域较集中,对于启动效率也有一定改善吧~下面是 /tmp 区,这个区我觉得是一定要分出来的,因为这几乎是 Linux 里面操作最频繁的一个区了,各种杂七杂八的临时文件装在里面。最后是 /home 区,把这个区单独分有一个最重要的好处就是,每次重装不需要额外的备份操作,直接沿用原来的分区就可以了~此外,还有比较喜欢更多分区的人也可以考虑把 /var 也单独分出来,这个作为日志及某些服务的资料储存地的操作频繁度也是与根目录相当不同的。至于把 /usr 单独分出来,我觉得是毫无道理的……个人看法~最后,我们还有一个区,就是 swap 区,无论内存多大,都建议建一个 swap 区!

接下来我们的问题是,每个分区该有多大?说实话,这并不是一个十分难办的问题,因为现在的 GParted 等软件能够很轻松安全的改变分区大小,如果设不好大不了花一点时间调整咯。不过还是要稍微讨论一下的。

/boot 区是一个对空间要求非常宽松的分区,一般来说可以根据自己硬盘的宽裕程度给他分 50MB-200MB 都是没什么问题的,就一堆启动文件嘛~至于 /tmp 区,据说如果要刻录 DVD,至少要给这个区留 4.2GB 以上的空间。我个人是没有 DVD 刻录机的,因此对这个不太了解,不过如果这样的话那以后刻蓝光难道要预留 25GB?我是留了 1GB 的空间,据观察利用率并不高,通常维持在 10% 以下,但考虑到某些时候说不定会突然暴增,维持一定量给它总没什么坏处吧……然后是 swap 区,这个前人总结的很多了,这里转引一下,一般来说就是内存 1GB 以下的设为两倍内存,1GB 及以上的给个 1GB 就差不多了,当然,如果想要能够使用休眠这个功能,swap 区至少要和内存一样大,这个问题上就看个人喜好自己权衡咯。根目录依自己的情况给个 10GB、20GB 的应该是足够了,硬盘大得蛋疼的给个 50GB 我看一般来说也差不多了,我给了 20GB,安装各种软件,至今也只用了 55%。剩下的就是给 /home 目录了,各种资料尽存其中~至于部分人可能愿意分出来的 /var 区,刚刚查了一下我自己的情况,我估计要给个 1G-2G,特别是对于那些用 Debian 系却从来不清里安装包缓存的人,更要分大一点。

现在的问题就是,我们需要什么样的文件系统?现在主流的桌面级文件系统大概有这几个:ext3、ext4、reiserfs、jfs。其他的文件系统大体上不是淘汰过时就是支持不完善,或者难以使用。

这几个文件系统可谓各有千秋,首先说说 ext3,这是 Linux 中这几个文件系统经历最长时间考验的,因此应该说稳定性是很优秀的,重要的东西放在这里面自然比较安心一些,但为了能从 ext2 平稳升级,沿用了线性目录储存的方式,效率自然打了些折扣。而 ext4 刚刚进入稳定版不久,说实话,我对开源界的稳定版感觉相当不好,Ubuntu 9.04 正式版出来不到一周后我下载安装,就增加了数十个安全更新……而 ext4 亦在稳定不久后爆出了丢失数据的 bug。因此,对于 ext4 的稳定性我想还有待进一步的检验,我猜也正是这个原因 Ubuntu 9.04 最终没选择这个作为默认文件系统。但其效率确实是有提高的,我想作为一些不需要经常修改的东西存放的地方还是很好的。下面来看看 reiserfs,这是一个很优秀的文件系统,可惜作者被抓起来了……这个文件系统对于小文件的存取具有很大的优势,并且在许多测试中有不俗表现。最后是 jfs,这是一个企业级的文件系统,似乎是有很稳定的性能,不过总体性能似乎不强。

好了,分析完这些文件系统的特性,我们大概可以知道应该怎么做了。当然,swap 区一定要用 swap 文件系统是必然的了。我想先看看 /tmp 所在的区,我想这里面大多是小文件,而且存在时间不长,加之重启就可以消掉,对稳定性要求不高,但如果比较高效是不错的,因此我个人选择了 reiserfs。当然,有人内存够大直接把 /tmp 挂到内存里做个 tmpfs 对效率提高很有好处。然后是 /home 区,我想 ext3 作为一个成熟和稳定的文件系统,放在 /home 再合适不过了,而且 /home 区里面通常一个文件夹我们都不会存太多文件导致其效率严重下降。至于根目录,我想 ext4 和 reiserfs 应该都不是太差的选择,而 ext3 显得就不太优越了,因为根目录里面一个目录下有成百上千的文件是很常见的(如 /usr/bin、/usr/lib 之类的……),而且大多数文件是小文件,ext3 的效率实在堪忧。而相比之下,ext4 也对小文件的访问做了一些优化,而且默认开启了对树型数据结构的支持,使得其管理文件的效率也有一定的提高。至于 reiserfs 前面也说过了,显然在这里都是合适的~至于 /boot 区,我想不应该选 reiserfs 和 ext4 这样支持 extents 的文件系统,即使可以支持效率也高不了。其实我一直在想弄一个不需要载入 GRUB stage 1.5 的应该是最快的了~最后 /var 区我没有经验,就不说了……

最后是不是非常重要的一个问题,怎么排顺序?我们都知道在传统机械硬盘上,分区越靠前意味着寻道时间越短,也即速度越快,因此我们显然要将经常要的放前面,以提高整体效率。此外我们都知道另外一个事实,如果你的内存比较大,Linux 几乎是不使用 swap 区的。因此我一向很反对把 swap 区放在前面,取而代之我觉得应该把 /tmp 放在最前面,根目录放其次,我想内存大于 1G 的可以把 swap 扔到第三个,再大的直接扔最后一个都无所谓……这里我还基于另外一个猜想:减慢 swap 访问速度有助于在有程序异常占用内存的时候减缓其扩张进程,给我们留一点时间解决这些程序……当然,这个猜想不一定是对的哈~

好了,上面都是关于传统机械硬盘的,我也想谈谈固态硬盘的问题。我的上网本就是配了个 16GB SSD……

对于 SSD,显然应该把频繁写入的东西移走,我的基本方案就是:把 /tmp、/var/log、/var/tmp 这类文件夹直接移入内存挂载为 tmpfs,然后整个硬盘分成两个区:一个 swap,一个根目录。显然在这么小的盘里你想放什么东西几乎是不可能的,因此我挂了一个外部硬盘作为我主文件夹的一个子目录,就不把 /home 单独分出来了。而且此处使用了 ext4,因为据说 ext4 是为 SSD 优化过的。至于为什么还要给 swap,这个上面也解释过了,虽然看起来很矛盾 _-b 不过这也是没有办法的……

个人看法:

文章作者对磁盘结构,文件系统了解透彻,比我好多了,我就是那半斤八两 :em03

对于磁盘分区格式选择,分配,几乎没有错误,比我现在这个好多了。

我都有想重新分区的冲动了…… :em05

希望对大家有所帮助!

ps:我的分区:
[email protected]:~$ sudo fdisk -l
[sudo] password for delectate:

Disk /dev/sda: 250.0 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0xf1d5f1d5

Device Boot Start End Blocks Id System
/dev/sda1 * 1 61 489951 83 Linux
/dev/sda2 62 30401 243706050 5 Extended
/dev/sda5 62 2493 19535008+ 83 Linux
/dev/sda6 2494 29848 219729006 83 Linux
/dev/sda7 29849 30401 4441941 82 Linux swap / Solaris

Disk /dev/sdc: 320.0 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x35c6a747

Device Boot Start End Blocks Id System
/dev/sdc1 1 37869 304182711 83 Linux
/dev/sdc2 37870 38913 8385930 b W95 FAT32
[email protected]:~$
[email protected]:~$ df -lh
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda5 19G 4.5G 13G 26% /
tmpfs 1006M 0 1006M 0% /lib/init/rw
varrun 1006M 340K 1006M 1% /var/run
varlock 1006M 4.0K 1006M 1% /var/lock
udev 1006M 200K 1006M 1% /dev
tmpfs 1006M 1.2M 1005M 1% /dev/shm
lrm 1006M 2.2M 1004M 1% /lib/modules/2.6.28-15-generic/volatile
/dev/sda1 464M 49M 392M 12% /boot
/dev/sda6 207G 178G 19G 91% /home
[email protected]:~$
头像
istartagain
帖子: 1394
注册时间: 2009-05-27 21:55
送出感谢: 0
接收感谢: 0

Re: [zt]关于桌面 Linux 分区的一点看法

#2

帖子 istartagain » 2009-10-04 12:09

我还是简洁点好: /home :arch+ubuntu / ubuntu / arch swap
头像
wangdu2002
帖子: 13284
注册时间: 2008-12-13 19:39
来自: 物华天宝人杰地灵
送出感谢: 1 次
接收感谢: 6 次

Re: [zt]关于桌面 Linux 分区的一点看法

#3

帖子 wangdu2002 » 2009-10-04 12:13

和某家推荐的分区方案比较接近。 :em04
行到水穷处,坐看云起时。
海内生明月,天涯共此夕。
--------------------吾本独!
头像
冲浪板
论坛版主
帖子: 7504
注册时间: 2007-05-06 8:19
送出感谢: 0
接收感谢: 5 次

Re: [zt]关于桌面 Linux 分区的一点看法

#4

帖子 冲浪板 » 2009-10-04 13:49

越和别人不同,将来遇到状况,修起来越难。你有把自己的“分区”记下来么?
头像
HuntXu
论坛版主
帖子: 5776
注册时间: 2007-09-29 3:09
送出感谢: 0
接收感谢: 6 次

Re: [zt]关于桌面 Linux 分区的一点看法

#5

帖子 HuntXu » 2009-10-04 13:51

说实话...这文章刚刚看了,不咋的...
HUNT Unfortunately No Talent...
头像
tenzu
论坛版主
帖子: 36913
注册时间: 2008-11-21 20:26
送出感谢: 0
接收感谢: 21 次

Re: [zt]关于桌面 Linux 分区的一点看法

#6

帖子 tenzu » 2009-10-04 13:58

说实话,小生看不懂
zakarum
帖子: 131
注册时间: 2009-05-25 23:38
送出感谢: 0
接收感谢: 0

Re: [zt]关于桌面 Linux 分区的一点看法

#7

帖子 zakarum » 2009-10-05 22:44

分区太多降低了磁盘的利用效率

桌面完全不需要考虑/tmp /var是否需要单独分区,特殊应用或许需要/var目录的空间足够大,但是也可以用用其他办法解决。

大内存用户可以把/tmp挂载成tmpfs

现在的ext4已经很好了

最后这篇文章的评论价值比较高
上次由 zakarum 在 2009-10-05 22:54,总共编辑 1 次。
头像
nuanhuai
帖子: 7813
注册时间: 2009-03-10 13:04
送出感谢: 1 次
接收感谢: 0

Re: [zt]关于桌面 Linux 分区的一点看法

#8

帖子 nuanhuai » 2009-10-05 22:50

代码: 全选

文件系统	      容量  已用  可用 已用% 挂载点
/dev/sda7             7.6G  4.6G  2.6G  65% /
none                 1009M  160K 1009M   1% /dev
/dev/sda3              47G  6.0G   39G  14% /share
/dev/sda6             8.0G  1.2G  6.9G  15% /ntfs
/dev/sda1             129M   16M  107M  13% /boot
/dev/sda5              85G   65G   16G  81% /home
tmpfs                 100M   29M   72M  29% /tmp

代码: 全选

Disk /dev/sda: 160.0 GB, 160041885696 bytes
240 heads, 63 sectors/track, 20673 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes
Disk identifier: 0xf0b1ebb0

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1          18      136048+  83  Linux
/dev/sda2              19       14090   106384320    5  Extended
/dev/sda3           14091       20673    49767480   83  Linux
/dev/sda5              19       11923    90001768+  83  Linux
/dev/sda6           11924       13032     8384008+   7  HPFS/NTFS
/dev/sda7           13033       14090     7998448+  83  Linux
/ 根是随便乱分的
如果有内存/tmp 一定弄出来
/boot 给一点
/home 放自己收藏的东西,不经常写操作的
/share 乱七八糟,搞来搞去动作片电影之类的看完就删的就放这里
/ntfs 里面没有windows,纯粹一个ntfs分区,留着以免蛋疼出事,虽然基本用不到,留着保险
swap 那玩意至今没看到有什么实际作用,不要
头像
sonofthewind
帖子: 557
注册时间: 2008-10-12 12:58
来自: 天津
送出感谢: 0
接收感谢: 0

Re: [zt]关于桌面 Linux 分区的一点看法

#9

帖子 sonofthewind » 2009-10-05 23:16

这篇文章看过了,感觉就是太复杂了,而且性能也不会有明显的改变,我是不想这么折腾了
PS:swap虽然平时基本没用,但要说完全不要似乎也不妥,不知什么时候会用到呢
jsst
帖子: 32
注册时间: 2009-09-05 21:31
送出感谢: 0
接收感谢: 0

Re: [zt]关于桌面 Linux 分区的一点看法

#10

帖子 jsst » 2009-10-07 13:56

:em04 :em06 :em01 :em11
一个讨论linux技术的部落

http://blog.mylinuxss.com
头像
Lavande
论坛版主
帖子: 5350
注册时间: 2008-12-21 15:27
来自: TARDIS
送出感谢: 1 次
接收感谢: 8 次

Re: [zt]关于桌面 Linux 分区的一点看法

#11

帖子 Lavande » 2009-10-07 13:58

前几天看过,话说评论比文章精彩……
头像
ubuntu盗版用户
帖子: 246
注册时间: 2009-10-05 13:11
来自: 搬家了我把门牌带过来了所以地址没变!
送出感谢: 0
接收感谢: 0
联系:

Re: [zt]关于桌面 Linux 分区的一点看法

#12

帖子 ubuntu盗版用户 » 2009-10-08 15:02

MARK
弄好了,不出问题不再动了,下次重装系统再来参考下哈!
我选择,我崩溃!我盗版!我微软!
头像
kovchou
帖子: 217
注册时间: 2008-10-24 14:12
送出感谢: 0
接收感谢: 0

Re: [zt]关于桌面 Linux 分区的一点看法

#13

帖子 kovchou » 2009-10-08 15:15

tmpfs怎么弄?
分区选择挂载的时候选的?还是要怎么弄一下?
生命不止,奋斗不息
zakarum
帖子: 131
注册时间: 2009-05-25 23:38
送出感谢: 0
接收感谢: 0

Re: [zt]关于桌面 Linux 分区的一点看法

#14

帖子 zakarum » 2009-10-08 18:16

kovchou 写了:tmpfs怎么弄?
分区选择挂载的时候选的?还是要怎么弄一下?
编辑/etc/fstab
加入如下一行

代码: 全选

none                    /tmp                    tmpfs   defaults,size=1024m       0 0
size这里表示的/tmp容量上限,实际情况是使用多少占用多少。
tmpfs相关的中文内容可以去http://www.ibm.com/developerworks/cn/搜索下
头像
kovchou
帖子: 217
注册时间: 2008-10-24 14:12
送出感谢: 0
接收感谢: 0

Re: [zt]关于桌面 Linux 分区的一点看法

#15

帖子 kovchou » 2009-10-09 22:19

哦,好,我试试,恩,thanks
生命不止,奋斗不息
回复

回到 “教学和常见问答”