用戶手冊:http://www.drbd.org/users-guide語法及詳解參數:http://www.drbd.org/users-guide-emb/re-drbdconf.html官方示例:http://www.drbd.org/users-guide drbd及其配置文件中的相關名詞: failover:失效轉移。通俗地說,即當A無法為客戶服務時,系統能夠自動地切換,使B能夠及時地頂上繼續為客戶提供服務,且客戶感覺不到這個為他提供服務的對象已經更換。(注:來自百度百科。)diskless mode:無盤模式。在此模式下,節點放棄自己的底層設備,轉而通過網絡到遠程節點上去讀寫數據。參考:http://www.drbd.org/users-guide/s-handling-disk-errors.htmlpeer:對等端,在兩個NameNode的環境下,指另外一個NameNodestonith:Shoot The Other Node In The Head的簡寫,爆其它節點的頭!它是避免split brain的一個措施,若發生split brain,則一個node會發出指令讓另一個node關機,避免兩臺node都浮動成PRimary。但這個功能本身也有一定的風險。fence-peer:drbd有一個機制,當復制連接被中斷時它將隔離對等節點。drbd為這個機制定義一個接口,而與heartbeat綁定的drbd-peer-outdater helper就是個通過此接口來實現此機制的工具。但是我們可以很輕松地實施我們自己的peer fencing helper程序,而實施我們自己的peer fencing程序的前提條件之一就是,必須在handlers配置段中定義fence-peer處理器!參考:http://www.drbd.org/users-guide/s-fence-peer.htmlStandAlong mode:即節點無法與其它節點進行通信的狀態。參考:http://www.drbd.org/users-guide/ch-admin.html#s-connection-stateswrite barriers:日志文件系統中的一種保護機制,用來保持數據的一致性。日志文件系統在磁盤的專門區域維護著一個日志。當文件系統發覺到元數據的變化時,它將首先把這些變化寫入日志,而不是立刻去更改元數據。當這些變化信息(事件信息)寫入日志后,文件系統將向日志中添加一個“提交報告”來表明文元數據的更改是合法的。只有當“提交報告”寫入日志后,內核才會真正對元數據進行寫操作。在寫“提交報告”以前,必須完全保證事件信息已經寫入了日志。僅僅如此還不夠,與此同時驅動器還維護了一個巨大的內部caches,而且為了更好的性能表現,它會重新對操作進行排序,所以在寫“提交報告”之前,文件系統必須明確地指導磁盤來獲取所有的日志數據,并存入介質。如果“提交報告”先于事件信息寫入日志,日志將被損壞!內核的I/O子系統通過使用barriers來實現上述功能。大體來說,一個barrier生成后,它將禁止其后的所有數據塊的寫入,直到該barrier之前的數據塊寫入被提交到介質。注意:ext3和ext4文件系統默認不使用barriers,管理員必須明確啟用它們才能使用該功能。而且,并非所有文件系統都支持barrier。參考:http://lwn.net/Articles/283161meta data:DRBD在專門的區域存儲關于數據的各種各樣的信息,這些信息就是metadata,它包括如下信息:1、DRBD設備的空間大小2、Generation Identifier(GI)3、Activity Log(AL)4、quick-sync bitmap這些metadata有兩種存儲方式:internally和externally。存儲方式是在每個resource配置段中指定的。這兩種存儲方式各有優缺點。Internal metadata:一個resource被配置成使用internal metadata,意味著DRBD把它的metadata,和實際生產數據存儲于相同的底層物理設備中。該存儲方式是在設備的最后位置留出一個區域來存儲metadata。該存儲方式的優點是:因為metadata是和實際生產數據緊密聯系在一起的,如果發生了硬盤損壞,不需要管理員做額外的工作,因為metadata會隨實際生產數據的丟失而丟失,同樣會隨著生產數據的恢復而恢復。它的缺點在于:如果底層設備只有一塊物理硬盤(和RAID相反),這種存儲方式對寫操作的吞吐量有負面影響,因為應用程序的寫操作請求會觸發DRBD的metadata的更新。如果metadata存儲于硬盤的同一塊盤片上,那么,寫操作會導致額外的兩次磁頭讀寫移動。要注意的是:如果你打算在已有數據的底層設備中使用internal metadata,需要計算并留出DRBD的metadata所占的空間大小,并采取一些特殊的操作,否則很有可能會破壞掉原有的數據!至于需要什么樣的特殊操作,可以參考本條目末尾的鏈接文章。我要說的是,最好不要這樣做!external metadata:該存儲方式比較簡單,就是把metadata存儲于一個和生產數據分開的專門的設備塊中。它的優點:對某些寫操作,提供某些潛在的改進。缺點:因為metadata和生產數據是分開的,如果發生了硬盤損壞,在更換硬盤后,需要管理員進行人工干預,從其它存活的節點向剛替換的硬盤進行完全的數據同步。什么時候應該使用exteranl的存儲方式:設備中已經存有數據,而該設備不支持擴展(如LVM),也不支持收縮(shrinking)。如果計算DRBD的元數據所需要的確切空間:
drbd配置文件: drbd安裝完成后,會自動創建一個配置文件/etc/drbd.conf,內容為空,但你可以找到一個模板文件/usr/share/doc/drbd.../drbd.conf,該模板文件只有兩個include語句。為什么模板文件如此簡潔?drbd的配置文件分成三個部分:global、common和resource。這三部分雖然可以全部寫入一個/etc/drbd.conf文件中,但是按照官方慣例,這三部分是分開的:/etc/drbd.d目錄下的global_common.conf文件包含global和common配置段,而目錄下的每個.res文件包含一個resource配置段。關于global配置段:如果所有配置段都在同一個drbd.conf文件中,則該配置必須放在最頂端。常用選項:minor-count:從(設備)個數,取值范圍1~255,默認值為32。該選項設定了允許定義的resource個數,當要定義的resource超過了此選項的設定時,需要重新載入drbd內核模塊。dialog-refreshtime:time取值0,或任一正數。默認值為1。我沒理解官方對該選項的解釋。很少見到此選項被啟用。disable-ip-verification:是否禁用ip檢查usage-count:是否參加用戶統計,合法參數為yes、no或ask根據官方示例的說法,一般只配置usage-count選項即可。不過,說實話,drbd的官方文檔確實挺操蛋,有些地方說的比較含糊。當然,也有我水平有限的原因。關于common配置段:該配置段不是必須的,但可以用來設定多個resource共有的選項,以減少重復性工作。該配置段中又包含如下配置段:disk、net、startup、syncer和handlers。disk配置段:該配置段用來精細地調節drbd底層存儲的屬性。譯者注:這是一個非常重要的配置段,如果底層設備(磁盤)發生了錯誤或損壞,該配置段將按照設定的策略發生作用。常用選項:on-io-error選項:此選項設定了一個策略,如果底層設備向上層設備報告發生I/O錯誤,將按照該策略進行處理。有效的策略包括:pass_on:把I/O錯誤報告給上層設備。如果錯誤發生在primary節點,把它報告給文件系統,由上層設備處理這些錯誤(例如,它會導致文件系統以只讀方式重新掛載),它可能會導致drbd停止提供服務;如果發生在secondary節點,則忽略該錯誤(因為secondary節點沒有上層設備可以報告)。該策略曾經是默認策略,但現在已被detach所取代。call-local-io-error:調用預定義的本地local-io-error腳本進行處理。該策略需要在resource配置段的handlers部分,預定義一個相應的local-io-error命令調用。該策略完全由管理員通過local-io-error命令(或腳本)調用來控制如何處理I/O錯誤。detach:發生I/O錯誤的節點將放棄底層設備,以diskless mode繼續工作。在diskless mode下,只要還有網絡連接,drbd將從secondary node讀寫數據,而不需要failover。該策略會導致一定的損失,但好處也很明顯,drbd服務不會中斷。官方推薦和默認策略。 譯者注:如果使用detach策略來處理底層I/O錯誤,該策略會不會報告錯誤給管理員,以便管理員手動更換此節點的磁盤呢? handler處理器部分應該會有這方面的內容。fencing選項:該選項設定一個策略來避免split brain的狀況。有效的策略包括:dont-care:默認策略。不采取任何隔離措施。resource-only:在此策略下,如果一個節點處于split brain狀態,它將嘗試隔離對等端的磁盤。這個操作通過調用fence-peer處理器來實現。fence-peer處理器將通過其它通信路徑到達對等節點,并在這個對等節點上調用drbdadm outdate res命令。resource-and-stonith:在此策略下,如果一個節點處于split brain狀態,它將停止I/O操作,并調用fence-peer處理器。處理器通過其它通信路徑到達對等節點,并在這個對等節點上調用drbdadm outdate res命令。如果無法到達對等節點,它將向對等端發送關機命令。一旦問題解決,I/O操作將重新進行。如果處理器失敗,你可以使用resume-io命令來重新開始I/O操作。net配置段:該配置段用來精細地調節drbd的屬性,網絡相關的屬性。常用的選項有:sndbuf-size:該選項用來調節TCP send buffer的大小,drbd 8.2.7以前的版本,默認值為0,意味著自動調節大??;新版本的drbd的默認值為128KiB。高吞吐量的網絡(例如專用的千兆網卡,或負載均衡中綁定的連接)中,增加到512K比較合適,或者可以更高,但是最好不要超過2M。timeout:該選項設定一個時間值,單位為0.1秒。如果搭檔節點沒有在此時間內發來應答包,那么就認為搭檔節點已經死亡,因此將斷開這次TCP/IP連接。默認值為60,即6秒。該選項的值必須小于connect-int和ping-int的值。connect-int:如果無法立即連接上遠程DRBD設備,系統將斷續嘗試連接。該選項設定的就是兩次嘗試間隔時間。單位為秒,默認值為10秒。ping-int:該選項設定一個時間值,單位為秒。如果連接到遠程DRBD設備的TCP/IP的空閑時間超過此值,系統將生成一個keep-alive包來檢測對等節點是否還存活。默認值為10秒。ping-timeout:該選項設定一個時間值,單位是0.1秒。如果對等端沒有在此時間內應答keep-alive包,它將被認為已經死亡。默認值是500ms。max-buffers:該選項設定一個由drbd分配的最大請求數,單位是頁面大?。≒AGE_SIZE),大多數系統中,頁面大小為4KB。這些buffer用來存儲那些即將寫入磁盤的數據。最小值為32(即128KB)。這個值大一點好。max-epoch-size:該選項設定了兩次write barriers之間最大的數據塊數。如果選項的值小于10,將影響系統性能。大一點好。用戶手冊的另外一部分也提到了max-buffers和max-epoch-size,跟drbd.conf部分的解釋稍有不同:drbd.conf的幫助文檔中說,max-buffers設定的是最大請求數,max-epoch-size設定的是最高的數據塊數;而這部分的幫助文檔說,這兩個選項影響的是secondary節點寫操作的性能,max-buffers設定的是最大的buffers數,這些buffers是drbd系統是為即將寫入磁盤的數據而分配的;max-epoch-size設定的是兩次write barrier之間所允許的最大請求數。多數情況下,這兩個選項應該并行地設置,而且兩個選項的值應該保持一致。兩個選項的默認值都是2048,在大多數合理的高性能硬件RAID控制器中,把它們設定為8000比較好。兩個部分的解釋結合起來看,max-buffers設定的是最大的數據塊數,max-epoch-size設定的是所能請求的最大塊數。參考:http://www.drbd.org/users-guide-emb/s-throughput-tuning.html#s-tune-disable-barriersko-count:該選項設定一個值,把該選項設定的值 乘以 timeout設定的值,得到一個數字N,如果secondary節點沒有在此時間內完成單次寫請求,它將從集群中被移除(即,primary node進入StandAlong模式)。取值范圍0~200,默認值為0,即禁用該功能。allow-two-primaries:這個是drbd8.0及以后版本才支持的新特性,允許一個集群中有兩個primary node。該模式需要特定文件系統的支撐,目前只有OCFS2和GFS可以,傳統的ext3、ext4、xfs等都不行!cram-hmac-alg:該選項可以用來指定HMAC算法來啟用對等節點授權。drbd強烈建議啟用對等節點授權機制??梢灾付?proc/crypto文件中識別的任一算法。必須在此指定算法,以明確啟用對等節點授權機制。shared-secret:該選項用來設定在對待節點授權中使用的密碼,最長64個字符。data-integrity-alg:該選項設定內核支持的一個算法,用于網絡上的用戶數據的一致性校驗。通常的數據一致性校驗,由TCP/IP頭中所包含的16位校驗和來進行,而該選項可以使用內核所支持的任一算法。該功能默認關閉。另外,還有after-sb-0pri, after-sb-1pri, after-sb-2pri這三個選項,split brian有關。startup配置段:該配置段用來更加精細地調節drbd屬性,它作用于配置節點在啟動或重啟時。譯者注:我曾試過不配置此部分,在首次啟用第二個節點的DRBD塊設備時,遇到了一個問題:它一直等待有一個對等節點出現,而遲遲不肯啟動,必須手動讓它停止等待。如下: |
新聞熱點
疑難解答