bestwc 发表于 2008-11-09 04:23

为某中国十大女性社区做的分区方案

作者:Alson Black,BestWC

Hack0Nux 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 编辑 ]

剑心通明 发表于 2008-11-09 08:42

我印象中/root是不能单独分出来的吧?

剑心通明 发表于 2008-11-09 08:43

两块硬盘做个raid 1不好吗?

xpban2006 发表于 2008-11-09 09:22

回复 #3 剑心通明 的帖子

是啊~raid是不是应该最新考虑?不过文章有很多值得学习的地方,谢谢共享:mrgreen: ,受教啦

fengyun8972 发表于 2008-11-09 09:26

我对服务器配置共多少钱感兴趣。。。呵呵。

swordfish.cn 发表于 2008-11-09 10:58

只要有一个硬盘挂了,必有损失啊。
还是叫客户多投点钱把备份搞好一点吧。:mrgreen:

另外,这个题目看起来像是排列组合。

fender0107401 发表于 2008-11-09 11:58

我喜欢raid1,最讨厌raid0。

xpban2006 发表于 2008-11-09 12:59

回复 #7 fender0107401 的帖子

没事干自己的机器弄个raid0:mrgreen:

rightzj 发表于 2008-11-09 13:15

生产环境不用raid 1以后有得受的

llzqq 发表于 2008-11-09 13:38

要搞就上RAID5,RAID1的I/O不理想,还不如没有。
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 为某中国十大女性社区做的分区方案