2009年2月18日 星期三

DRBD

http://gator.hoja.idv.tw/post/2/52


DRBD是一個Distributed Replicated Block Device的縮寫,簡單的說,他是一個遠端資料備份的機制,不同rsync,他是透過網路realtime的mirror Local端與遠端的Device。

本次測試的軟硬體如下:


  • CPU: Transmeta TM5600 533MHz
  • Memory: 128M
  • HD: 實際測試資料是寫入透過USB1.1連接的硬碟
  • (這會使測試資料較不正確,但是礙於時間,暫時如此)
  • OS: CentOS4.1 Linux kernel升級至 2.6.15.5
  • DRBD: drbd-0.7.16 tarball

(上述機器共兩台)

安裝與設定

如果沒有特殊說明,表示兩台機器都要作。
假設
primary IP= 192.168.55.1 hostname=ha1
secondary IP= 192.168.55.2 hostname=ha2

1. 升級kernel 至 2.6.15.5
解壓縮kernel source於 /usr/src下,並建一個link,link到 /usr/src/linux。然後重新編譯kernel

2. 安裝DRBD
將drbd-0.7.16.tar.gz解壓縮至/usr/src/然後執行以下指令

>cd /usr/src/drbd-0.7.16
>make; make install
> modprobe drbd
>lsmod #正確的話,應該可以看到drbd module已經安裝好了
>ls /dev/drbd*
/dev/drbd0 /dev/drbd1

(ps: source code中有INSTALL說明檔,但是不需要照著作。直接make即可)

3. 編輯 /etc/drbd.conf

resource r0 {
protocol C;
incon-degr-cmd "halt -f";

on ha1 {
device /dev/drbd0;
disk /dev/sda6; #要寫入的device
meta-disk internal;
address 192.168.55.1:7788;
}
on ha2 {
device /dev/drbd0;
disk /dev/sda2; #要寫入的device
meta-disk internal;
address 192.168.55.2:7788;
} }

PS: Device 必須大於128MB


4. 在入module,與啟動brbd

執行以下指令
> drbdadm up all
> dmesg | tail #正確的話,應該可以看到以下類似訊息
drbd: initialised. Version: 0.7.0 svn $Rev: 1442 $ (api:74/proto:74)
drbd: registered as block device major 147

nb: to have it register as 43 (NBD) you can say
modprobe drbd use_nbd_major

drbd0: Creating state block
drbd0: resync bitmap: bits=1250 words=40
drbd0: size = 5000 KB
drbd0: Assuming that all blocks are out of sync (aka FullSync)
drbd0: 5000 KB now marked out-of-sync by on disk bit-map.
drbd0: Handshake successful: DRBD Network Protocol version 74
drbd0: Connection established.
drbd0: I am inconsistent, but there is no sync? BOTH nodes inconsistent!
drbd0: Secondary/Unknown --> Secondary/Secondary
> cat /proc/drbd #正確的話,應該可以看到以下類似訊息
version: 0.7.0 svn $Rev: 1442 $ (api:74/proto:74)

0: cs:Connected st:Secondary/Secondary ld:Inconsistent
ns:0 nr:0 dw:0 dr:0 al:0 bm:1 lo:0 pe:0 ua:0 ap:0

以下的步驟只需在Primary作
>drbdadm primary all #如果有錯誤訊息,你也可以執行以下那行指令
>drbdadm -- --do-what-I-say primary all
>drbdadm -- connect all
>cat /proc/drbd #你將會看到sync的畫面如下
0: cs:SyncSource st:Primary/Secondary ld:Consistent
ns:12940824 nr:0 dw:87492 dr:13690591 al:109 bm:1668 lo:1000 pe:1876 ua:1000 ap:0
[========>...........] sync'ed: 44.4% (15858/28487)M
finish: 0:09:20 speed: 28,933 (25,160) K/sec

不需要等到sync完成即可以作測試了!!

測試與結果

首先,我先在ha1(primary)上建立一個mount point,並將/dev/drbd0 mount上去。然後執行我寫好的touch去產生檔案。產生完後,umount 並且執行 drbdadm secondary all 將Primary變成 secondry。

#在ha1執行,並記得先mke2fs /dev/sda6以及 ha2上的/dev/sda2
>mkdir /mnt/test
>mount /dev/drbd0 /mnt/test
>touch test.txt
>umount /mnt/test
>drbdadm secondary all

接著移至ha2,現在同樣把他變成primary,並mount起/dev/drbd0,如果可以看到之前建立的檔案即成功了。

#在ha2執行
>drbdadm primary all
>mkdir /mnt/test
>mount /dev/drbd0 /mnt/test
>ls /mnt/test
test.txt

另外,我也試過,如果,secondary異常時(例如,斷線),primary會正常運作,當secondary恢復後,資料也會自動備援過去。

接著,我分別在ha1本機硬碟,ha1上的/dev/sda6(USB1.1 上的硬碟),以及DRBD執行下(含secondary 連線正常 與secondary 斷線的情況下,執行我的php scrip(touch.php)產生出以下數據。

執行狀態檔案大小測試次數平均執行時間(sec)備註
本機硬碟 100MB 50 8.846169
USB1.1連接硬碟 100MB 50 75.870175 [1]
DRDB 100MB 10 94.990632 [2]
DRDB ( Secondry fail) 100MB 10 79.909951 當網路恢復,DRBD約以240K/sec速度進行sync
100MB資料約7min多中完成sync
此資訊可由 watch cat /proc/drbd 取得

根據以上的資料顯是,DRBD大約會造成效率降低25% ( ( [2]- [1]) / [1] *100%)。

PS: 我的touch.php 如下:(他會產生以1K為單位的檔案,檔案大小與執行次數由參數決定)

#!/usr/bin/php -q

2008年11月8日 星期六

雙面記憶體模組比單面的好

雙面記憶體模組比單面的好
一般的電腦玩家知道同樣容量的記憶體模組有單面和雙面版本之分,多半買雙面記憶體模組比較好,因為雙面記憶體模組上會比單面有內建速度上的優勢,此外,有一些支援DDR2的英特爾系統晶片組正在發展一種類似RAID的技術用在雙面記憶體模組上面,我們在實驗室測到的這方面的優點有2%左右的增加,事實上,如果用四根單面的記憶體模組來測,絲毫得不到同樣的功效,在與雙面的記憶體模組相比,單面的確效能較差。
記憶體管理晶片組可以在雙通道架構下使用兩根單面記憶體模組。
在安裝兩根雙面記憶體模組時,英特爾的系統晶片可以實際的讓四面記憶體區塊(memory banks)並行運作。
記憶體晶片大小和擺設的方式所造成的速度上改善:
每一面速度差異 (CL 5.0-5-5-15) FSB 1066規格
記憶體面
讀取資料速度
寫入資料的速度
延遲時間
4 (2根記憶體模組)
7320MB/sec
2157MB/sec
83.9 ns
2 (2根記憶體模組)
7225MB/sec
2118MB/sec
83.5 ns
4 (4根記憶體模組)
7058MB/sec
2093MB/sec
89.3 ns
3 (3根記憶體模組)
5130MB/sec
1698MB/sec
84.2 ns
1 (1根記憶體模組)
5123MB/sec
1672MB/sec
84.4 ns
記憶體面
讀取資料速度
寫入資料的速度
延遲時間
4 (2根記憶體模組)
142.9%
129.0%
99.4%
2 (2根記憶體模組)
141.0%
126.7%
98.9%
4 (4根記憶體模組)
137.8%
125.2%
105.8%
3 (4根記憶體模組)
100.1%
101.6%
99.8%
1 (1根記憶體模組)
100%
100%
100%
有一個很有趣的事,使用110奈米製程的雙面512-MB記憶體模組厚度還比較薄一點,不過,通常這個好處比不上在超頻上的功效,在主機板上使用多少條記憶體模組與速度上增加多少是兩回事,不會用越多條模組速度就愈快,所以整體記憶體容量不變之下,不論兩條或四條記憶體模組,效能上差異並不明顯。
有些記憶體模組還配有散熱片,這只是賣相好看一點,現在使用110奈米或90奈米製程的記憶體晶片並不需要額外的散熱。

原文網址

最初由 godspeedYTK 發表記憶體的單面及雙面顆粒有何分別??哪一種比較好...通常來說 單面顆粒使用1個BANK 雙面顆粒使用2個BANK(但也有例外,單面吃2個BANK,雙面吃1個BANK)所以了解你買的記憶你是吃1個BANK或2個BANK的比較實在當然也要了解你的主機板,1個BANK支援到多大的記憶體1)對主機板的相容性又如何??舉例說明 GA 8IE533,與單面顆粒使用1個BANK 雙面顆粒使用2個BANK判定法 (不討論例外)本主機板有3條184Pin(DIMM)擴充槽,最大支援4個Banks.(DDR1可使用2個Bank, DDR2 & DDR3 分享剩下2個Bank)也就是DIMM DDR1 = 0、1 BANKDIMM DDR2 = 2、3 BANKDIMM DDR3 = 2、3 BANK如果你的記憶體 有一條雙面 兩條單面應該要DDR1插雙面、DDR2&3各插入一條單面假設你將一條單面記憶體插入DDR1,那麼,你只能選擇性的將另一條單面or 雙面記憶體,插入DDR2 or DDR32)其效能又屬哪一種最佳?? 單雙面記憶體,不必太在意單雙面哪個最佳,因為差不多,主要差別在所需的BANK上如果需要記憶體效能高,請使用支援雙通道晶片組的主機板

原文網址


一.請看主機版的說明書上面,看上面支援幾個bank---基本上,記憶體的一面就是一個bank,不要插超過歐!!EX:4個BANK,就只能差四個面(雙面兩張.單面四張.一雙兩單)~~~懂了吧!! 二.在來就是換算,以下作為例子: 一張1G雙面焊接的記憶體 => 一張雙面焊上512M晶片的記憶體 兩者的BANK數是一樣的!! 雙通道基本概念: 你看你的主機版阿!!他會有兩組揷記憶卡的地方,通常顏色會不一樣(好分辨)!!一組有兩個插槽,所以總共是4個插槽!! 除了要注意我上面說的外,還要插對,一搬來說要插兩張一樣大小的.至於單雙面我就不知道了,不過保險一點,建議你揷兩張一樣的而且面數也一樣!! PS:再次叮嚀,雙通道要把兩張卡分別插在不同顏色插槽上,而且要插在第一槽(主機板上寫著DDR1那一槽),卡的容量大小與面數要相同!!
回答者: skay - 2008-07-02 01:45:51

原文網址