歡迎您光臨本站 註冊首頁

drbd 磁碟技術

←手機掃碼閱讀     火星人 @ 2014-03-04 , reply:0

drbd 磁碟技術

一、什麼是DRBD?
    DRBD 是由內核模塊和相關腳本而構成,用以構建高可用性的集群。其實現方式是通過網路來鏡像整個設備。您可以把它看作是一種網路RAID。
二、drbd 的應用範圍是什麼?除此之外,創建高可用性集群還需要什麼?
        Drbd 負責接收數據,把數據寫到本地磁碟,然後發送給另一個主機。另一個主機再將數據存到自己的磁碟中。其他所需的組件有集群成員服    務,如TurboHA 或 心跳連接,以及一些能在塊設備上運行的應用程序。
    例如:
     --裸I/O
     --文件系統及fsck
     --具有恢復能力的資料庫。
三、它是如何工作的?
more..
less..       每個設備(drbd提供了不止一個設備)都有一個狀態,可能是『主』狀態或『輔助』狀態。在帶有主要設備的節點上,應用程序應能運行和訪問設  備(/dev/nbX)。每次寫入都會發往本地低層設備和帶有『輔助』狀態設備的節點中。次要設備只能簡單地把數據寫入它的低層塊設備上。
    讀取數據通常在本地進行。
        如果主要節點發生故障,心跳將會把輔助設備轉換到主狀態,並啟動其上的應用程序。(如果您將它和無日誌FS 一起使用,則需要運行fsck)。
    如果發生故障的節點恢復工作,它就會成為新的輔助節點,而且必須使自己的內容與主節點的內容保持同步。當然,這些操作不會幹擾到後台的服務。
四、drbd 同現在的HA 集群有什麼關係?
        大部分現行高可用性集群(如:惠普、康柏等等)使用的是共享存儲器,因此存儲器連接多個節點(用共享的SCSI 匯流排或光纖通道就可以做到)。
    Drbd 也可以作為一個共享的設備,但是它並不需要任何不常見的硬體。它在IP 網路中運行,而且在價格上IP 網路要比專用的存儲網路經濟的多。
    目前,drbd 每次只允許對一個節點進行讀寫訪問,這對於通常的故障切換高可用性集群來講已經足夠用了。以後的版本將支持兩個節點進行讀寫存取。
    這很有用,比如對GFS 來講就是如此。兼容性Drbd 可以在ide、SCSI 分區和整個驅動器之上運行,但不能在迴路模塊設備上運行。
   (如果您硬要這樣做,它就會發生死鎖)。
    Drbd 也不能在回送網路設備中運行。(因為它同樣會發生死鎖:所有請求都會被發送設備佔用,發送流程也會阻塞在sock_sendmsg()中。有時,
    接收線程正從網路中提取數據塊,並試圖把它放在高速緩存器中;但系統卻要把一些數據塊從高速緩存器中取到磁碟中。
    這種情況往往會在接收器的環境下發生,因為所有的請求都已經被接收器塊佔用了。
五、安裝
    下載軟體
    最新的穩定版本為0.6.11,您可從http://www.drbd.org/releases.html 下載它。
    您可以從CVS 中得到最新的源文件。注意,有時代碼不能進行編譯。您可以通過cvs 或命令行界面得到它:
    $ export CVSROOT= : pserver : anonymous@cvs.drbd.org :
    /var/lib/cvs/drbd
    $ cvs login
    (Logging in to anonymous@cvs.drbd.org)
    CVS password:
    $ cvs -z9 checkout drbd
    要獲取當前的開發分支,可以使用如下命令:
    $ cvs -z9 checkout -r rel-0_7-branch
六、編譯包
    直接編譯即可。只需如下操作:
    $ make
    $make install
    如果您想為drbd 編譯不同版本的內核,您需要定義KERNVER(包括路徑)同時您也要定義drbd 的安裝路徑。
    make KERNVER=2.4.22-7 KDIR=/usr/src/linux-2.4.22-7-include
    make KERNVER=2.4.22-7 PREFIX=/local/lib/module/path/ install
    測試載入drbd 模塊
    如果這些都已經創建和安裝妥當,您就可以測試載入模塊了。
    $ /sbin/insmod drbd
    如果一切正常,您不會看見任何ERROR(錯誤)信息,用Ismod 程序可以驗證模塊是否已被載入。
    dev2-98:~/rpm/SPECS # lsmod
    Module Size Used by Tainted:PF
    drbd 40140 0 (unused)
    ...
    $ dmesg
    ...
    drbd:initialised.Version:0.6.8(api:63/proto:62)
    如果您看到了drbd,就表示一切正常。就可以繼續執行rmmod,並轉到舉例配置部分。
    $ /sbin/rmmod drbd
    問題未解決符號
    如果在載入模塊時,出現了如下信息:
    drbd.o:unresolved symbol sock_alloc
    drbd.o:unresolved symbol proc_register
    drbd.o:unresolved symbol schedule_timeout
    ...
    這就表示您在內核中編譯了CONFIG_MODVERSIONS,而DRBD 模塊中沒有編譯MODVERSIONS,或者正好相反。這裡給出兩種解決方案:
    用不帶MODVERSIONS 的系統: 更改您的內核配置, 刪掉CONFIG_MODVERSIONS 選項。(參見~linux/.config。)重建內核。
    使用帶MODVERSIONS 模塊的系統:編輯~drbd/Makefile.vars,並將-DMODVERSIONS -DCONFIG_MODVERSIONS 添加到KERNFLAGS,最後重建DRBD。
七、命令的使用
    drbdsetup
    drbsetup 是drbd 程序套件中的底層配置工具。您可以使用該工具把低層模塊設備和drbd 設備聯繫起來、安裝drbd 設備對,
    以便鏡像它們的低層模塊設備和檢查運行drbd 設備的配置。
    使用drbdsetup 的例子
    假設您的兩台機器分別命名為節點1(10.0.0.10)和節點2(10.0.0.20),您想在這兩台機器上使用/dev/hdc6 作為它們的低層設備。
    那麼在節點2 上,您可以發出以下命令:
    $ insmod drbd.o
    $ drbdsetup /dev/nb0 disk /dev/hdc6
    $ drbdsetup /dev/nb0 net 10.0.0.20 10.0.0.10 B
    在節點1 上,您可以發出以下命令:
    $ insmod drbd.o
    $ drbdsetup /dev/nb0 disk /dev/hdc6
    $ drbdsetup /dev/nb0 net 10.0.0.10 10.0.0.20 B
    $ drbdsetup /dev/nb0 primary
    此時,您就可以像在其他設備一樣使用/dev/nb0 了。
    $ mkfs -b 4096 /dev/nb0
    $ mount /dev/nb0 /mnt/mountpoint
     上例中使用了「B」協議。drbd 允許您選擇所需的協議,以控制如何將數據寫入輔助設備。
八、DRBD 協議
    協議說明
    A 數據一旦寫入磁碟併發送到網路中就認為完成了寫入操作。
    B 收到接收確認就認為完成了寫入操作。
    C 收到寫入確認就認為完成了寫入操作。
    您還可以選擇其它參數來將數據傳輸給磁碟和網路選項。更多詳情,請參見drbdsetup 手冊頁。
九、Config 和腳本的使用
    drbd.conf 和腳本
    在上面,我們介紹了drbdsteup 的使用。drbd 也允許您直接在drbd.conf 文件中進行設置。通過正確地設置該文件和使用init.d/drbd 腳本,
    您能夠輕鬆讓drbd在機器啟動后正常運行起來。
    drbd.conf 設置舉例
    在本配置中,兩台機器分別命名為thost1 和thost2。thost1 的IP 地址是10.1.1.31,thost2 的IP 地址是10.1.1.32。
    我們要在thost1 的/dev/hda7 和thost2的/dev/hda7 之間創建鏡像。下面是一個完成該操作的/etc/drbd.conf 文件範例:
        resource drbd0 {
        protocol=B
        fsck-cmd=fsck.ext2 -p -y
        on thost1 {
        device=/dev/nb0
        disk=/dev/hda7
        address=10.1.1.31
        port=7789
        }
        on thost2 {
        device=/dev/nb0
        disk=/dev/hda7
        address=10.1.1.32
        port=7789
        }
        }
    腳本的使用
    創建了drbd.conf 文件之後,在thost1 上運行如下命令:
    $ /etc/rc.d/init.d/drbd start
    在thost2 進行同樣的操作,
    $ /etc/rc.d/init.d/drbd start
    此時,兩台設備之間就建立起一個鏡像,您可以查看/proc/drbd 進行核實。
    $ cat /proc/drbd
    現在您可以在設備上創建一個文件系統,然後把它載入到thost1 上。
    $ mkfs /dev/nb0
    $ mount /dev/nb0 /mnt/disk
    恭喜您,現在您已經使用drbd 創建了一個鏡像。要進一步創建高可用性的故障切換系統,請查看腳本子目錄,並可結合使用linux-ha.org 上提供的心跳軟體

##########  FAQ  ###########

十、其它問題
    1、超時限制的工作原理是怎樣的呢?
       主節點在發出數據塊之後,會等待另一個節點在某一時間範圍內做出響應(該時間範圍可以通過drbdsetup 中的超時限制選項進行設置)。
       一旦另一個節點超過該時限仍未做出響應,主節點就會斷開連接並嘗試著重新再建立一個連接。
    2、為什麼超時限制短點好呢?
       如果另一個節點停機,主節點會就地等待,阻斷所有正在向DRBD 設備寫入數據的應用。這樣一來,一直要等到超時限制過後它才會判斷出
       另一個節點已經停機,而您的應用就會停滯這麼長時間。
    3、為什麼短的超時限制會導致timeout/resync/connect 的情況發生呢?
       如果次節點的IO 子系統較慢,就會發生這種情況。
    4、什麼是「延遲數據包」?
       為改進這種狀況,我產生了「延遲期限」數據包的設想。當次節點意識到它將超時的時候,它就會發送這種數據包。
    5、如果看到出現了timeout/resync/connect 情況時,您會怎麼辦?
       延長超時限制。(因為connect-int 和pint-int 需要比超時限制更長,所以也要相應地延長它們)
    6、tl-size
       對於syslog 中出現「transfer log too small」(傳輸日誌太小)這樣的信息,該採取的措施需要很大篇幅來描述。
    7、SyncAll 只運行了一半,但我覺得它實在太慢了!
       您可以在運行時使用drbdsetup 工具里的syncer 子命令來重新配置同步參數。請參見drbdsetup man page(手冊頁)了解更多信息。
十一、一般問題
    1、問:首先,什麼是DRBD?
       DRBD 是Linux 操作系統的一個分散式遠程塊設備。它允許您在遠程機器上建立一個本地塊設備的實時鏡像。與心跳連接結合使用,
       它可打造出高可用性的Linux 集群。
    2、問:哪裡可以下載DRBD?
       答:最新版本的DRBD 可以從LinBit Information Technologies GmbH 獲得。此外,DRBDD 還包括在許多Linux 發行版中
       例如DebianGNU/Linux 和其它程序。
    3、問:DRBD 適用於哪種許可情形?
       答: DRBD 是依照General Public License Version 2 vom Juni 1991(GPL)發行的。因此在這種許可條件下,它可以自由分發和修改。
十二、編譯問題
    問:在編譯drbd_syncer.c 時出現「structure has no member named `nice'」信息,這是為什麼?
       答:如果您指的是:
       drbd_syncer.c:In function `drbd_syncer':
       drbd_syncer.c:409:structure has no member named `nice'
       drbd_syncer.c:439:structure has no member named `nice'
       drbd_syncer.c:452:structure has no member named `nice'
       make:*** Error 1
       make:Leaving directory `/usr/local/src/drbd-0.6.3/drbd'
       Make*** Error 2
       請使用下面的補丁:
       --- drbd_syncer.c Wed Oct 16 06:19:17 2002
       +++ drbd_syncer.c.orig Wed Oct 16 06:18:27 2002
       @@ -311,7 +311,7 @@
       #define SPEED_MIN(mdev-conf.sync_rate_min)
       #define SYNC_MARKS 10
       #define SYNC_MARK_STEP (3*HZ)
       -#if defined ( MAX_RT_PRIO ) || defined
       (CONFIG_MAX_RT_PRIO)
       +#if 1
       /* this should work for the O(1)scheduler */
       #define drbd_set_user_nice ( current,x ) set_user_nice ( current,
       (x))
       #else
十三、安裝和設置
    1、問:我能加次級設備嗎(至少只讀)?
       答:DRBD 對此沒有限制,但是您的文件系統會變得非常混亂,因為它無法了解底層設備的變化。總之,沒有ext2、ext3、reiserFS、JFS 或XFS,
        它不能工作。如果您需要的不只是一個鏡像,而是共享文件系統,那您可以使用GFS 或OpenGFS,但它們速度較慢。這也是DRBD 不允許載入次級
        設備的原因。因此如果您要載入次級設備,可以先把次級設置為主設備。同時載入的話,兩個設備均不能工作。
    2、問: DRBD 能使用兩個容量大小不同的設備嗎?
        答: 一般情況下可以,但有些問題需要注意:
        本地DRBD 使用的是配置的磁碟容量,與物理容量相等。如果沒有給出,則將被設置為物理容量。連接時,設備容量將設置為兩個節點中最小容量。
        如果缺少常識的話,您可能會碰到一些問題:如果您先是在一個節點上使用drbd ,而且沒有配置好磁碟容量,之後又連接了一個容量較小的設備。
        這時,drbd 設備容量在運行時就會變小。在系統記錄里,您會發現一條信息提示「your size hint is bogus,please change to some value」
        (您的容量信息不真實,請更改)。這樣一來就會讓設備頂級的文件系統造成混淆。
        因此,如果您的設備容量不同,請明確地為DRBD 設置所使用的容量。
    3、問: XFS 能和DRBD 一起使用嗎?
        答:XFS 使用動態塊大小,因此需要配備DRBD 0.7 或更高版本。
    4、問:當我試著載入drbd 模塊時,遇到了下面的問題:
        compiled for kernel version 2.4.18-4GB while this kernel is version 2.4.18-64GB-SMP.
        答:您的實際內核與要在其上構建drbd 的內核的.config 不一致。在
        SuSE Linux 上,您可以使用下面的命令進行配置:
        cd /usr/src/linux/
        make cloneconfig
        make dep
        通常,您不必重新編譯內核,只編譯drbd 即可。以後的DRBD 版本將在創建過程中解決這一問題。
十四、操作問題
    1、問:為什麼drbdsetup /dev/nb0 複製((完全同步))的速度那麼慢?
        答:出於歷史原因,複製需要回寫數據。而在回寫數據時,很多物理設備的速度都非常慢。在更新的DRBD 版本中可能會解決這一問題。
    2、問:為什麼我的「load averag」(平均負載)那麼高?
        答:平均負載定義為給定的時間間隔內,runqueue 里的平均進程數。如果進程具有以下特點,它就會被列入runqueue 中:
        -- 不是在等待外部事件(如:在某些fd 上選擇)
        -- 不是在等待它自己的事件(不是受呼「等待」)
        -- 未被終止
        註:所有等待磁碟io 的進程都會包括在內。所以,雖然系統實際可能近乎是空閑的,但如果有很多進程在等待磁碟io, 「load average」就會很高。
        例:關閉nfs 伺服器,啟動100
        ls /path/to/noncached/dir/on/nfs/mount-point
        在客戶機上,雖然CPU 什麼也沒做,只要nfs 超時(可能是幾個星期),您還是會得到一個100+的「load average」。
       您可以通過其他方式(例如vmstat,sysstat/sar)來檢測您的系統負載,這樣可幫您找出系統的瓶頸所在。或者您還可以使用多個磁碟(不只是分區!)       或配備10.000rpm SCSI磁碟的RAID,甚至是千兆乙太網。即使在快速乙太網設備中,您也很少會超過每秒6Mbyte。.((100MBit/s 除去協議開銷等最多       可剩下12.5MByte/s)
    3、問:
        warning: Return code 255 from
        /etc/ha.d/resource.d/datadisk
        在使用帶心跳的數據磁碟腳本時出現這些信息說明了什麼?
        答:退出碼255 很可能產生於導致死機的腳本,它有一個詳細的錯誤信息。捕獲腳本輸出,這是ha.cf 中的debugfile 指令iirc。.如果仍沒有用,
        您可以手動操作,並查看所給出的錯誤信息。
    4、數據磁碟會提示如「cannot promote to primary, synchronization running」
        或「fsck failed」等等。
        問:當節點從次級站點上升到主站點時,drbd 設備就不能載入到主站點
        上了,但可以進行手動載入。.
        答:DRBD 不會自動載入分區,腳本數據磁碟就是用來做這項工作的。
    5、問:當心跳在節點1 上啟動並試著運行數據磁碟腳本以成為RAID 陣列中的主節點時,出現故障,原因是它仍在同步。
        答: 在ha.cf 中啟用「nice_failback on「,或者您還可以阻斷drbd init 腳本塊直到全部同步完成,請參見drbd.conf.A。
    6、問:像st、ns、nr、dw、dr 等欄位在/proc/drdb 中有什麼含義?
    答:
表4. /proc/drbd
Field        說明                  值:
cs         連接狀態               出現的值:
                    o Unconfigured:設備在等待配置。
                    o Unconnected:連接模塊時的過渡狀態。
                    o WFConnection:設備等待另一測的配置。
                    o WFReportParams:過渡狀態,等待新TCP 連接的第一個數據包時。.
                    o SyncingAll:正將主節點的所有模塊複製到次級節點上。.
                    o SyncingQuick:通過複製已被更新的模塊(因為現在次級節點已經離開了集群)來更新次級節點。
                    o Connected:一切正常。
                    o Timeout:過渡狀態。
st         狀態(設備的作用)      可能的值為:
                    o 本地/遠程一級狀態
                    o 二級狀態
                    o 未知(這不是一種作用)
ns    網路發送    模塊號碼
nr    網路接收    模塊號碼
dw   磁碟寫入    模塊號碼
DR   磁碟讀取    模塊號碼
of    運行中(過時的)模塊號碼
pe   待解決的    模塊號碼
ua    未答覆的    模塊號碼(最好為0)
《解決方案》

drbd安裝使用指南

一:概述:

DRBD 是由內核模塊和相關腳本而構成,用以構建高可用性的集群。其實現方式是通過網路來鏡像整個設備。您可以把它看作是一種網路RAID。 Drbd 負責接收數據,把數據寫到本地磁碟,然後發送給另一個主機。另一個主機再將數據存到自己的磁碟中。   

源碼下載http://oss.linbit.com/drbd/0.7/drbd-0.7.19.tar.gz

核心參考文檔:http://www.drbd.org/drbd-howto.html



二:主要實現

假設有兩台機器nannan:192.168.0.136 需要鏡像的硬碟:/dev/hdc3

IXDBA.NET社區論壇

  root:192.168.0.139 需要鏡像的硬碟:/dev/hdc2

主伺服器為192.168.0.136 簡稱為136

備份伺服器為192.168.0.139 簡稱為139

平常對數據讀寫都在136上實現,當136 down掉后可以啟動139,實現數據的熱備份。

真正的熱切換需要才用HA 來實現。



三:下載安裝

安裝環境:Red Hat Enterprise Linux AS release 4,內核版本:2.6.9-22.EL

確認內核源碼存在,可到http://oss.linbit.com/drbd/去載.

下載源碼注意:當前最新的drbd-8.0pre3,配置文件無法正常配置,出現一大堆錯誤,所以下載以前的穩定版本。tar源碼解包后

運行:

A、make KDIR=/usr/src/linux   /*內核所在的位置*/

/*如果你沒有更改內核可以直接運行make,軟體會直接到/lib/module裡邊去尋找系統環境,如果是新的內核需要對內核進行編譯安裝,

否則make時候會錯誤中斷掉*/

B、make install

安裝完主要生成命令:drbdsetup ,drbdadmin

和配置文件:/etc/drbd.conf ,啟動文件,/etc/init.d/drbd

模塊文件:drbd.ko(在編譯好的安裝包目錄下的drbd下可以找到)

所有命令和配置文件都可以在源碼包編譯成功的目錄下面找到。

./scripts/drbd.conf是最原始的配置文件,當/etc/drbd.conf被破壞,可以直接拷貝覆蓋掉。

C、創建硬體設備drbd

mknod /dev/drbd0 b 147 0

mknod /dev/drbd1 b 147 1

mknod /dev/drbd2 b 147 2

或者用shell來建立多個:

#for i in $(seq 0 15) ; do mknod /dev/drbd$i b 147 $i ; done

D、DRBD 協議說明

    A 數據一旦寫入磁碟併發送到網路中就認為完成了寫入操作。

    B 收到接收確認就認為完成了寫入操作。

    C 收到寫入確認就認為完成了寫入操作。

    您還可以選擇其它參數來將數據傳輸給磁碟和網路選項。更多詳情,請參見drbdsetup 手冊頁。

四:配置drbd

修改/etc/drbd.conf

主要修改了:機器名和設備名ip地址

==================================================

  on web1{

    device     /dev/drbd0;

    disk       /dev/hdc3;

    address    192.168.0.136:7788;

    meta-disk  internal;

# meta-disk is either 'internal' or '/dev/ice/name '

    #

    # You can use a single block device to store meta-data

    # of multiple DRBD's.

    # E.g. use meta-disk /dev/hde6; and meta-disk /dev/hde6;

    # for two different resources. In this case the meta-disk

    # would need to be at least 256 MB in size.

    #

    # 'internal' means, that the last 128 MB of the lower device

    # are used to store the meta-data.

    # You must not give an index with 'internal'.

  }

on web2 {

    device    /dev/drbd0;

    disk      /dev/hdc2;

    address   192.168.0.139:7788;

    meta-disk internal;

  }

==================================================

下面是整個drbd.conf的配置文件:

注意:配置的版本是drbd-0.7.19.tar.gz,不同版本無法兼容。修改的地方就以上幾個地方和註釋,還有把除了resource r0 外的其他配置塊如resource r1等全部去掉。

也就是說

/****

on root {

    device    /dev/drbd0;

    disk      /dev/hdc2;

    address   192.168.0.139:7788;

    meta-disk internal;

  }

}

****/

後面的所有內容全部去掉,



下面是一個完整的配置好的drbd.conf

#

# drbd.conf example

#

skip {

  As you can see, you can also comment chunks of text

  with a 'skip{ skipped text }' section.

  This comes in handy, if you just want to comment out

  some 'resource <some name> {...}' section:

  just precede it with 'skip'.

  The basic format of option assignment is

  <option name><linear whitespace><value>;

  

  It should be obvious from the examples below,

  but if you really care to know the details:

  

  <option name> :=

        valid options in the respective scope

  <value>  := <num>|<string>|<choice>|...

              depending on the set of allowed values

              for the respective option.

  <num>    := +, sometimes with an optional suffix of K,M,G

  <string> := (<name>|\"([^\"\\\n]*|\\.)*\")+

  <name>   := +

}

# global {

    # use this if you want to define more resources later

    # without reloading the module.

    # by default we load the module with exactly as many devices

    # as configured mentioned in this file.

    #

    # minor-count 5;

    # The user dialog counts and displays the seconds it waited so

    # far. You might want to disable this if you have the console

    # of your server connected to a serial terminal server with

    # limited logging capacity.

    # The Dialog will print the count each 'dialog-refresh' seconds,

    # set it to 0 to disable redrawing completely. [ default = 1 ]

    #

    # dialog-refresh 5; # 5 seconds

    # You might disable one of drbdadm's sanity check.

    # disable-ip-verification;

# }

#

# this need not be r#, you may use phony resource names,

# like "resource web" or "resource mail", too

#

resource r0 {

  protocol C;

# what should be done in case the cluster starts up in

  # degraded mode, but knows it has inconsistent data.

  incon-degr-cmd "echo '!DRBD! pri on incon-degr' | wall ; sleep 60 ; halt -f";

  startup {

    degr-wfc-timeout 120;    # 2 minutes.

  }

  disk {

  }

  net {

  }

  syncer {

    rate 10M;

    group 1;

    al-extents 257;

  }

  on web1{

    device     /dev/drbd0;

    disk       /dev/hdc3;

    address    192.168.0.136:7788;

    meta-disk  internal;

  }

  on web2 {

    device    /dev/drbd0;

    disk      /dev/hdc2;

    address   192.168.0.139:7788;

    meta-disk internal;

  }

}

=================================================



五、啟動drbd

先確認兩台要鏡像的機器是否正常,之間的網路是否通暢,需要載入的硬碟是否處於umount狀態。

A、 drbd採用的是模塊控制的方式

所以先要載入drbd.ko 模塊

在136伺服器執行:

#insmod drbd.ko 或者modprobe drbd

drbd.ko可以在編譯好的源碼包里找到。

判斷是否載入成功可以使用lsmod來查看:

#lsmod

Module     size    Used by

drbd     143088   -

有的話表示載入模塊成功

#drbdadm up all

啟動drbd服務,使他掛在後台狀態下運行.

可以使用命令netstat -an查看

有啟動埠7788,同時也監聽對方的7788埠,來實現數據交換。

netstat -ant的輸出結果里有一行:

#netstat -ant

tcp        0      0 192.168.0.136:7789          0.0.0.0:*                   LISTEN



B:在139伺服器執行

#modprobe drbd

#/etc/rc.d/init.d/drbd start

netstat -atn的輸出結果,說明兩台虛擬機的drbd服務已經連接上了:

#netstat -ant

tcp        0      0 192.168.0.136:7789          192.168.0.139:32845         ESTABLISHED

tcp        0      0 192.168.0.136:32770         192.168.0.139:7789          ESTABLISHED

六:設置許可權

drbd的基本服務都起來了,現在需要對主的伺服器也就使192.168.0.136這台伺服器進行配置,讓他能夠對drbd0設備進行讀寫。

在136機器上運行

#drbdadm -- --do-what-I-say  primary all   #設置136伺服器為同步主目錄,也就是同步以136的這個分區為準.

注意命令格式需要一樣,沒有任何提示的話表示基本上成功了

#sfdisk -s

可以看見有一個硬體設備:/dev/drbd0

此時,兩台設備之間就建立起一個鏡像,您可以查看/proc/drbd 進行核實。

# cat /proc/drbd

如果原來硬碟沒有文件系統的話,現在您可以在設備/dev/drbd0上創建一個文件系統,然後把它載入到136上。

#mkfs.ext3 -j /dev/drbd0

#mkdir /mnt/gaojf

# mount /dev/drbd  /mnt/gaojf

現在/dev/drbd0就等於你伺服器上面的一個硬體設備,你可以對他進行任何的讀寫操作。

七:drbd測試:

1:在136主伺服器上:

#drbdadm primary all

#touch /mnt/gaojf/gaojf

完后,在執行

#umount /mnt/gaojf

#drbdadm secondary all

2:接著到139備用伺服器上執行

#drbdadm primary all

#mkdir -p /mnt/gaojf

#mount /dev/drbd0 /mnt/gaojf

#ls -l /mnt/gaojf/gaojf

gaojf

Ok,沒問題,可以看到數據在136伺服器寫入,在139馬上可以看到.



幾點注意的地方:

1. mount drbd設備以前必須把設備切換到primary狀態。

2. 兩個節點中,同一時刻只能有一台處於primary狀態,另一台處於secondary狀態。

3. 處於secondary狀態的伺服器上不能載入drbd設備。

4. 主備伺服器同步的兩個分區大小最好相同,這樣不至於浪費磁碟空間,因為drbd磁碟鏡像相當於網路raid 1.

5: 在配置過程中,如果出現下面錯誤

Missing argument 'meta_data_dev'

USAGE:

disk lower_dev meta_data_dev meta_data_index [{--size|-d} 0 ... 8587575296]

     [{--on-io-error|-e} {pass_on|call-local-io-error|detach}]

     [{--fencing|-f} {dont-care|resource-only|resource-and-stonith}] [{--use-bmbv|-b}]

那麼就還要初始化meta-data area

drbdadm create-md r0

更詳細的參考:http://www.ixdba.net/article/5c/125.html

[ 本帖最後由 gunguymadman 於 2008-10-31 16:40 編輯 ]

[火星人 ] drbd 磁碟技術已經有806次圍觀

http://coctec.com/docs/service/show-post-26587.html