为什么选择Netapp

2024-05-05 12:08

1. 为什么选择Netapp

Network Appliance,Inc.(NetApp,美国网域存储技术有限公司)是IT存储业界的佼佼者,自1992年创业以来,不断以创新的理念和领先的技术引领存储行业的发展。Network Appliance, Inc. (NetApp) 是向目前的数据密集型企业提供统一存储解决方案的居世界最前列的公司。自 1992 年创立以来,Network Appliance 一直在率先提供一流的技术、产品和合作关系,不断推动存储业的发展。NetApp 的存储解决方案涵盖了专业化的硬件、软件和服务,为开放网络环境提供了无缝的存储管理。包括 Citicorp Securities、Lockheed、Merrill Lynch、Oracle、Texas Instruments 以及 Yahoo! 在内的大公司和服务提供商都在使用 NetApp 的全局数据管理解决方案。 

  NetApp公司倡导向数据密集型的企业提供统一的存储解决方案,用以整合在网络上来自服务器的数据,并有效管理呈爆炸性增长的数据。 

  为此,NetApp公司提供了全面的解决方案,它涵盖了专业化的硬件平台、强有力的软件系统的专业咨询服务,这些解决方案为开放式的网络环境提供了天衣无缝的存储管理能力。 

  NetApp自创建以来,市场业务表现亦出众超群,公司一直保持了极高的成长率,并不断扩展用户群,其客户领域包括通信、金融、能源、政府、制造、教育及各类媒体、各种企业和服务提供商。许多业的知名公司也在使用其解决方案进行存储管理及技术的开发。 

  NetApp公司还和许多知名公司和机构形成战略合作,以扩大技术影响和业务空间,这种合作能为广大客户提供更广泛深入的解决方案。

为什么选择Netapp

2. netapp qtree和lun是什么关系

首先默认情况下NFS4协议在NETAPP存储上是没有打开的,这个打开很容易,基于WEB的图形界面没有配置的地方的,只能通过命令行进行配置。登录进 去,然后使用options nfs.v4.enable on命令打开NFS4协议,这时候会提示说在冗余机头的情况下,那边机头也要搞,否则发生FAILOVER的时候那边就不能提供NFS4服务了,于是把两 边都搞好,在VOL上划了个QTREE,把QTREE EXPORT出去,然后就开始在客户端折腾。[@more@]

首先是客户端MOUNT不上去,报错如下:
Warning: rpc.idmapd appears not to be running.
All uids will be mapped to the nobody uid.
mount: block device 192.168.1.1:/vol/vol1/xxx is write-protected, mounting read-only
Warning: rpc.idmapd appears not to be running.
All uids will be mapped to the nobody uid.
mount: cannot mount block device 192.168.1.1:/vol/vol1/xxx read-only

WARNING很容易理解,说IDMAPD服务没起,所以所有的UID映射过来都会被映射成NOBODY的UID,这个只要启了IDMAPD服务就好了,使用service rpcidmapd start命令去启。但后面的就很难理解了,为什么会说是写保护的,然后要被MOUNT称只读的,然后即使是只读的也MOUNT不上去呢?关键最难以理解的是为什么明明是MOUNT一个NFS的设备,提示确实说BLOCK DEVICE不能被MOUNT,为什么就成了BLOCK DEVICE呢?
GOOGLE+BAIDU+NOW.NETAPP+REDHAT搜索了半天,没有什么进展。换个机器试试吧,因为这个机器不是自己安装的,不确定是否缺什么包啥的。于是换了个机器,暂且叫新机器(之前的机器就叫老机器),虽然还是报IDMAPD的报警,但是结果确实MOUNT上去了,晕了,看来是老机器有问题。

也正是这个很巧合能MOUNT的问题,导致了后面一路的误判,寻找问题中出现了方向性错误,浪费了很多的时间。

开始把两边的后台服务搞成一样,不行;比较OS版本,一致;比较网络访问权限,没问题,因为测试中老机器使用NFS3协议能顺利MOUNT;折腾了半天实在没辙,所有招数都用尽了,突然想起来了STRACE。先做个STRACE看看整个MOUNT过程中到底干了些什么,卡在哪一步出现的错误吧。

做了STRACE后发现最后错误的地方在:
mount("192.168.1.1:/vol/vol1/xxx", "/u09", "nfs4", MS_MGC_VAL, "1") = -1 EACCES (Permission denied)
也就是会有一个权限的错误,这又是一个误导我的地方。因为NFS3能MOUNT,MOUNT上去后能读写,那说明不应该出现权限相关的问题啊。拿着新老机器的STRACE去做对比,新的机器在这一步的返回结果如下:
mount("192.168.1.1:/vol/vol1/xxx", "/u09", "nfs4", MS_MGC_VAL, "1") = 0
看来问题就是出在这里了,而且相同版本的OS,相同版本的NFS相关的包,一个可以一个不可以,那只能看看是否是BUG了。还别说,真的还就找到了一个BUG,在REDHAT的上,BUGID=(nfs4 AUTH_GSSAPI server returning EACCESS on all mount attempts ),里面说在nfs-utils-1.0.9-3版本中修复了这个BUG,虽然BUG发生的版本跟我使用的版本不一致,这个BUG描述的是出现在nfs-utils-1.0.8-2,而我使用的版本是nfs-utils-1.0.6,但很多时候ORACLE就经常这么干,只是说新的版本中发现并验证了这个问题,并不代表老的版本一定没有这个问题,很可能这个问题一直就有,只不过在某个版本中被发现了。

于是了0.9的版本,结果很悲剧,装不上。这个版本很新,所以依赖的东西太多,而且很多是很底层的东西,看来想装上去是不行了,但是这个BUG里描述了一个PATCH的解决办法,只要改一段源代码,然后重新编译下就好了,看起来挺可行的。因为BUG出现在0.8,不确定我使用的0.6中代码是否一致以及估计我连CTRL+C然后CTRL+V都找不到地方,所以下了0.8的,结果编译的时候还是报一堆的依赖关系没有,这下绝望了。

既然这条路不通,那试试新的版本吧,有装好的5.4的REDHAT,这个上面的NFS版本很新,结果测试了居然也不行,跟老机器报的错一模一样,接连试了几个机器,都不行,这就见鬼了,为什么只有新机器可以,所有其他机器都不行呢,但也是在找不出新机器跟其他机器之间的不同在哪里。

在绝望的时候,希望终于来了,在NOW.NETAPP上找到了Solution ID: kb13800 的一个文章,里面描述到:
With NFSv4, client "mount" requests proceed with LOOKUP sequences to parse names from the root. As a result, if a parent directory is exported such that name lookup is blocked to a child, then the mount will fail.

踏破铁鞋无觅处,得来全不费功夫啊,到存储上一看,新机器以前为了做测试,直接加过/VOL/VOL1级别的读写权限,所以去MOUNT它下面TREE就符合上面的条件,所以也只有它能MOUNT的上去,其他所有人都MOUNT不上去。之前一个简单的测试,竟然给问题的解决带来这么多的误导,无语啊。

3. PHP+oracle这个架构是否常用 这种架构有什么不好地方呢

淘宝架构框架
一、个人网站
         2003 年 4 月 7 日,马云,在杭州,成立了一个神秘的组织。他叫来十位员工,要他们签了一份协议,这份协议要求他们立刻离开阿里巴巴,去做一个神秘的项目。这个项目要求绝 对保密,老马戏称“连说梦话被老婆听到都不行,谁要是透漏出去,我将追杀到天涯海角”。这份协议是英文版的,匆忙之间,大多数人根本来不及看懂,但出于对 老马的信任,都卷起铺盖离开了阿里巴巴。
         他们去了一个神秘的据点 —— 湖畔花园小区的一套未装修的房子里,房子的主人是马云。这伙人刚进去的时候,马云给他们布置了一个任务,就是在最短的时间内做出一个个人对个人(C2C) 的商品交易的网站。现在出一个问题考考读者,看你适不适合做淘宝的创业团队。亲,要是让你来做,你怎么做?
         在说出这个答案之前,容我先卖个关子,介绍一下这个创业团队的成员:三个开发工程师(虚竹、三丰、多隆)、一个UED(二当家)、三个运营(小宝、阿 珂、破天)、一个经理(财神)、还有就是马云和他的秘书。当时对整个项目组来说压力最大的就是时间,怎么在最短的时间内把一个从来就没有的网站从零开始建 立起来?了解淘宝历史的人知道淘宝是在 2003 年 5 月 10 日上线的,这之间只有一个月。要是你在这个团队里,你怎么做?我们的答案就是:买一个来。
         买一个网站显然比做一个网站要省事一些,但是他们的梦想可不是做一个小网站而已,要做大,就不是随便买个就行的,要有比较低的维护成本,要能够方便的扩 展和二次开发。那接下来就是第二个问题:买一个什么样的网站?答案是:轻量一点的,简单一点的,于是买了这样一个架构的网 站:LAMP(Linux+Apache+MySQL+PHP)。这个直到现在还是一个很常用的网站架构模型。这种架构的优点是:无需编译,发布快 速,PHP功能强大,能做从页面渲染到数据访问所有的事情,而且用到的技术都是开源的,免费。
         当时我们是从一个美国人那里买来的一个网站系统,这个系统的名字叫做 PHPAuction(他们的官方网站http://www.phpauction.net,这个名字很直白,一眼就看出来这个系统是用什么语言做的、 是干什么用的),PHPAuction有好几个版本,我们买的是最高版的,功能比较多,而且最重要的是对方提供了源代码。最高版比较贵,花了我们 2000 美金(貌似现在降价了,只要 946 美元)。买来之后不是直接就能用的,需要很多本地化的修改,例如页面模板改的漂亮一点,页头页脚加上自己的站点简介等,其中最有技术含量的是对数据库进行 了一个修改。原来是从一个数据库进行所有的读写操作,拿过来之后多隆把它给拆分成一个主库、两个从库,读写分离。这么做的好处有几点:存储容量增加了,有 了备份,使得安全性增加了,读写分离使得读写效率提升了。这样整个系统的架构就如下图所示:
淘宝架构框架
         其中 Pear DB 是一个 PHP 模块,负责数据访问层。另外也用开源的论坛系统 PHPBB(http://www.phpbbchina.com )搭建了一个小的论坛社区,虚竹负责机器采购、配置、架设等,三丰和多隆负责编码,他 们把交易系统和论坛系统的用户信息打通,给运营人员开发出后台管理(admin系统)的功能,把交易类型从只有拍卖这一种增加为拍卖、一口价、求购商品、 海报商品(意思是还没推出的商品,先挂个海报出来)这四种。(PHPAuction 只有拍卖的交易,Auction 即拍卖的意思。@_行癫在微博中提到:今天 eBay 所有交易中拍卖交易仍然占了 40%,而在中国,此种模式在淘宝几乎从一开始就未能占据优势,如今在主流的交易中几乎可以忽略不计。背后的原因一直令人费解。我大致可以给出其中一种解 释,eBay 基本在发达国家展开业务,制造业外包后,电子商务的基本群体大多只能表现为零散的个体间交易。)
        在经历了另外一些有趣的事情之后(这些有趣的事情包括“淘宝”这个名字的由来,员工花名的由来等等,由于本书主要描述技术方面的故事,对这些有兴趣的可以去网上找),网站开始上线运行了。
淘宝架构框架
         在接下来的大半年时间里,这个网站迅速显示出了它的生机。这里有必要提一下当时的市场环境,非典(SARS)的肆虐使得大家都不敢出门,尤其是去商场之 类人多的地方。另外在神州大地上最早出现的 C2C 网站易趣也正忙的不亦乐乎,2002 年 3 月,eBay 以 3000 万美元收购了易趣公司 33% 的股份,2003 年 6 月以 1.5 亿美元收购了易趣公司剩余 67% 的股份。当时淘宝网允许买卖双方留下联系方式,允许同城交易,整个操作过程简单轻松。而 eBay 为了收取交易佣金,是禁止这么做的,这必然增加了交易过程的难度。而且 eBay 为了全球统一,把易趣原来的系统替换成了美国 eBay 的系统,用户体验一下子全变了,操作起来非常麻烦,这等于是把积累的用户拱手送给了淘宝。为了不引起 eBay 的注意,淘宝网在 2003 年里一直声称自己是一个“个人网站”。由于这个创业团队强大的市场开拓和运营能力,淘宝网发展的非常迅猛,2003 年底就吸引了注册用户XXX,最高每日 31 万PV,从 5 月到年底成交额 4000 万。这没有引起 eBay 的注意,却引起了阿里巴巴内部很多员工的注意,他们觉得这个网站以后会成为阿里巴巴强劲的对手。甚至有人在内网发帖,忠告管理层要警惕这个刚刚起步的网 站,但管理层似乎无动于衷。(这个团队的保密工作做的真好)
         在市场和运营的后方,淘宝网的技术团队也在快速的做着系统的改进和创新。这里还有个有趣的故事,eBay 和易趣早期都有员工在论坛上响应用户的需求,eBay 的论坛用粉红色背景来区分员工的发言,易趣的员工在论坛上昵称都选各种豆豆,例如黄豆豆、蚕豆豆等。淘宝在讨论运营策略的时候提到这个问题,要求所有的员 工都去论坛上回答用户的问题。最早回答问题的任务落在小宝头上,那我们用什么名字好呢?“淘淘”?“宝宝”?小宝都不满意,太女性化了。讨论了很久之后, 小宝灵光乍现,干脆取个名字叫“小宝”吧,小宝带七个老婆来开店,迎接各位客官,很有故事性。于是很多武侠小说中的人物开始在论坛中行侠仗义,这些昵称下 面标志着“淘宝店小二”,他们回答着各种各样的问题,快速响应着用户的各种需求。如果是技术上能解决的,几个人商量一下,马上就开发、测试、发布上线。反 过来对比一下,易趣被 eBay 收购之后,系统更换成了全球通用的版本,响应用户的一个需求需要层层审批,反应速度自然慢了下来。
         当时淘宝第一个版本的系统里面已经包含了商品发布、管理、搜索、商品详情、出价购买、评价投诉、我的淘宝这些功能(现在主流程中也是这些模块。在 2003 年 10 月增加了一个功能节点:“安全交易”,这个是支付宝的雏形)。随着用户需求和流量的不断增长,系统上面做了很多的日常改进,服务器由最初的一台变成了三 台,一台负责发送 email、一台负责运行数据库、一台负责运行 Web App。过一段时间之后,商品搜索的功能占用数据库资源太大了(用like搜索的,很慢),又从阿里巴巴中文站搬过来他们的搜索引擎 iSearch,起初 iSearch 索引的文件放在硬盘上,随着数据量的增长,又采购了 NetApp 服务器放置 iSearch。
         如此快节奏的工作,其实大家都累得不行,有人就提议大家随时随地的锻炼身体,可是外面 SARS 横行,在一个一百多方的房子里,怎么锻炼呢?高挑美女阿珂提议大家练习提臀操,这个建议遭到男士的一致反对,后来虚竹就教大家练习倒立,这个大家都能接 受。于是这个倒立的传统一直延续至今,和花名文化、武侠文化一并传承了下来。
         随着访问量和数据量的飞速上涨,问题很快就出来了,第一个问题出现在数据库上。MySQL 当时是第 4 版的,我们用的是默认的存储引擎 MyISAM,这种类型读数据的时候会把表锁住(我们知道 Oracle 在写数据的时候会有行锁,读数据的时候是没有的),尤其是主库往从库上面写数据的时候,会对主库产生大量的读操作,使得主库性能急剧下降。这样在高访问量 的时候,数据库撑不住了。另外,当年的 MySQL 不比如今的 MySQL,在数据的容量和安全性方面也有很多先天的不足(和 Oracle 相比)。
        二、Oracle/支付宝/旺旺
         淘宝网作为个人网站发展的时间其实并不长,由于它太引人注目了,马云在 2003 年 7 月就宣布了这个是阿里巴巴旗下的网站,随后在市场上展开了很成功的运作。最著名的就是利用中小网站来做广告,突围 eBay 在门户网站上对淘宝的广告封锁。上网比较早的人应该还记得那些在右下角的弹窗和网站腰封上一闪一闪的广告。市场部那位到处花钱买广告的家伙,太能花钱了, 一出手就是几百万,他被我们称为“大少爷”。
         “大少爷”们做的广告,带来的就是迅速上涨的流量和交易量。在 2003 年底,MySQL 已经撑不住了,技术的替代方案非常简单,就是换成 Oracle。换 Oracle 的原因除了它容量大、稳定、安全、性能高之外,还有人才方面的原因。在 2003 年的时候,阿里巴巴已经有一支很强大的 DBA 团队了,有冯春培、汪海(七公)这样的人物,后来还有冯大辉(@fenng)、陈吉平(拖雷)。这样的人物牛到什么程度呢?Oracle 给全球的技术专家颁发一些头衔,其中最高级别的叫 ACE(就是扑克牌的“尖儿”,够大的吧),被授予这个头衔的人目前全球也只有 300 多名(名单在这里: http://apex.oracle.com/pls/otn/f?p=19297:3 ),当年全球只有十几名。有如此强大的技术后盾,把 MySQL 换成 Oracle 是顺理成章的事情。
         但更换数据库不是只换个库就可以的,访问方式,SQL 语法都要跟着变,最重要的一点是,Oracle 并发访问能力之所以如此强大,有一个关键性的设计 —— 连接池。但对于 PHP 语言来说它是放在 Apache 上的,每一个请求都会对数据库产生一个连接,它没有连接池这种功能(Java 语言有 Servlet 容器,可以存放连接池)。那如何是好呢?这帮人打探到 eBay 在 PHP 下面用了一个连接池的工具,是 BEA 卖给他们的。我们知道 BEA 的东西都很贵,我们买不起,于是多隆在网上寻寻觅觅,找到一个开源的连接池代理服务 SQLRelay(http://sourceforge.jp/projects/freshmeat_sqlrelay ),这个东西能够提供连接池的功能,多隆对它进行了一些功能改进之后就拿来用了。这样系统的架构就变成了如下的样子:
淘宝架构框架
         数据一开始是放在本地的,DBA 们对 Oracle 做调优的工作,也对 SQL 进行调优。后来数据量变大了,本地存储不行了。买了 NAS(Network Attached Storage:网络附属存储),NetApp 的 NAS 存储作为了数据库的存储设备,加上 Oracle RAC(Real Application Clusters,实时应用集群)来实现负载均衡。七公说这实际上是走了一段弯路,NAS 的 NFS(Network File System)协议传输的延迟很严重,但那时侯不懂。后来采购了 Dell 和 EMC 合作的 SAN 低端存储,性能一下子提升了 10 几倍,这才比较稳定了。再往后来数据量更大了,存储的节点一拆二、二拆四,RAC 又出问题了。这才踏上了购买小型机的道路。在那段不稳定的时间里,七公曾经在机房住了 5 天 5 夜。
         替换完数据库,时间到了 2004 年春天,俗话说“春宵一刻值千金”,但这些人的春宵却不太好过了。他们在把数据的连接放在 SQLRelay 之后就噩梦不断,这个代理服务经常会死锁,如同之前的 MySQL 死锁一样。虽然多隆做了很多修改,但当时那个版本内部处理的逻辑不对,问题很多,唯一解决的办法就是“重启”它的服务。这在白天还好,连接上机房的服务 器,把进程杀掉,然后开启就可以了,但是最痛苦的是它在晚上也要死掉,于是工程师们不得不 24 小时开着手机,一旦收到“ SQLRelay 进程挂起”的短信,就从春梦中醒来,打开电脑,连上机房,重启服务。后来干脆每天睡觉之前先重启一下。做这事最多的据说是三丰,他现在是淘宝网的总裁。现 在我们知道,任何牛B的人物,都有一段苦B的经历。
         微博上有人说“好的架构是进化来的,不是设计来的”。的确如此,其实还可以再加上一句“好的功能也是进化来的,不是设计来的”。在架构的进化过程中,业 务的进化也非常迅猛。最早的时候,买家打钱给卖家都是通过银行转账汇款,有些骗子收了钱却不发货,这是一个很严重的问题。然后这伙人研究了 PayPal 的支付方式,发现也不能解决问题。后来这几个聪明的脑袋又想到了“担保交易”这种第三方托管资金的办法。于是在 2003 年 10 月,淘宝网上面上线了一个功能,叫做“安全交易”,卖家选择支持这种功能的话,买家会把钱交给淘宝网,等他收到货之后,淘宝网再把钱给卖家。这就是现在的 支付宝,在前两天(2012.2.21)年会上,支付宝公布 2011 年的交易笔数已经是 PayPal 的两倍。这个划时代的创新,其实就是在不断的思索过程中的一个灵光乍现。
         当时开发“安全交易”功能的是茅十八和他的徒弟苗人凤(茅十八开发到一半去上海读 MBA 去了,苗人凤现在是支付宝的首席业务架构师),开发跟银行网关对接的功能的是多隆。当时多数银行的网站已经支持在线支付了,但多隆告诉我,他们的网关五花 八门,用什么技术的都有,必须一家一家去接。而且他们不保证用户付钱了就一定扣款成功、不保证扣款成功了就一定通知淘宝、不保证通知淘宝了就一定能通知 到、不保证通知到了就不重复通知。这害苦了苗人凤,他必须每天手工核对账单,对不齐的话就一定是有人的钱找不到地方了,少一分钱都睡不着觉。另外他为了测 试这些功能,去杭州所有的银行都办理了一张银行卡。一堆银行卡摆在桌子上,不知道的人还以为这个家伙一定很有钱,其实里面都只是十块八块的。现在我们再一 次知道,任何牛B的人物,都必须有一段苦B的经历。
         有人说淘宝打败易趣(eBay 中国)是靠免费,其实这只是原因之一。如果说和易趣过招第一招是免费的话,这让用户没有门槛就愿意来,那第二招就是“安全支付”,这让用户放心付款,不必 担心被骗。在武侠小说中真正的高手飞花摘叶即可伤人,他们不会局限于一招两招,一旦出手,连绵不绝。而淘宝的第三招就是“旺旺”,让用户在线沟通。其实淘 宝旺旺也不是自己生出来的,是从阿里巴巴的“贸易通”复制过来的。从 2004 年 3 月开始,“叮咚、叮咚”这个经典的声音就回荡在所有淘宝买家和卖家的耳边,“亲,包邮不?”,“亲,把零头去掉行不?”,这亲切的砍价声造就了后来的“淘 宝体”。有人说中国人就是爱砍价,虽然笔者体会不到砍价成功后有多少成就感,但每次我去菜市场,看到大妈们砍价砍得天昏地暗,那满足的劲头堪比捡到了钱, 我就深刻的理解了淘宝旺旺在交易过程中的价值。我猜 eBay 也体会不到砍价的乐趣,他们一直不允许买卖双方在线聊天,收购了 skype 之后也没有用到电子商务中去。
         旺旺在推出来没多久,就惹了一个法律方面的麻烦。有个做雪饼的厂家找上门来,说我们侵权了,他们家的雪饼很好吃,牛奶也做得不错,我们都很喜欢。然后我 们就在旺旺的前面加了两个字,叫做“淘宝旺旺”。在那个野蛮生长的阶段,其实很多产品都是想到什么就做什么,例如我们还搭建过一个聊天室,但似乎淘宝网不 是一个闲聊的地方,这个聊天室门可罗雀,一段时间后就关闭掉了。
        SQLRelay 的问题搞得三丰他们很难睡个囫囵觉,那一年开半年会的时候,公司特地给三丰颁了一个奖项,对他表示深切的安慰。但不能总这样啊,于是,2004 年的上半年开始,整个网站就开始了一个脱胎换骨的手术。
        三、淘宝技术发展(Java时代:脱胎换骨)
        我的师父黄裳@岳旭强曾经说过,“好的架构图充满美感”,一个架构好不好,从审美的角度就能看得出来。后来我看了很多系统的架构,发现这个言论基本成立。那么反观淘宝前面的两个版本的架构,你看哪个比较美?
淘宝架构框架
淘宝架构框架
         显然第一个比较好看,后面那个显得头重脚轻,这也注定了它不是一个稳定的版本,只存活了不到半年的时间。2004 年初,SQL Relay 的问题解决不了,数据库必须要用 Oracle,那从哪里动刀?只有换开发语言了。换什么语言好呢?Java。Java 是当时最成熟的网站开发语言,它有比较良好的企业开发框架,被世界上主流的大规模网站普遍采用,另外有 Java 开发经验的人才也比较多,后续维护成本会比较低。       
         到 2004 年上半年,淘宝网已经运行了一年的时间,这一年积累了大量的用户,也快速的开发了很多功能,当时这个网站已经很庞大了,而且新的需求还在源源不断的过来。 把一个庞大的网站的开发语言换掉,无异于脱胎换骨,在换的过程中还不能拖慢业务的发展,这无异于边换边跑,对时间和技术能力的要求都非常高。做这样的手 术,需要请第一流的专家来主刀。现在再考一下读者,如果你在这个创业团队里面,请什么样的人来做这事?我们的答案是请 Sun 的人。没错,就是创造 Java 语言的那家公司,世界上没有比他们更懂 Java 的了。除此之外,还有一个不为人知的原因,……(此处和谐掉 200 字,完整版见 aliway)
         这帮 Sun 的工程师的确很强大,在笔者 2004 年底来淘宝的时候,他们还在,有幸跟他们共事了几个月。现在摆在他们面前的问题是用什么办法把一个庞大的网站从 PHP 语言迁移到 Java?而且要求在迁移的过程中,不停止服务,原来系统的 bugfix 和功能改进不受影响。亲,你要是架构师,你怎么做?有人的答案是写一个翻译器,如同把中文翻译成英文一样,自动翻译。我只能说你这个想法太超前了,换个说 法就是“too simple, sometimes naive”。当时没有,现在也没有人能做到。他们的大致方案是给业务分模块,一个模块一个模块的替换。如用户模块,老的 member.taobao.com 继续维护,不添加新功能,新的功能先在新的模块上开发,跟老的共用一个数据库,开发完毕之后放到不同的应用集群上,另开个域名 member1.taobao.com,同时替换老的功能,替换一个,把老的模块上的功能关闭一个,逐渐的把用户引导到 member1.taobao.com,等所有功能都替换完毕之后,关闭 member.taobao.com。后来很长时间里面都是在用 member1 这样奇怪的域名,两年后有另外一家互联网公司开始做电子商务了,我们发现他们的域名也叫 member1.xx.com、auction1.xx.com……       
         说了开发模式,再说说用到的 Java MVC 框架,当时的 Struts 1.x 是用的比较多的框架,但是用过 WebWork 和 Struts 2 的同学可能知道,Struts 1.x 在多人协作方面有很多致命的弱点,由于没有一个轻量框架作为基础,因此很难扩展,这样架构师对于基础功能和全局功能的控制就很难做到。而阿里巴巴的 18 个创始人之中,有个架构师,在 Jakarta Turbine 的基础上,做了很多扩展,打造了一个阿里巴巴自己用的 MVC 框架 WebX (http://www.openwebx.org/docs/Webx3_Guide_Book.html), 这个框架易于扩展,方便组件化开发,它的页面模板支持 JSP 和 Velocity 等、持久层支持 iBATIS 和 Hibernate 等、控制层可以用 EJB 和 Spring(Spring 是后来才有的)。项目组选择了这个强大的框架,这个框架如果当时开源了,也许就没有 WebWork 和 Struts 2 什么事了。另外,当时 Sun 在全世界大力推广他们的 EJB,虽然淘宝的架构师认为这个东东用不到,但他们还是极力坚持。在经历了很多次的技术讨论、争论和争吵之后,这个系统的架构就变成了下图的样子:
淘宝架构框架
        Java 应用服务器是 Weblogic,MVC 框架是 WebX、控制层用了 EJB、持久层是 iBATIS,另外为了缓解数据库的压力,商品查询和店铺查询放在搜索引擎上面。这个架构图是不是好看了一点了,亲?       
        这帮 Sun 的工程师开发完淘宝的网站之后,又做了一个很牛的网站,叫“支付宝”。       
         其实在任何时候,开发语言本身都不是系统的瓶颈,业务带来的压力更多的是压到了数据和存储上。上面一篇也说到,MySQL 撑不住了之后换 Oracle,Oracle 的存储一开始在本机上,后来在 NAS 上,NAS 撑不住了用 EMC 的 SAN 存储,再然后 Oracle 的 RAC 撑不住了,数据的存储方面就不得不考虑使用小型机了。在 2004 年的夏天,DBA 七公、测试工程师郭芙和架构师行癫,踏上了去北京测试小型机的道路。他们带着小型机回来的时候,我们像欢迎领袖一样的欢迎他们,因为那个是我们最值钱的设 备了,价格表上的数字吓死人。小型机买回来之后我们争相合影,然后 Oracle 就跑在了小型机上,存储方面从 EMC 低端 cx 存储到 Sun oem hds 高端存储,再到 EMC dmx 高端存储,一级一级的往上跳。       
         到现在为止,我们已经用上了 IBM 的小型机、Oracle 的数据库、EMC 的存储,这些东西都是很贵的,那些年可以说是花钱如流水啊。有人说过“钱能解决的问题,就不是问题”,但随着淘宝网的发展,在不久以后,钱已经解决不了我 们的问题了。花钱买豪华的配置,也许能支持 1 亿 PV 的网站,但淘宝网的发展实在是太快了,到了 10 亿怎么办?到了百亿怎么办?在 N 年以后,我们不得不创造技术,解决这些只有世界顶尖的网站才会遇到的问题。后来我们在开源软件的基础上进行自主研发,一步一步的把 IOE(IBM 小型机、Oracle、EMC 存储)这几个“神器”都去掉了。这就如同在《西游记》里面,妖怪们拿到神仙的兵器会非常厉害,连猴子都能够打败,但最牛的神仙是不用这些神器的,他们挥一 挥衣袖、翻一下手掌就威力无比。去 IOE 这一部分会在最后一个章节里面讲,这里先埋个千里伏笔。       
        欲知后事如何,且听下回分解。

PHP+oracle这个架构是否常用 这种架构有什么不好地方呢

4. netapp和自搭的nfs有何区别

首先默认情况下NFS4协议在NETAPP存储上是没有打开的,这个打开很容易,基于WEB的图形界面没有配置的地方的,只能通过命令行进行配置。登录进 去,然后使用options nfs.v4.enable on命令打开NFS4协议,这时候会提示说在冗余机头的情况下,那边机头也要搞,否则发生FAILOVER的时候那边就不能提供NFS4服务了,于是把两 边都搞好,在VOL上划了个QTREE,把QTREE EXPORT出去,然后就开始在客户端折腾。[@more@]

首先是客户端MOUNT不上去,报错如下:
Warning: rpc.idmapd appears not to be running.
All uids will be mapped to the nobody uid.
mount: block device 192.168.1.1:/vol/vol1/xxx is write-protected, mounting read-only
Warning: rpc.idmapd appears not to be running.
All uids will be mapped to the nobody uid.
mount: cannot mount block device 192.168.1.1:/vol/vol1/xxx read-only

WARNING很容易理解,说IDMAPD服务没起,所以所有的UID映射过来都会被映射成NOBODY的UID,这个只要启了IDMAPD服务就好了,使用service rpcidmapd start命令去启。但后面的就很难理解了,为什么会说是写保护的,然后要被MOUNT称只读的,然后即使是只读的也MOUNT不上去呢?关键最难以理解的是为什么明明是MOUNT一个NFS的设备,提示确实说BLOCK DEVICE不能被MOUNT,为什么就成了BLOCK DEVICE呢?
GOOGLE+BAIDU+NOW.NETAPP.COM+REDHAT.COM搜索了半天,没有什么进展。换个机器试试吧,因为这个机器不是自己安装的,不确定是否缺什么包啥的。于是换了个机器,暂且叫新机器(之前的机器就叫老机器),虽然还是报IDMAPD的报警,但是结果确实MOUNT上去了,晕了,看来是老机器有问题。

也正是这个很巧合能MOUNT的问题,导致了后面一路的误判,寻找问题中出现了方向性错误,浪费了很多的时间。

开始把两边的后台服务搞成一样,不行;比较OS版本,一致;比较网络访问权限,没问题,因为测试中老机器使用NFS3协议能顺利MOUNT;折腾了半天实在没辙,所有招数都用尽了,突然想起来了STRACE。先做个STRACE看看整个MOUNT过程中到底干了些什么,卡在哪一步出现的错误吧。

做了STRACE后发现最后错误的地方在:
mount("192.168.1.1:/vol/vol1/xxx", "/u09", "nfs4", MS_MGC_VAL, "1") = -1 EACCES (Permission denied)
也就是会有一个权限的错误,这又是一个误导我的地方。因为NFS3能MOUNT,MOUNT上去后能读写,那说明不应该出现权限相关的问题啊。拿着新老机器的STRACE去做对比,新的机器在这一步的返回结果如下:
mount("192.168.1.1:/vol/vol1/xxx", "/u09", "nfs4", MS_MGC_VAL, "1") = 0
看来问题就是出在这里了,而且相同版本的OS,相同版本的NFS相关的包,一个可以一个不可以,那只能看看是否是BUG了。还别说,真的还就找到了一个BUG,在REDHAT的官网上,BUGID=197504(nfs4 AUTH_GSSAPI server returning EACCESS on all mount attempts ),里面说在nfs-utils-1.0.9-3版本中修复了这个BUG,虽然BUG发生的版本跟我使用的版本不一致,这个BUG描述的是出现在nfs-utils-1.0.8-2,而我使用的版本是nfs-utils-1.0.6,但很多时候ORACLE就经常这么干,只是说新的版本中发现并验证了这个问题,并不代表老的版本一定没有这个问题,很可能这个问题一直就有,只不过在某个版本中被发现了。

于是下载了0.9的版本,结果很悲剧,装不上。这个版本很新,所以依赖的东西太多,而且很多是很底层的东西,看来想装上去是不行了,但是这个BUG里描述了一个PATCH的解决办法,只要改一段源代码,然后重新编译下就好了,看起来挺可行的。因为BUG出现在0.8,不确定我使用的0.6中代码是否一致以及估计我连CTRL+C然后CTRL+V都找不到地方,所以下了0.8的,结果编译的时候还是报一堆的依赖关系没有,这下绝望了。


既然这条路不通,那试试新的版本吧,有装好的5.4的REDHAT,这个上面的NFS版本很新,结果测试了居然也不行,跟老机器报的错一模一样,接连试了几个机器,都不行,这就见鬼了,为什么只有新机器可以,所有其他机器都不行呢,但也是在找不出新机器跟其他机器之间的不同在哪里。

在绝望的时候,希望终于来了,在NOW.NETAPP.COM上找到了Solution ID: kb13800 的一个文章,里面描述到:
With NFSv4, client "mount" requests proceed with LOOKUP sequences to parse names from the root. As a result, if a parent directory is exported such that name lookup is blocked to a child, then the mount will fail.

踏破铁鞋无觅处,得来全不费功夫啊,到存储上一看,新机器以前为了做测试,直接加过/VOL/VOL1级别的读写权限,所以去MOUNT它下面的QTREE就符合上面的条件,所以也只有它能MOUNT的上去,其他所有人都MOUNT不上去。之前一个简单的测试,竟然给问题的解决带来这么多的误导,无语啊。

5. IBM小型机、AIX系统和Oracle数据库

你在哪学的IBM小型机和AIX系统,我好想业余的学习一下,请问有什么好的课件或者视频吗?谢谢。。。

IBM小型机、AIX系统和Oracle数据库

6. 关于netapp RAID技术详细解释。答好追加巨分!

NetApp V 系列产品线是一个存储虚拟化解决方案,使 IT 团队能够在利用现有的 SAN 投资的同时,利用 NetApp 提供的独特功能。V 系列产品线具有独特的能力,能够统一对 Hitachi、hp、ibm、Fujitsu 和 EMC 的存储阵列产品的块和文件访问。

这篇文章简要介绍 V 系列产品线,并提供关于 IT 团队如何部署 V 系列系统以增强传统 SAN 环境的五个实例。



V 系列优点

在 SAN 主机环境中部署 V 系列将 Data ONTAP 的强大功能引入传统的 SAN。V 系列系统用作 NAS 网关和 SAN 虚拟化引擎,提供一系列丰富的存储功能并将块和文件访问统一到单个平台中。

V 系列系统与 NetApp FAS 存储系统在支持方面相同:

一套完整的前端协议,包括 CIFS、NFS、iScsI 和 FCP 

空间效率 NetApp Snapshot™ 功能,仅将更改的块写入磁盘 

NetApp 复制软件,包括 SnapMirror、SnapVault、SyncMirror和 NDMP 

所有主机端连接软件,包括 SnapDrive、SnapManager for Oracle、SnapManager for Exchange Server 和 SnapManager for SQL Server 对于传统 SAN 环境,这些优点明显。例如,由于 NetApp 独特的快照方法,可以很频繁地创建 Snapshot 副本而几乎没有性能影响。NetApp 还消除了传统备份中固有的冗余,由于无需确定更改的数据而缩短了备份时间,并提供了 100% 备份验证。另外,V 系列产品线支持使用 NetApp 主机管理软件,与传统的存储阵列解决方案相比,不仅减少了备份和恢复时间,而且使应用程序所有者能够在存储管理员最少干预的情况下恢复自己的数据。

V 系列与使用 NetApp FAS 存储有何不同?

V 系列和 FAS 产品使用相同的硬件控制器并运行相同的 Data ONTAP 操作系统。前端是存储阵列的 V 系列系统与具有 NetApp 磁盘的 FAS 系统之间的主要区别是 V 系列控制器不再运行 RAID 4 或 RAID-DP™。相反,V 系列系统将 RAID 保护任务转移给存储阵列。V 系列存储池是后端 LUN 的大型 RAID 0 条带。

支持的存储阵列

V 系列产品线支持 Hitachi、HP、IBM、Fujitsu 和 EMC 的存储子系统。客户对现有 EMC 环境中的统一存储和简化管理的需求促使 NetApp 投资支持 EMC CX 阵列。V 系列/EMC 系统在 18 个月前在 SNW 首次演示,而如今 EMC CX 阵列已经完全获得 NetApp 认证,现已在公共 V 系列支持表中列出。

支持的阵列的详细最新列表可以在 NOW™ 站点上找到。支持表当前包括 IBM DS8000 和 DS4000 系列、Fujitsu Eternus、HDS Tagmastore、AMS、Thunder、Lightning 以及 HP 的再造品牌同等阵列。NetApp 承诺在 V 系列产品线之后继续扩展支持的阵列列表,并提供附加虚拟化功能。
实例

下面是关于真实客户如何在各种传统存储阵列中利用 V 系列产品线的一系列示例。虽然每个示例涉及特定供应商的存储阵列,但是对于任何支持的阵列,这些方法都很容易实施。
实例

下面是关于真实客户如何在各种传统存储阵列中利用 V 系列产品线的一系列示例。虽然每个示例涉及特定供应商的存储阵列,但是对于任何支持的阵列,这些方法都很容易实施。
主要灾难很少发生。但是确实会发生,NetApp 功能能够大大减少恢复时间。数据中心硬件通常在租用结束时需要刷新,或者在需要大型应用程序服务器时需要升级。例如,在部署了 V 系列系统的 HDS 环境中执行主机更换期间,小型服务器更换为大型服务器以应对处理需求的意外增大。主机数据由为 FCP LUN 服务的 V 系列系统提供。由于主机管理员错误,LUN 在从 V 系列传送时意外损坏。

在此情况下,最新备份是五天前的备份,该应用程序是大型公司项目的重要途径。在引入 V 系列产品线之前,唯一的恢复选择只能是找到备份磁带并重放五天的日志。但是,通过使用 NetApp Snapshot 复制,恢复只需要几分钟,公司的 Oracle 数据库片刻之间重新联机。

V 系列和 IBM DS8000/DS4000 阵列:优异的灾难恢复

另一个关于如何使用 V 系列系统的示例在提供优异灾难恢复 (DR) 服务的公司可以看到。此提供商部署了 IBM DS8000 和 DS4000 存储阵列作为其 IT 基础设施的一部分。

在灾难恢复站点引入 V 系列系统扩展了公司的客户范围。现在,运行具有 NetApp 磁盘的 FAS 存储或具有任何存储阵列的 V 系列系统的 IT 部门可以复制到优异灾难恢复站点上的 V 系列系统。

V 系列和 HDS Lightning 阵列:Oracle 的业务连续性

最后一个示例涉及一个现有 SAN,该 SAN 支持在 Solaris™ 主机上运行并且存储由 HDS Lightning 阵列和本地存储提供的 Oracle 应用程序。如果发生站点完全中断,公司需要将所有数据复制到另一个状态,但是不需要在灾难恢复站点上复制其现有 HDS 环境。

相反,IT 团队将 V 系列系统插入其环境,并且将其基于 SAN 的 Oracle 应用程序和 Windows 共享迁移到 V 系列环境。这样在客户的以太网上任何位置均可复制。主位置的 HDS Lightning 解决方案上的 V 系列前端的数据使用 NetApp SnapMirror 软件镜像到远程站点上 IBM 品牌的 NetApp FAS 系统。所有计划、实施、迁移和测试均使用 NetApp 专业服务完成。

使用非 HDS 复制策略使 IT 团队降低成本并仍然达到其灾难恢复目标。

7. 硅谷有哪些半导体厂商?

Adobe Systems
Advanced Micro Devices
Agilent Technologies
Apple Inc.
Applied Materials
Cisco Systems
eBay
Facebook
Google
Hewlett-Packard
Intel
Intuit
Intuitive Surgical
Juniper Networks
KLA Tencor
LSI Logic
Maxim Integrated Products
National Semiconductor
NetApp
Nvidia
Oracle Corporation
SanDisk
Sanmina-SCI
Symantec
Yahoo!

硅谷有哪些半导体厂商?