2012年8月4日 星期六

快速架設簡易小型工作站

想當初剛進來的時候,老師叫我負責server的東西,沒想到就這樣傻傻地攬了下來…累死我也!

好吧,這篇主要記錄新手安裝備忘,謝謝俊達學長一直以熱心及耐心解答我的各種問題,提供資訊,讓我初窺Linux門徑。也感謝家洋學長借的鳥哥小菜,使我從空白到略有小成。
架站之前先來規畫一下架什麼樣的server,目前實驗室有新舊兩部工作站,個人PC十台以上, 對外以硬體防火牆為閘道,及一台NAS做異地備援。

為方便理解,server以新舊來表示Dell、Intel 這兩部。

由 於實驗室主要跑模擬數據,所以工作站需要安裝穩定的Linux為作業系統。 Redhat 和 SuSE 11商業版在架站是很好用,但要買版權才能即時更新(聽說不更新沒差?)。CentOS 5、CentOS 6 安裝會遇到EDA軟體缺lib的問題而不能跑。而RedhatES4的JAVA環境不夠新,不能安裝新版的matlab,使得一些函數不能用,不過一些較舊的EDA上可以順利執行,像是TSMC90 Memory Compiler。Ubuntu server灌完是純文字介面,還需要抓X server之類的。為了迅速架起簡單實用的工作站,新的server灌Ubuntu 11 Desktop,以支援新版matlab,舊的灌RedhatES4。注意一下,不是因為server是64架構才裝64位元作業系統,是因為即使裝了 32位元作業系統,像synopsys系列的軟體會跑不起來。若是遇到需要用32位元跑的軟體,就安裝32位元的lib即可。

舊server硬碟空間總共140G,空間可能不夠使用者目錄/home使用,所以分割硬碟的時候,就不用切/home了,用新serv的500G直接掛載到舊的上面,再用NIS及NFS服務啟動/home。

為了快速地安裝,第一步我先簡單的安裝舊server,包括OS安裝、網路設定、EDA軟體。當第一步完成後,就可以測試個人電腦能不能連進去跑EDA了。

第二步,服務的設定。新server安裝完後,首先要做磁碟配額,合理分配空間給每位使用者。兩台工作站單純跑EDA的運算,未來不知道會不會再買工作站,所以NIS有其必要,Cluster可以先不考慮,舊server 硬碟不夠大,使用NFS掛上新server 的家目錄;NAS 就來個ssh+rsyn 異地備援。最後架SAMBA讓WIN用戶能開啟在工作站上的檔案,方便我們寫程式時可以很直接修改存取。


##############################################################
step1 備份
##############################################################
1.先將主機所有軟體、工具,及環境設定檔備份到NAS
/home
使用者檔案資料夾。

/etc/fstab
因為/home和/opt都有用raid1備份,這個設定檔案就是記錄每個分割區掛載的資訊,所以每次一安裝完,就可以用這個檔案蓋掉原始設定檔,再mount -a即可。

/usr/local 或是 /opt/
CIC 軟體目錄。

/usr/cad
CIC 環境檔目錄。

/etc/hosts
內容有CIC license server 的IP對應檔。

/etc/skel
新增使用者時參考的範本目錄,裡面有 .cshrc。

由於我們是把資料備份在區網內的NAS,網路速度差不多6M。備份檔直接打包後傳給NAS,會比壓縮完再傳給NAS花的時間更少,把檔案踏一踏就好,不用壓縮。


##############################################################
step2 安裝作業系統
##############################################################
Hostname:
舊:ws1
Redhat: /etc/sysconfig/network
新:ws2

Ubuntu: /etc/hostname 


在安裝時若有問要選擇安裝什麼軟體,盡量能勾就勾,之後就省事了。尤其一些軟體會遇到相依性的問題,少了一個就安裝不起來,找套件和安裝相依性套件就花了幾天,非常累的…


選磁碟分割方式:
舊的這台主機只有140G, 使用者的檔案可能不夠放,乾脆就用NFS-server,把新server的使用者家目錄/home掛載到底下。因此家目錄也不必割了,所以磁碟分割可以割成兩個,分別是根目錄/ 和第三方軟體目錄/opt ,但新server要多割一個/home。

新的這一台在設定磁碟分割時,硬碟是SSD - 250G加HDD - 500G,而HDD有掛陣列卡raid1, 直接做硬碟資料備份,所以HDD掛載點可以設成/home,並將格式定為ReiserFS或ext4。500G夠用了,所以我會將HDD設為ext4,並掛載/home和/opt。

##############################################################
step3 環境設置
##############################################################
作業系統完成後,把稍前的備份檔案從NAS拉回來吧,/home、/opt/、/usr/cad、/etc/hosts,/etc/skel。在等待檔案的時間,順手補IP設定,作業系統更新一下,也把/home目錄的配額寫一寫。

WS - IP 設定
可以用文字檔打,但比較建議用GUI點一點最快。
例如:
/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
HWADDR="12:34:56:78:9a:bc"
NM_CONTROLLED="yes"
ONBOOT="yes"
IPADDR="192.168.1.211"
NETMASK="255.255.255.0"
GATEWAY="192.168.1.99"

更新
ubuntu更新:
sudo apt-get update
sudo apt-get upgrade
redhat更新:
yum update
因為沒買redhat授權,舊SERV沒辦法更新,但其實不更新無所謂。

磁碟配額
*會使用到quota套件,安裝一下吧。
sudo apt-get install quota
*方便後續設定,用su - 轉換root權限。
su -

1. 編輯磁碟區設定 /etc/fstab,針對要啟用quota的磁區加入掛載參數 usrquota,grpquota
 vi /etc/fstab
/dev/sdb1   /home   ext4   defaults,usrquota,grpquota   0   0


2. 重新掛載該磁區,使其加入usrquota,grpquota參數。
umount /home
mount -a
mount
這時觀察一下/home有沒有加上參數

3. 使用quotacheck -avugm 指令,建立usrquota,qrpquota檔案

4. 使用edquota -u 指令編輯使用者的磁碟配額空間
我先加入一個使用者當配額範本:
useradd 10G -m
編輯剛剛加入的範本10G:
edquota -u 10G
會看到有六欄:
blocks      soft        hard   …   …
已用          提示      上限

這邊soft 9G,hard 10G,存檔離開。

5. edquota -p 指令複製配額參數給其他使用者
edquota -p 10G (使用者ID)

6. quotaon -a 指令使磁碟配額生效,quotaoff -a 指令關掉磁碟配額。
7. repquota -avug 指令顯示每個使用者及群組配額使用情形。

夠簡單的吧,這時候備份的檔案也差不多完成,設定檔都可以覆蓋回去了。


##############################################################
step 4 安裝IC TOOL
##############################################################
安裝CIC tool , 大部份都可以照CIC設定教學走。

而ncverilog可能會少套件,sudo apt-get install gcc-multilib 就OK了。


##############################################################
step 5 安裝NIS、NFS
##############################################################
設定NIS、NFS。因為Redhat和Ubuntu不是同一掛的,所以NIS設定也稍微不一樣,但也可以很簡單地架出來。
而LDAP更方便的存取使用者目錄,所以未來有空可以架出來取代NIS。

NIS 的目的就是管理帳號,通常會是一個Master去管理所有人登陸的帳號,其他工作站開NIS client,新增在master上的帳號就會同步到client。

首先,NIS master設定在新serv。

*先安裝或檢查相關套件是否都有安裝
NIS的套件
sudo apt-get install nis
NFS的套件
sudo apt-get install nfs-common

nis下載時就會順便設定 domain name
NIS domain: lab

1.設定NIS domain name: 編輯或新增檔案/etc/defaultdomain
vi /etc/defaultdomain
domainname的檔案,可以檢查一下剛剛設定的名稱有沒有寫上去:

lab
2.編輯NIS server 相關檔案並啟動服務
sudo vi /etc/yp.conf
加上一行: domain lab server ws2 ,存檔離開
sudo vi /etc/default/nis
更改 NISSERVER=master,存檔離開
3.將NIS啟動
sudo /usr/lib/yp/ypinit -m
sudo /etc/init.d/portmap restart
sudo /etc/init.d/nis restart
4. 設定並啟動NFS
若每一部都獨立存檔,當某台當掉了, 就會有某個使用者說…電腦當了,我要回家了!
NFS設定好,也就有一個資料Domain了,同Domain資料會保存在NFSserver上。
你就可以說:呃,別跑,去另一台登陸吧。

*安裝nfs-kernel-server,portmap
sudo apt-get install nfs-kernel-server
sudo apt-get install portmap
*NFSv4支援固定PORT, 所以不用安裝portmap套件,預設是TCP port 2049。
*適合匯出的目錄有/home,/opt,/usr。

vi /etc/exports

設定匯出的資料夾:


/home 192.168.1.0/24(rw,async,no_root_squash)

*設定開機自動掛載
vi /etc/fstab
ws1:/home /home nfs4  default,rw 0  0



重新啟動NFS
sudo /etc/init.d/nfs-kernal-server restart/reload

*若是NFS已經開放後,不要用restart! 會切斷使用者資料存取,reload才是正解!


5. 新使用者
在Server端一樣用之前方法開帳號,要注意的是每次有新帳號就要執行一次下列指令:

sudo  make -C /var/yp/

舊serv的NIS三步設定:
1. nisdomainname lab

2. 記得hosts name要設定Host
vi /etc/hosts
192.168.1.211 ws2

3. setup

*檢查
ypwhich
ypcat passwd

最後掛載NFS server上的資料目錄,完成!
mount -t nfs 192.168.1.211:/home/ /home/


##############################################################
step 6 SAMBA分享
##############################################################
linux和MS怎麼傳輸資料呢?區網內最方便的當然是Samba囉!
這邊我推一個達哥大大寫的,連結:簡簡單單設定SAMBA

 
##############################################################
step 7 連線
##############################################################
設定ssh連線:
ubuntu:
sudo apt-get install openssh-server
Redhat:
直接用GUI設定吧!簡單方便。


##############################################################
step 8
##############################################################

終於,很快地來到最後一步啦, 開放工作站服務給別人用吧!
一些設定在/etc/default/useradd,/etc/login.defs,有興趣在去看設定內容。
新增使用者tzki4118,順便開個家目錄:

useradd tzki4118 -m
改使用者密碼:
passwd tzki4118
修改磁碟配額:
edquota -p 10G tzki4118
將NIS帳號推到其它工作站:
make -C /var/yp
新增SAMBA帳號:
pdbedit -a tzki4118


好囉,目前工作站都可以使用了。接下來還有小尾巴,異地備援。
ssh + sync 聽起來很厲害,不過我懶了,而且NAS有NFS server的設定。

用cronjob + cp 來備份吧!
//========================================================
ps1.後來寫的sh,本來是用 "cp + --include" ,但發現更好用的指令

 vi /etc/crotab
# m h dom mon dow user    command
0 0 **7 root /backup.sh

vi /backup.sh
#!/bin/bash
#+++++++++++++++++++++++++++++++++++++++++++
#+backing up /home to /mnt/nas/backup
#+++++++++++++++++++++++++++++++++++++++++++

rsync -a --no-whole-file /home /mnt/nas/backup_`date +%m.%d.%y`

ps2.
台積電90nm的mermory compiler的環境是用#!/usr/bin/ksh
要在ubuntu上執行Mermory compiler的話,需要安裝 "ksh" 這個shell。
sudo apt-get install ksh



沒有留言:

張貼留言