来来的爸爸不睡觉

no-sleep Lailai's father
星期四 五月 14, 2009

发表在Sun SDN上的DISK FMA系列文章

SCSI DISK FMA Project Part 1: SCSI Device Drivers as FMA Telemetry Detectors

介绍如何利用设备驱动程序正常运转的同时当做磁盘错误侦测器(in-band)

介绍如果根据系统产生的错误信息进行分析定位

SCSI DISK FMA Project Part 3: FMA Behavior of Retired Faulted SCSI Disks

介绍系统在发生致命磁盘错误时候的行为和建议修复的步骤

SCSI DISK FMA Project Part 4: SD Fault Injection

做这个项目的时候,为了方便测试在SD(SCSI Disk Driver)内核程序中加入的debug交互程序。这个是顺手做的(呵呵)

我们这几篇文章虽然没有费多少时间,但是是近1年来几位工程师通力合作的成果,这种半创新的项目比做一个纯粹的设备驱动反而要难(我在项目遇到困难的时候,老外就这样鼓励我,最终我们还是按时完成了)

顺便说一下我们下一步的计划:

1)增强在没有设备id情况下对多路径的支持 - 在多路径传输情况下,传输层错误是很难对应到具体设备id的,这时候需要想一个办法表示错误的发生地点,以及具体定位错误的方法。

2)增强对通用平台的支持-前期工作只是针对sun的7000产品系列平台,如果要做到所有安装了opensolaris机器都支持此功能,还需要加入通用平台支持算法。

3)增强对JBOD设备的错误诊断和表示-JBOD和7000系列是sun增长最快的业务,便宜呗,嘿嘿。

4)思考如何针对SSD固态硬盘错误侦测,比如“wear leveling”。


星期五 二月 13, 2009

DIY your OpenStorage device and configuration (steps)

  1. Configuration of OS
    Once you have installed your opensolaris you can login the gnome desktop. However, it is better to access your server via INTERNET,  the following steps are talking about configuring ip staff into your opensolaris server.
    1. get root privilege
      #pfexec su -
    2. configure hostname <-> ip map
      vi /etc/hosts
      129.158.144.242 opensolaris localhost loghost
    3. configure ip address for rge0 Ethernet card
      vi /etc/hostname.rge0
      129.158.144.242
    4. configure default route ip (gateway)
      vi /etc/defaultrouter
      129.158.144.254
    5. configure dns server ip
      vi /etc/resolve.conf
      129.158.144.1


  2. Provision ZFS file-system
    1. get root privilege
      pfexec su -
    2. find all disks
      # format
      AVAILABLE DISK SELECTIONS:
             0. c0t0d0 <ATA-WDC WD10EADS-00L-1A01-931.51GB>
                /pci@0,0/pci8086,244e@1e/pci1095,7124@0/disk@0,0
             1. c0t1d0 <ATA-WDC WD10EADS-00L-1A01-931.51GB>
                /pci@0,0/pci8086,244e@1e/pci1095,7124@0/disk@1,0
             2. c0t2d0 <ATA-WDC WD10EADS-00L-1A01-931.51GB>
                /pci@0,0/pci8086,244e@1e/pci1095,7124@0/disk@2,0
             3. c0t3d0 <ATA-WDC WD10EADS-00L-1A01-931.51GB>
                /pci@0,0/pci8086,244e@1e/pci1095,7124@0/disk@3,0
             4. c4d0 <DEFAULT cyl 2429 alt 2 hd 255 sec 63>
                /pci@0,0/pci-ide@1f,1/ide@0/cmdk@0,0
    3. create RAID-Z zpool (I will talk about RAID-Z zpool later)
      # zpool create dpool raidz c0t0d0 c0t1d0 c0t2d0 c0t3d0
    4. monitor zpool status
      # zpool list
      NAME    SIZE   USED  AVAIL    CAP  HEALTH  ALTROOT
      dpool  3.62T   132K  3.62T     0%  ONLINE  -

      # zpool status dpool
        pool: dpool
       state: ONLINE
       scrub: none requested
      config:

              NAME        STATE     READ WRITE CKSUM
              dpool       ONLINE       0     0     0
                raidz1    ONLINE       0     0     0
                  c0t0d0  ONLINE       0     0     0
                  c0t1d0  ONLINE       0     0     0
                  c0t2d0  ONLINE       0     0     0
                  c0t3d0  ONLINE       0     0     0

      errors: No known data errors



  3. Perform hot-plug
    Hot-plug is very import for a storage device. If one disk failed, we can just remove it on a live system without stopping any services.
    1. show disk status
      # cfgadm -al
      Ap_Id                          Type         Receptacle   Occupant     Condition
      ...
      sata4/3::dsk/c0t3d0            disk         connected    configured   ok
    2. offline from zpool
      # zpool offline dpool c0t3d0
    3. unconfigure this disk
      # cfgadm -c unconfigure sata4/3
      ...
      Continue (yes/no)? y
      # cfgadm -al
      Ap_Id                          Type         Receptacle   Occupant     Condition
      ...
      sata4/3                        disk         connected    unconfigured ok
    4. unplug this disk from the chassis/slot
    5. plug a good disk into the same chassis/slot
    6. configure this disk
      # cfgadm -al
      Ap_Id                          Type         Receptacle   Occupant     Condition
      ...
      sata4/3                        disk         connected    unconfigured ok

      # cfgadm -c configure sata4/3
      # cfgadm -al
      Ap_Id                          Type         Receptacle   Occupant     Condition
      ...
      sata4/3::dsk/c0t3d0            disk         connected    configured   ok
    7. clear any warning messages of zpool
      # zpool clear dpool

      # zpool status dpool


      Useful Tips:
      1. sometimes you forget to unconfigure and offline a faulted disk and unplug it out, the status on OS sytem is in-sync. The sata framework on Solaris can not re-prevision the sata disk automatically, however we can manually trigger the re-prevision.
        # cfgadm -c disconnect sata4/3
        # cfgadm -c connect sata4/3
        # cfgadm -c configure sata4/3
        # zpool status dpool



  4. Install storage services
    Once all above is done, the system is ready for becoming any type of storage, including NFS server, NAS storage, SMB server, FC storage, ...
    Storage software packages are not installed by default, please run the following commands:
    1. NAS storage: install iscsi target package
      pfexec pkg install SUNWiscsit
    2. SMB sevices: install smb packages
      pfexec pkg install SUNWsmbs
      pfexec pkg install SUNWsmbskr
    3. NFS is installed by default
    4. FC storage: install comstar package
      stay tuned, will coming soon...



  5. Start SMB Services
    1. Enable services
      svcadm enable -r smb/server
      svcs|grep smb
    2. Share folder to smb services
      zfs create -o sharesmb=on dpool/smb
    3. Trouble shooting of smb service on Solaris
      Well, :), there are some tips for that, you have to manually configure some thing, it is Unix ... #$%#$%^%$^
      1. config pam for user authentication
        vi /etc/pam.conf
        other   password required       pam_smb_passwd.so.1     nowarn
      2. there are 2 types of smb services in Solaris
        1. svcadm enable smb/server
        2. /usr/sfw/sbin/smbd -D
      3. customize smb conf if you want to share folder
        cp /etc/sfw/smb.conf-example /etc/sfw/smb.conf
        vi /etc/sfw/smb.conf

        Note: Usually we use the 2.2 way to enable smb server, which can allow all windows user to use the same folder. If you really care about security (I hit security ;) ), use the 2.1 way to enable smb services.

DIY your OpenStorage device and configuration (pics)

side

星期一 十二月 22, 2008

存储也能DIY - 用opensolaris构造个人TB级存储服务器

软件可以自己开发,硬件可以自己攒,为啥存储非要买“牌子”。那些所谓牌子的存储盒子里面都是个啥?带着这些问题,我们开始动手自己摸索。基于我前一篇文章《sun科技日之开放存储》专题讲演,看来用opensolaris+zfs构造一个存储是非常可行的。我的同事,王中是个非差爱钻研的人,他用不到小3月的时间造了一个出来,3+1 RAID的接近3000G的磁盘存储,费用不到6000元。具体请看他的blog:http://blogs.sun.com/mebius/

我看着眼红,也打算闹一个,这一闹不要紧小技术问题一堆堆的,……期间烧主板一块,重新购置板块一块,用小刀剌开板卡一块,跑中关村数次。不过我还是造成了和王中同学几乎一样的nas存储,费用呢,还要更便宜些呵呵。

我希望把我遇到的一些问题列举于此,给各位也想自己捣鼓捣鼓的留点儿前车之鉴。

第一条:烧主板

    我不是想教你如何烧主板哈,但是你要是和我一样粗心大意烧主板的下一个就是你。为啥,记得我们的配置里面需要个pci转sata的转接卡不。它是这个样子的:

<=正确  错误=>

 这个转接卡支持两种电压,它能正着插到pci槽中也能反着插进去。太神奇了。如果你不注意,反着插进去。。。bomb。。。一缕青烟,你的主板就驾鹤西游了。

所以一定要注意,卡的固定端,就是能上固定螺丝那端要对这机箱外侧。否则,主板必归西。

第二条:sil3114的PCI转SATA卡,solaris支持的不好

    卡买回来了超级便宜,美,美了不到2分钟,傻了!硬盘一个都没发现。查配置,查跳线,查来查去,王中一席话惊醒梦中的我。在Solaris的驱动配置文件/etc/driver_aliases中只有3124的,没有3114的。好在咱sun的,上bug系统查询,发现2年前就有人报了这个bug - sil3114在solaris没法运行在sata模式下;后面是长达2年的激烈讨论;最后得到的结果是,不支持sata raid模式,刷bios成ide也许能成。也有人一针见血的指出这是,lying……。不管怎样,我那活生生的卡行将废掉。试图去刷bios,目前未找到合适软件。

    传说刷成ide模式,然后用update_drv -a -i '"pci1095,3114"' ata将pata的驱动替换上去可以让此卡运行在ide状态下。Sparc平台命令如下:eeprom pci-ide=pci1095,3114。因本人刷bios未遂,所以以上说法未经证实有效。

    目前我的第二块3124卡正在来北京的路上,我对solari也有的新的认识。

第三条:转接卡的第40针

    刚买来的转接卡居然系统黑屏,风扇丝丝的转就是不往下走,bios也不滴滴的叫貌似没有进入自检状态。又是王中老大帮忙,查pci规范。发现第40针是reserved的,怀疑intel的板子可能对其做了某些手脚,所以信号恐怕hang在哪里了。解决办法就只有割了,割了才健康。术后效果图,手艺不错把呵呵:


图中黄线标识了被割开的部位。再次上电后系统自检,一切正常!

不过经过努力,我的小机目前正在欢快稳定的运行。我的机器中的操作系统也装在了一块笔记本硬盘上,但是用的ide线,用了一块20G的已经退役的笔记本硬盘。需要一块大口ide转笔记本ide卡。此卡在taobao上卖5快钱,在中关村跑断腿都没找到。这些js真不专业。。。


星期日 十二月 21, 2008

Sun 科技日(Tech Day) 2008 之 开放存储(open storage) 讲稿

English: here

中文:按此

星期一 十二月 15, 2008

差点把blog密码都忘了,好久没更新了。。。

其实我经常更新,只不过与技术无关的都在个人的blog里面了。http://ydzhang.spaces.live.com/ 应该是可以访问的,欢迎捧场。公司的blog还是以技术为主吧。

星期日 一月 27, 2008

Ctrl+C, Ctrl+v from CSDN blog

Windows 和 Linux的区别

你要个工人帮你打扫、管理,于是,你上批发市场了,打算去买了一个外国的奴隶来给你整理房子,市场里的奴隶还挺多,有的叫windows,有的叫linux,你就买了一只叫linux的欧洲奴隶回来,因为他免费,就是长得丑点,脾气稍微有点大,不过驯服了确实干活麻利,windows这奴隶长得是漂亮,而且开始还比较听话,就是时间长了就不好好干活,把你家整的乱七八糟的。

星期五 一月 04, 2008

COMSTAR和SCST

COMSTAR是一个OpenSolaris下的一个开源项目,其作用和LINUX下的SCST类似,利用它你可以将一台主机变成一个存储设备。 这对于好多国内的高校实验室和研究所有很重要的意义,他们可以在此基础上添加新特性实现磁盘阵列或者加密存储设备。

你可以通过访问:http://www.opensolaris.org/os/project/comstar/

得到更多信息。并且,这其中大部分代码是有中国n位工程师完成的。我也小小掺和了一下,算另外0.n个吧。未来的计划是COMSTAR将会支持尽量多的协议和板卡。Sun的东西可是有很多工程师全职维护的。你提出的任何问题只要足够紧急,我们老板要求我们必须尽快解决。P1的bug,24小时就必须给出解决方案的。你给其他open source提p1?p0都没人理你。opensolaris也是免费的,为啥不用捏?

星期五 十二月 21, 2007

finding memory leaks for Solaris applications

using ksh, to find leaks in 'iostat' utility

LD_PRELOAD=libumem.so;UMEM_DEBUG=default;UMEM_LOGGING=transaction; 
export LD_PRELOAD UMEM_DEBUG UMEM_LOGGING
truss -fT exit -t \!all -s \!all /usr/bin/iostat -xYn > /dev/null
<<displays pid ##### at exit time>>>
echo "::findleaks -d" | mdb -p `pgrep iostat`;prun `pgrep iostat`
[]

example of fmdump -t [time]

for gettimeopt function:
bash-3.2# truss -fT exit -t \!all -s \!all /fmdump -t 10:20:11 > /dev/null
102205: _exit(0)
bash-3.2# echo "::findleaks -vd" |mdb -p 102205;prun 102205 
[]

Memory Leak Testing Steps for fmdump

bash-3.2# truss -fT exit -t \!all -s \!all /fmdump -e -n class=*scsi* -n ena=b > /dev/null
 << pid #>>
bash-3.2# echo "::findleaks -vd" |mdb -p <<pid #>>;prun <<pid #>>

星期四 十二月 20, 2007

我们给宝宝在墙上画了一幅画

星期四 十二月 13, 2007

春风再美也比不上你的笑

女儿2天前来到这个世界上,比预产期整整迟到了8天。2天来她很爱哭,不知道是不是还没有适应这个对她来说崭新的世界。她的妈妈因为动了手术不能立刻进食,奶水比较少。宝宝奋力的吸允着,还是满足不了她已经七斤半的小身体。她一直不停的哭闹着,小脑袋不停的左右摇晃,小嘴在空中寻找着可以提供奶水的任何东西。有的时候她哭得委屈极了,小嘴唇抽搐着,小脚在空中乱蹬,还有大把大把让她的手足无措的爸爸妈妈心碎的眼泪。

我决定抱抱她,2天来我一直鼓着勇气试图这么做,虽然孩子她妈说我抱她就像“董存瑞抱着炸药包”。左手拖着她的小脑袋,右手拖着小屁屁和小蛮腰。她的小脑袋是那么的沉,因为哭的太用力还出了好多汗,湿呼呼的。我不敢使劲,但不使劲还真抱不动她,姿势就谈不上优美了。我用右手拍着她的小后背,嘴里念念有词希望引起她的注意力。她真的有点儿不哭了,虽然眼角还挂着泪滴。她睁开清澈的双眼专注的盯着我看;她打量着她眼前的这个紧张的抱着她的满头大汗的人。看着我嘟嘟囔囔,挤眉弄眼,……。我冲着她伸伸舌头,鼓鼓嘴,她也跟着我学伸伸小舌头,鼓鼓小嘴。而且她居然对着我笑了,在这一刻,这一笑真的让我心都醉了,女儿这一笑让我感觉到前所未有的一种感动,她是我生命中的第三个女人,我要用我的全部生命保护她。

2006-06-27 妇产医院小花园

星期一 九月 10, 2007

Q&A - 01 - FMA in COMSTAR with ZFS

http://blogs.sun.com/ydzhang/resource/upload/QA-COMSTAR-01-ht.html

星期四 八月 23, 2007

手把手教你FMA, 24小时包会,无效退款 - Get to know FMA in 24 hours

学习如何让你的系统支持solarisFMA是个痛苦的过程,尤其是我,所以我愿意把现在知道的一切总结一下。目的就是让大家尽快能开发出支持FMA的系统。我会尽量让它简单通俗,超过24小时如果你还不懂,加comments,我请吃冰棍。

 1) 为什么要支持FMA - Why?

    时间紧迫,废话少说。因为:  1)IBM有,所以Solaris也要有; 2)大多数Solaris内核都支持了,你还没支持,你就太土了。所以赶紧的,进入下一章。

2)FMA是什么 - What?

    FMA是Fault Management Architecture的缩写。一个能够自愈的系统(Self Healing System)所必须具备的功能。组建FMA的团队可是和Dtrace, ZFS同时建立的,不要小看他们的能力。现在认为FMA很简单的同学请关注下一章。

3) 怎么才算FMA了 - Why?

    难道说我FMA就FMA了吗?有标准吗先?-且,当然有,还有PSARC呢(不知道的就不要理它是啥,在Sun PSARC=Bible,在我家我老婆的话就是Bible)。

    专家说了(注意阿不是我说的)- 要想FMA需要满足3个基本条件:  1)能个侦测并报告错误; 2)能够分析和处理错误报告; 3)能够根据错误情况停止/重起相应的服务。 以上三个条件用英文说就是:1) Error Handling;  2) Diagnosing; 3) Retiring。这三个憋脚词汇在以后会不停的重复出现,所以最好现在就熟悉一下。头痛了吗,休息一下,明天继续。

 


 

星期四 七月 19, 2007

在Sun做一个合格的工程师

 Note: 

The original article is at: "http://blogs.sun.com/danmas/category/General?page=2", composed by Daniel.Maslowski who is a senior manager located in U.S.

I just dare to  translate it into Chinese, I hope I can learn more when I am trying to translate it.  Please feel free to give me comments if I misunderstand sth.

 Composed Time: Thursday Aug 24, 2006



1.工程师应该多出席关键的商业会议和全体员工的大会。

    工程师是企业作出关键决策的重要一员,因为从技术角度上我们这些人最了解我们的产品是如何工作的。公司的营销部门本应该决定为什么和做什么的问题,但是工程师们对技术的深入了解对解决营销上遇到的问题将会非常有帮助。

    当工程师们参加诸如此类营销/商业会议时, 工程师们需要知道用自己的观点影响人们做出最终决定是本职工作中重要的一部分。切记!攻击和诽谤(每一个工程师在自己熟悉的技术上都是高傲的? :) )必然导致相反的生产效率(counter-productive),这不仅仅只是导致分散精力。干预别人引起的更有权势的人的不满和警告也会随之而来。
 

2.在你说的字典里面删除所有的“不”字

    公司的商务部门做出决定,并且从工程师们那里收集建议和信息。有时候解释一个想法是多么愚蠢是非常容易的,如果你能告诉我一个想法是多么的愚蠢,我(Dan :-) )心甘情愿付给你5美刀每小时. 问题的关键点在哪里呢,我想大家都明白提出问题容易,解决问题可就难了。比起提出一个创新的想法,如何把这个想法实现,如何创造性的解决问题并且能够在技术和商业角度上都切实可行就"更更难" (much harder)了。

    把作决定的标准量化也是很重要的。有经验的工程师应该说“在现在我们还不能明确如何做这个项目”或者“做这个项目将会花费n人月和n$的预算,你需要平衡现在手里的任务并且告诉我你的决定”,而不是简单的回答“不行,搞这个项目是个愚蠢的想法”。这样做可以说我们完成了自己的职责(建议做什么和怎么做)但是我们仍然把最终决定权留给决策者。帮助团队做出正确决策应该基于事实和影响力,而不能总是说技术上不可行。否则我们就走进了死胡同(this street credibility is invaluable).

3. 工程师也是商人,研磨你的商业能力

    我在工程师这个职位上呆的时间越长,我就越容易找到该做什么。我自己就能造个电脑(程序,芯片,应用程序,等等...)。真正困难的是,至少对我来说,找到什么需要去建造,什么时候造并且怎样把它卖掉。我并不是在贬损和建造或者创造产品有关的少之又少的天才们。Sun公司作为一个以工程师为中心(同时以客户为中心)的公司已经取得了很好的成绩和并建立了很好的基础。现在我们提供了更低的价格,更省电的服务器,事实上我们已经重新夺回了一部分市场(有没有听说我们已经是前3名了吗?对不起了Dell... )

    工程师们必须抓住一切机会去考虑以客户为中心。Jerry Vogel(就职于AMD)讨论了以客户为中心。当我在AMD参加高级管理人员培训时,我就从Jerry那里学到了些有意的东西。Jerry直觉的理解为公司的成功取决于我们的合作伙伴以及我们与客户的关系。我们和我们客户之间的生意应该是个私人问题。我非常清楚Sun和AMD是一对合作非常愉快的伙伴。我们的很多客户都是市场和销售人员。如果我们愿意听,市场和销售的同事会告诉我们 - 整个的价值链就在于在正确时间做正确的事情。
   

     总的来说,我们身处市场之中。如果对市场的统计数据和度量数据不加留意,这将会妨碍我们这些工程师去改善这些数据或者去影响那些基于这些数据去做决策的人。

   
 4. 迅速的回应电话和电子邮件

    这也是为了去影响决策的制定。对我来说,找不到合适的工程师或者不能乞求到所需要的建议是相当大的挫折。这还会导致团队内部的意见分歧和关系破裂。建立和维持完美的随时待命的团队协作,解决问题的能力和沟通技巧是才是真正有价值的事情。

 5. 学习商业有关的问题并且尽早提出你的宝贵建议

    我们的一些成功经验
 


星期四 一月 25, 2007

Sun Inside

Sun is my first company who encourage her employees to create personal blogs.  Sun is a great company in tech and life, I am enjoying my life here, I am happy then ...

 To be continue ...


归档
链接
引用