存档

2009年11月 的存档

SSD固态硬盘,其最大的优势在于,单块SLC的SSD就可以达到数万IOPS,想象一下,一个大型存储的IO能力也许用几块SSD就可以做到。当 然SSD也有缺点,写磨损是一个大问题,虽然可以用“冗余容量”和“均匀写”来解决,但是还是很难消除电子产品比机械产品可靠性差的疑虑(相比较SSD, 普通磁盘可以归纳为机械产品)。另外一个问题是稳定性,对于数据库这种对稳定性要求很高的应用来说,SSD还有待于实际应用的检验。
我们从两年前就开始跟踪SSD产品,并进行很多的测试与评估,目前业界SSD主要是作为二级cache来使用的,比如在存储中配置SSD或者flash 卡,用来作数据库的cache,数据库全部使用SSD的应用还非常少见。我们在今年的项目中开始尝试用PC server+SSD+MySQL来取代小型机+大型存储+Oracle,当然前提是应用做了分布式的架构,虽然SSD的价格依然很贵,但是还是可以接受 的,至少比IBM小型机,EMC存储便宜吧。
由于业界普遍缺乏SSD的使用场景,硬件厂家也很少有成熟的配置SSD的高性能PC方案,我们只好自己搞,SSD和PC都是我们采购,然后自己 DIY自己测试。在实际使用的过程中,先是发现SSD盘的故障率很高,经过厂家检测后发现有质量问题,后来又发现SSD与PC存在兼容性问题,在大压力时 会导致OS hang,以至于DB hang,目前还在与硬件厂家做进一步的检测。
在测试SSD的过程中,有一些小的发现。MLC和SLC相比,价格和性能基本上前者都是后者的三分之一,MLC宣称的写磨损次数要比SLC低很多,也就是说MLC更容易坏,数据库环境一定要用SLC的SSD。SSD如何做RAID?我们采用Solaris的ZFS来管理SSD,而没有使用通常的硬件RAID卡,因为相比较SSD巨大的IO能力来说,也许RAID卡就成为了性能瓶颈。SSD适合OLTP类型的应用,对吞吐量要求比较高的数据仓库类型不适合,因为有写磨损的问题,所以对于写密集型应用也不适合。CPU不必迷信IBM的Power,现在Intel的nehalem甚至AMD,从测试数据上看并不比IBM差,当然PC机的可靠性比小型机要差一些,这就需要应用架构去弥补了。
SSD是未来的方向,但是目前来看还不成熟,就算当前的问题解决,还是普遍存在一个疑问,“写磨损对SSD的寿命的影响有多大,会不会发生同时 SSD盘大量损坏的情况,数据库完全放在SSD上是否可靠”。但是,SSD巨大的性能优势又让我们对它充满了期待。我们还在努力,如果我们的方案成熟,证 明SSD对数据库完全可行,并且可靠性不是问题,那么SSD将迅速取代普通SAS/SATA,我们每天都在担心的IO问题,也许真不是问题了。
–EOF–

11 26th, 2009 | Filed under 大话技术

.!.
Alibaba招聘应用DBA一名,要求:
必选:
1.精通SQL,Schema设计,SQL优化。
2.精通Oracle数据库原理与性能优化。
3.学习能力,沟通能力,抗压能力。再加一条最重要的责任心 The Hurt Locker on dvd 。
可选:
1.具备一定的Java开发能力,参加过实际的项目开发。
2.熟悉MySQL数据库。
3.对海量数据处理有一定的经验。
应届生也可以,有兴趣发简历到我的邮箱:freezr@gmail.com.
–EOF–

11 9th, 2009 | Filed under IT江湖
标签:

.!.
Oracle 11g的ASM有两个有意思的特性,我们看看他们能带给我们什么?
1.Fast mirror resync
原来当diskgroup中的盘发生故障时,Oracle会将这个盘标记为offline状态,并在一定的时间内从diskgroup中drop掉这块磁盘。如果disk只是临时性的故障,那么当故障恢复时,需要同步这块盘的全部内容,尤其是当某个failure group的全部磁盘都出现问题,比如我们的存储某个节点临时性断电,这时要重新build整个failure group中的所有磁盘,这个操作会非常耗费系统的资源,而是同步的过程会很长。
fast mirror resync这个特性在发生故障时,记录数据变化,然后当磁盘恢复时,只需要同步这些变化内容,让同步的时间变得很短。DISK_REPAIR_TIME这个参数控制可以恢复的时间长短,如果故障超过这个时间,Oracle将从diskgroup中drop这块盘。
比较有意思的问题,第一个是Oracle如何记录这些变化?文档中并没有明确说明,但是我猜测是用位图方式来实现,即用位图来标识哪个extent发生了变化,然后当故障恢复时同步这个extent即可,因为位图占用的空间很小,这样就可以记录很长时间的变化。第二个是如果整个磁盘都坏掉,换了一块新的磁盘,这时必须同步这个磁盘的所有内容,fast mirror resync就失效了。
2.Preferred mirror read
ASM中mirror有primary copy和secondary copy,ASM总是读primary copy的内容,但是ASM会将不同extent的primary和secondary copy放在不同的failure group中,比如extent 1的primary在failgroup1,secondary在failgroup2,而extent2则刚好相反,用这种方式来实现负载均衡。
Preferred mirror read可以控制Oracle优先读取某个failure group上的copy,这个特性在RAC上很有用,我们可以控制RAC的节点优先读取离自己最“近”的存储,我突发奇想,设计一个两节点的RAC系统,利用iscsi来共享自己的磁盘给对方,然后利用这个特性,控制每个节点去读自己的本地磁盘。
下图这个方案,我们选用两台PC server,没有共享的存储,每台PC24块盘,如果追求吞吐量,用SAS/SATA盘,如果追求IOPS,可以用ssd盘。用iscsi将本地磁盘输出给地方节点,形成共享存储,RAC节点间互连可以用直连或交换方式。ASM中分别将两个PC的磁盘定位为单独的failgroup,利用preferred mirror read,让每个节点优先读取自己的本地failgroup中的extent copy.

以上方案未经测试,纯属虚构,如果谁有兴趣,可以搭一个验证是否可行。
将山寨进行到底。
–EOF–

11 5th, 2009 | Filed under 大话技术
标签: