在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
楼主: soway

大型IC设计中心的IT环境

[复制链接]
发表于 2016-4-29 09:22:20 | 显示全部楼层
赞!!学习了!
发表于 2016-4-30 17:16:00 | 显示全部楼层
好贴,希望楼主坚持写完。
 楼主| 发表于 2016-5-1 19:17:03 | 显示全部楼层




非常好的问题,你肯定是业内人士。
-----------------------------------------------------------------------------------------------------------------------------
IC行业中,存储对IOPS的要求是非常高的(实际生产环境中的发现),对存储容量要求相同的情况下,如果获得更高的IOPS,除了存储控制器的IOPS限制外,还要考虑单个硬盘的容量问题。一般情况下单盘更小容量,更多的盘,可以带来更高的IOPS。
另外可以提一下存储的空间利用率,往往存储的利用率超过85%(有说90%),读写效率将大幅下降。
实际生产环境中,磁带归档是否是一个效率(备份和恢复)很低的办法?
--------------------------------------------------------------------------------------------------------------------------
回复如下:
要想获得高的IOPS,机械硬盘已经无法应对了。以前的做法一般是raid卡带cache(write back)+ 15000RPM的硬盘。
cache的好处是写入小文件加速,因为直接返回,但是读取依然会很慢。现在大量采用的10000转 2.5 SAS盘,已经算是不错
的了,但是IOPS依然不高。

唯一能解决IOPS的只有SSD,nvme的SSD会更快。

存储超过85% 90%,读写效率大量下降的根本原因是写入算法的改变。
以zfs文件系统举例,zfs文件系统在80%之前,是write anywhere,就是只要有空的地方就写。80%以后,马上改变算法,需要
找一个比较合适的位置写,显然速度一下就下降了。netapp的WALF也有一样的问题。

我写的是磁带归档,而不是主要用于备份。磁带的缺点很多,比如速度慢,无法online方式查询恢复。最大的问题是:你需要找回数据的时候,可能根本读不出来!  所以,它只适合归档,因为一盘一盘磁带,拿出去放银行保险柜,依然是最方便的做法。
当然,如果你可以做到磁盘方式归档,更好。

目前建议的是D2D2T(即磁盘到磁盘备份,然后从备份磁盘归档到磁带)。

因为全闪存太贵,建议大家设计系统的时候,以project的方式分流。将iops要求很高的项目才放入SSD,而普通项目,依然放入大容量的7200RPM或者10000RPM的磁盘系统。

备份系统则毫无疑问,采用7200RPM 3.5寸的大容量磁盘。
 楼主| 发表于 2016-5-3 09:46:45 | 显示全部楼层
接入及登陆环境

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等。对于以上软件,我都有一定程度的接触,所以在此做一个简单评价。

XmangerExceed,属于利用X协议,在windows平台实现的X Server,优点是使用方便,使用的人很多,性能在局域网也不错。缺点就是,一旦用户端跟服务器之间的网络意外终端,或者客户端关机,所有正在服务器上运行的job丢失。

VNC免费版使用非常广泛,其实现了网络断开也不会丢失正在运行的工作。但是免费版限制很多,比如需要用户设置专用的vnc登陆密码,无法禁止用户Copy&Paste服务器数据到本地。另外,VNC协议实现对网络带宽消耗很大,不适合于WAN网络连接。

FreeNX是基于No-Machine免费开源的library实现的免费远程登陆软件。目前有另外一个如日中天的类似软件,叫做X2GoFreeNX基于SSH协议,实现了压缩传输等功能,效率比VNC提高很多。但是其基于SSH协议实现,给系统安全留下了隐患。

VNC Enterprise,实现了更高级的功能,包括验证集成了系统验证,不需要额外设置vnc登陆密码,也可以禁用剪切板等高级功能,还可以通过policy设置。对于小型设计环节,目前是一个非常值得考虑的选择。

Xenappcitrix基于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 windowsfor unix版本。实现上比VNC要快,国内也有商业支持,也比较成熟和稳定。不过其客户端目前只支持windows系统,这点需要注意。如果是中小型公司,可以考虑采用。


桌面系统的选择

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

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


在我的工作中,我推荐过使用fvwm,自定义过一个非常简洁的桌面环境,但是由于定制要求很高,用户使用起来感觉不是很好。不过fvwm可定制性很高,可实现非常棒的一些效果。


后来我选择使用过XFCE,另外一个比较其GNOMEKDE较轻量级的桌面。在2008-2013年,我都认为这是一个不错的桌面环境,在很多地方推荐使用过。但是,xfce的安装包很多,最好通过yum自动安装。我们也逐渐在考虑一个更加合适的窗口管理器。


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




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

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

发表于 2016-5-4 09:49:31 | 显示全部楼层
好文章,多谢楼主分享经验
发表于 2016-5-4 13:27:32 | 显示全部楼层
有看還是沒有懂
发表于 2016-5-4 15:13:30 | 显示全部楼层
好东西要学习啊
 楼主| 发表于 2016-5-5 09:32:36 | 显示全部楼层
设计Job的管理(SGE/LSF)

1. LSF

2. SGE

3. Openlava


LSF

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

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


下图为lsload命令所显示的结果,大家可以看到各台服务器的负载,CPU利用率,剩余内存等信息。



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

lsload.png

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

提交job

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


提交并行job

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


查看当前自己或者其他人的job

$bjobs
(
只查询自己的) $bjobs –u all(所有人的)

然后可以得到jobID

$ bjobs -u all
JOBID USER STAT QUEUE     FROM_HOST EXEC_HOST JOB_NAMESUBMIT_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     Dec11 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公司主要开发和支持。推荐国内的大公司采用,只需要少量的支持费即可。目前主要基于x86linux环境,如果你有其他异构系统,需要联系厂家获取是否可以支持。如果大家对于采用openlava感兴趣,可以联系我,我可以协助测试。前面LSF的示例完全可以通过openlava实现。


发表于 2016-5-5 15:21:38 | 显示全部楼层
cool.
 楼主| 发表于 2016-5-6 13:47:01 | 显示全部楼层
数据管理

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 rulesthat are loaded

-w/test/test/linux-4.3/.get_maintainer.ignore -p r
-k kernelfiles

-w /test/test/linux-4.3/security/inode.c -pr
-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/201510:43:13.610:198339) : item=0 name=test/linux-4.3/drivers/infiniband/hw/cxgb4/t4fw_ri_api.hinode=73185587 dev=00:14 mode=file,664 ouid=root ogid=root rdev=00:00nametype=NORMAL

type=CWD msg=audit(11/03/201510:43:13.610:198339) :
cwd=/tools

type=SYSCALL msg=audit(11/03/201510:43:13.610:198339) : arch=x86_64 syscall=open success=yes exit=3 a0=0x181ede0a1=O_RDONLY|O_NOFOLLOW a2=0x0 a3=0x666e692f73726576 items=1 ppid=39759pid=40352 auid=root uid=root gid=root euid=rootsuid=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/201510:43:13.617:198340) : item=0 name=(null) inode=73185587 dev=00:14mode=file,664 ouid=root ogid=root rdev=00:00 nametype=NORMAL

type=SYSCALL msg=audit(11/03/201510:43:13.617:198340) : arch=x86_64 syscall=flistxattr success=noexit=-95(Operation not supported) a0=0x3 a1=0x0 a2=0x0 a3=0x0 items=1ppid=39759 pid=40352 auid=root uid=root gid=root euid=root suid=root fsuid=rootegid=root sgid=root fsgid=root tty=pts2 ses=13728 comm=mv exe=/bin/mvkey=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是你期望设置的用户名。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-29 01:10 , Processed in 0.040731 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表