为某中国十大女性社区做的分区方案
作者:Alson Black,BestWCHack0Nux Core Team ->11 9, 2008
Email:FreeAlson_at_Gmail.CoM
版权说明:本文为自由文章,任何人可以随意转载,不需保留版权说明,可用于包括商业性的任意用途,不受限制。
引言:
-------------------偶是分割线-------------------
刚才做了个分区方案出来给客户,并且详细解释了半天,结果对方想再谨慎一些,让我继续做些调查。google了一圈,大概定性,也发现网上流传的一些分区方式有些问题或者太老,所以这里共享出来给各位看官,同时也希望路过的高手不吝赐教。
-------------------偶是分割线-------------------
环境说明:
-------------------偶是分割线-------------------
此客户为某女性十大社区站长,日IP4W+ 日PV45W+。属于中小型社区站点。本服务器提供WEB和数据库服务。组件采用典型的Apache+MySQL+PHP+eAccelerator。WEB服务主要为DZ论坛+Home调用。
-------------------偶是分割线-------------------
服务器简要配置:
-------------------偶是分割线-------------------
CPU: Intel Xeon E5405四核
主板: INTEL 5000V CHIPSET
内存: 4G REG ECC FBD-667MHZ
硬盘: 300GB SAS*2
-------------------偶是分割线-------------------
分区基本要点总结:
-------------------偶是分割线-------------------
1,硬盘I/O是服务器性能的瓶颈,换句话说就是硬盘表现在绝大多数情况下决定服务器性能。PS:传说软链会降低性能,在生产服务器上请尽量不要吃螃蟹。
2,对于单硬盘服务器来说,将一个大I/O的分区单独分出来以节省硬盘I/O的理解是错误的。可以想象无论如何分区,I/O都产生于同一块硬盘上。
3,对于特殊的需要隔离的数据或根据不同用途分离出来的数据,可以单独分区。
4,对于多硬盘的服务器来说,多个大I/O或多个重要数据分区可以考虑“物理隔离”——即将他们放在不同的硬盘上。
5,对于I/O操作联系相对紧密的分区,尽量不要放置在不同的硬盘上。
6,在无法实现“物理隔离”的情况下可以考虑使用“逻辑隔离”——即将归类的信息存放在不同的分区中。
7,永远不要盲目套用现成的分区方式。
-------------------偶是分割线-------------------
分区方案:
-------------------偶是分割线-------------------
首先不考虑分区大小而根据应用背景环境规划出需要划分的分区表
根据总结中的2、3、6条,规划分区表如下:
/ 根分区 存放系统相关文件,绝大多数系统目录都将挂在在根目录下
/root root家目录 存放root用户的用户配置文件。本服务器将在此存放部分系统配置文件(supfile等)
/usr 系统usr目录 部分系统文件、库文件将存放在这里。另外通过ports安装的绝大多数软件也存放在这里
/data MySQL数据库目录 存放MySQL数据库文件
/www WEB文件目录 存放WEB网站数据文件
/backup_www WEB文件备份目录 存放WEB文件的备份镜像
/backup_data 数据库备份目录 存放数据库文件的备份镜像
/var 日志目录 存放绝大部分系统和应用程序目录
/tmp 缓存目录 存放系统及应用程序缓存
swap 系统交换分区 内存交换分区,内存的pagein数据都将存放在这里。
其次考虑逻辑隔离。因为本例中服务器有双硬盘,故这里将特殊数据和大I/O这些应放置于不同硬盘的目录列出来:
根据总结中的3、4、5条,规划如下:
/ /usr /root swap ——1组
属于系统分区,执行物理隔离的话可能会产生额外I/O,故将其归纳为一组。
/var /tmp ——2组
同样属于系统分区,但日志和缓存都有I/O过大的倾向,故与1组执行物理隔离。
/backup_data ——3组
特殊用途分区
/backup_www ——4组
特殊用途分区,故应与3组执行物理隔离。
/www ——5组
大I/O分区
/data ——6组
大I/O分区,故应与5组执行物理隔离。
数据安全规划:
/backup_data存放数据库备份,/backup_www存放WEB备份。因执行物理隔离,故此二分区不在同一硬盘上,使/backup_data 与 /www位于同一硬盘、/backup_www 与 /data位于同一硬盘可有效降低数据风险,防止某硬盘损坏造成的WEB数据与数据库文件同时受损的情况。
I/O均衡:
由I/O总量考虑,/data的I/O量是要小于/www的(WEB中的大量图片附件非常消耗硬盘I/O),故将/data与系统分区放置在同一块硬盘上。
I/O协作:
根据总结中的第4条,尽量将I/O联系紧密的数据存放在同一块硬盘上。由于生产环境中使用eAccelerator做PHP缓存,而内存并不非常充裕,故eAccelerator将采用内存+硬盘的缓存方式,硬盘缓存将存放在/tmp目录下。/var存放的日志大量是与WEB服务有关的,故将/var /tmp /www放置在同一块硬盘上。
隔离规划总结:
硬盘一:
/
/root
swap
/usr
/backup_www
/data
硬盘二:
/var
/tmp
/backup_data
/www
分区大小分配:
这个其实就随便了,翻看了下以前服务器关于备份、WWW、DATA的使用量,大概定了个范围,其余的根据经验分配大小就可以了。记得化整为零,尽量凑数,大概定了范围后就不需要扣几G的大小了。其他的比如swap分区,实际上FB很少用到SWAP,我个人的经验就是如果硬盘足够,尽量按照2-3倍的规矩去分。
定型方案为:
硬盘1(共300GB):
/ 30GB
/root 4GB
swap 16GB(内存的2.5倍,考虑到以后要升级内存,定为16G)
/usr 50GB
/backup_www 100GB
/data 其余所有(约100GB)
硬盘2(共300GB):
/var 90GB
/tmp 10GB
/backup_data 50GB
/www 其余所有(150GB)
-------------------偶是分割线-------------------
大功告成,打完收工。
PS:1,仅供参考。 还是我常说的那句话:应用需求决定生产环境。
2,有意见建议的统统丢过来:-)
[ 本帖最后由 bestwc 于 2008-11-9 04:28 编辑 ] 我印象中/root是不能单独分出来的吧? 两块硬盘做个raid 1不好吗?
回复 #3 剑心通明 的帖子
是啊~raid是不是应该最新考虑?不过文章有很多值得学习的地方,谢谢共享:mrgreen: ,受教啦 我对服务器配置共多少钱感兴趣。。。呵呵。 只要有一个硬盘挂了,必有损失啊。还是叫客户多投点钱把备份搞好一点吧。:mrgreen:
另外,这个题目看起来像是排列组合。 我喜欢raid1,最讨厌raid0。