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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
楼主: soway

大型IC设计中心的IT环境

[复制链接]
发表于 2016-5-6 14:13:50 | 显示全部楼层
文章写的不错,支持楼主
 楼主| 发表于 2016-5-9 09:25:41 | 显示全部楼层
版本管理

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 -gcvs cvs

#cvs –d /data/cvsroot init


配置环境

$vi ~/.cshrc

$setenv CVSROOT /data/cvsroot


项目的初始导入

进入到你准备到如的初始源代码目录

$cvs import -m "somecomments" 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 "somecomments" 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/cvsrootpserver


}

EOF



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

$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 authenticatedusers may access the repository


Require valid-user


# Howto 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).CreatRepository

基本语法:

$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 checkouthttp://domain/project1/trunk
project1_trunk


[user1@server ~/test]$svn co
http://domain/svn/project1/trunk project1_trunk

Authentication realm: <http://domain:80> Subversionrepository

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
(revision0)

+++ test.txt
(revision0)

@@ -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” [url=]file:///data/svn/project1/trunk/[/url]
[url=]file:///data/svn/project1/tags/version1[/url]

$svn list [url=]file:///data/svn/project1/tags[/url]

version1

B.创建一个Branch

$svn
copy –m “createBranch a”
[url=]file:///data/svn/project1/trunk/[/url]
[url=]file:///data/svn/project1/branches/brancha[/url]

以user1登陆

$svn switch http://domain/svn/project1/branches/brancha

这样以后user1就以brancha作为工作的库目录,从这里开始作为分支。


(7).Merging a Branch


(8).Windows客户端的安装和使用

下载TortoiseSVN-xxx.msi,安装,然后CheckOut一个库的拷贝。


Clisoft SOS介绍

a.
业界最完整的版本控制工具. 具有动态连结及智能快取等强大功能

  • 完整得知所有使用者档案修改, 增减, 开启等记录...
  • 节省硬件的支出, 让系统管理员更有效控制数据的管理与储存
  • 对于硬件和软件设计资源     (design resouce), 设计者可以更有效的取得及运用
  • 单键标注(Tag)整个工作目录下所使用的版本.
  • 数据库快照(Snapshot)及最完整的安全控管机制.
  • 可任意任务分组&#184; 控制组员可擦写之目录及档案
  • 最简易的操作接口, 无需管理员. 工程师一小时上手
  • 提供命令模式, 易于与EDA工具整合.
  • 内建 Bug     Tracking 功能, 可通知同组伙伴所须修改之错误.
  • 提供丰富的管理工具及     Trigger 功能.
  • 与 Cadence     DFII 完整结合
  • 提供工作交接及内部教育训练一个最佳平台环境.
  • 提供最佳异地开发功能



这个软件主要是针对全定制IC设计的, 可以嵌入:

Cadence Virtuoso

Custom IC

Agilent Advanced Design System(ADS)

Mentor Pyxis

Synopsys Laker

Synopsys Custom Designer


sos.png



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 usergit.

New password:

Retype new password:

passwd: all authenticationtokens 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 Gitrepository in /home/git/srv/proj.git/

[git@eda srv]$ ls

proj.git


(4)Clone

[git@eda work]$ git clonegit@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, 9Cwritten

[git@eda proj]$ ls

abc.txt

[git@eda proj]$ pwd

/home/git/work/proj

[git@eda proj]$ git addabc.txt

[git@eda proj]$ git commitabc.txt -m "test file"


*** Please tell me who youare.


Run



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


git config --global user.name "YourName"

需要设置提交者的个人信息

[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 commitabc.txt -m "test file"

[master (root-commit)0455f79] test file


1 file changed, 2 insertions(+)


create mode 100644 abc.txt


[git@eda proj]$ git pushorigin 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 clonegit@localhost:srv/proj.git

[git@eda ~]$ cd proj/

[git@eda proj]$ ls

abc.txt

[git@eda proj]$ git log

commit0455f7997a895e5ffea3f016ec04bf2bdb7b25ad

Author: Guanghui <wanggh@xmail.com>

Date:
Fri Apr 15 21:44:12 2016 +0800



test file

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


权限管理

要方便管理公钥,用Gitosis

要像SVN那样详细地控制权限,用Gitolite

 楼主| 发表于 2016-5-9 09:27:24 | 显示全部楼层
邮件系统

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

当初运营邮件系统的时候,考虑过多方面因素,最后选择托管外部邮件系统,是因为外部托管有几个非常重要的特点:

(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@inmailrhel65]# chkconfig --list|grep sasl

saslauthd
0ff
1ff
2ff
3:off
4:off
5:off
6:off

[root@inmailrhel65]# chkconfig
--level 345 saslauthdon

[root@inmail rhel65]# /etc/init.d/saslauthd start

Starting saslauthd:
[
OK
]

/etc/init.d/postfix
restart

/etc/init.d/dovecotrestart



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

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


由于涉及到安全方面的问题,我这里只讲基本的实现方法及原理

(1)搭建一台内部中转服务器

这台服务器可以访问腾讯托管的服务器,也允许腾讯邮件服务器访问他的25端口用于腾讯服务器发送邮件给它。

(2)防火墙设置端口映射,映射防火墙的25端口到这台中转邮件服务器的25端口。

(3)设置外部邮件的DNSMX解析记录

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

 楼主| 发表于 2016-5-9 09:28:17 | 显示全部楼层
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 –lsyn.log

$bin/lmgrd –c cadence.dat –lcds.log

$bin/lmgrd –c mentor.dat –lmgc.log


然后在客户端设置对应的环境变量即可

$setenv LM_LICENSE_FILE 27000@licserver:1717@licserver:5280@licserver

$lmstat 就可以看到了。

 楼主| 发表于 2016-5-10 09:18:11 | 显示全部楼层
安全外部入侵的防范

外部入侵防范,需要在互联网入口处安装防火墙,入侵检测等手段。同时,对外提供服务的端口最好严格限制能访问的源地址。比如,提供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 netappwith admin account

nfs show -vserver svm_nfs

nfs server modify -vserversvm_nfs -v4-id-domain nfsv4.powercore.com.cn

nfs server modify -vserversvm_nfs
-v4-numeric-ids enabled

vserver modify
-vserver svm_nfs
-ns-switch nis,file


vserver services name-servicens-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::> vservername-mapping show

This table is currentlyempty.

暂时不用,不需要mapping,只是nfs,不需要cifs mapping。


(b). Client

[root@dcs004 projects]# cat/etc/idmapd.conf |more

[General]

#Verbosity = 0

# The following should be setto the local NFSv4 domain name

# The default is the host'sDNS domain name.

#Domain = local.domain.edu

Domain = powercore.com.cn


#chkconfig –add rpcidmapd

#chkconfig –list |greprpcidmapd

# /etc/init.d/rpcidmapdrestart


(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,minorversion=0,local_lock=none,addr=10.100.xx.16


(e). qtree create a newproject named guandu


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

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


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:rwaDxtTnNcCyguandu




数据备份和归档及snapshot

数据备份,建议多考虑D2D的方式。Netapp建议采用snapvault或者snapmirror。Linux下可以采用inotify+rsync。同时,备份服务器建议采用廉价的大容量磁盘或者盘柜。比如DellR730xd,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还可以实现projectquota。ext3和ext4文件系统也可以实现用户和组的quota。


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

 楼主| 发表于 2016-5-13 09:07:59 | 显示全部楼层
附录:


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

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

2410/100/1000Base-T以太网端口,4100/1000 SFP4个万兆SFP+2QSFP+


S5720-28X-SI-AC

2410/100/1000Base-T以太网端口,4个复用的千兆ComboSFP,4个万兆SFP+,1150W交流电源


华三

S5800-32C

2410/100/1000Base-T以太网端口,41/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 > VNCenterprise > X2go > FreeNX > VNC free


6.
调度管理

LSF或者 Openlava,不推荐采用SGE
 楼主| 发表于 2016-5-13 09:11:30 | 显示全部楼层
附件:
大型IC设计中心的IT环境2016v1.pdf (1.75 MB, 下载次数: 579 )
发表于 2016-5-13 10:22:36 | 显示全部楼层
首先感谢楼主的无私分享!
其次,最后的设备推荐如果标明后端服务器数量就更有针对性了!
 楼主| 发表于 2016-5-13 10:37:48 | 显示全部楼层




    后端服务器数量不应该是跟实际规模相关的吗?
凭空估算,我可没那个本事。
发表于 2016-5-16 11:17:14 | 显示全部楼层
回复 55# soway


    干货,谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2024-5-12 23:14 , Processed in 0.034106 second(s), 8 queries , Gzip On, Redis On.

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