從2004年開(kāi)始,我寫(xiě)過(guò)幾次小型IC設(shè)計(jì)中心的IT環(huán)境。比較多的論述了創(chuàng)業(yè)類型的芯片設(shè)計(jì)公司,應(yīng)該怎么去設(shè)計(jì)自己的IT環(huán)境。這10多年間,有不少初創(chuàng)型的公司來(lái)咨詢過(guò)如何更好的規(guī)劃IT系統(tǒng),我都盡力協(xié)助解決。
我本人也在這期間經(jīng)歷過(guò)各種類型的公司,包括提供EDA平臺(tái)的蘇州ICC,做交換機(jī)芯片的CentecNetworks,已經(jīng)被收購(gòu)的Broadcom,做嵌入式CPU的China-Core,以及過(guò)去兩年為其工作的初創(chuàng)大型CPU設(shè)計(jì)公司,IBM Power8在中國(guó)的落地項(xiàng)目中晟宏芯。以上工作經(jīng)歷,給了我很多鍛煉,讓我在面對(duì)各種大小類型的IC設(shè)計(jì)公司的時(shí)候,變得更加成熟。但是,在這個(gè)過(guò)程中,深感國(guó)內(nèi)的IC設(shè)計(jì)公司在IT環(huán)境的建設(shè)方面,跟國(guó)際大公司比較,差距依然非常大。
如何將自己的經(jīng)驗(yàn)分享出來(lái),以提高中國(guó)IC設(shè)計(jì)公司的IT水平,變得越來(lái)越重要,也越來(lái)越緊迫。希望本文有助于目前在中國(guó)逐漸興起的IC設(shè)計(jì)行業(yè),在國(guó)家的大基金項(xiàng)目下,少走彎路,縮小跟國(guó)外的大公司之間的差距。
全文分為11個(gè)章節(jié)論述:
1. 基礎(chǔ)設(shè)施建設(shè)(機(jī)房,弱電間,接入機(jī)房,實(shí)驗(yàn)室機(jī)房及實(shí)驗(yàn)室)
2.網(wǎng)絡(luò)結(jié)構(gòu)
3.系統(tǒng)及存儲(chǔ)布局
4.接入及登陸環(huán)境
5.設(shè)計(jì)Job的管理
6.數(shù)據(jù)管理
7.版本管理
8.郵件系統(tǒng)
9.EDA軟件管理
10.多site協(xié)同
11.安全
基礎(chǔ)設(shè)施建設(shè)
1.供電
2.制冷
3.布線(水、電、弱電)
4.環(huán)控
5.空間及位置考慮
6.交換機(jī)布局,ipmi布局
7.消防
基礎(chǔ)設(shè)施主要包含網(wǎng)絡(luò)、機(jī)房等方面,我這里主要介紹的是機(jī)房的建設(shè)。過(guò)去十多年,我建過(guò)幾臺(tái)服務(wù)器的小機(jī)房,也建過(guò)幾百臺(tái)服務(wù)器的小型數(shù)據(jù)中心??剂康臇|西很多,因?yàn)楸酒饕撌龃笮虸C設(shè)計(jì)中心的IT環(huán)境,所以主要講的是幾百臺(tái)服務(wù)器的機(jī)房。
首先,我們來(lái)看一張機(jī)房的示意圖:
我們可以看到這個(gè)數(shù)據(jù)中心分成了多個(gè)部分:接入機(jī)房,實(shí)驗(yàn)室機(jī)房,消防鋼瓶間,UPS配電間,電池間,主機(jī)房,值班室。
供電
建設(shè)機(jī)房的首要任務(wù)是計(jì)算出你到底需要多少功率的負(fù)荷,然后對(duì)接入電源
跟供電方核對(duì),是否有滿足需求的電力接入。然后可以確定UPS容量,最后通過(guò)設(shè)備的斷電后備時(shí)間要求,計(jì)算出需要多少電池。供電系統(tǒng)是一個(gè)很復(fù)雜的設(shè)計(jì),需要機(jī)房設(shè)計(jì)方認(rèn)真核對(duì),一旦錯(cuò)誤,后期很難補(bǔ)救。
作為用戶方:我們提供的信息主要有:總機(jī)房設(shè)備的最大負(fù)載、供電冗余要求、每機(jī)柜多少KW、電池的后備時(shí)間。
制冷
目前機(jī)房空調(diào)主要有兩種類型:一種是大型的精密空調(diào),通過(guò)上送風(fēng)或者下
送風(fēng)的方式,經(jīng)過(guò)機(jī)房地板形成一個(gè)冷熱回路。這種方式在很多地方使用,優(yōu)點(diǎn)是送風(fēng)集中,運(yùn)維方便。缺點(diǎn)就是噪音大,空調(diào)冷熱路徑長(zhǎng),能耗損失多。另外一種,就是行間空調(diào)。行間空調(diào)顧名思義,就是空調(diào)就位于機(jī)柜旁邊,空調(diào)出來(lái)的冷風(fēng)就被機(jī)柜上放置的服務(wù)器吸入,然后從服務(wù)器后端排出熱空調(diào),形成循環(huán)。
水冷還是風(fēng)冷?
這也是一個(gè)難以取舍的選擇。整體來(lái)說(shuō),風(fēng)冷技術(shù)成熟,能耗比水冷高。但是水冷風(fēng)險(xiǎn)高,因?yàn)楣苈返陌惭b和維護(hù)要求高,一旦漏水,對(duì)機(jī)房來(lái)說(shuō)都是大事故。但是,水冷真的可以很大程度降低能耗。
基于自己的條件,我們選擇了行間空調(diào)風(fēng)冷方式。
布線
機(jī)房布線的考慮,經(jīng)常受到環(huán)境的限制,經(jīng)常我們不得不取舍。主要需要考慮的是水管如何布置,包括加濕器的進(jìn)水管和冷凝水的排水管。強(qiáng)電線纜如何布局以及弱電(雙絞線及光纖線纜)布局。
水管的布局,需要考慮漏水的情況下,對(duì)機(jī)房的影響。機(jī)房漏水從來(lái)不是小問(wèn)題,任何處置不當(dāng),就可能導(dǎo)致機(jī)房停止運(yùn)行。主要有兩方面的水路需要處理,一邊為冷凝水的排出,另外就是加濕器的進(jìn)水。建設(shè)機(jī)房的時(shí)候,建設(shè)方提出想把頂樓的排水管在中間開(kāi)口,通過(guò)這個(gè)排水口去釋放空調(diào)的冷凝水,聽(tīng)起來(lái)不錯(cuò)吧?可如果大雨的情況下,排水管堵塞或者來(lái)不及排出去的時(shí)候,水就會(huì)從排水管的開(kāi)口處,直接往機(jī)房排放。加濕器進(jìn)水一定要前置閥門(mén),隨時(shí)將其管理。否則,自來(lái)水的突然高壓,可能會(huì)導(dǎo)致機(jī)房大面積過(guò)水。由于進(jìn)水管的安裝問(wèn)題,我甚至不得不將加濕器進(jìn)水管完全關(guān)閉,以免發(fā)生意外。水管一般都是從機(jī)房地板下走。
強(qiáng)電的安裝需要注意跟弱電分開(kāi),因?yàn)閺?qiáng)電會(huì)干擾弱電信號(hào)。這就提出了一個(gè)現(xiàn)實(shí)的問(wèn)題:強(qiáng)電到底應(yīng)該走頂部還是地下?因?yàn)轫敳客鶗?huì)走弱電線纜。弱電走頂部的一個(gè)好處是后期維護(hù)和排錯(cuò)更加方便。我這里設(shè)計(jì)方選擇了走地下,地板下有40cm,強(qiáng)電在架設(shè)的橋架上走。但是,因?yàn)榕潘苄枰幸欢ǜ叨?,不得不走了?qiáng)電橋架的上部,這應(yīng)該是一個(gè)失敗的設(shè)計(jì)。但是,如果強(qiáng)電走頂部,弱電怎么辦??jī)烧咧g需要隔離。整體的通道和機(jī)柜設(shè)計(jì)已經(jīng)解決這個(gè)問(wèn)題,所以建議選擇冷通道和機(jī)柜的時(shí)候,選擇好頂部可以分割強(qiáng)弱電布線的產(chǎn)品。這樣可以很好的解決強(qiáng)弱電分離的問(wèn)題,同時(shí)避免了強(qiáng)電跟水路一起走的尷尬。
環(huán)控
機(jī)房環(huán)控需要做到幾個(gè)方面:視頻監(jiān)控,溫濕度,漏水檢測(cè),電話報(bào)警,PUE
的實(shí)時(shí)顯示。
空間及位置考慮
為什么要將接入機(jī)房單獨(dú)出來(lái)
接入機(jī)房負(fù)責(zé)跟外界的溝通,包括各家運(yùn)營(yíng)商的接入線路:電信的互聯(lián)網(wǎng),電信的電話,聯(lián)通的互聯(lián)網(wǎng),專線等。這個(gè)地方經(jīng)常要開(kāi)放給電信聯(lián)通的維護(hù)人員,辦公網(wǎng)絡(luò)的核心設(shè)備也需要放在這里。外網(wǎng)防火墻,門(mén)禁系統(tǒng),OA服務(wù)器等都需要,類似一般公司的小機(jī)房。各辦公樓層的匯聚。這個(gè)機(jī)房設(shè)計(jì),一般可以考慮單獨(dú)的UPS,空調(diào)。
為什么要建一個(gè)單獨(dú)的實(shí)驗(yàn)室機(jī)房?
我們都知道,IC設(shè)計(jì)公司是要做出硬件產(chǎn)品的,而很多工作需要的服務(wù)器,不是IT人員去管理,而是設(shè)計(jì)人員自己做各種測(cè)試使用。如果沒(méi)有一個(gè)獨(dú)立的空間,是無(wú)法做好隔離的。這樣測(cè)試環(huán)境會(huì)讓整個(gè)IT系統(tǒng)不穩(wěn)定。仿真器等設(shè)備需要大功率的制冷和獨(dú)立空間,所以實(shí)驗(yàn)室機(jī)房采取傳統(tǒng)的精密空調(diào),采用下送風(fēng)的方式制冷。
主機(jī)房
我們主機(jī)房按照標(biāo)準(zhǔn)模式,設(shè)計(jì)了獨(dú)立的消防管網(wǎng)系統(tǒng),氣體滅火。UPS配電間跟電池間。UPS設(shè)備目前有模塊化的,可以考慮,避免機(jī)房設(shè)備不足的時(shí)候,UPS浪費(fèi)電力嚴(yán)重的情況發(fā)生。
機(jī)房的位置選擇
這個(gè)涉及的考量很多,很多時(shí)候我們不得不折中考量,這讓人感覺(jué)很無(wú)奈。比如,我們需要考慮樓層的承重,一旦我們考慮建設(shè)機(jī)房的地方,如果樓下是空的,就需要建筑設(shè)計(jì)單位拿出承重設(shè)計(jì)數(shù)據(jù),不能滿足我們需求的情況下,我們需要加固。一般情況下,都是不能滿足的,沒(méi)有哪家建筑設(shè)計(jì)院會(huì)將普通的辦公樓設(shè)計(jì)為承重達(dá)到機(jī)房的要求,除非是廠房設(shè)計(jì)。一般建筑的承重為250kg—500kg,而我們機(jī)房一般要求1000kg-2000kg之間。特別是UPS電池間,這個(gè)地方要求的承重非常高。
如果我們選擇地下沒(méi)有架空的一樓做機(jī)房,當(dāng)然就不需要重新加固建筑承重了,但是一樓往往會(huì)面臨另外一個(gè)問(wèn)題。機(jī)房空調(diào)的外機(jī)往哪兒放?現(xiàn)在的建筑一般都是空調(diào)放在頂樓,如果一樓的機(jī)房到頂樓的距離過(guò)長(zhǎng),會(huì)影響制冷效果,能耗也會(huì)損失更多。另外,一樓還需要防水,特別是暴雨來(lái)臨,如果地勢(shì)低洼,很可能導(dǎo)致倒灌,一旦進(jìn)入機(jī)房,整個(gè)機(jī)房就可能完全停止工作。
所以,機(jī)房的位置選擇起來(lái)非常難。建議一定要提前選擇好地方,且不可將就。
網(wǎng)絡(luò)布局
機(jī)房網(wǎng)絡(luò)設(shè)備主要是交換機(jī),目前主要采用的有集中式布局和分布式布局。
兩種各有優(yōu)缺點(diǎn)。
集中式布局,一般在一個(gè)冷通道采用一臺(tái)大型多插槽的交換機(jī),這樣的布局方式,機(jī)房布線是一個(gè)難點(diǎn),因?yàn)閹装俑W(wǎng)線要布局到核心交換機(jī)處,線纜的連接非常麻煩,好處是解決問(wèn)題的時(shí)候簡(jiǎn)單,且由于交換機(jī)多采用了個(gè)冗余部件,很少出現(xiàn)故障。各個(gè)機(jī)柜之間也基本是線速連接的。
分布式布局,多采用TOR交換機(jī)模式,即每個(gè)機(jī)柜頂部安裝一臺(tái)交換機(jī),然后各交換機(jī)通過(guò)上聯(lián)到核心交換機(jī)處實(shí)現(xiàn)連接。這樣的連接方式,交換機(jī)數(shù)量比較多,可能不得不浪費(fèi)很多端口,因?yàn)槲覀円粋€(gè)機(jī)柜里邊很難會(huì)完全用完交換機(jī)端口(現(xiàn)在一般交換機(jī)都是24口-48口)。這種方式的優(yōu)點(diǎn)是:布線非常簡(jiǎn)潔,只要每機(jī)柜到核心交換機(jī)機(jī)柜布置2根6芯的光纖+2根六類線即可。
建議新建的機(jī)房采用10G TOR交換機(jī)+40G上聯(lián),這是趨勢(shì),服務(wù)器之間采用10G連接的成本已經(jīng)降到足夠低了??梢詽M足一段時(shí)間的需求。
無(wú)論采用分布式還是集中式,都推薦在每個(gè)機(jī)柜上放一臺(tái)簡(jiǎn)單2層交換機(jī),用于設(shè)備的遠(yuǎn)程管理口,比如服務(wù)器的ipmi端口。這樣可以不用隨時(shí)進(jìn)出機(jī)房去開(kāi)啟關(guān)閉服務(wù)器。
消防
機(jī)房的消防,目前主要采取的是七氟丙烷氣體消防。主要考慮的是,提前在
消防部門(mén)審批方案和報(bào)備,必須是當(dāng)?shù)赜匈Y質(zhì)的建設(shè)方。另外,氣體釋放的方式最好是經(jīng)過(guò)監(jiān)控室人工確認(rèn),否則可能導(dǎo)致機(jī)房人員沒(méi)有按時(shí)撤離,窒息而死。
網(wǎng)絡(luò)結(jié)構(gòu)
首先讓我們來(lái)看一個(gè)網(wǎng)絡(luò)的結(jié)構(gòu)示意圖,因?yàn)檫@部分涉及到實(shí)際內(nèi)容,我只能通過(guò)示意圖的方式來(lái)簡(jiǎn)單講一下基本的要求。無(wú)法提供真實(shí)的網(wǎng)絡(luò)結(jié)構(gòu)圖給大家看了。
1.內(nèi)外網(wǎng)隔離
2.研發(fā)網(wǎng)絡(luò)跟辦公網(wǎng)絡(luò)隔離
3.研發(fā)網(wǎng)絡(luò)客戶端跟服務(wù)器隔離
4.MPLSVPN網(wǎng)絡(luò)
內(nèi)外網(wǎng)絡(luò)隔離
我們通過(guò)多層防火墻對(duì)網(wǎng)絡(luò)進(jìn)行了隔離,公司總出口有一個(gè)上網(wǎng)的防火墻,
用于隔離互聯(lián)網(wǎng)跟辦公網(wǎng)。我們對(duì)外提供的有限服務(wù)位于防火墻后面,這也是最容易被外部攻擊的區(qū)域。在這里,我們通過(guò)ACL等措施隔離辦公網(wǎng)絡(luò)流量,防火墻部署入侵檢測(cè)和殺毒等服務(wù)。
研發(fā)網(wǎng)絡(luò)跟辦公網(wǎng)絡(luò)隔離
研發(fā)網(wǎng)絡(luò)指的是我們?cè)O(shè)計(jì)芯片的網(wǎng)絡(luò)。這里一般采用兩種方式隔離,一種
是物理隔離,另一種是邏輯隔離,各有優(yōu)缺點(diǎn),按需采用即可。物理隔離的優(yōu)點(diǎn)是安全,任何通過(guò)網(wǎng)絡(luò)入侵的機(jī)會(huì)將為零。但是缺點(diǎn)是實(shí)用性和方便性遇到困難,無(wú)法做到多個(gè)異地site協(xié)同工作。邏輯隔離是采用各種安全規(guī)范,嚴(yán)格限制研發(fā)網(wǎng)絡(luò)跟辦公網(wǎng)絡(luò)的交互,實(shí)現(xiàn)即時(shí)辦公網(wǎng)絡(luò)被入侵,依然可以保證研發(fā)網(wǎng)絡(luò)安全的網(wǎng)絡(luò)設(shè)計(jì)。這種優(yōu)點(diǎn)是可以多site協(xié)助,跟外部交流容易。缺點(diǎn)就是存在安全錯(cuò)誤導(dǎo)致的安全風(fēng)險(xiǎn)存在可能。
研發(fā)網(wǎng)絡(luò)的客戶端跟服務(wù)器分離
研發(fā)網(wǎng)絡(luò)的服務(wù)器端一般位于機(jī)房?jī)?nèi),而客戶端位于工位。兩者之間如果不
能有效隔離,就會(huì)造成安全風(fēng)險(xiǎn)點(diǎn)大面積增加。同時(shí),對(duì)內(nèi)的安全防護(hù)就無(wú)從談起。使用,我們一般會(huì)在登陸客戶端跟設(shè)計(jì)服務(wù)器之間采用防火墻來(lái)隔離。同時(shí),登陸服務(wù)器也需要采取各種安全措施,避免被內(nèi)部用戶入侵控制。
MPLS VPN網(wǎng)絡(luò)
專線網(wǎng)絡(luò)有多種,常用的可能有MSTP/SDHMPLS。SDH專線主要用在國(guó)內(nèi)
點(diǎn)對(duì)點(diǎn)電路上,相當(dāng)于給提供物理鏈路給你。這種方式優(yōu)點(diǎn)是點(diǎn)對(duì)點(diǎn),只要電路不斷,你的網(wǎng)絡(luò)一定不會(huì)跟其他共享帶寬。MPLS VPN是用的更多的專線方式,其特點(diǎn)是環(huán)狀組網(wǎng),使用邏輯隔離,將數(shù)據(jù)從一個(gè)大的帶寬網(wǎng)絡(luò)中隔離出來(lái),運(yùn)營(yíng)商采用各種方式盡量保證你的帶寬符合你申請(qǐng)的帶寬。
如果只是兩點(diǎn),可以考慮SDH,如果是多點(diǎn),建議還是用MPLS VPN比較合適。專線方式可以提供比互聯(lián)網(wǎng)ipsec vpn更好的穩(wěn)定性,建議研發(fā)的工作環(huán)境采用。而對(duì)于穩(wěn)定性要求不高的應(yīng)用,建議還是采用傳統(tǒng)的ipsec vpn方式節(jié)省費(fèi)用,比較專線每月都需要付出一大筆錢。
額外提示一點(diǎn):目前研發(fā)設(shè)計(jì)網(wǎng)絡(luò),經(jīng)常需要使用google等搜索引擎查詢資料。國(guó)內(nèi)的網(wǎng)絡(luò)連接國(guó)外有防火墻封鎖,同時(shí)兩大運(yùn)營(yíng)商的問(wèn)題導(dǎo)致訪問(wèn)國(guó)外異常慢,丟包率非常高。解決這類問(wèn)題,目前有幾個(gè)辦法:方法一,購(gòu)買一些vpn服務(wù)賬號(hào),適合個(gè)人使用。方法二、公司拉一條專線到香港,通過(guò)香港本地上internet。適合公司一起使用的,但是這種方式成本很高,差不多1000元/M,一條10M的線路需要每個(gè)月一萬(wàn)了。方法三、通過(guò)上面所述的MPLS VPN,路由到國(guó)外再上internet,類似方法二,只是成本更高,如果剛好有上下線非對(duì)稱應(yīng)用,比如國(guó)外分部主要通過(guò)MPLS訪問(wèn)總部資源的時(shí)候,主要是下行帶寬,總部可以利用其上行帶寬。方法四、采用SDN的方式和云計(jì)算結(jié)合,通過(guò)公有云實(shí)現(xiàn)這類應(yīng)用,成本在100-300RMB/兆之間,非常適合小公司。
系統(tǒng)和存儲(chǔ)布局
1. CPU架構(gòu)及OS考慮
3.DNS/NTP
4.Email
5.存儲(chǔ):zfs/netapp
6.NFS v3/v4和AFS GPFS之間的優(yōu)缺點(diǎn)
CPU架構(gòu)及OS
看過(guò)我以前文章的朋友,一定會(huì)記得,2004年,我推薦Solaris8。2008年推薦的OS是RHEL3和RHEL4,到了2013年我寫(xiě)的文章,已經(jīng)推薦RHEL5了。今天(2015年底)我推薦的是RHEL6.7。推薦OS必須跟當(dāng)時(shí)所處的情況有關(guān),目前三大軟件商cadence synopsys mentor都已經(jīng)支持RHEL6,所以采用RHEL6毫無(wú)問(wèn)題。我們目前全部都采用的是RHEL6.7的OS。
CPU架構(gòu)方面,依然推薦Intel的E5-2600v3和v4雙路服務(wù)器,特殊情況可以考慮E7的4路服務(wù)器。作為一家主要引入IBM Power8處理器設(shè)計(jì)的公司來(lái)說(shuō),采用intel的CPU是不是有些特別的意味?一點(diǎn)也不奇怪,因?yàn)镋DA vendor的主要軟件都是支持x86的處理器,只有少量軟件會(huì)支持AIX+Power。而從性價(jià)比來(lái)說(shuō),顯然x86更有優(yōu)勢(shì)。
OS安裝需要采用kickstart實(shí)現(xiàn)一致性安裝,即所有服務(wù)器跑的系統(tǒng)和軟件包都一樣。實(shí)現(xiàn)本地的OS image和epel庫(kù),然后通過(guò)pssh等分布式管理工具實(shí)現(xiàn)軟件安裝的一致性要求。
認(rèn)證
用戶認(rèn)證,必須實(shí)現(xiàn)統(tǒng)一賬號(hào),在任何系統(tǒng)下,最好是同一個(gè)賬號(hào)和密碼。
目前能夠?qū)崿F(xiàn)這個(gè)條件,需要windows的Active Directory和NIS或者LDAP統(tǒng)一。
我這里采用了windows 2008R2 + NIS來(lái)實(shí)現(xiàn),使用NIS這么古老的認(rèn)證技術(shù)主要是考慮了其簡(jiǎn)單方便性,沒(méi)有過(guò)多考慮其他如安全等特性。
Windows 2008R2,集成可SFU的功能,可以為unix用戶設(shè)置一些特性,比如uid gid shell home,另外,還提供NIS服務(wù)器功能,可以實(shí)現(xiàn)windows賬號(hào)和unix賬號(hào)的統(tǒng)一。
采用NIS的原因是我們會(huì)在后面實(shí)現(xiàn)autofs功能,這樣PXE安裝的Linux服務(wù)器就不需要掛載很多文件系統(tǒng),而直接采用autofs的方式掛載。
在未來(lái),Unix下認(rèn)證應(yīng)該會(huì)跟逐步LDAP集成。
DNS/NTP
實(shí)現(xiàn)內(nèi)部DNS服務(wù)功能可以提供內(nèi)部服務(wù)器之間的便捷訪問(wèn),從而擺脫記憶
ip地址的麻煩。某些服務(wù)器在采用了內(nèi)部dns后,可以更容易使用。目前提供dns服務(wù)器的主要有兩個(gè)程序:bind和dnsmasq。前者是傳統(tǒng)的dns服務(wù)器,功能強(qiáng)大。后者是簡(jiǎn)單的dns+dhcp服務(wù),一般用于小型環(huán)境。優(yōu)點(diǎn)就是便捷,使用方便。具體服務(wù)器搭建,這里不再詳細(xì)介紹,提醒一點(diǎn)是dnsmasq默認(rèn)不提供跨vlan的dns服務(wù),需要綁定interface。
內(nèi)部ntp服務(wù)在這種環(huán)境下幾乎是必須的。Ntp可實(shí)現(xiàn)內(nèi)部時(shí)間的統(tǒng)一,避免認(rèn)證失敗或者文件時(shí)間沖突等問(wèn)題。Ntp服務(wù)器的實(shí)現(xiàn)非常簡(jiǎn)單,不做介紹,注意要周期性跟ntp服務(wù)器同步時(shí)間。
Email系統(tǒng)
Email依然是當(dāng)前企業(yè)通信的最主要方式,所以email系統(tǒng)的選擇也是一個(gè)重
要的工作。由于我們公司采用了內(nèi)外網(wǎng)隔離的方式,所以我們的平時(shí)跟外部聯(lián)系的郵件系統(tǒng)跟內(nèi)部郵件系統(tǒng)是完全獨(dú)立的兩套。
外部郵件系統(tǒng)主要考慮的是防病毒,防垃圾郵件,安全,可維護(hù)性及盡量少的中斷時(shí)間。基于以上考慮,我們最終選擇了托管出去的方式。以前在多家公司,都用了自己搭建的郵件系統(tǒng),包括exchange或者其他專業(yè)的郵件軟件,開(kāi)放25端口來(lái)跟外部通信。其中最麻煩的事情不是安全,而是垃圾郵件太多。如果公司自己購(gòu)買一臺(tái)垃圾郵件過(guò)濾系統(tǒng),費(fèi)用很高且可能一定程度誤報(bào)誤刪,這樣對(duì)公司來(lái)說(shuō)是無(wú)法接受的。由于新建公司沒(méi)有多少郵件遷移的任務(wù),我們最終采用了托管出去的方式,按用戶付費(fèi),這樣完全避免了垃圾郵件的困擾。
內(nèi)部郵件系統(tǒng),我們采用了postfix來(lái)自己搭建一套??紤]到有需求,我們采取措施,讓托管出去的郵件可以直接轉(zhuǎn)發(fā)到內(nèi)部郵件服務(wù)器上。這里涉及到了一個(gè)中轉(zhuǎn)服務(wù)器。
存儲(chǔ)
存儲(chǔ)系統(tǒng)的選擇非常重要,幾乎決定了后期整個(gè)系統(tǒng)性能的關(guān)鍵因素。在IC
設(shè)計(jì)行業(yè)中,有幾個(gè)重要因素需要考慮:實(shí)時(shí)壓縮、高速SSD做緩存、重復(fù)數(shù)據(jù)刪除、snapshot、NFS v4 ACL、Backup。
對(duì)于以上特點(diǎn),我這里簡(jiǎn)要介紹需要的原因:
實(shí)時(shí)壓縮,可以很大程度減少存儲(chǔ)容量的使用。在IC設(shè)計(jì)中,經(jīng)??梢宰龅?倍的壓縮率,即容量提升了一倍。同時(shí),還提升了IO能力,因?yàn)閴嚎s后的數(shù)據(jù)更小,有利于讀寫(xiě)。現(xiàn)代的CPU都很快,壓縮不會(huì)帶來(lái)太大的負(fù)擔(dān)。所以,可以放心使用。
高速SSD緩存,全閃存太貴,而采用SSD做緩存的方案,可以很大程度上將熱點(diǎn)數(shù)據(jù)放在高速SSD上,遇到調(diào)用的時(shí)候不再去磁盤(pán)中尋找,這樣可以很大程度上提供IOPS,是一種利用較低成本提供了較大效益的方案。
重復(fù)數(shù)據(jù)刪除,重復(fù)數(shù)據(jù)刪除功能可以在很大程度上減少磁盤(pán)空間的使用量,特別是針對(duì)某些應(yīng)用,比如虛擬化及多版本開(kāi)發(fā)環(huán)境。
Snapshot,這里的snapshot一定要跟SAN盤(pán)陣的區(qū)分開(kāi)來(lái),也跟LVM的不一樣?;趎etapp和zfs的snapshot功能,允許用戶自我管理不小心刪除的數(shù)據(jù),隨時(shí)自己去恢復(fù),減少管理員的麻煩。提高了用戶的滿意度。
NFSv4 ACL,由于其提供了很多高級(jí)特性,可以實(shí)現(xiàn)項(xiàng)目的管理方式,讓項(xiàng)目經(jīng)理去管理目錄的權(quán)限,將IT從權(quán)限管理的繁瑣中解脫,同時(shí),給項(xiàng)目經(jīng)理足夠大的自由度,讓他們更快捷的實(shí)現(xiàn)自己的要求。
備份,是一個(gè)重要的話題,數(shù)據(jù)備份可能永遠(yuǎn)都是在做后備,但是一旦需要恢復(fù),備份就顯得格外重要。目前主要考慮采用D2D的備份+磁帶歸檔的方式實(shí)現(xiàn)長(zhǎng)期的數(shù)據(jù)備份需求。
由于我們的環(huán)境主要是NAS存儲(chǔ)的NFS共享,滿足以上要求的主要有netapp的存儲(chǔ)及基于zfs的存儲(chǔ)系統(tǒng),如oracle ZS4nexentastor等。
目前在國(guó)內(nèi)做支持最好的依然是netapp存儲(chǔ),但是netapp的銷售策略要小心,存在銷售控制價(jià)格的行為特別嚴(yán)重,甚至可以做到價(jià)格差異30%-50%的情況。因?yàn)槭菂^(qū)域控價(jià),你如果選定了必須用它,幾乎無(wú)任何的議價(jià)能力,被迫接受高價(jià)。在大廠商面前,用戶很弱勢(shì)。唯一的反擊就是絕對(duì)不要選擇某一家廠商的產(chǎn)品作為采購(gòu)要求。
NFSv3/v4及AFS GPFS文件系統(tǒng)的優(yōu)缺點(diǎn)
NFS v3是過(guò)去和當(dāng)前依然在大量使用的協(xié)議,幾乎所有的系統(tǒng)都能支持,使
用和配置也很簡(jiǎn)單。但是,nfsv3缺乏一些特性,如安全性不足,缺乏更嚴(yán)格的acl支持,缺乏并行支持等。所以,后來(lái)開(kāi)發(fā)了nfs v4,提供了更加先進(jìn)的一些功能。我們主要會(huì)使用到nfs v4的功能就是nfs v4 acl支持。目前很多測(cè)試環(huán)境下,nfs v3的性能依然比nfs v4更快。所以,除了需要設(shè)置acl的時(shí)候,否則其他地方應(yīng)該掛載nfs v3為主。
AFS文件系統(tǒng)是另外一種主要的網(wǎng)絡(luò)文件系統(tǒng),其提供了很多優(yōu)秀的功能,比如本地cache,acl,quota,分布式等。但是,國(guó)內(nèi)很少用到,商業(yè)化支持也不足,所以不建議使用。
GPFS是IBM開(kāi)發(fā)的商業(yè)產(chǎn)品,可以實(shí)現(xiàn)分布式,如果不考慮費(fèi)用問(wèn)題,可以考慮在某些關(guān)鍵的應(yīng)用中采用。
--------------------------
網(wǎng)友提問(wèn):
IC行業(yè)中,存儲(chǔ)對(duì)IOPS的要求是非常高的(實(shí)際生產(chǎn)環(huán)境中的發(fā)現(xiàn)),對(duì)存儲(chǔ)容量要求相同的情況下,如果獲得更高的IOPS,除了存儲(chǔ)控制器的IOPS限制外,還要考慮單個(gè)硬盤(pán)的容量問(wèn)題。一般情況下單盤(pán)更小容量,更多的盤(pán),可以帶來(lái)更高的IOPS。另外可以提一下存儲(chǔ)的空間利用率,往往存儲(chǔ)的利用率超過(guò)85%(有說(shuō)90%),讀寫(xiě)效率將大幅下降。實(shí)際生產(chǎn)環(huán)境中,磁帶歸檔是否是一個(gè)效率(備份和恢復(fù))很低的辦法?
----------------------------------------
非常好的問(wèn)題,你肯定是業(yè)內(nèi)人士。-------------------------------------------------------------------------------------回復(fù)如下:要想獲得高的IOPS,機(jī)械硬盤(pán)已經(jīng)無(wú)法應(yīng)對(duì)了。以前的做法一般是raid卡帶cache(write back)+ 15000RPM的硬盤(pán)。cache的好處是寫(xiě)入小文件加速,因?yàn)橹苯臃祷?,但是讀取依然會(huì)很慢?,F(xiàn)在大量采用的10000轉(zhuǎn) 2.5 SAS盤(pán),已經(jīng)算是不錯(cuò)的了,但是IOPS依然不高。唯一能解決IOPS的只有SSD,nvme的SSD會(huì)更快。存儲(chǔ)超過(guò)85% 90%,讀寫(xiě)效率大量下降的根本原因是寫(xiě)入算法的改變。以zfs文件系統(tǒng)舉例,zfs文件系統(tǒng)在80%之前,是write anywhere,就是只要有空的地方就寫(xiě)。80%以后,馬上改變算法,需要找一個(gè)比較合適的位置寫(xiě),顯然速度一下就下降了。netapp的WALF也有一樣的問(wèn)題。我寫(xiě)的是磁帶歸檔,而不是主要用于備份。磁帶的缺點(diǎn)很多,比如速度慢,無(wú)法online方式查詢恢復(fù)。最大的問(wèn)題是:你需要找回?cái)?shù)據(jù)的時(shí)候,可能根本讀不出來(lái)!所以,它只適合歸檔,因?yàn)橐槐P(pán)一盤(pán)磁帶,拿出去放銀行保險(xiǎn)柜,依然是最方便的做法。當(dāng)然,如果你可以做到磁盤(pán)方式歸檔,更好。目前建議的是D2D2T(即磁盤(pán)到磁盤(pán)備份,然后從備份磁盤(pán)歸檔到磁帶)。因?yàn)槿W存太貴,建議大家設(shè)計(jì)系統(tǒng)的時(shí)候,以project的方式分流。將iops要求很高的項(xiàng)目才放入SSD,而普通項(xiàng)目,依然放入大容量的7200RPM或者10000RPM的磁盤(pán)系統(tǒng)。備份系統(tǒng)則毫無(wú)疑問(wèn),采用7200RPM 3.5寸的大容量磁盤(pán)。
--------------------------
接入及登陸環(huán)境
1. VPN是否可以?VPN至少要做到雙因素驗(yàn)證
2.如何避免設(shè)計(jì)人員copy&paste。
3.登陸軟件的選擇:VNC Xenapp NX Go-global EoD等
4.桌面系統(tǒng):GNOME KDE ICEWM FVWM XFCE
如何考慮移動(dòng)VPN接入
提供移動(dòng)VPN接入就相當(dāng)于在內(nèi)部網(wǎng)絡(luò)開(kāi)放了一個(gè)接口,讓外部的用戶可以
隨時(shí)隨地訪問(wèn)內(nèi)部網(wǎng)絡(luò)。所以,首先要評(píng)估是否可以做到足夠的安全級(jí)別,讓非法的用戶無(wú)法通過(guò)竊取賬號(hào)等方式登錄你的網(wǎng)絡(luò)。
VPN接入,需要至少做到雙因素的認(rèn)證。主流的做法包括RSA SecureID這種基于時(shí)間的雙因素或者USB Key基于證書(shū)的雙因素。當(dāng)前,還需要考慮VPN支持移動(dòng)客戶端和MAC OSX系統(tǒng)。因?yàn)?,這兩方面的用戶越來(lái)越多了,有更多的接入需求。
如何避免設(shè)計(jì)人員copy&Paste數(shù)據(jù)
IC設(shè)計(jì)中,一般都在服務(wù)器完成,但是也需要用戶從終端登錄服務(wù)器。如果用戶可以將服務(wù)器的文本copy到本地終端,那么就存在帶走的可能性。我對(duì)于數(shù)據(jù)安全的主要觀點(diǎn)是:數(shù)據(jù)需要位于服務(wù)器上,用戶無(wú)法物理接觸的數(shù)據(jù)才是安全的。數(shù)據(jù)分級(jí),防止一個(gè)用戶擁有所有數(shù)據(jù)的權(quán)限,可以防止被某人獲得全部數(shù)據(jù)。帶出數(shù)據(jù)需要審核及歸檔,這樣做到有據(jù)可查。
目前的登陸軟件,很多可以禁止用戶剪切板的數(shù)據(jù)copy到用戶端。同時(shí),采用防火墻,防止用戶直接從內(nèi)部服務(wù)器主動(dòng)連接客戶端獲取數(shù)據(jù)。
登陸軟件的選擇
目前小公司普遍采用的登錄軟件有Xmanager/Exceed/VNC/FreeNX,而大公司普遍采用的有Xenapp/NX/EoD/Go-Global等。對(duì)于以上軟件,我都有一定程度的接觸,所以在此做一個(gè)簡(jiǎn)單評(píng)價(jià)。
Xmanger和Exceed,屬于利用X協(xié)議,在windows平臺(tái)實(shí)現(xiàn)的X Server,優(yōu)點(diǎn)是使用方便,使用的人很多,性能在局域網(wǎng)也不錯(cuò)。缺點(diǎn)就是,一旦用戶端跟服務(wù)器之間的網(wǎng)絡(luò)意外終端,或者客戶端關(guān)機(jī),所有正在服務(wù)器上運(yùn)行的job丟失。
VNC免費(fèi)版使用非常廣泛,其實(shí)現(xiàn)了網(wǎng)絡(luò)斷開(kāi)也不會(huì)丟失正在運(yùn)行的工作。但是免費(fèi)版限制很多,比如需要用戶設(shè)置專用的vnc登陸密碼,無(wú)法禁止用戶Copy&Paste服務(wù)器數(shù)據(jù)到本地。另外,VNC協(xié)議實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)帶寬消耗很大,不適合于WAN網(wǎng)絡(luò)連接。
FreeNX是基于No-Machine免費(fèi)開(kāi)源的library實(shí)現(xiàn)的免費(fèi)遠(yuǎn)程登陸軟件。目前有另外一個(gè)如日中天的類似軟件,叫做X2Go。FreeNX基于SSH協(xié)議,實(shí)現(xiàn)了壓縮傳輸?shù)裙δ埽时萔NC提高很多。但是其基于SSH協(xié)議實(shí)現(xiàn),給系統(tǒng)安全留下了隱患。
VNC Enterprise,實(shí)現(xiàn)了更高級(jí)的功能,包括驗(yàn)證集成了系統(tǒng)驗(yàn)證,不需要額外設(shè)置vnc登陸密碼,也可以禁用剪切板等高級(jí)功能,還可以通過(guò)policy設(shè)置。對(duì)于小型設(shè)計(jì)環(huán)節(jié),目前是一個(gè)非常值得考慮的選擇。
Xenapp是citrix基于ICA協(xié)議實(shí)現(xiàn)的登陸方式,最新的基于Unix的是2008年前后發(fā)布的Unix 4.0 FP2版本。Citrix的中心已經(jīng)轉(zhuǎn)向了windows,及時(shí)是最新發(fā)布xendesktop linux版本,也并沒(méi)認(rèn)真去做,集成很困難。不過(guò),當(dāng)年Broadcom是基于solaris 10+ citrix for unix fp2實(shí)現(xiàn)的登陸環(huán)境,不知道五年過(guò)去了,是否已經(jīng)改變。
Nomachine公司發(fā)布的NX商業(yè)版本可以支持更多功能,國(guó)內(nèi)有幾個(gè)公司在使用,具體功能不了解,比如如何實(shí)現(xiàn)及時(shí)采用SSH協(xié)議,也不擔(dān)心被設(shè)置轉(zhuǎn)發(fā)隧道,從而解決安全問(wèn)題的。
EoD的全稱是Exceed On Demand。軟件費(fèi)用昂貴,國(guó)內(nèi)使用的人很少,目前我知道的是IBM基于EoD實(shí)現(xiàn)登陸。EoD軟件可以禁用Copy&Paste,同時(shí)gateway模式可以讓用戶無(wú)法直接在EoD服務(wù)器上工作,讓EoD服務(wù)器實(shí)現(xiàn)gateway轉(zhuǎn)發(fā)即可。EoD可實(shí)現(xiàn)share桌面,對(duì)于遠(yuǎn)程會(huì)議共享桌面和需要遠(yuǎn)程協(xié)助debug的時(shí)候非常有用。推薦不差錢的大公司選擇EoD,是我見(jiàn)過(guò)最佳的登陸軟件了。
Go-Global是另外一個(gè)登陸軟件,分為for windows和for unix版本。實(shí)現(xiàn)上比VNC要快,國(guó)內(nèi)也有商業(yè)支持,也比較成熟和穩(wěn)定。不過(guò)其客戶端目前只支持windows系統(tǒng),這點(diǎn)需要注意。如果是中小型公司,可以考慮采用。
桌面系統(tǒng)的選擇
我一直反對(duì)使用重型桌面環(huán)境,比如Gnome和KDE,畢竟幾百人的公司,登陸服務(wù)器就那么兩臺(tái),一旦使用GNOME和KDE,整個(gè)系統(tǒng)負(fù)載是非常高的。而我們的設(shè)計(jì)工程師,根本不需要那么復(fù)雜的桌面環(huán)境,最簡(jiǎn)單的才是最高效的。
在我的工作中,我推薦過(guò)使用fvwm,自定義過(guò)一個(gè)非常簡(jiǎn)潔的桌面環(huán)境,但是由于定制要求很高,用戶使用起來(lái)感覺(jué)不是很好。不過(guò)fvwm可定制性很高,可實(shí)現(xiàn)非常棒的一些效果。
后來(lái)我選擇使用過(guò)XFCE,另外一個(gè)比較其GNOME和KDE較輕量級(jí)的桌面。在2008年-2013年,我都認(rèn)為這是一個(gè)不錯(cuò)的桌面環(huán)境,在很多地方推薦使用過(guò)。但是,xfce的安裝包很多,最好通過(guò)yum自動(dòng)安裝。我們也逐漸在考慮一個(gè)更加合適的窗口管理器。
2015年,一個(gè)新的同事推薦了icewm。我認(rèn)為目前這個(gè)是最合適IC設(shè)計(jì)公司工程師的窗口管理器了。
可以實(shí)現(xiàn)多個(gè)桌面,添加需要的一些xterm和gnome-terminal firefox等工具。
推薦:大公司首選icewm,其次可以考慮xfce。小公司建議多考慮xfce。
設(shè)計(jì)Job的管理(SGE/LSF)
1. LSF
2. SGE
3. Openlava
LSF
LSF是目前主要采用的任務(wù)管理軟件,目前歸屬于IBM,最新的版本是9。幾乎所有大的IC設(shè)計(jì)公司都采用的是LSF的軟件來(lái)做負(fù)載均衡。不過(guò),這個(gè)軟件是商業(yè)軟件,授權(quán)費(fèi)比較貴,大約要1-2萬(wàn)一臺(tái)服務(wù)器(以core計(jì)費(fèi))。
下圖為lsload命令所顯示的結(jié)果,大家可以看到各臺(tái)服務(wù)器的負(fù)載,CPU利用率,剩余內(nèi)存等信息。
LSF會(huì)自動(dòng)去調(diào)度,找出最佳的后臺(tái)服務(wù)器,盡量做到負(fù)載均衡。所有的后臺(tái)服務(wù)器,用戶都不能直接登錄去run,這是由系統(tǒng)和網(wǎng)絡(luò)結(jié)構(gòu)限制的。但是,對(duì)于用戶,要讓所有的操作做到最簡(jiǎn)單,用戶不需要去了解復(fù)雜的后臺(tái)設(shè)計(jì)。
這里介紹一下LSF的一些使用
提交job
$bsub my_jobJob <1234> is submitted to default queue
提交并行job
$ bsub -n 8 myjobmyjob以并行JOB的方式執(zhí)行,且需要8個(gè)cpu cores。比如在腳本中,hspice使用了-mt 8的情況下。用上面的命令會(huì)讓lsf幫你找到空閑的8個(gè)cpu core之后才提交給具體執(zhí)行的主機(jī)。
查看當(dāng)前自己或者其他人的job
$bjobs(只查詢自己的) $bjobs –u all(所有人的)
然后可以得到j(luò)obID
$ bjobs -u allJOBID USER STAT QUEUE FROM_HOST EXEC_HOST JOB_NAMESUBMIT_TIME1004 user1 RUN short hostA hostA job0 Dec 16 09:231235 user3 PEND priority hostM job1 Dec 11 13:551234 user2 SSUSP normal hostD hostM job3 Dec 11 10:091250 user1 PEND short hostA job4 Dec11 13:59
Kill掉自己的某個(gè)job
$ bkill 1234Job <1234> is being terminated
掛起和恢復(fù)job
$ bstop 3421Job <3421> is being stopped
$ bresume 3421Job <3421> is being resumed
查看job的輸出
$ bpeek 1234<< output from stdout >>
查看服務(wù)器負(fù)載
$lsload
查看服務(wù)器狀態(tài)
$bhosts
查看job的詳細(xì)信息
$bjobs –l 1234
SGE
目前SGE是免費(fèi)且開(kāi)源的,國(guó)內(nèi)也有不少公司在使用。但是使用起來(lái),感覺(jué)差異很大,可能是習(xí)慣問(wèn)題,我始終無(wú)法適應(yīng)SGE。我也不推薦使用sge。
Openlava
前面介紹了LSF是商業(yè)軟件,授權(quán)費(fèi)比較昂貴。這里推薦一個(gè)兼容LSF命令的軟件,Openlava,其基于LSF 4.2發(fā)布的開(kāi)源版本,目前最新的是3.3,由Teraproc公司主要開(kāi)發(fā)和支持。推薦國(guó)內(nèi)的大公司采用,只需要少量的支持費(fèi)即可。目前主要基于x86的linux環(huán)境,如果你有其他異構(gòu)系統(tǒng),需要聯(lián)系廠家獲取是否可以支持。如果大家對(duì)于采用openlava感興趣,可以聯(lián)系我,我可以協(xié)助測(cè)試。前面LSF的示例完全可以通過(guò)openlava實(shí)現(xiàn)。
設(shè)計(jì)Job的管理(SGE/LSF)
1. LSF
2. SGE
3. Openlava
LSF
LSF是目前主要采用的任務(wù)管理軟件,目前歸屬于IBM,最新的版本是9。幾乎所有大的IC設(shè)計(jì)公司都采用的是LSF的軟件來(lái)做負(fù)載均衡。不過(guò),這個(gè)軟件是商業(yè)軟件,授權(quán)費(fèi)比較貴,大約要1-2萬(wàn)一臺(tái)服務(wù)器(以core計(jì)費(fèi))。
下圖為lsload命令所顯示的結(jié)果,大家可以看到各臺(tái)服務(wù)器的負(fù)載,CPU利用率,剩余內(nèi)存等信息。
LSF會(huì)自動(dòng)去調(diào)度,找出最佳的后臺(tái)服務(wù)器,盡量做到負(fù)載均衡。所有的后臺(tái)服務(wù)器,用戶都不能直接登錄去run,這是由系統(tǒng)和網(wǎng)絡(luò)結(jié)構(gòu)限制的。但是,對(duì)于用戶,要讓所有的操作做到最簡(jiǎn)單,用戶不需要去了解復(fù)雜的后臺(tái)設(shè)計(jì)。
這里介紹一下LSF的一些使用
提交job
$bsub my_jobJob <1234> is submitted to default queue
提交并行job
$ bsub -n 8 myjobmyjob以并行JOB的方式執(zhí)行,且需要8個(gè)cpu cores。比如在腳本中,hspice使用了-mt 8的情況下。用上面的命令會(huì)讓lsf幫你找到空閑的8個(gè)cpu core之后才提交給具體執(zhí)行的主機(jī)。
查看當(dāng)前自己或者其他人的job
$bjobs(只查詢自己的) $bjobs –u all(所有人的)
然后可以得到j(luò)obID
$ bjobs -u allJOBID USER STAT QUEUE FROM_HOST EXEC_HOST JOB_NAMESUBMIT_TIME1004 user1 RUN short hostA hostA job0 Dec 16 09:231235 user3 PEND priority hostM job1 Dec 11 13:551234 user2 SSUSP normal hostD hostM job3 Dec 11 10:091250 user1 PEND short hostA job4 Dec11 13:59
Kill掉自己的某個(gè)job
$ bkill 1234Job <1234> is being terminated
掛起和恢復(fù)job
$ bstop 3421Job <3421> is being stopped
$ bresume 3421Job <3421> is being resumed
查看job的輸出
$ bpeek 1234<< output from stdout >>
查看服務(wù)器負(fù)載
$lsload
查看服務(wù)器狀態(tài)
$bhosts
查看job的詳細(xì)信息
$bjobs –l 1234
SGE
目前SGE是免費(fèi)且開(kāi)源的,國(guó)內(nèi)也有不少公司在使用。但是使用起來(lái),感覺(jué)差異很大,可能是習(xí)慣問(wèn)題,我始終無(wú)法適應(yīng)SGE。我也不推薦使用sge。
Openlava
前面介紹了LSF是商業(yè)軟件,授權(quán)費(fèi)比較昂貴。這里推薦一個(gè)兼容LSF命令的軟件,Openlava,其基于LSF 4.2發(fā)布的開(kāi)源版本,目前最新的是3.3,由Teraproc公司主要開(kāi)發(fā)和支持。推薦國(guó)內(nèi)的大公司采用,只需要少量的支持費(fèi)即可。目前主要基于x86的linux環(huán)境,如果你有其他異構(gòu)系統(tǒng),需要聯(lián)系廠家獲取是否可以支持。如果大家對(duì)于采用openlava感興趣,可以聯(lián)系我,我可以協(xié)助測(cè)試。前面LSF的示例完全可以通過(guò)openlava實(shí)現(xiàn)。
數(shù)據(jù)管理
1.上傳數(shù)據(jù)考慮因素
2.下載數(shù)據(jù)如何審核及自動(dòng)備份歸檔數(shù)據(jù)
3.?dāng)?shù)據(jù)訪問(wèn)的Audit
4.數(shù)據(jù)分級(jí)及權(quán)限控制
數(shù)據(jù)上傳
在一個(gè)公司,內(nèi)外網(wǎng)隔離的情況下,必然有大量的數(shù)據(jù)上傳需求。如何實(shí)現(xiàn)
上傳呢?這是一個(gè)大問(wèn)題。我們?cè)O(shè)計(jì)了一個(gè)數(shù)據(jù)中轉(zhuǎn)站,允許公司內(nèi)的用戶登錄,將數(shù)據(jù)放入home目錄下,然后每隔一個(gè)小時(shí),內(nèi)網(wǎng)服務(wù)器通過(guò)rsync去獲取數(shù)據(jù),并sync到內(nèi)網(wǎng)。
這里主要的問(wèn)題是:防火墻一定要嚴(yán)格過(guò)濾,只允許內(nèi)網(wǎng)服務(wù)器sync中轉(zhuǎn)站的某個(gè)模塊數(shù)據(jù)。
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.passroot@10.x.x.100::home/exchange/upload/ >> /root/rsync.log
Fi
下載數(shù)據(jù)如何審核及自動(dòng)歸檔
對(duì)于下載數(shù)據(jù),我們要求進(jìn)行人工任何。分多個(gè)層級(jí),每一步需要審核人寫(xiě)審核意見(jiàn),批準(zhǔn)還是拒絕。任何一步拒絕,都將無(wú)法完成。
主要實(shí)現(xiàn)是:用戶準(zhǔn)備數(shù)據(jù),發(fā)郵件給ithelp,然后ithelp會(huì)根據(jù)情況,分配審核數(shù)據(jù)的人員,其審核完成后,將數(shù)據(jù)放在第一級(jí)審核的目錄dirA,然后由第二級(jí)審核人進(jìn)行二次審核,完畢后將數(shù)據(jù)放入預(yù)備下載目錄dirB,最后程序自動(dòng)先備份數(shù)據(jù),然后sync到數(shù)據(jù)中轉(zhuǎn)站,并刪除本地?cái)?shù)據(jù)。DirA和dirB通過(guò)ACL設(shè)置了用戶的訪問(wèn)權(quán)限,只有審核人員可以進(jìn)入。
以上步驟,還可以插入數(shù)據(jù)檢查及核實(shí)的程序,比如查看是否下載了源代碼數(shù)據(jù)。
數(shù)據(jù)訪問(wèn)Audit實(shí)現(xiàn)
使用audit實(shí)現(xiàn)任何人訪問(wèn)源代碼都將被記錄,通過(guò)程序每天統(tǒng)計(jì)一次用戶的訪問(wèn)記錄,排序統(tǒng)計(jì)后自動(dòng)發(fā)送郵件給相關(guān)的人員。
目前測(cè)試環(huán)境實(shí)現(xiàn)了5萬(wàn)個(gè)源代碼的控制,但是只能在本地文件系統(tǒng)實(shí)現(xiàn)。否則會(huì)帶來(lái)性能的問(wèn)題。這樣可以實(shí)現(xiàn)某個(gè)人一直查看的記錄追蹤,以及一段時(shí)間內(nèi)比如離職前一周或者某一天將所有允許查看的文件都copy到其他目錄的行為,可以當(dāng)天晚上發(fā)送郵件給其安全部門(mén)的人員。
[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結(jié)果如下,通過(guò)分析處理后可以實(shí)現(xiàn)監(jiān)控的目的。
ype=PATH msg=audit(11/03/201510:43:13.610:198339) : item=0name=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=rootuid=rootgid=root euid=rootsuid=root fsuid=root egid=root sgid=root fsgid=root tty=pts2 ses=13728 comm=mvexe=/bin/mvkey=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
數(shù)據(jù)分級(jí)及權(quán)限控制
主要是通過(guò)NFS ACLv4來(lái)實(shí)現(xiàn)項(xiàng)目的權(quán)限控制,通過(guò)將特定人員加入訪問(wèn)許
可,項(xiàng)目經(jīng)理可以自我控制任何公司的人員是否具有訪問(wèn)權(quán)限。但是,數(shù)據(jù)的分級(jí),需要數(shù)據(jù)擁有人員去判斷,IT只是提供一種手段,并不具有分級(jí)的能力。
IT提供合適的手段,讓用戶在系統(tǒng)內(nèi)部,知道如何申請(qǐng)和如何控制權(quán)限即可。
以下是通過(guò)nfs v4設(shè)置權(quán)限示例:
$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是由管理員設(shè)置的某個(gè)項(xiàng)目經(jīng)理的賬號(hào),username是你期望設(shè)置的用戶名
版本管理
1. CVS
2. Subversion
3. Clisoft SOS
4. ICManage
5. Git
CVS用于代碼的管理
CVS作為unix系統(tǒng)下非常經(jīng)典的版本管理系統(tǒng),適合于代碼的簡(jiǎn)單管理。對(duì)權(quán)限控制很差,基本上只能按照group的方式來(lái)控制誰(shuí)可以check out,check in.CVS沒(méi)有二進(jìn)制管理能力,無(wú)法對(duì)各種非文本的文檔,比如word進(jìn)行管理,只能用于代碼。
CVS是一個(gè)C/S模式的版本控制系統(tǒng),用于在軟件開(kāi)發(fā)過(guò)程中記錄文件版本,協(xié)調(diào)開(kāi)發(fā)人員保證文件同步,從而保證項(xiàng)目正確的進(jìn)行并行開(kāi)發(fā),并支持版本回滾、bug 跟蹤和補(bǔ)丁生成。使用CVS可以有效地對(duì)軟件開(kāi)發(fā)的源代碼和開(kāi)發(fā)文檔進(jìn)行統(tǒng)一的管理和組織。
主要功能如下:
同步的最新修改
文件的版本回溯
多人同時(shí)修改同一個(gè)文件產(chǎn)生的沖突
項(xiàng)目的分支開(kāi)發(fā)
文件權(quán)限控制
Redhat Enterprise默認(rèn)安裝有cvs,如果沒(méi)有,請(qǐng)安裝cvs的rpm包。
CVS的基本使用:
創(chuàng)建一個(gè)倉(cāng)庫(kù)
#groupadd cvs
#useradd –d /data/cvsroot -gcvs cvs
#cvs –d /data/cvsroot init
配置環(huán)境
$vi ~/.cshrc
$setenv CVSROOT /data/cvsroot
項(xiàng)目的初始導(dǎo)入
進(jìn)入到你準(zhǔn)備到如的初始源代碼目錄
$cvs import -m "somecomments" project_name vendor_tag release_tag
執(zhí)行后:會(huì)將所有源文件及目錄導(dǎo)入到/data/cvsroot/project_name目錄下
vender_tag:開(kāi)發(fā)商標(biāo)記
release_tag:版本發(fā)布標(biāo)記
這個(gè)project可以給某個(gè)unix group授權(quán)chmod 775 root:asic/data/cvsroot/project_name,這樣所有asic group的人都可以check in和check out了。
項(xiàng)目的CheckOut
$cvs co project_name
同步到最新
$cvs update
修改文件后CheckIn
$ cvs ci -m "somecomments" file_name
添加新文件
創(chuàng)建好新文件后,比如:touch newfile
cvs add newfile
對(duì)于圖片,Word文檔等非純文本的項(xiàng)目,需要使用cvs add –kb 按二進(jìn)制文件方式導(dǎo)入(k表示擴(kuò)展選項(xiàng),b表示binary),否則有可能出現(xiàn)文件被破壞的情況
比如:
cvs add -kb newfile.gif
cvs add -kb readme.doc
查看修改歷史
cvs log file_name
cvs history file_name
其實(shí)CVS還有一種pserver的方式,可以使用客戶端來(lái)進(jìn)行管理。這樣,即時(shí)/data/cvsroot沒(méi)有被nfs 共享出來(lái)在其他服務(wù)器上也可以通過(guò)cvs進(jìn)行版本控制。
分兩步建立:
首先,建立xinetd啟動(dòng)服務(wù)
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
其次,客戶端設(shè)置.cshrc (csh forexample)
$vi ~/.cshrc
setenv CVSROOT:pserver:username@192.168.x.x:/data/cvsroot
這里的username請(qǐng)換成自己的,后面的ip地址和路徑,請(qǐng)換成符合實(shí)際服務(wù)器的路徑。
Subversion
以下文檔是很早的時(shí)候?qū)懙?,?a href="http://www.ttokpm.com/article/bbs/" target="_blank">最新版本可能存在一定差異,請(qǐng)注意。
subversion簡(jiǎn)介
多年來(lái),版本控制系統(tǒng)一直都是CVS(Concurrent Versions System)的天下。CVS作為基
于RCS上建立,可以實(shí)現(xiàn)多用戶協(xié)同工作的系統(tǒng),可以記錄文件的修改信息。這對(duì)于開(kāi)發(fā)人員是非常有用的。
然而,CVS經(jīng)過(guò)這么多年,也逐漸顯示出一些不足,這個(gè)時(shí)候出現(xiàn)了一些商業(yè)的版本控制軟件,比如Rational的ClearCase就是一個(gè)功能強(qiáng)大的商業(yè)軟件,但是其價(jià)格也是非常昂貴的。
Subversion就是一種設(shè)計(jì)來(lái)解決CVS的局限性的軟件。從2000年開(kāi)始,Subversion開(kāi)始開(kāi)發(fā),2001年8月開(kāi)始用Subversion來(lái)管理Subversion的開(kāi)發(fā)工作,到目前位置,subversion已經(jīng)發(fā)展到了1.9.3版。
Subverion的主要特點(diǎn)有:
a.保留大多數(shù)CVS 特性,很多命令的選項(xiàng)基本通用
b.目錄、重命名和文件meta-data都已經(jīng)版本化,以前的CVS只能對(duì)文件版本化。
c.不可分隔的原子化提交,版本的變化是每次提交所有的文件版本都變化。
d.可以選擇Apache作為網(wǎng)絡(luò)服務(wù)器,集成于現(xiàn)有Apache控制的權(quán)限管理等。
e.分支和標(biāo)簽是代價(jià)低廉(固定不變的)的操作
f.本地化的客戶端/服務(wù)器,分層的庫(kù)設(shè)計(jì)
g.消耗和修改部分的大小成比例,而不是數(shù)據(jù)的大小
h.Unix下的鏈接也可以實(shí)現(xiàn)版本化控制了
i.更加有效的處理二進(jìn)制文件
j.更加人性化的命令輸出
k.本地化提示信息。
Subversion的安裝
Subversion是建立在一個(gè)可移植的APR(Apacheportable Runtime)上,所以Subversion可以建立在Apache的支持上,但是不僅限于必須使用Apache。Subversion可以做為Apache 2.0的一個(gè)模塊,以WebDAV/DeltaV協(xié)議運(yùn)行,也可以采用其自帶的svnserver小型服務(wù)器運(yùn)行。我們這里將采用Apache下WebDAV/DeltaV方式運(yùn)行,所以需要檢查Apache2.0是否已經(jīng)安裝好。
# yum install subversion
RHEL6默認(rèn)安裝的是1.6.11版本的subversion
Subversion和CVS的比較
1.不同的修訂版本號(hào)。CVS將每個(gè)修改文件都賦予一個(gè)版本號(hào),因此在CVS中,所有的文件版本號(hào)是不同的。
2.Subversion將目錄版本化了。Subversion也開(kāi)始跟蹤目錄的結(jié)構(gòu),任何對(duì)目錄的svn操作都將會(huì)被記錄,但是任何操作都必須提交后才生效。
3.離線工作更加方便。Subversion的工作原始副本在本地也有保留,任何對(duì)本地文件的修改,不需要連接到服務(wù)器去,就可以對(duì)比知道自己做了哪些修改。并且,提交修改的時(shí)候Subversion只將差異部分提交給服務(wù)器。
4.二進(jìn)制文件和文本文件。CVS對(duì)二進(jìn)制文件的版本化做的非常差,對(duì)于每次修改的二進(jìn)制文件,CVS都會(huì)將更新的副本儲(chǔ)存下來(lái),大量占用了空間。而Subversion就不管是二進(jìn)制文件還是文本文件,它都采用差異比較算法來(lái)表示更新的部分。CVS提交二進(jìn)制文件需要帶-kb標(biāo)記,subversion不需要任何標(biāo)記就可以識(shí)別二進(jìn)制文件。
實(shí)例介紹
目前有一家公司,有兩個(gè)不同的Group在進(jìn)行開(kāi)發(fā),也就是說(shuō),兩個(gè)項(xiàng)目組的成員是不允許獲得另外一個(gè)項(xiàng)目組的開(kāi)發(fā)代碼的。當(dāng)時(shí),為了某些模塊的協(xié)同工作,兩個(gè)項(xiàng)目組的Project Manager又不得不互相取得對(duì)方的代碼。
現(xiàn)在我們?cè)O(shè)計(jì)一個(gè)Subversion來(lái)做版本控制的系統(tǒng),假設(shè)一共有6個(gè)用戶,group1有user1,user2,manager1;group2有user3,user4,manager2.項(xiàng)目組分別為project1,project2.
由于我們的權(quán)限方面控制比較復(fù)雜,而適合權(quán)限復(fù)雜控制以及更好授權(quán)選擇的方式,我認(rèn)為以Apache+mod_dav_svn比采用獨(dú)立的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版本庫(kù),Location就是告訴Apache在特定的URL以及子URL下需要的特殊處理。
在文件的最后部分建立
DAV svn
SVNParentPath/data/svn
注意,任何Apache的web目錄下不能存在svn這樣的目錄,否則會(huì)導(dǎo)致Apache不知道怎么解析。
(3).配置認(rèn)證部分
前面的配置會(huì)讓所有能訪問(wèn)你web的人都可以獲得你的文件,并且可以提交他的修改。所以,為了安全,也為了一個(gè)很好的秩序,我們必須添加認(rèn)證。
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
其中的svn-auth-file是做用戶名和密碼認(rèn)證的,這個(gè)文件采用htpasswd來(lái)生成和修改。
$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訪問(wèn)project1的所有文件,并且都可以讀寫(xiě);user3,user4,manager2訪問(wèn)project2的所有文件可以讀寫(xiě),但是manager1只允許讀寫(xiě)除了secret目錄下的所有其他文件。
建立過(guò)程及基本使用
(1).CreatRepository
基本語(yǔ)法:
$svnadmin create/data/svn/project1
#chmod 755 /data/svn
$svnadmin create /data/svn/project1
$svnadmin create /data/svn/project2
建立兩個(gè)項(xiàng)目組的庫(kù),我們采用了默認(rèn)的FSFS存儲(chǔ)方式。
$ls /data/svn/project1
conf/ dav/ db/ format hooks/ locks/README.txt
(2).導(dǎo)入文件到Repository
我們已經(jīng)建立了庫(kù),所以該我們導(dǎo)入我們的源文件到庫(kù)里邊的時(shí)候了。我們首先來(lái)準(zhǔn)備一下兩個(gè)項(xiàng)目組的文件,然后導(dǎo)入到庫(kù)里。
A.準(zhǔn)備需要導(dǎo)入的文件
$cd /home/svn
建立project1的文件目錄結(jié)構(gòu),源文件在/somepath/source1/下面,是project1的項(xiàng)目源代碼。
$mkdir source1
$mkdir source1/trunk
$mkdir source/branches
$mkdir source/tags
$ls source1
$mv /somepath/source1/*source1/trunk/
project2的建立方法和上面類似
B.導(dǎo)入項(xiàng)目文件到庫(kù)里
$cd source1
$svn import --message “Intial files for Project1”file:///data/svn/source1
Addingconfig.txt
Addingxconnect_config.txt
AddingASIC_ADDR_SYNC
……
Project2的導(dǎo)入方法類似
導(dǎo)入完畢后,可以刪除剛才準(zhǔn)備的源文件了。
$rm –rf source1 source2
(3).獲取一份源文件的拷貝
以用戶user1的身份登陸系統(tǒng),在自己的Home目錄下,可以用命令svn checkout
的方式獲得一份subversion控制下的源文件。如果不特別指名,獲得的文件在本地目錄
和在subversion下面的目錄結(jié)構(gòu)一致。所以,我們?yōu)榱藚^(qū)分,應(yīng)該指定一個(gè)本地的目錄
名。
$svn checkouthttp://domain/project1/trunkproject1_trunk
[user1@server ~/test]$svn cohttp://domain/svn/project1/trunkproject1_trunk
Authentication realm:
Password for 'user1':
Aproject1/trunk/config.txt
Aproject1/trunk/xconnect_config.txt
Aproject1/trunk/ASIC_ADDR_SYNC
Aproject1/trunk/ASIC_ADDR_SYNC/SW2ASIC_20051103
Aproject1/trunk/ASIC_ADDR_SYNC/SW2ASIC_20051103/addr.txt
(4).編輯和提交修改
編輯文的文件,可以用你喜歡的任何編輯器,我們現(xiàn)在添加一個(gè)文件.
$touch test.txt
Add a line for this file
$svn add test.txt添加一個(gè)文件到subversion,但是直到后面提交后才才庫(kù)中生效
$svn status查看哪些文件有變化
Atest.txt
$svn diff test.txt比較本地文件和庫(kù)中的不同
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”提交修改了的文件
Addingtest.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獲得最新的版本,使用這個(gè)命令獲得他人的最新更改。
如果發(fā)生沖突,使用svn resolve解決
(5).Svn客戶端常用命令
svn add//添加一個(gè)文件
svn checkout(coi)//從苦衷獲取一個(gè)工作拷貝
svn cimmit(ci)//提交當(dāng)前工作拷貝的更改到代碼苦,如果出現(xiàn)沖突需要解決。
svn copy(cp)//做一個(gè)工作的拷貝
svn delete(del,remove,rm)//刪除本地或者svn庫(kù)中的文件或者目錄
svn diff(di)//比較某個(gè)文件和庫(kù)中對(duì)應(yīng)的文件的不同,和系統(tǒng)的diff命令類似
svn export//導(dǎo)出一個(gè)無(wú)版本控制的目錄樹(shù)拷貝,用于可以運(yùn)行的版本需要導(dǎo)出。
svn import//將當(dāng)前目錄下的文件導(dǎo)入到庫(kù)中
svn info//查看當(dāng)前目錄下的某個(gè)文件或者文件夾的信息
svn list(ls)//列出當(dāng)前拷貝的文件
svn mkdir//在本地或者庫(kù)中新建一個(gè)文件夾
svn move(mv,rename,ren)類似于系統(tǒng)的mv命令
svn status(stat,st)//svn工作拷貝的當(dāng)前狀態(tài),和上次提交或者update后的對(duì)比
svn update(up)//將svn庫(kù)中的文件同步到本地
(6).創(chuàng)建一個(gè)Tag和Branch
Subversion創(chuàng)建Tag和Branch和CVS不一樣,它采用的是copy方式。
A.創(chuàng)建一個(gè)Tags,只能這個(gè)項(xiàng)目的Project Manager負(fù)責(zé),下面以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.創(chuàng)建一個(gè)Branch
$svncopy –m “createBranch a”[url=]file:///data/svn/project1/trunk/[/url][url=]file:///data/svn/project1/branches/brancha[/url]
以u(píng)ser1登陸
$svn switchhttp://domain/svn/project1/branches/brancha
這樣以后user1就以brancha作為工作的庫(kù)目錄,從這里開(kāi)始作為分支。
(7).Merging aBranch
(8).Windows客戶端的安裝和使用
下載TortoiseSVN-xxx.msi,安裝,然后CheckOut一個(gè)庫(kù)的拷貝。
Clisoft SOS介紹
a.業(yè)界最完整的版本控制工具. 具有動(dòng)態(tài)連結(jié)及智能快取等強(qiáng)大功能
完整得知所有使用者檔案修改, 增減, 開(kāi)啟等記錄...
節(jié)省硬件的支出, 讓系統(tǒng)管理員更有效控制數(shù)據(jù)的管理與儲(chǔ)存
對(duì)于硬件和軟件設(shè)計(jì)資源 (design resouce), 設(shè)計(jì)者可以更有效的取得及運(yùn)用
單鍵標(biāo)注(Tag)整個(gè)工作目錄下所使用的版本.
數(shù)據(jù)庫(kù)快照(Snapshot)及最完整的安全控管機(jī)制.
可任意任務(wù)分組? 控制組員可擦寫(xiě)之目錄及檔案
最簡(jiǎn)易的操作接口, 無(wú)需管理員. 工程師一小時(shí)上手
提供命令模式, 易于與EDA工具整合.
內(nèi)建 Bug Tracking 功能, 可通知同組伙伴所須修改之錯(cuò)誤.
提供豐富的管理工具及 Trigger 功能.
與 Cadence DFII 完整結(jié)合
提供工作交接及內(nèi)部教育訓(xùn)練一個(gè)最佳平臺(tái)環(huán)境.
提供最佳異地開(kāi)發(fā)功能
這個(gè)軟件主要是針對(duì)全定制IC設(shè)計(jì)的,可以嵌入:
Cadence Virtuoso
Custom IC
Agilent Advanced Design System(ADS)
Mentor Pyxis
Synopsys Laker
Synopsys Custom Designer
SOS是商業(yè)軟件,只要購(gòu)買了,安裝和配置完全由廠家支持,這里就不再做詳細(xì)的介紹了。
IC Manage
沒(méi)有接觸過(guò),據(jù)說(shuō)也是一個(gè)不錯(cuò)的IC公司喜歡用的版本管理軟件。
git
很好的一個(gè)分布式版本管理軟件,在開(kāi)源軟件開(kāi)發(fā)行業(yè)使用非常廣泛。不過(guò)目前在IC設(shè)計(jì)行業(yè)所見(jiàn)不多,也許我們IC行業(yè)太落后了,沒(méi)互聯(lián)網(wǎng)和開(kāi)源界對(duì)新技術(shù)的接受能力強(qiáng)。我們習(xí)慣用我們熟悉的東西。
搭建:
(1)yum install git
[root@eda ~]# git --version
git version 1.8.3.1
(2)創(chuàng)建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)初始化項(xiàng)目
[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"
需要設(shè)置提交者的個(gè)人信息
[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
Date:Fri Apr 15 21:44:12 2016 +0800
test file
發(fā)現(xiàn)已經(jīng)存在我們剛才添加進(jìn)入的一個(gè)文件了。
權(quán)限管理
要方便管理公鑰,用Gitosis;
要像SVN那樣詳細(xì)地控制權(quán)限,用Gitolite
-
IC設(shè)計(jì)
+關(guān)注
關(guān)注
37文章
1287瀏覽量
103434 -
IT
+關(guān)注
關(guān)注
2文章
835瀏覽量
63313
原文標(biāo)題:精華 | 大型IC設(shè)計(jì)中心的IT環(huán)境該如何規(guī)劃?
文章出處:【微信號(hào):wc_ysj,微信公眾號(hào):旺材芯片】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論