You are on page 1of 46

大型 IC 设计中心的 IT 环境

大型 IC 设计中心的 IT 环境............................................................................................................. 1
基础设施建设........................................................................................................................... 3
供电................................................................................................................................... 4
制冷................................................................................................................................... 5
布线................................................................................................................................... 6
环控................................................................................................................................... 7
空间及位置考虑............................................................................................................... 7
网络布局........................................................................................................................... 8
消防................................................................................................................................... 8
网络结构................................................................................................................................... 8
内外网络隔离................................................................................................................... 9
研发网络跟办公网络隔离 ............................................................................................... 9
研发网络的客户端跟服务器分离 ................................................................................. 10
MPLS VPN 网络 ............................................................................................................... 10
系统和存储布局..................................................................................................................... 10
CPU 架构及 OS ............................................................................................................... 11
认证................................................................................................................................. 11
DNS/NTP.......................................................................................................................... 11
Email 系统 ....................................................................................................................... 12
存储................................................................................................................................. 13
NFS v3/v4 及 AFS GPFS 文件系统的优缺点 .............................................................. 13
接入及登陆环境..................................................................................................................... 14
如何考虑移动 VPN 接入 ................................................................................................ 14
如何避免设计人员 copy&Paste 数据 ............................................................................ 14
登陆软件的选择............................................................................................................. 14
桌面系统的选择............................................................................................................. 15
设计 Job 的管理(SGE/LSF)...................................................................................................... 16
LSF ................................................................................................................................... 16
SGE .................................................................................................................................. 18
Openlava ......................................................................................................................... 18
数据管理................................................................................................................................. 18
数据上传......................................................................................................................... 19
下载数据如何审核及自动归档 ..................................................................................... 19
数据访问 Audit 实现 ...................................................................................................... 19
数据分级及权限控制 ..................................................................................................... 20
版本管理................................................................................................................................. 21
CVS 用于代码的管理...................................................................................................... 21
Subversion ....................................................................................................................... 23
Clisoft SOS 介绍 .............................................................................................................. 29
IC Manage .................................................................................................................... 31
git .................................................................................................................................... 31
邮件系统................................................................................................................................. 34
为什么考虑外网邮件系统托管,而不是自己搭建。 ................................................. 34
如何使用 postfix 搭建自己的内部邮件系统 ................................................................ 34
如何实现外网邮件自动转发到内部 ............................................................................. 36
EDA 软件管理 ......................................................................................................................... 36
软件的目录管理(单一版本的 EDA 软件管理) ........................................................ 36
不同软件版本的管理 ..................................................................................................... 37
License 管理 .................................................................................................................... 39
多 site 协同 ............................................................................................................................. 40
电话会议系统................................................................................................................. 40
桌面共享......................................................................................................................... 40
代码的版本管理............................................................................................................. 41
视频会议......................................................................................................................... 41
安全......................................................................................................................................... 41
外部入侵的防范............................................................................................................. 41
内部人员泄密的防范 ..................................................................................................... 42
权限控制 acl ................................................................................................................... 42
数据备份和归档及 snapshot 等 .................................................................................... 44
Quota 管理...................................................................................................................... 44
附录:..................................................................................................................................... 45
设备和软件的选型推荐(中大型公司): ................................................................... 45
设备选择和软件选择推荐(小公司) ......................................................................... 46

从 2004 年开始,我写过几次小型 IC 设计中心的 IT 环境。比较多的论述了创业类


型的芯片设计公司,应该怎么去设计自己的 IT 环境。这 10 多年间,有不少初创
型的公司来咨询过如何更好的规划 IT 系统,我都尽力协助解决。

我本人也在这期间经历过各种类型的公司,包括提供 EDA 平台的苏州 ICC,做交


换机芯 片的 CentecNetworks , 已经被 收购 的 Broadcom , 做嵌 入式 CPU 的
China-Core,以及过去两年为其工作的初创大型 CPU 设计公司,IBM Power8 在中
国的落地项目中晟宏芯。以上工作经历,给了我很多锻炼,让我在面对各种大小
类型的 IC 设计公司的时候,变得更加成熟。但是,在这个过程中,深感国内的
IC 设计公司在 IT 环境的建设方面,跟国际大公司比较,差距依然非常大。

如何将自己的经验分享出来,以提高中国 IC 设计公司的 IT 水平,变得越来越重


要,也越来越紧迫。希望本文有助于目前在中国逐渐兴起的 IC 设计行业,在国
家的大基金项目下,少走弯路,缩小跟国外的大公司之间的差距。

交流 QQ 群 edacad 292489873 作者手机:13606212363 QQ:58648217 文档错误之处欢迎指出

吐槽时间:
国内很多 IC 设计类的公司,过分注重安全,采取了很多土办法来保证安全,比
如 PC 弄个盒子锁起来,物理隔离。殊不知,这类安全措施,看似安全了,可实
际上,易用性方面大大降低,员工的工作效率不高。忽略了真正需要引起重视的
安全问题,比如误删除和硬盘损坏导致的数据无法恢复。

考虑安全,必须记住以下几点:
1. 安全和易用性是矛盾的,必须找一个平衡点
2. 安全是整体,木桶理论决定了,你的短板之处就是你的整个安全风险。
3. 专业的人做专业的事情,做 IC 设计的领导,对 IT 方面别靠想当然去做。
4. 安全在 IC 设计行业的重要性比不上芯片设计的迭代速度,所以尽快完成几代芯片的设计
在很多时候更重要。适当在易用性方面倾斜有利于项目顺利。

全文分为 11 个章节论述:
1. 基础设施建设(机房,弱电间,接入机房,实验室机房及实验室)
2. 网络结构
3. 系统及存储布局
4. 接入及登陆环境
5. 设计 Job 的管理
6. 数据管理
7. 版本管理
8. 邮件系统
9. EDA 软件管理
10. 多 site 协同
11. 安全

基础设施建设

1. 供电
2. 制冷
3. 布线(水、电、弱电)
4. 环控
5. 空间及位置考虑
6. 交换机布局,ipmi 布局
7. 消防

基础设施主要包含网络、机房等方面,我这里主要介绍的是机房的建设。过去十
多年,我建过几台服务器的小机房,也建过几百台服务器的小型数据中心。考量
的东西很多,因为本篇主要论述大型 IC 设计中心的 IT 环境,所以主要讲的是几
百台服务器的机房。

首先,我们来看一张机房的示意图:
我们可以看到这个数据中心分成了多个部分:接入机房,实验室机房,消防钢瓶
间,UPS 配电间,电池间,主机房,值班室。

供电

建设机房的首要任务是计算出你到底需要多少功率的负荷,然后对接入电源
跟供电方核对,是否有满足需求的电力接入。然后可以确定 UPS 容量,最后通
过设备的断电后备时间要求,计算出需要多少电池。供电系统是一个很复杂的设
计,需要机房设计方认真核对,一旦错误,后期很难补救。
作为用户方:我们提供的信息主要有:总机房设备的最大负载、供电冗余要求、
每机柜多少 KW、电池的后备时间。
制冷

目前机房空调主要有两种类型:一种是大型的精密空调,通过上送风或者下
送风的方式,经过机房地板形成一个冷热回路。这种方式在很多地方使用,优点
是送风集中,运维方便。缺点就是噪音大,空调冷热路径长,能耗损失多。另外
一种,就是行间空调。行间空调顾名思义,就是空调就位于机柜旁边,空调出来
的冷风就被机柜上放置的服务器吸入,然后从服务器后端排出热空调,形成循环。

水冷还是风冷?
这也是一个难以取舍的选择。整体来说,风冷技术成熟,能耗比水冷高。但是水
冷风险高,因为管路的安装和维护要求高,一旦漏水,对机房来说都是大事故。
但是,水冷真的可以很大程度降低能耗。

基于自己的条件,我们选择了行间空调风冷方式。
布线

机房布线的考虑,经常受到环境的限制,经常我们不得不取舍。主要需要考
虑的是水管如何布置,包括加湿器的进水管和冷凝水的排水管。强电线缆如何布
局以及弱电(双绞线及光纤线缆)布局。

水管的布局,需要考虑漏水的情况下,对机房的影响。机房漏水从来不是小问题,
任何处置不当,就可能导致机房停止运行。主要有两方面的水路需要处理,一边
为冷凝水的排出,另外就是加湿器的进水。建设机房的时候,建设方提出想把顶
楼的排水管在中间开口,通过这个排水口去释放空调的冷凝水,听起来不错吧?
可如果大雨的情况下,排水管堵塞或者来不及排出去的时候,水就会从排水管的
开口处,直接往机房排放。加湿器进水一定要前置阀门,随时将其管理。否则,
自来水的突然高压,可能会导致机房大面积过水。由于进水管的安装问题,我甚
至不得不将加湿器进水管完全关闭,以免发生意外。水管一般都是从机房地板下
走。
强电的安装需要注意跟弱电分开,因为强电会干扰弱电信号。这就提出了一个现
实的问题:强电到底应该走顶部还是地下?因为顶部往往会走弱电线缆。弱电走
顶部的一个好处是后期维护和排错更加方便。我这里设计方选择了走地下,地板
下有 40cm,强电在架设的桥架上走。但是,因为排水管需要有一定高度,不得
不走了强电桥架的上部,这应该是一个失败的设计。但是,如果强电走顶部,弱
电怎么办?两者之间需要隔离。整体的通道和机柜设计已经解决这个问题,所以
建议选择冷通道和机柜的时候,选择好顶部可以分割强弱电布线的产品。这样可
以很好的解决强弱电分离的问题,同时避免了强电跟水路一起走的尴尬。

环控

机房环控需要做到几个方面:视频监控,温湿度,漏水检测,电话报警,PUE
的实时显示。

空间及位置考虑

为什么要将接入机房单独出来
接入机房负责跟外界的沟通,包括各家运营商的接入线路:电信的互联网,电信
的电话,联通的互联网,专线等。 这个地方经常要开放给电信联通的维护人员,
办公网络的核心设备也需要放在这里。外网防火墙,门禁系统,OA 服务器等都
需要,类似一般公司的小机房。各办公楼层的汇聚。这个机房设计,一般可以考
虑单独的 UPS,空调。

为什么要建一个单独的实验室机房?
我们都知道,IC 设计公司是要做出硬件产品的,而很多工作需要的服务器,不是
IT 人员去管理,而是设计人员自己做各种测试使用。如果没有一个独立的空间,
是无法做好隔离的。这样测试环境会让整个 IT 系统不稳定。仿真器等设备需要
大功率的制冷和独立空间,所以实验室机房采取传统的精密空调,采用下送风的
方式制冷。

主机房
我们主机房按照标准模式,设计了独立的消防管网系统,气体灭火。UPS 配电间
跟电池间。UPS 设备目前有模块化的,可以考虑,避免机房设备不足的时候,UPS
浪费电力严重的情况发生。

机房的位置选择
这个涉及的考量很多,很多时候我们不得不折中考量,这让人感觉很无奈。比如,
我们需要考虑楼层的承重,一旦我们考虑建设机房的地方,如果楼下是空的,就
需要建筑设计单位拿出承重设计数据,不能满足我们需求的情况下,我们需要加
固。一般情况下,都是不能满足的,没有哪家建筑设计院会将普通的办公楼设计
为承重达到机房的要求,除非是厂房设计。一般建筑的承重为 250kg—500kg,而
我们机房一般要求 1000kg-2000kg 之间。特别是 UPS 电池间,这个地方要求的承
重非常高。

如果我们选择地下没有架空的一楼做机房,当然就不需要重新加固建筑承重了,
但是一楼往往会面临另外一个问题。机房空调的外机往哪儿放?现在的建筑一般
都是空调放在顶楼,如果一楼的机房到顶楼的距离过长,会影响制冷效果,能耗
也会损失更多。另外,一楼还需要防水,特别是暴雨来临,如果地势低洼,很可
能导致倒灌,一旦进入机房,整个机房就可能完全停止工作。

所以,机房的位置选择起来非常难。建议一定要提前选择好地方,且不可将就。

网络布局

机房网络设备主要是交换机,目前主要采用的有集中式布局和分布式布局。
两种各有优缺点。
集中式布局,一般在一个冷通道采用一台大型多插槽的交换机,这样的布局
方式,机房布线是一个难点,因为几百根网线要布局到核心交换机处,线缆的连
接非常麻烦,好处是解决问题的时候简单,且由于交换机多采用了个冗余部件,
很少出现故障。各个机柜之间也基本是线速连接的。
分布式布局,多采用 TOR 交换机模式,即每个机柜顶部安装一台交换机,然
后各交换机通过上联到核心交换机处实现连接。这样的连接方式,交换机数量比
较多,可能不得不浪费很多端口,因为我们一个机柜里边很难会完全用完交换机
端口(现在一般交换机都是 24 口-48 口)。这种方式的优点是:布线非常简洁,
只要每机柜到核心交换机机柜布置 2 根 6 芯的光纤+2 根六类线即可。
建议新建的机房采用 10G TOR 交换机+40G 上联,这是趋势,服务器之间采
用 10G 连接的成本已经降到足够低了。可以满足一段时间的需求。
无论采用分布式还是集中式,都推荐在每个机柜上放一台简单 2 层交换机,
用于设备的远程管理口,比如服务器的 ipmi 端口。这样可以不用随时进出机房
去开启关闭服务器。

消防

机房的消防,目前主要采取的是七氟丙烷气体消防。主要考虑的是,提前在
消防部门审批方案和报备,必须是当地有资质的建设方。另外,气体释放的方式
最好是经过监控室人工确认,否则可能导致机房人员没有按时撤离,窒息而死。

网络结构
首先让我们来看一个网络的结构示意图,因为这部分涉及到实际内容,我只能通
过示意图的方式来简单讲一下基本的要求。无法提供真实的网络结构图给大家看
了。
1. 内外网隔离
2. 研发网络跟办公网络隔离
3. 研发网络客户端跟服务器隔离
4. MPLS VPN 网络

内外网络隔离

我们通过多层防火墙对网络进行了隔离,公司总出口有一个上网的防火墙,
用于隔离互联网跟办公网。我们对外提供的有限服务位于防火墙后面,这也是最
容易被外部攻击的区域。在这里,我们通过 ACL 等措施隔离办公网络流量,防火
墙部署入侵检测和杀毒等服务。

研发网络跟办公网络隔离

研发网络指的是我们设计芯片的网络。这里一般采用两种方式隔离,一种
是物理隔离,另一种是逻辑隔离,各有优缺点,按需采用即可。物理隔离的优点
是安全,任何通过网络入侵的机会将为零。但是缺点是实用性和方便性遇到困难,
无法做到多个异地 site 协同工作。逻辑隔离是采用各种安全规范,严格限制研发
网络跟办公网络的交互,实现即时办公网络被入侵,依然可以保证研发网络安全
的网络设计。这种优点是可以多 site 协助,跟外部交流容易。缺点就是存在安全
错误导致的安全风险存在可能。

研发网络的客户端跟服务器分离

研发网络的服务器端一般位于机房内,而客户端位于工位。两者之间如果不
能有效隔离,就会造成安全风险点大面积增加。同时,对内的安全防护就无从谈
起。使用,我们一般会在登陆客户端跟设计服务器之间采用防火墙来隔离。同时,
登陆服务器也需要采取各种安全措施,避免被内部用户入侵控制。

MPLS VPN 网络

专线网络有多种,常用的可能有 MSTP/SDH MPLS。SDH 专线主要用在国内


点对点电路上,相当于给提供物理链路给你。这种方式优点是点对点,只要电路
不断,你的网络一定不会跟其他共享带宽。MPLS VPN 是用的更多的专线方式,
其特点是环状组网,使用逻辑隔离,将数据从一个大的带宽网络中隔离出来,运
营商采用各种方式尽量保证你的带宽符合你申请的带宽。
如果只是两点,可以考虑 SDH,如果是多点,建议还是用 MPLS VPN 比较合
适。专线方式可以提供比互联网 ipsec vpn 更好的稳定性,建议研发的工作环境
采用。而对于稳定性要求不高的应用,建议还是采用传统的 ipsec vpn 方式节省
费用,比较专线每月都需要付出一大笔钱。

额外提示一点:目前研发设计网络,经常需要使用 google 等搜索引擎查询


资料。国内的网络连接国外有防火墙封锁,同时两大运营商的问题导致访问国外
异常慢,丢包率非常高。解决这类问题,目前有几个办法:方法一,购买一些 vpn
服务账号,适合个人使用。方法二、公司拉一条专线到香港,通过香港本地上
internet。适合公司一起使用的,但是这种方式成本很高,差不多 1000 元/M,一
条 10M 的线路需要每个月一万了。方法三、通过上面所述的 MPLS VPN,路由到
国外再上 internet,类似方法二,只是成本更高,如果刚好有上下线非对称应用,
比如国外分部主要通过 MPLS 访问总部资源的时候,主要是下行带宽,总部可以
利用其上行带宽。方法四、采用 SDN 的方式和云计算结合,通过公有云实现这
类应用,成本在 100-300RMB/兆 之间,非常适合小公司。

系统和存储布局

1. CPU 架构及 OS 考虑
2. 认证(NIS AD LDAP 及其他)
3.DNS/NTP
4. Email
5. 存储:zfs/netapp
6. NFS v3/v4 和 AFS GPFS 之间的优缺点

CPU 架构及 OS

看过我以前文章的朋友,一定会记得,2004 年,我推荐 Solaris8。2008 年推


荐的 OS 是 RHEL3 和 RHEL4,到了 2013 年我写的文章,已经推荐 RHEL5 了。今
天(2015 年底)我推荐的是 RHEL6.7。推荐 OS 必须跟当时所处的情况有关,目
前三大软件商 cadence synopsys mentor 都已经支持 RHEL6,所以采用 RHEL6 毫无
问题。我们目前全部都采用的是 RHEL6.7 的 OS。
CPU 架构方面,依然推荐 Intel 的 E5-2600v3 和 v4 双路服务器,特殊情况可
以考虑 E7 的 4 路服务器。作为一家主要引入 IBM Power8 处理器设计的公司来说,
采用 intel 的 CPU 是不是有些特别的意味?一点也不奇怪,因为 EDA vendor 的主
要软件都是支持 x86 的处理器,只有少量软件会支持 AIX+Power。而从性价比来
说,显然 x86 更有优势。
OS 安装需要采用 kickstart 实现一致性安装,即所有服务器跑的系统和软件
包都一样。实现本地的 OS image 和 epel 库,然后通过 pssh 等分布式管理工具实
现软件安装的一致性要求。

认证

用户认证,必须实现统一账号,在任何系统下,最好是同一个账号和密码。
目前能够实现这个条件,需要 windows 的 Active Directory 和 NIS 或者 LDAP 统一。
我这里采用了 windows 2008R2 + NIS 来实现,使用 NIS 这么古老的认证技术主要
是考虑了其简单方便性,没有过多考虑其他如安全等特性。
Windows 2008R2,集成可 SFU 的功能,可以为 unix 用户设置一些特性,比
如 uid gid shell home,另外,还提供 NIS 服务器功能,可以实现 windows 账号和
unix 账号的统一。
采用 NIS 的原因是我们会在后面实现 autofs 功能,这样 PXE 安装的 Linux 服
务器就不需要挂载很多文件系统,而直接采用 autofs 的方式挂载。
在未来,Unix 下认证应该会跟逐步 LDAP 集成。

DNS/NTP

实现内部 DNS 服务功能可以提供内部服务器之间的便捷访问,从而摆脱记忆


ip 地址的麻烦。某些服务器在采用了内部 dns 后,可以更容易使用。目前提供
dns 服务器的主要有两个程序:bind 和 dnsmasq。前者是传统的 dns 服务器,功
能强大。后者是简单的 dns+dhcp 服务,一般用于小型环境。优点就是便捷,使
用方便。具体服务器搭建,这里不再详细介绍,提醒一点是 dnsmasq 默认不提
供跨 vlan 的 dns 服务,需要绑定 interface。
内部 ntp 服务在这种环境下几乎是必须的。Ntp 可实现内部时间的统一,避
免认证失败或者文件时间冲突等问题。Ntp 服务器的实现非常简单,不做介绍,
注意要周期性跟 ntp 服务器同步时间。

Email 系统

Email 依然是当前企业通信的最主要方式,所以 email 系统的选择也是一个重


要的工作。由于我们公司采用了内外网隔离的方式,所以我们的平时跟外部联系
的邮件系统跟内部邮件系统是完全独立的两套。
外部邮件系统主要考虑的是防病毒,防垃圾邮件,安全,可维护性及尽量少
的中断时间。基于以上考虑,我们最终选择了托管出去的方式。以前在多家公司,
都用了自己搭建的邮件系统,包括 exchange 或者其他专业的邮件软件,开放 25
端口来跟外部通信。其中最麻烦的事情不是安全,而是垃圾邮件太多。如果公司
自己购买一台垃圾邮件过滤系统,费用很高且可能一定程度误报误删,这样对公
司来说是无法接受的。由于新建公司没有多少邮件迁移的任务,我们最终采用了
托管出去的方式,按用户付费,这样完全避免了垃圾邮件的困扰。
内部邮件系统,我们采用了 postfix 来自己搭建一套。考虑到有需求,我们
采取措施,让托管出去的邮件可以直接转发到内部邮件服务器上。这里涉及到了
一个中转服务器。
存储

存储系统的选择非常重要,几乎决定了后期整个系统性能的关键因素。在 IC
设计行业中,有几个重要因素需要考虑:实时压缩、高速 SSD 做缓存、重复数据
删除、snapshot、NFS v4 ACL、Backup。
对于以上特点,我这里简要介绍需要的原因:
实时压缩,可以很大程度减少存储容量的使用。在 IC 设计中,经常可以做
到 2 倍的压缩率,即容量提升了一倍。同时,还提升了 IO 能力,因为压缩后的
数据更小,有利于读写。现代的 CPU 都很快,压缩不会带来太大的负担。所以,
可以放心使用。
高速 SSD 缓存,全闪存太贵,而采用 SSD 做缓存的方案,可以很大程度上将
热点数据放在高速 SSD 上,遇到调用的时候不再去磁盘中寻找,这样可以很大程
度上提供 IOPS,是一种利用较低成本提供了较大效益的方案。
重复数据删除,重复数据删除功能可以在很大程度上减少磁盘空间的使用量,
特别是针对某些应用,比如虚拟化及多版本开发环境。
Snapshot,这里的 snapshot 一定要跟 SAN 盘阵的区分开来,也跟 LVM 的不
一样。基于 netapp 和 zfs 的 snapshot 功能,允许用户自我管理不小心删除的数
据,随时自己去恢复,减少管理员的麻烦。提高了用户的满意度。
NFSv4 ACL,由于其提供了很多高级特性,可以实现项目的管理方式,让项
目经理去管理目录的权限,将 IT 从权限管理的繁琐中解脱,同时,给项目经理
足够大的自由度,让他们更快捷的实现自己的要求。
备份,是一个重要的话题,数据备份可能永远都是在做后备,但是一旦需要
恢复,备份就显得格外重要。目前主要考虑采用 D2D 的备份+磁带归档的方式实
现长期的数据备份需求。

由于我们的环境主要是 NAS 存储的 NFS 共享, 满足以上要求的主要有 netapp


的存储及基于 zfs 的存储系统,如 oracle ZS4 nexentastor 等。
目前在国内做支持最好的依然是 netapp 存储,但是 netapp 的销售策略要小
心,存在销售控制价格的行为特别严重,甚至可以做到价格差异 30%-50%的情况。
因为是区域控价,你如果选定了必须用它,几乎无任何的议价能力,被迫接受高
价。在大厂商面前,用户很弱势。唯一的反击就是绝对不要选择某一家厂商的产
品作为采购要求。

NFS v3/v4 及 AFS GPFS 文件系统的优缺点

NFS v3 是过去和当前依然在大量使用的协议,几乎所有的系统都能支持,使
用和配置也很简单。但是,nfsv3 缺乏一些特性,如安全性不足,缺乏更严格的
acl 支持,缺乏并行支持等。所以,后来开发了 nfs v4,提供了更加先进的一些功
能。我们主要会使用到 nfs v4 的功能就是 nfs v4 acl 支持。目前很多测试环境下,
nfs v3 的性能依然比 nfs v4 更快。所以,除了需要设置 acl 的时候,否则其他地
方应该挂载 nfs v3 为主。
AFS 文件系统是另外一种主要的网络文件系统,其提供了很多优秀的功能,
比如本地 cache,acl,quota,分布式等。但是,国内很少用到,商业化支持也不
足,所以不建议使用。
GPFS 是 IBM 开发的商业产品,可以实现分布式,如果不考虑费用问题,可
以考虑在某些关键的应用中采用。

接入及登陆环境

1. VPN 是否可以?VPN 至少要做到双因素验证


2.如何避免设计人员 copy&paste。
3. 登陆软件的选择:VNC Xenapp NX Go-global EoD 等
4. 桌面系统:GNOME KDE ICEWM FVWM XFCE

如何考虑移动 VPN 接入

提供移动 VPN 接入就相当于在内部网络开放了一个接口,让外部的用户可以


随时随地访问内部网络。所以,首先要评估是否可以做到足够的安全级别,让非
法的用户无法通过窃取账号等方式登录你的网络。
VPN 接入,需要至少做到双因素的认证。主流的做法包括 RSA SecureID 这种
基于时间的双因素或者 USB Key 基于证书的双因素。当前,还需要考虑 VPN 支持
移动客户端和 MAC OSX 系统。因为,这两方面的用户越来越多了,有更多的接
入需求。

如何避免设计人员 copy&Paste 数据

IC 设计中,一般都在服务器完成,但是也需要用户从终端登录服务器。如果
用户可以将服务器的文本 copy 到本地终端,那么就存在带走的可能性。我对于
数据安全的主要观点是:数据需要位于服务器上,用户无法物理接触的数据才是
安全的。数据分级,防止一个用户拥有所有数据的权限,可以防止被某人获得全
部数据。带出数据需要审核及归档,这样做到有据可查。
目前的登陆软件,很多可以禁止用户剪切板的数据 copy 到用户端。同时,
采用防火墙,防止用户直接从内部服务器主动连接客户端获取数据。

登陆软件的选择

目前小公司普遍采用的登录软件有 Xmanager/Exceed/VNC/FreeNX,而大公司
普遍采用的有 Xenapp/NX/EoD/Go-Global 等。对于以上软件,我都有一定程度的
接触,所以在此做一个简单评价。
Xmanger 和 Exceed,属于利用 X 协议,在 windows 平台实现的 X Server,优
点是使用方便,使用的人很多,性能在局域网也不错。缺点就是,一旦用户端跟
服务器之间的网络意外终端,或者客户端关机,所有正在服务器上运行的 job 丢
失。
VNC 免费版使用非常广泛,其实现了网络断开也不会丢失正在运行的工作。
但是免费版限制很多,比如需要用户设置专用的 vnc 登陆密码,无法禁止用户
Copy&Paste 服务器数据到本地。另外,VNC 协议实现对网络带宽消耗很大,不
适合于 WAN 网络连接。
FreeNX 是基于 No-Machine 免费开源的 library 实现的免费远程登陆软件。目
前有另外一个如日中天的类似软件,叫做 X2Go。FreeNX 基于 SSH 协议,实现了
压缩传输等功能,效率比 VNC 提高很多。但是其基于 SSH 协议实现,给系统安
全留下了隐患。
VNC Enterprise,实现了更高级的功能,包括验证集成了系统验证,不需要
额外设置 vnc 登陆密码,也可以禁用剪切板等高级功能,还可以通过 policy 设置。
对于小型设计环节,目前是一个非常值得考虑的选择。
Xenapp 是 citrix 基于 ICA 协议实现的登陆方式,最新的基于 Unix 的是 2008
年前后发布的 Unix 4.0 FP2 版本。Citrix 的中心已经转向了 windows,及时是最新
发布 xendesktop linux 版本,也并没认真去做,集成很困难。不过,当年 Broadcom
是基于 solaris 10+ citrix for unix fp2 实现的登陆环境,不知道五年过去了,是否已
经改变。
Nomachine 公司发布的 NX 商业版本可以支持更多功能,国内有几个公司在
使用,具体功能不了解,比如如何实现及时采用 SSH 协议,也不担心被设置转发
隧道,从而解决安全问题的。
EoD 的全称是 Exceed On Demand。软件费用昂贵,国内使用的人很少,目前
我知道的是 IBM 基于 EoD 实现登陆。 EoD 软件可以禁用 Copy&Paste,
同时 gateway
模式可以让用户无法直接在 EoD 服务器上工作,让 EoD 服务器实现 gateway 转发
即可。EoD 可实现 share 桌面,对于远程会议共享桌面和需要远程协助 debug 的
时候非常有用。推荐不差钱的大公司选择 EoD,是我见过最佳的登陆软件了。
Go-Global 是另外一个登陆软件,分为 for windows 和 for unix 版本。实现上
比 VNC 要快,国内也有商业支持,也比较成熟和稳定。不过其客户端目前只支
持 windows 系统,这点需要注意。如果是中小型公司,可以考虑采用。

桌面系统的选择

我一直反对使用重型桌面环境,比如 Gnome 和 KDE,毕竟几百人的公司,登


陆服务器就那么两台,一旦使用 GNOME 和 KDE,整个系统负载是非常高的。而
我们的设计工程师,根本不需要那么复杂的桌面环境,最简单的才是最高效的。

在我的工作中,我推荐过使用 fvwm,自定义过一个非常简洁的桌面环境,但是
由于定制要求很高,用户使用起来感觉不是很好。不过 fvwm 可定制性很高,可
实现非常棒的一些效果。
后来我选择使用过 XFCE,另外一个比较其 GNOME 和 KDE 较轻量级的桌面。在
2008 年-2013 年,我都认为这是一个不错的桌面环境,在很多地方推荐使用过。
但是,xfce 的安装包很多,最好通过 yum 自动安装。我们也逐渐在考虑一个更
加合适的窗口管理器。

2015 年,一个新的同事推荐了 icewm。我认为目前这个是最合适 IC 设计公司工


程师的窗口管理器了。

可以实现多个桌面,添加需要的一些 xterm 和 gnome-terminal firefox 等工具。


推荐:大公司首选 icewm,其次可以考虑 xfce。

设计 Job 的管理(SGE/LSF)

1. LSF
2. SGE
3. Openlava

LSF

LSF 是目前主要采用的任务管理软件,目前归属于 IBM,最新的版本是 9。几


乎所有大的 IC 设计公司都采用的是 LSF 的软件来做负载均衡。不过,这个软件
是商业软件,授权费比较贵,大约要 1-2 万一台服务器。

下图为 lsload 命令所显示的结果,大家可以看到各台服务器的负载,CPU 利用率,


剩余内存等信息。
LSF 会自动去调度,找出最佳的后台服务器,尽量做到负载均衡。所有的后台服
务器,用户都不能直接登录去 run,这是由系统和网络结构限制的。但是,对于
用户,要让所有的操作做到最简单,用户不需要去了解复杂的后台设计。

这里介绍一下 LSF 的一些使用


提交 job
$bsub my_job
Job <1234> is submitted to default queue <normal>
上面输出中 1234 是分配给 my_job 的 ID, normal 即系统默认 queue

提交并行 job
$ bsub -n 8 myjob
myjob 以并行 JOB 的方式执行,且需要 8 个 cpu cores。比如在脚本中,hspice 使
用了-mt 8 的情况下。用上面的命令会让 lsf 帮你找到空闲的 8 个 cpu core 之后才
提交给具体执行的主机。

查看当前自己或者其他人的 job
$bjobs (只查询自己的) $bjobs –u all(所有人的)
然后可以得到 jobID
$ bjobs -u all
JOBID USER STAT QUEUE FROM_HOST EXEC_HOST JOB_NAME SUBMIT_TIME
1004 user1 RUN short hostA hostA job0 Dec 16 09:23
1235 user3 PEND priority hostM job1 Dec 11 13:55
1234 user2 SSUSP normal hostD hostM job3 Dec 11 10:09
1250 user1 PEND short hostA job4 Dec 11 13:59

Kill 掉自己的某个 job


$ bkill 1234
Job <1234> is being terminated

挂起和恢复 job
$ bstop 3421
Job <3421> is being stopped
$ bresume 3421
Job <3421> is being resumed

查看 job 的输出
$ bpeek 1234
<< output from stdout >>

查看服务器负载
$lsload

查看服务器状态
$bhosts

查看 job 的详细信息
$bjobs –l 1234

SGE

目前 SGE 是免费且开源的,国内也有不少公司在使用。但是使用起来,感觉差异
很大,可能是习惯问题,我始终无法适应 SGE。我也不推荐使用 sge。

Openlava

前面介绍了 LSF 是商业软件,授权费比较昂贵。这里推荐一个兼容 LSF 命令的软


件,Openlava,其基于 LSF 4.2 发布的开源版本,目前最新的是 3.3,由 Teraproc
公司主要开发和支持。推荐国内的大公司采用,只需要少量的支持费即可。目前
主要基于 x86 的 linux 环境,如果你有其他异构系统,需要联系厂家获取是否可
以支持。如果大家对于采用 openlava 感兴趣,可以联系我,我可以协助测试。
前面 LSF 的示例完全可以通过 openlava 实现。

数据管理

1. 上传数据考虑因素
2. 下载数据如何审核及自动备份归档数据
3.数据访问的 Audit
4. 数据分级及权限控制
数据上传

在一个公司,内外网隔离的情况下,必然有大量的数据上传需求。如何实现
上传呢?这是一个大问题。我们设计了一个数据中转站,允许公司内的用户登录,
将数据放入 home 目录下,然后每隔一个小时,内网服务器通过 rsync 去获取数
据,并 sync 到内网。
这里主要的问题是:防火墙一定要严格过滤,只允许内网服务器 sync 中转
站的某个模块数据。
Upload.sh
#!/bin/bash

ProcNumber=`ps aux |grep rsync|grep -v grep|wc -l`

if [ $ProcNumber -eq 0 ];then


/usr/bin/rsync -acvz --delete --password-file=/root/rsync.pass
root@10.x.x.100::home /exchange/upload/ >> /root/rsync.log
Fi

下载数据如何审核及自动归档

对于下载数据,我们要求进行人工任何。分多个层级,每一步需要审核人写
审核意见,批准还是拒绝。任何一步拒绝,都将无法完成。
主要实现是:用户准备数据,发邮件给 ithelp,然后 ithelp 会根据情况,
分配审核数据的人员,其审核完成后,将数据放在第一级审核的目录 dirA,然
后由第二级审核人进行二次审核,完毕后将数据放入预备下载目录 dirB,最后
程序自动先备份数据,然后 sync 到数据中转站,并删除本地数据。DirA 和 dirB
通过 ACL 设置了用户的访问权限,只有审核人员可以进入。
以上步骤,还可以插入数据检查及核实的程序,比如查看是否下载了源代码
数据。

数据访问 Audit 实现

使用 audit 实现任何人访问源代码都将被记录,通过程序每天统计一次用户
的访问记录,排序统计后自动发送邮件给相关的人员。
目前测试环境实现了 5 万个源代码的控制,但是只能在本地文件系统实现。否则
会带来性能的问题。这样可以实现某个人一直查看的记录追踪,以及一段时间内
比如离职前一周或者某一天将所有允许查看的文件都 copy 到其他目录的行为,
可以当天晚上发送邮件给其安全部门的人员。

[root@dcs004 audit]# cat audit.rules |wc -l


51573
[root@dcs004 audit]# cat audit.rules|more
# This file contains the auditctl rules that are loaded
-w /test/test/linux-4.3/.get_maintainer.ignore -p r -k kernelfiles
-w /test/test/linux-4.3/security/inode.c -p r -k kernelfiles
-w /test/test/linux-4.3/security/Makefile -p r -k kernelfiles
-w /test/test/linux-4.3/security/selinux/Makefile -p r -k kernelfiles
-w /test/test/linux-4.3/security/selinux/netlink.c -p r -k kernelfiles
-w /test/test/linux-4.3/security/selinux/.gitignore -p r -k kernelfiles
-w /test/test/linux-4.3/security/selinux/hooks.c -p r -k kernelfiles
-w /test/test/linux-4.3/security/selinux/Kconfig -p r -k kernelfiles
-w /test/test/linux-4.3/security/selinux/selinuxfs.c -p r -k kernelfiles
-w /test/test/linux-4.3/security/selinux/nlmsgtab.c -p r -k kernelfiles
-w /test/test/linux-4.3/security/selinux/netnode.c -p r -k kernelfiles
-w /test/test/linux-4.3/security/selinux/netif.c -p r -k kernelfiles
-w /test/test/linux-4.3/security/selinux/netport.c -p r -k kernelfiles
-w /test/test/linux-4.3/security/selinux/netlabel.c -p r -k kernelfiles
-w /test/test/linux-4.3/security/selinux/exports.c -p r -k kernelfiles
-w /test/test/linux-4.3/security/selinux/xfrm.c -p r -k kernelfiles

Audit 结果如下,通过分析处理后可以实现监控的目的。
ype=PATH msg=audit(11/03/2015 10:43:13.610:198339) : item=0
name=test/linux-4.3/drivers/infiniband/hw/cxgb4/t4fw_ri_api.h inode=73185587 dev=00:14
mode=file,664 ouid=root ogid=root rdev=00:00 nametype=NORMAL
type=CWD msg=audit(11/03/2015 10:43:13.610:198339) : cwd=/tools
type=SYSCALL msg=audit(11/03/2015 10:43:13.610:198339) : arch=x86_64 syscall=open
success=yes exit=3 a0=0x181ede0 a1=O_RDONLY|O_NOFOLLOW a2=0x0
a3=0x666e692f73726576 items=1 ppid=39759 pid=40352 auid=root uid=root gid=root euid=root
suid=root fsuid=root egid=root sgid=root fsgid=root tty=pts2 ses=13728 comm=mv exe=/bin/mv
key=kernelfiles
----
type=PATH msg=audit(11/03/2015 10:43:13.617:198340) : item=0 name=(null) inode=73185587
dev=00:14 mode=file,664 ouid=root ogid=root rdev=00:00 nametype=NORMAL
type=SYSCALL msg=audit(11/03/2015 10:43:13.617:198340) : arch=x86_64 syscall=flistxattr
success=no exit=-95(Operation not supported) a0=0x3 a1=0x0 a2=0x0 a3=0x0 items=1
ppid=39759 pid=40352 auid=root uid=root gid=root euid=root suid=root fsuid=root egid=root
sgid=root fsgid=root tty=pts2 ses=13728 comm=mv exe=/bin/mv key=kernelfiles

数据分级及权限控制

主要是通过 NFS ACLv4 来实现项目的权限控制,通过将特定人员加入访问许


可,项目经理可以自我控制任何公司的人员是否具有访问权限。但是,数据的分
级,需要数据拥有人员去判断,IT 只是提供一种手段,并不具有分级的能力。
IT 提供合适的手段,让用户在系统内部,知道如何申请和如何控制权限即可。

以下是通过 nfs v4 设置权限示例:

$nfs4_setfacl -e /proj/xuesen
## Editing NFSv4 ACL for directory: /proj/xuesen
A::OWNER@:rwaDxtTnNcCy
A:g:GROUP@:tncy
A::EVERYONE@:tncy
A::projectmanagerA@powercore.com.cn:rwaDxtTnNcCy
添加下面行即可
A::username@powercore.com.cn:rxtncy ###read only###
A::username@powercore.com.cn:rwaDxtTnNcy ###rwx###
这里的 projectmanager 是由管理员设置的某个项目经理的账号,username 是你
期望设置的用户名。

版本管理

1. CVS
2. Subversion
3. Clisoft SOS
4. IC Manage
5. Git

CVS 用于代码的管理

CVS 作为 unix 系统下非常经典的版本管理系统,适合于代码的简单管理。对权


限控制很差,基本上只能按照 group 的方式来控制谁可以 check out,check
in.CVS 没有二进制管理能力,无法对各种非文本的文档,比如 word 进行管理,
只能用于代码。

CVS 是一个 C/S 模式的版本控制系统,用于在软件开发过程中记录文件版本,协


调开发人员保证文件同步,从而保证项目正确的进行并行开发,并支持版本回滚、
bug 跟踪和补丁生成。使用 CVS 可以有效地对软件开发的源代码和开发文档进行
统一的管理和组织。

主要功能如下:
同步的最新修改
文件的版本回溯
多人同时修改同一个文件产生的冲突
项目的分支开发
文件权限控制

Redhat Enterprise 默认安装有 cvs,如果没有,请安装 cvs 的 rpm 包。

CVS 的基本使用:
创建一个仓库
#groupadd cvs
#useradd –d /data/cvsroot -g cvs cvs
#cvs –d /data/cvsroot init

配置环境
$vi ~/.cshrc
$setenv CVSROOT /data/cvsroot

项目的初始导入
进入到你准备到如的初始源代码目录
$cvs import -m "some comments" project_name vendor_tag release_tag
执行后:会将所有源文件及目录导入到/data/cvsroot/project_name 目录下
vender_tag: 开发商标记
release_tag: 版本发布标记
这 个 project 可 以 给 某 个 unix group 授 权 chmod 775 root:asic
/data/cvsroot/project_name,这样所有 asic group 的人都可以 check in 和
check out 了。

项目的 CheckOut
$cvs co project_name

同步到最新
$cvs update

修改文件后 CheckIn
$ cvs ci -m "some comments" file_name

添加新文件
创建好新文件后,比如:touch newfile
cvs add newfile

对于图片,Word 文档等非纯文本的项目,需要使用 cvs add –kb 按二进制文件


方式导入(k 表示扩展选项,b 表示 binary),否则有可能出现文件被破坏的情况
比如:
cvs add -kb newfile.gif
cvs add -kb readme.doc

查看修改历史
cvs log file_name
cvs history file_name

其实 CVS 还有一种 pserver 的方式,可以使用客户端来进行管理。这样,即时


/data/cvsroot 没有被 nfs 共享出来在其他服务器上也可以通过 cvs 进行版本控
制。
分两步建立:
首先,建立 xinetd 启动服务
cat >> /etc/xinetd.d/cvspserver << "EOF"

service cvspserver
{
port = 2401
socket_type = stream
protocol = tcp
wait = no
user = root
passenv = PATH
server = /usr/bin/cvs
server_args = -f --allow-root=/data/cvsroot pserver
}
EOF

其次,客户端设置.cshrc (csh for example)


$vi ~/.cshrc

setenv CVSROOT :pserver:username@192.168.x.x:/data/cvsroot


这里的 username 请换成自己的,后面的 ip 地址和路径,请换成符合实际服务器
的路径。

Subversion

以下文档是很早的时候写的,跟最新版本可能存在一定差异,请注意。

subversion 简介
多年来,版本控制系统一直都是 CVS(Concurrent Versions System)的天下。
CVS 作为基
于 RCS 上建立,可以实现多用户协同工作的系统,可以记录文件的修改信息。这
对于开发人员是非常有用的。
然而,CVS 经过这么多年,也逐渐显示出一些不足,这个时候出现了一些商
业的版本控制软件,比如 Rational 的 ClearCase 就是一个功能强大的商业软件,
但是其价格也是非常昂贵的。
Subversion 就是一种设计来解决 CVS 的局限性的软件。从 2000 年开始,
Subversion 开始开发,2001 年 8 月开始用 Subversion 来管理 Subversion 的开
发工作,到目前位置,subversion 已经发展到了 1.9.3 版。
Subverion 的主要特点有:
a.保留大多数 CVS 特性,很多命令的选项基本通用
b.目录、重命名和文件 meta-data 都已经版本化,以前的 CVS 只能对文件版本化。
c.不可分隔的原子化提交,版本的变化是每次提交所有的文件版本都变化。
d.可以选择 Apache 作为网络服务器,集成于现有 Apache 控制的权限管理等。
e. 分支和标签是代价低廉(固定不变的)的操作
f.本地化的客户端/服务器,分层的库设计
g.消耗和修改部分的大小成比例,而不是数据的大小
h.Unix 下的链接也可以实现版本化控制了
i.更加有效的处理二进制文件
j.更加人性化的命令输出
k.本地化提示信息。

Subversion 的安装
Subversion 是建立在一个可移植的 APR(Apacheportable Runtime)上,所
以 Subversion 可以建立在 Apache 的支持上,但是不仅限于必须使用 Apache。
Subversion 可以做为 Apache 2.0 的一个模块,以 WebDAV/DeltaV 协议运行,也
可以采用其自带的 svnserver 小型服务器运行。我们这里将采用 Apache 下
WebDAV/DeltaV 方式运行,所以需要检查 Apache2.0 是否已经安装好。
# yum install subversion
RHEL6 默认安装的是 1.6.11 版本的 subversion

Subversion 和 CVS 的比较


1.不同的修订版本号。CVS 将每个修改文件都赋予一个版本号,因此在 CVS
中,所有的文件版本号是不同的。
2.Subversion 将目录版本化了。Subversion 也开始跟踪目录的结构,任何
对目录的 svn 操作都将会被记录,但是任何操作都必须提交后才生效。
3.离线工作更加方便。Subversion 的工作原始副本在本地也有保留,任何
对本地文件的修改,不需要连接到服务器去,就可以对比知道自己做了哪些
修改。并且,提交修改的时候 Subversion 只将差异部分提交给服务器。
4.二进制文件和文本文件。CVS 对二进制文件的版本化做的非常差,对于每
次修改的二进制文件,CVS 都会将更新的副本储存下来,大量占用了空间。
而 Subversion 就不管是二进制文件还是文本文件,它都采用差异比较算法
来表示更新的部分。CVS 提交二进制文件需要带-kb 标记,subversion 不需
要任何标记就可以识别二进制文件。

实例介绍
目前有一家公司,有两个不同的 Group 在进行开发,也就是说,两个项
目组的成员是不允许获得另外一个项目组的开发代码的。当时,为了某些模
块的协同工作,两个项目组的 Project Manager 又不得不互相取得对方的代
码。
现在我们设计一个 Subversion 来做版本控制的系统,假设一共有 6 个用
户,group1 有 user1,user2,manager1;group2 有 user3,user4,manager2.
项目组分别为 project1,project2.
由于我们的权限方面控制比较复杂,而适合权限复杂控制以及更好授权
选择的方式,我认为以 Apache+mod_dav_svn 比采用独立的 svnserve 更加方
便。

建立 Apache+mod_dav_svn 的 subversion 版本控制


(1).安装 mod_dav_svn
#yum install mod_dav_svn
(2).基本的 Apache 配置
#cd /etc/httpd/conf
#vi httpd.conf
找到 LoadModule 部分,在 LoadModule dav_module 后面加入两行
LoadModule dav_module modules/mod_dav.so
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
在配置文件中,需要告诉 Apache 在什么地方保存的 Subversion 版本库,
Location 就是告诉 Apache 在特定的 URL 以及子 URL 下需要的特殊处理。
在文件的最后部分建立<Location>区块
<Location /svn>
DAV svn
SVNParentPath /data/svn
</Location>
注意,任何 Apache 的 web 目录下不能存在 svn 这样的目录,否则会导致
Apache 不知道怎么解析。
(3).配置认证部分
前面的配置会让所有能访问你 web 的人都可以获得你的文件,并且可以提交
他的修改。所以,为了安全,也为了一个很好的秩序,我们必须添加认证。
<Location /svn>
DAV svn
SVNParentPath /data/svn
# access control policy
AuthzSVNAccessFile /etc/httpd/conf/access-control-file
# Only authenticated users may access the repository
Require valid-user
# How to authenticate a user
AuthType Basic
AuthName "Subversion repository"
AuthUserFile /etc/httpd/conf/svn-auth-file
</Location>
其中的 svn-auth-file 是做用户名和密码认证的,这个文件采用 htpasswd
来生成和修改。
$htpasswd –cm /etc/httpd/conf/svn-auth-file user1 (第一次使用需
要带-c)
New passwd:*****
Re-type new password:*****
Adding password for user user1
$htpasswd –m /etc/httpd/conf/svn-auth-file user2
New passwd:*****
Re-type new password:*****
Adding password for user user2
…..
access-control-file 文件的格式:
[groups]
project1 = user1 user2 manager1
project2 = user3 user4 manager2
[project1:/]
@project1 = rw
manager2 =rw
[/project2:/]
@project2 = rw
manager1 = rw
[/project2:/secret]
manager1 =
以上配置允许 user1,user2,manager1,manager2 访问 project1 的所有文件,
并且都可以读写;user3,user4,manager2 访问 project2 的所有文件可以读
写,但是 manager1 只允许读写除了 secret 目录下的所有其他文件。

建立过程及基本使用
(1).Creat Repository
基本语法:
$svnadmin create /data/svn/project1

#chmod 755 /data/svn


$svnadmin create /data/svn/project1
$svnadmin create /data/svn/project2
建立两个项目组的库,我们采用了默认的 FSFS 存储方式。
$ls /data/svn/project1
conf/ dav/ db/ format hooks/ locks/ README.txt

(2).导入文件到 Repository
我们已经建立了库,所以该我们导入我们的源文件到库里边的时候了。
我们首先来准备一下两个项目组的文件,然后导入到库里。
A.准备需要导入的文件
$cd /home/svn
建立 project1 的文件目录结构,源文件在/somepath/source1/下面,是
project1 的项目源代码。
$mkdir source1
$mkdir source1/trunk
$mkdir source/branches
$mkdir source/tags
$ls source1
$mv /somepath/source1/* source1/trunk/
project2 的建立方法和上面类似
B.导入项目文件到库里
$cd source1
$svn import --message “Intial files for Project1”
file:///data/svn/source1
Adding config.txt
Adding xconnect_config.txt
Adding ASIC_ADDR_SYNC
……
Project2 的导入方法类似
导入完毕后,可以删除刚才准备的源文件了。
$rm –rf source1 source2

(3).获取一份源文件的拷贝
以用户 user1 的身份登陆系统,在自己的 Home 目录下,可以用命令 svn
checkout
的方式获得一份 subversion 控制下的源文件。如果不特别指名,获得的文
件在本地目录
和在 subversion 下面的目录结构一致。所以,我们为了区分,应该指定一
个本地的目录
名。
$svn checkout http://domain/project1/trunk project1_trunk
[user1@server ~/test]$ svn co http://domain/svn/project1/trunk
project1_trunk
Authentication realm: <http://domain:80> Subversion repository
Password for 'user1':
A project1/trunk/config.txt
A project1/trunk /xconnect_config.txt
A project1/trunk /ASIC_ADDR_SYNC
A project1/trunk /ASIC_ADDR_SYNC/SW2ASIC_20051103
A project1/trunk /ASIC_ADDR_SYNC/SW2ASIC_20051103/addr.txt
(4).编辑和提交修改
编辑文的文件,可以用你喜欢的任何编辑器,我们现在添加一个文件.
$touch test.txt
Add a line for this file
$svn add test.txt 添加一个文件到 subversion,但是直到后面提交后才
才库中生效
$svn status 查看哪些文件有变化
A test.txt
$svn diff test.txt 比较本地文件和库中的不同
Index: test.txt
================================
--- test.txt (revision 0)
+++ test.txt (revision 0)
@@ -0,0 +1 @@
+Add a line for this file
$svn ci –m “add a line for test.txt” 提交修改了的文件
Adding test.txt
Transmitting file data .
Committed revision 3.
$svn log test.txt 查看变化历史
---------------------------------------------------------------------
r3 | admin | 2005-11-12 14:43:36 +0800 (Sat, 12 Nov 2005) | 1 line

add a line
---------------------------------------------------------------------
$svn update 获得最新的版本,使用这个命令获得他人的最新更改。
如果发生冲突,使用 svn resolve 解决

(5).Svn 客户端常用命令
svn add //添加一个文件
svn checkout(coi) //从苦衷获取一个工作拷贝
svn cimmit(ci) //提交当前工作拷贝的更改到代码苦,如果出现冲突需要
解决。
svn copy(cp) //做一个工作的拷贝
svn delete(del,remove,rm) //删除本地或者 svn 库中的文件或者目录
svn diff(di) //比较某个文件和库中对应的文件的不同,和系统的 diff
命令类似
svn export //导出一个无版本控制的目录树拷贝,用于可以运行的版本需
要导出。
svn import //将当前目录下的文件导入到库中
svn info //查看当前目录下的某个文件或者文件夹的信息
svn list(ls) //列出当前拷贝的文件
svn mkdir //在本地或者库中新建一个文件夹
svn move(mv,rename,ren) 类似于系统的 mv 命令
svn status(stat,st) //svn 工作拷贝的当前状态,和上次提交或者 update
后的对比
svn update(up) //将 svn 库中的文件同步到本地

(6).创建一个 Tag 和 Branch


Subversion 创建 Tag 和 Branch 和 CVS 不一样,它采用的是 copy 方式。
A.创建一个 Tags,只能这个项目的 Project Manager 负责,下面以 manager1
用户登陆操作。
$svn copy –m “Create Tag version1”
file:///data/svn/project1/trunk/
file:///data/svn/project1/tags/version1
$svn list file:///data/svn/project1/tags
version1
B.创建一个 Branch
$svn copy –m “create Branch a” file:///data/svn/project1/trunk/
file:///data/svn/project1/branches/brancha
以 user1 登陆
$svn switch http://domain/svn/project1/branches/brancha
这样以后 user1 就以 brancha 作为工作的库目录,从这里开始作为分支。

(7).Merging a Branch

(8).Windows 客户端的安装和使用
下载 TortoiseSVN-xxx.msi,安装,然后 CheckOut 一个库的拷贝。

Clisoft SOS 介绍

a. 业界最完整的版本控制工具. 具有动态连结及智能快取等强大功能
b. 完整得知所有使用者档案修改, 增减, 开启等记录...
c. 节省硬件的支出, 让系统管理员更有效控制数据的管理与储存
d. 对于硬件和软件设计资源 (design resouce), 设计者可以更有效的取得
及运用
e. 单键标注(Tag)整个工作目录下所使用的版本.
f. 数据库快照(Snapshot)及最完整的安全控管机制.
g. 可任意任务分组¸ 控制组员可擦写之目录及档案
h. 最简易的操作接口, 无需管理员. 工程师一小时上手
i. 提供命令模式, 易于与 EDA 工具整合.
j. 内建 Bug Tracking 功能, 可通知同组伙伴所须修改之错误.
k. 提供丰富的管理工具及 Trigger 功能.
l. 与 Cadence DFII 完整结合
m. 提供工作交接及内部教育训练一个最佳平台环境.
n. 提供最佳异地开发功能
这个软件主要是针对全定制 IC 设计的, 可以嵌入:

Cadence Virtuoso
Custom IC
Agilent Advanced Design System (ADS)
Mentor Pyxis
Synopsys Laker
Synopsys Custom Designer
SOS 是商业软件,只要购买了,安装和配置完全由厂家支持,这里就不再做详细
的介绍了。

IC Manage

没有接触过,据说也是一个不错的 IC 公司喜欢用的版本管理软件。

git

很好的一个分布式版本管理软件,在开源软件开发行业使用非常广泛。不过目前
在 IC 设计行业所见不多,也许我们 IC 行业太落后了,没互联网和开源界对新技
术的接受能力强。我们习惯用我们熟悉的东西。

搭建:
(1) yum install git
[root@eda ~]# git --version
git version 1.8.3.1
(2)创建 git 用户
[root@eda ~]# git --version
git version 1.8.3.1
[root@eda ~]# cd
[root@eda ~]# pwd
/root
[root@eda ~]# useradd git
[root@eda ~]# passwd git
Changing password for user git.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
[root@eda ~]# su - git
[git@eda ~]$ mkdir srv
[git@eda ~]$ ls
srv
[git@eda ~]$ cd srv

(3)初始化项目
[git@eda srv]$ git init --bare proj.git
Initialized empty Git repository in /home/git/srv/proj.git/
[git@eda srv]$ ls
proj.git

(4)Clone
[git@eda work]$ git clone git@localhost:srv/proj.git
Cloning into 'proj'...
git@localhost's password:

(5)添加文件
[git@eda work]$ ls
proj
[git@eda work]$ cd proj/
[git@eda proj]$ touch abc.txt
[git@eda proj]$ vi abc.txt
wgh
test
"abc.txt" 2L, 9C written
[git@eda proj]$ ls
abc.txt
[git@eda proj]$ pwd
/home/git/work/proj
[git@eda proj]$ git add abc.txt
[git@eda proj]$ git commit abc.txt -m "test file"
*** Please tell me who you are.

Run

git config --global user.email "you@example.com"


git config --global user.name "Your Name"
需要设置提交者的个人信息
[git@eda proj]$ git config --global user.name "Guanghui"
[git@eda proj]$ git config --global user.email "wanggh@gmail.com"

(6)提交文件
[git@eda proj]$ git commit abc.txt -m "test file"
[master (root-commit) 0455f79] test file
1 file changed, 2 insertions(+)
create mode 100644 abc.txt

[git@eda proj]$ git push origin master


git@localhost's password:
Counting objects: 3, done.
Writing objects: 100% (3/3), 215 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@localhost:srv/proj.git
* [new branch] master -> master
[git@eda proj]$

(7)查看变化是否提交
我们需要重新 git clone 一份
[git@eda ~]$ git clone git@localhost:srv/proj.git
[git@eda ~]$ cd proj/
[git@eda proj]$ ls
abc.txt
[git@eda proj]$ git log
commit 0455f7997a895e5ffea3f016ec04bf2bdb7b25ad
Author: Guanghui <wanggh@xmail.com>
Date: Fri Apr 15 21:44:12 2016 +0800

test file
发现已经存在我们刚才添加进入的一个文件了。

权限管理
要方便管理公钥,用 Gitosis;
要像 SVN 那样详细地控制权限,用 Gitolite。
邮件系统

为什么考虑外网邮件系统托管,而不是自己搭建。

当初运营邮件系统的时候,考虑过多方面因素,最后选择托管外部邮件系统,是
因为外部托管有几个非常重要的特点:
(a)不用自己运营邮件服务器,使 IT 更轻松
(b)自己运营一个长期对外的邮件系统,安全考虑不如托管在外,由托管的运营
商负责更合适。
(c)托管出去,垃圾邮件过滤系统比自己运营效果好很多。
(d)托管出去的邮件系统,可以随时随地让用户都能及时收到邮件。
最后,我们综合考虑,采用了腾讯的企业邮箱作为托管方。目前运营下来,一直
表现良好,可以跟微信集成,一旦有新邮件,微信第一时间会通知。

如何使用 postfix 搭建自己的内部邮件系统

但是,托管邮件也有一些不足的地方,比如无法更内部邮件集成在一起。我们采
用 LSF 或者 openlava 进行任务分配的时候,在 job 完成之时,会发邮件通知。
但是目前托管的邮件系统显然无法满足要求,那么我们就需要在内网建立一套邮
件系统来满足基本的需求。

(a)使用了 AD 2008R2 提供的 NIS Server。


(b)配置内容如下:
(b1) postfix
cat /etc/postfix/main.cf
cat main.cf|grep -v \#
queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
mail_owner = postfix
myhostname = mail.abc.com.cn
mydomain = abc.com.cn
myorigin = $mydomain
inet_interfaces = all
inet_protocols = all
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
unknown_local_recipient_reject_code = 550
mynetworks = 192.168.1.0/24, 192.168.10.0/24, 127.0.0.0/8
relay_domains = $mydestination
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases

debug_peer_level = 2

debugger_command =
PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
ddd $daemon_directory/$process_name $process_id & sleep 5
sendmail_path = /usr/sbin/sendmail.postfix
newaliases_path = /usr/bin/newaliases.postfix
mailq_path = /usr/bin/mailq.postfix
setgid_group = postdrop
html_directory = no
manpage_directory = /usr/share/man
sample_directory = /usr/share/doc/postfix-2.6.6/samples
readme_directory = /usr/share/doc/postfix-2.6.6/README_FILES

message_size_limit = 50000000
mailbox_size_limit = 120000000
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options=noanonymous
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions =
permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination
smtpd_sasl_application_name = smtpd
smtpd_sasl_local_domain= ''
smtpd_client_restrictions = permit_sasl_authenticated

(b2)dovecot
/etc/dovecot/dovecot.conf
protocols = imap pop3

/etc/dovecot/conf.d/
(1)10-auth.conf
disable_plaintext_auth = no
auth_mechanisms = plain
(2)10-mail.cf
mail_location = mbox:~/mail:INBOX=/var/mail/%u
(3)10-ssl.conf
ssl = no

ssl_cert = </etc/pki/dovecot/certs/dovecot.pem
ssl_key = </etc/pki/dovecot/private/dovecot.pem
(c): sasl
/etc/sasl2/smtpd.conf
log_level: 3
pwcheck_method: saslauthd
mech_list: plain login

启动服务:
[root@inmail rhel65]# chkconfig --list|grep sasl
saslauthd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
[root@inmail rhel65]# chkconfig --level 345 saslauthd on
[root@inmail rhel65]# /etc/init.d/saslauthd start
Starting saslauthd: [ OK ]
/etc/init.d/postfix restart
/etc/init.d/dovecot restart

如何实现外网邮件自动转发到内部

搭建了内部邮件系统,我们发现,如果能让外部的邮件自动转发到内部,不需要
时刻去关注外部邮箱是一件更幸福的事情。但是,因为某些安全方面的原因,我
们无法使用内部邮寄系统发送邮件到外部网络。

由于涉及到安全方面的问题,我这里只讲基本的实现方法及原理
(1)搭建一台内部中转服务器
这台服务器可以访问腾讯托管的服务器,也允许腾讯邮件服务器访问他的 25 端
口用于腾讯服务器发送邮件给它。
(2)防火墙设置端口映射,映射防火墙的 25 端口到这台中转邮件服务器的 25 端
口。
(3)设置外部邮件的 DNS MX 解析记录
A 记录 mail.int.abc.com.cn 221.xxx.30.42
MX record @int.abc.com.cn mail.int.abc.com.cn
(4)用户设置自己的邮件自动转 username@int.abc.com.cn

EDA 软件管理

软件的目录管理(单一版本的 EDA 软件管理)

[root@zh02 /]# tree -L 2 /tools


/tools
|-- cadence
| |-- EDI141
| |-- IC615
| |-- INCISIV131
| |-- LIBERATE13.14
| |-- MMSIM131
| |-- SSV132
| |-- iscape0423
|-- env
| |-- cshrc.cds
| |-- cshrc.mgc
| `-- cshrc.syn
|-- mentor
| |-- aoi_cal_2014.3_27.21
| |-- docs_cal_2014.3_16.15
| |-- install.ixl
| |-- tessent_2014.4
| `-- tessent_2015.1
`-- synopsys
|-- SpyGlass-5.2.1.1
|-- cx_vK-2015.06-SP1
|-- esp_vK-2015.06-SP1
|-- finesim_vK-2015.06-SP1
|-- fm_vK-2015.06-SP2
|-- fpga_vJ-2015.03-SP1
|-- hspice_vK-2015.06-SP1
|-- icc_vK-2015.06-SP2
|-- installer_v32
|-- laker_v2015.03
|-- leda_vK-2015.09
|-- pts_vK-2015.06-SP2
|-- starrc_vK-2015.06-SP2
|-- syn_vK-2015.06-SP2
|-- txs_vK-2015.06-SP2
|-- vcs_vK-2015.09
`-- verdi_vK-2015.09

不同软件版本的管理

建议/tools/oss 下建立相关目录,比如
[root@zh02 /]# tree -L 2 /tools/oss
/tools/oss
|-- gcc
| |-- 4.4.7
| `-- 5.3.0
|--
make
| |-- 3.81
| `-- 4.0.90
`--
python
|-- 2.6.6
|-- 2.7.11
`-- 3.5.1
然后通过 Modules 来管理即可,当然,你也可以用这个方法管理多个 eda 软件版

IC 设计中,我们经常遇到一些多个版本软件的需求。

项目 A 需要用 vcs 2012.09,而项目 B 却需要 vcs 2014.12 这样的情况,如何让


设置的环境变量比较通用?让用户自己选择呢?

Modules 就是这样的一个工具,使用非常方便,RHEL6 默认就安装了这个软件的


# rpm -qa|grep modules
environment-modules-3.2.10-1.el6_5.x86_64

首先,修改.modulspath
# cat /usr/share/Modules/init/.modulespath
/tools/env
然后,在/tools/env 下创建文件
# pwd
/tools/env
[root@stu001 env]# tree
.
|-- gcc
| |-- 4.4.6
| `-- 4.8.1
|-- icc
| `-- 13.1.1
`-- vcs
|-- 2012.09
`-- 2014.12

以/tool/env/vcs/2012.09 文件为例
cat vcs/2012.09
#%Module1.0#####################################################################
##
## modules modulefile
##
## modulefiles/modules. Generated from modules.in by configure.
##
proc ModulesHelp { } {
global version prefix
puts stderr "\tAdds VCS 2012.09 to your environment,"
}
module-whatis "Adds VCS 2012.09 to your environment"
# for Tcl script use only
set version 2014.12
set VCS_HOME /tools/synopsys/vcs_vG-2012.09
prepend-path PATH $VCS_HOME/bin:${VCS_HOME}/amd64/bin
prepend-path VCS_HOME /tools/synopsys/vcs_vG-2012.09
prepend-path LD_LIBRARY_PATH xxxx
module use /usr/share/Modules

使用方法:
# module load vcs/2012.09
# which vcs
/tools/synopsys/vcs_vG-2012.09/bin/vcs
# env|grep VCS
VCS_HOME=/tools/synopsys/vcs_vG-2012.09
# module switch vcs/2014.12
# which vcs
/tools/synopsys/vcs_vJ-2014.12/bin/vcs
# env|grep VCS

查看当前的 modules
# module avial

License 管理

目前大部分 eda 软件都是使用 flexlm 管理 license,具体方法网上有很多资料,


不再详述。
建议专门建立一个账号来负责 license 的管理,比如 admin
$mkdir admin
[admin@ lic]$ ls
Synopsys.dat cadence.dat mentor.dat bin/
[admin@$ pwd
/home/admin/lic
$bin/lmgrd –c synopsys.dat –l syn.log
$bin/lmgrd –c cadence.dat –l cds.log
$bin/lmgrd –c mentor.dat –l mgc.log
然后在客户端设置对应的环境变量即可
$setenv LM_LICENSE_FILE 27000@licserver:1717@licserver:5280@licserver
$lmstat 就可以看到了。

多 site 协同

电话会议系统

考虑到目前传统的办公协同需求依然是邮件+电话,所以电话在工作中占有
很重要的比例。传统的模拟电话有一个很不方便的地方,就是更换工位后,需要
重新跳线,几乎所有使用模拟电话系统的公司,最后跳线的机房都是一团糟。
另外,模拟电话系统很难组织电话会议。语音的电话会议也是当前工作中需
求量非常高的一个应用,特别是有多个 site 的情况下。
所以,新的系统必须是基于 IP 才是最合适的。IP 电话系统基本上都可以实
现自助会议预定等功能。多个 site 之间也可以通过 vpn 网络实现 IP 电话交换机
之间 trunk,或者 IP 电话直接连接总部的电话系统。

桌面共享

目前桌面共享,主要有几种方式实现:
EoD 共享 Linux 的桌面,可使用 read only 和 read write 两种方式,任何用户
都可以 share 自己的桌面给指定的用户。
WebEX 等外部电话会议系统共享 windows 桌面。
VNC 的桌面共享

代码的版本管理

代码管理工具前面已经介绍过了,主要有 cvs subversion SOS 等多种版本管理


的工具,可以实现多 site 的共享代码。

MPLS VPN 或者其他稳定的 vpn 解决方案


目前,多 site 可以采用传统的 ipsec site-to-site vpn 方式,也可以采用 MPLS
专有线路。显然,MPLS VPN 要稳定很多,但是费用也更贵。MPLS VPN 因为跟传
统的 internet 没有连接,所以更加安全可靠。

MPLS VPN 接入商选择的时候,一定要考虑办公所在大楼,服务商的接入能力。


因为这段距离是最容易产生问题的地方,比如北京上海某些地方,物业费会要求
管道费,或者只允许某个运营商接入。因为 MPLS VPN 是专有线路,不一定非要
考虑电信或者联通,移动或者有线网络都可以,只要他们在当地具有足够的能力
提供服务即可。如果涉及到国外 site,还需要考虑链路,往往,接入商在当地
需要跟当地国家的运营商合作,提供本地段的接入服务。

个人电脑的移动接入建议考虑采用 SSL VPN,但是建议采取措施,要保证接入的


客户端不能只采用密码。即,接入的用户就是你期望接入的那个用户,而不是第
三方黑客。

视频会议

适当时候引入视频会议对沟通更加方便,目前视频会议系统已经可以满足基本的
需求。建议建立视频会议系统的时候需要多考虑几个方面:带宽是否可以满足需
求?会议室的灯光等控制是否适合?视频会议和投影如何分配?怎么跟语音会
议结合在一起?视频会议的一大好处是面对面,可以随时看到对方参加会议人员
的状态,避免了传统语音会议的缺点。

安全

外部入侵的防范

外部入侵防范,需要在互联网入口处安装防火墙,入侵检测等手段。同时,对外
提供服务的端口最好严格限制能访问的源地址。比如,提供 ftp 服务给合作伙伴,
需要对方将他们的 internet ip 地址在你的防火墙上做限制,只能他们的 ip 访
问你的 ftp 服务。

内部人员泄密的防范

内部人员泄密的概率高很多,但是对内还需要考虑工作的方便性。目前,能够很
好的防范内部无意或者恶意泄密的,要遵循两个原则:(1).内部人员不能物理
接触数据 (2).任何外发数据需要审核及归档备份 (3).数据分级分类,由项
目经理控制权限。

展开来说,就是数据都需要放在服务器区域,而不允许数据放在用户直接接触的
客户端。客户端只是一个显示终端。这样,除了截图,无法得到公司的 IP 数据。

但是,我们还需要经常外发数据,比如发往代工厂的数据,下载到 fpga 上进行


仿真验证的数据,发给客户的支持文档和数据。这些数据,建议采用两级审核,
加上所有数据归档永久备份的方式实现有据可查,这样大大减少了恶意泄露的可
能。

权限控制 acl

权限控制主要采用 nfs v4 acl,我们可以实现某个目录项目经理可以自行增加


删除进入的用户。
这里以 netapp 作为存储,linux 客户端挂载的方式测试配置 nfs v4 acl。

(a).Svm 上建 qtree,增加 nfsv4 nfsv3 导出选项及 quota。


设置必须的选项,putty login netapp with admin account
nfs show -vserver svm_nfs
nfs server modify -vserver svm_nfs -v4-id-domain nfsv4.powercore.com.cn
nfs server modify -vserver svm_nfs -v4-numeric-ids enabled
vserver modify -vserver svm_nfs -ns-switch nis,file

vserver services name-service ns-switch show

Source
Vserver Database Order
--------------- ------------ ---------
fas2554-1 hosts files,
dns
svm_nfs hosts files,
dns
svm_nfs group nis,
files
svm_nfs passwd nis,
files
svm_nfs netgroup nis,
files
svm_nfs namemap files

fas2554-1::> vserver name-mapping show


This table is currently empty.
暂时不用,不需要 mapping,只是 nfs,不需要 cifs mapping。

(b). Client 端
[root@dcs004 projects]# cat /etc/idmapd.conf |more
[General]
#Verbosity = 0
# The following should be set to the local NFSv4 domain name
# The default is the host's DNS domain name.
#Domain = local.domain.edu
Domain = powercore.com.cn

#chkconfig –add rpcidmapd


#chkconfig –list |grep rpcidmapd
# /etc/init.d/rpcidmapd restart

(c). mount options with nfsv4


10.100.xx.16:/projects /projects nfs
rw,hard,rsize=32768,wsize=32768,vers=4,nointr,timeo=600,tcp
0 0

(d). nfsstat –m
[root@dcs004 ~]# nfsstat -m
/projects from 10.100.xx.16:/projects/
Flags:
rw,relatime,vers=4,rsize=32768,wsize=32768,namlen=255,hard,proto=tcp,
port=0,timeo=600,retrans=2,sec=sys,clientaddr=10.100.xx.57,minorversi
on=0,local_lock=none,addr=10.100.xx.16

(e). qtree create a new project named guandu

(f). root 登陆,使用 nfs4_getfacl nfs4_setfacl


nfs4_setfacl -a A::wgh@nfsv4.powercore.com.cn:rwaDxtTnNcCy guandu

chown root:root guandu


chmod 700 guandu
[root@dcs004 projects]# nfs4_getfacl guandu/
A::wgh@nfsv4.powercore.com.cn:rwaDxtTnNcCy
A::OWNER@:rwaDxtTnNcCy
A:g:GROUP@:tncy
A::EVERYONE@:tncy

nfs4_setfacl -a A::wgh@nfsv4.powercore.com.cn:rwaDxtTnNcCy guandu

数据备份和归档及 snapshot 等

数据备份,建议多考虑 D2D 的方式。 Netapp 建议采用 snapvault 或者 snapmirror。


Linux 下可以采用 inotify+rsync。同时,备份服务器建议采用廉价的大容量磁
盘或者盘柜。比如 Dell R730xd,12*4TB 做 raid6,然后采用 btrfs 或者 zfs 文
件系统。 通过自动的 snapshot 和 compression feature 实现备份存储的最优化。

传统的 IC 设计环境经常采用的是昂贵的专用存储,比如 netapp。但是未来的趋


势应该是廉价的存储为主,要在廉价存储上实现不弱于专有存储的稳定性和功丰
富功能,还有一段路走。目前主要有两个可能的方向:ServerSAN 和 cloud 存储,
比如 vmware 的 VSAN 和 ceph。我们还可以采购一大堆廉价的盘柜+服务器实现,
按 project 的方式使用 autofs 将负载分开到不同服务器。

我目前已经实现了非常有效的廉价存储系统方案。在千万级别文件的可以实现快
速备份和快速恢复,用户也可以自行恢复误删除的数据。

特别提示:一定要在每周或者每个月备份一份最重要的数据到银行的保险柜,以
防机房或者大楼火灾导致数据完全丢失。

Quota 管理

Quota 一般我们对/home 空间及/data 数据空间实现,主要防止某个用户将数据


在短时间塞满磁盘,导致其他人的工作受到影响。

Quota 实现了类似 cgroup 对内存管理的功能。

目前 netapp 的存储,zfs 和 btrfs 等都可以很好的实现 quota。传统的文件系统,


xfs 也可以毕竟容易实现基于用户或者 group 的 quota,xfs 还可以实现 project
quota。ext3 和 ext4 文件系统也可以实现用户和组的 quota。

对于安全,最后一点总结:安全是一个整体,切勿以点为目标。
附录:

设备和软件的选型推荐(中大型公司):

1. 交换机
华为 CloudEngine 6800 数据中心交换机
48*10G SFP+ 4*40G QSFP+
Cisco Nexus 5000 系列
Cisco Nexus 5672UP 48*10G + 6*40G

2. 服务器
目前推荐 1U 的服务器主要有
戴尔 R630 华为 RH1288 V3
2U 推荐服务器有
戴尔 R730 华为 RH2288 V3 和 RH2288H V3

3. 存储
Netapp 8000 系列(注意 8000 容易被厂家控价)
可以增加一台 2500 作为 D2D 备份用,注意购买 snapvault 或者 snapmirror 的
license。

4. 防火墙设备推荐
Fortigate 1500D
拥有 8 个万兆光口,16 个千兆光口和 16 个千兆电口,以及支持 1200 万并发连
接数和 30 万条每秒新建连接。可以用于隔离数据中心的各种不同等级服务。

5. 登陆软件
EoD 或者 Go-global,更推荐 EoD,其功能要更丰富,可以采用 Gateway 模式,
更加安全可靠。

6. 调度管理
LSF 或者 Openlava。如果是新建,强烈建议采用 Openlava 企业版。具体可以问
我了解,可以省下几百万费用。
设备选择和软件选择推荐(小公司)

1. 交换机
TOR 的交换机推荐华为的即可
S5720-32X-EI-AC
24 个 10/100/1000Base-T 以太网端口,4 个 100/1000 SFP,4 个万兆 SFP+,2 个 QSFP+

S5720-28X-SI-AC
24 个 10/100/1000Base-T 以太网端口,4 个复用的千兆 Combo SFP,4 个万兆 SFP+,含 1 个 150W
交流电源

华三
S5800-32C
24 个 10/100/1000Base-T 以太网端口,4 个 1/10G SFP+端口,1 个业务插槽;

如果服务器比较多,需要采购 24 或者 48 口 10G 的交换机,提供服务器之间更快


的互联。

2. 服务器
目前推荐 1U 的服务器主要有
戴尔 R630 华为 RH1288 V3 浪潮 NF5180M4

2U 推荐服务器有
戴尔 R730 华为 RH2288 V3 和 RH2288H V3 浪潮 NF5280M4

3. 存储
Netapp 2500 和 Netapp 8020(注意 8000 容易被厂家控价)
自行设计可以采用戴尔的服务器+盘柜(MD3060e),价格便宜,稳定性不如专有
存储。建议先用于备份系统。

4. 防火墙设备推荐
Fortigate 200D
深信服

5. 登陆软件
EoD > Go-global > VNC enterprise > X2go > FreeNX > VNC free

6. 调度管理
LSF 或者 Openlava,不推荐采用 SGE

You might also like