DB2 for Linux, UNIX, and Windows 9.7 版
安裝 DB2 伺服器產品之後 > 後置安裝作業 > 分割的資料庫環境 >

DB2 節點配置檔的格式

db2nodes.cfg 檔案可用來定義參與 DB2® 實例的資料庫分割區伺服器。若您要使用資料庫分割區伺服器通訊的高速交互連接,則 db2nodes.cfg 檔案也可用於指定高速交互連接的 IP 位址或主機名稱。

Linux® 及 UNIX® 作業系統上 db2nodes.cfg 檔案的格式如下所示:

dbpartitionnum hostname logicalport netname resourcesetname
dbpartitionnum

hostnamelogicalportnetnameresourcesetname 在下節中定義。

Windows® 作業系統上 db2nodes.cfg 檔案的格式如下所示:

dbpartitionnum hostname computername logicalport netname resourcesetname

在 Windows 作業系統上,db2ncrt 或 START DBM ADD DBPARTITIONNUM 指令會將這些項目新增至 db2nodes.cfg。這些項目也可以由 db2nchg 指令進行修改。您不應直接新增這些文字行或編輯此檔案。

dbpartitionnum
介於 0 及 999 之間的專用號碼,可識別分割資料庫系統中的資料庫分割區伺服器。

若要調整分割資料庫系統,請針對每一個資料庫分割區伺服器將登錄新增至 db2nodes.cfg 檔案。您為附加之資料庫分割區伺服器選取的 dbpartitionnum 值必須以遞增次序排列,但在此順序中可以有間隙存在。如果您計劃要新增邏輯分割區伺服器,並且希望在此檔案中對節點進行邏輯分組,則可以選擇在 dbpartitionnum 值之間放置間隙。

此為必要登錄項目。

hostname
供 FCM 使用之資料庫分割區伺服器的 TCP/IP 主機名稱。此為必要登錄項目。

如果在 db2nodes.cfg 檔案中提供主機名稱 (而非 IP 位址),則資料庫管理程式會動態嘗試解析主機名稱。解析可以在本端進行或透過查閱已登錄的「網域名稱伺服器 (DNS)」進行,由機器上的 OS 設定所決定。

從 DB2 9.1 版開始,支援 TCP/IPv4 及 TCP/IPv6 通訊協定。已變更要解析主機名稱的方法。

雖然 9.1 版前版次所使用的方法如 db2nodes.cfg 檔案中所定義地解析字串,但是當在 db2nodes.cfg 檔案中定義簡短名稱時,9.1 版或更新版本中的方法會嘗試解析「完整網域名稱 (FQDN)」。指定為完整主機名稱配置的簡短名稱,這可能會導致在解析主機名稱的程序中發生不必要的延遲。

若要避免在需要主機名稱解析的 DB2 指令中發生任何延遲,請使用下列任何解決方法:

  1. 如果在 db2nodes.cfg 檔案及作業系統主機名稱檔案中指定簡短名稱,則在作業系統主機檔中指定主機名稱的簡短名稱及完整網域名稱。
  2. 若要在您知道 DB2 伺服器接聽 IPv4 埠時僅使用 IPv4 位址,請發出下列指令:
    db2 catalog tcpip4 node db2tcp2 remote 192.0.32.67 server db2inst1 with "Look up IPv4 address from 192.0.32.67"
  3. 若要在您知道 DB2 伺服器接聽 IPv6 埠時僅使用 IPv6 位址,請發出下列指令:
    db2 catalog tcpip6 node db2tcp3 1080:0:0:0:8:800:200C:417A server 50000 with "Look up IPv6 address from 1080:0:0:0:8:800:200C:417A"
logicalport
指定資料庫分割區伺服器的邏輯埠號。 此欄位可用來指定執行邏輯資料庫分割區伺服器之工作站上的特定資料庫分割區伺服器。

DB2 會在安裝時,為分割區間的通訊保留 /etc/services 檔案中的埠範圍 (例如 60000 - 60003)。db2nodes.cfg 中的這個 logicalport 欄位可在該範圍中,指定您要指派給特定邏輯分割區伺服器的埠。

如果此欄位沒有登錄,則預設值為 0。然而,如果您在 netname 欄位中新增登錄,則必須在 logicalport 欄位中輸入數字。

如果使用邏輯資料庫分割區,則所指定的 logicalport必須從 0 開始, 並以遞增次序繼續 (例如,0、1、2)。

此外,如果您指定了某一資料庫分割區伺服器的 logicalport 登錄,則必須為列示於 db2nodes.cfg 檔案中的每一個資料庫分割區伺服器指定 logicalport

只有當您不是使用邏輯資料庫分割區或高速交互連接時, 此欄位才是選用欄位。

netname
指定 FCM 通訊之高速交互連接的主機名稱或 IP 位址。

若已指定此欄位的登錄,則資料庫分割區伺服器之間的所有通訊 (db2start、 db2stop 及 db2_all 指令所產生的通訊除外) 都會以高速交互連接來處理。

只有當您使用高速交互連接來進行資料庫分割區通訊時,此參數才是必要參數。

resourcesetname
resourcesetname 可定義應該啟動節點之位置的作業系統資源。resourcesetname 是為了支援程序親緣性而用於「多個邏輯節點 (MLN)」。此支援與早期稱為 quadname 的字串類型欄位一起提供。

只有 AIX®、HP-UX 及 Solaris 作業系統才支援此參數。

在 AIX 上,此概念稱為「資源設定」,而在「Solaris 作業系統」中則稱為「專案」。請參閱作業系統文件,以取得資源管理的更多資訊。

在 HP-UX 上,resourcesetname 參數就是 PRM 群組的名稱。請參閱 HP 的 "HP-UX Process Resource Manager,User Guide,(B8733-90007)" 文件以取得更多資訊。

在 Windows 作業系統上,可以透過 DB2PROCESSORS 登錄變數來定義邏輯節點的程序親緣性。

在 Linux 作業系統上,resourcesetname 直欄會定義與系統上「非一致記憶體存取 (NUMA)」節點相對應的號碼。除了具有 NUMA 原則支援的「2.6 核心程式」之外,也必須可以使用系統公用程式 numactl。

如果使用 resourcesetname 參數,就必須指定 netname 參數。

範例配置

請使用下列範例配置來決定環境中適當的配置。

一台電腦,四個資料庫分割區伺服器
如果您不是使用叢集環境,且想讓名為 ServerA 的實體工作站有四個資料庫分割區伺服器,則可更新 db2nodes.cfg 檔,如下所示:
      0          ServerA        0
      1          ServerA        1
      2          ServerA        2
   3          ServerA        3
兩台電腦,每台電腦有一個資料庫分割區伺服器
如果您想讓分割的資料庫系統包含兩個名為 ServerAServerB 的實體工作站,則可更新 db2nodes.cfg 檔案,如下所示:
      0          ServerA        0
   1          ServerB        0
兩台電腦,每台電腦有三個資料庫分割區伺服器
如果您想讓分割的資料庫系統包含兩個名為 ServerAServerB 的實體工作站, 且讓 ServerA 執行 3 個資料庫分割區伺服器,則可更新 db2nodes.cfg 檔案,如下所示:
      4          ServerA        0
      6          ServerA        1
      8          ServerA        2
   9          ServerB        0
兩台電腦,具有高速切換的三個資料庫分割區伺服器
如果您想讓分割的資料庫系統包含兩台名為 ServerAServerB (ServerB 執行兩個資料庫分割區伺服器) 的電腦,並且使用名為 switch1switch2 的高速交互連接,則可更新 db2nodes.cfg 檔案,如下所示:
      0          ServerA        0              switch1
      1          ServerB        0              switch2
   2          ServerB        1              switch2

使用 resourcesetname 的範例

這些限制適用於下列範例:

AIX 範例

以下是如何設定 AIX 作業系統之資源設定的範例。

此範例有一個實體節點,它有 32 個處理器及 8 個邏輯資料庫分割區 (MLN)。 此範例顯示如何為每個 MLN 提供程序相似性。

  1. 在 /etc/rset 中定義資源設定:
    DB2/MLN1:
            owner     = db2inst1
            group     = system
            perm      = rwr-r-
            resources = sys/cpu.00000,sys/cpu.00001,sys/cpu.00002,sys/cpu.00003
    
    DB2/MLN2:
            owner     = db2inst1
            group     = system
            perm      = rwr-r-
            resources = sys/cpu.00004,sys/cpu.00005,sys/cpu.00006,sys/cpu.00007
    
    DB2/MLN3:
            owner     = db2inst1
            group     = system
            perm      = rwr-r-
            resources = sys/cpu.00008,sys/cpu.00009,sys/cpu.00010,sys/cpu.00011
    
    DB2/MLN4:
            owner     = db2inst1
            group     = system
            perm      = rwr-r-
            resources = sys/cpu.00012,sys/cpu.00013,sys/cpu.00014,sys/cpu.00015
    
    DB2/MLN5:
            owner     = db2inst1
            group     = system
            perm      = rwr-r-
            resources = sys/cpu.00016,sys/cpu.00017,sys/cpu.00018,sys/cpu.00019
    
    DB2/MLN6:
            owner     = db2inst1
            group     = system
            perm      = rwr-r-
            resources = sys/cpu.00020,sys/cpu.00021,sys/cpu.00022,sys/cpu.00023
    
    DB2/MLN7:
            owner     = db2inst1
            group     = system
            perm      = rwr-r-
            resources = sys/cpu.00024,sys/cpu.00025,sys/cpu.00026,sys/cpu.00027
    
    DB2/MLN8:
            owner     = db2inst1
            group     = system
            perm      = rwr-r-
        resources = sys/cpu.00028,sys/cpu.00029,sys/cpu.00030,sys/cpu.00031
  2. 鍵入下列指令,以啟用記憶體相似性:
       vmo -p -o memory_affinity=1
  3. 給予實例許可權以使用資源設定:
    chuser capabilities=
        CAP_BYPASS_RAC_VMM,CAP_PROPAGATE,CAP_NUMA_ATTACH  db2inst1
  4. 將資源設定名稱新增為 db2nodes.cfg 中的第五個直欄:
    1 regatta 0 regatta DB2/MLN1
    2 regatta 1 regatta DB2/MLN2
    3 regatta 2 regatta DB2/MLN3
    4 regatta 3 regatta DB2/MLN4
    5 regatta 4 regatta DB2/MLN5
    6 regatta 5 regatta DB2/MLN6
    7 regatta 6 regatta DB2/MLN7
    8 regatta 7 regatta DB2/MLN8

HP-UX 範例

此範例顯示如何將 PRM 群組用於具有 4 個 CPU 及 4 個 MLN 之機器上的 CPU 共用,且每個 MLN 有 24% 的 CPU 共用,並保留 4% 給其他應用程式。DB2 實例名稱為 db2inst1。

  1. 編輯 /etc/prmconf 的 GROUP 區段:
        OTHERS:1:4::
    	db2prm1:50:24::
      	db2prm2:51:24::
        	db2prm3:52:24::
      	db2prm4:53:24::  
  2. 將實例擁有者項目新增至 /etc/prmconf:
       db2inst1::::OTHERS,db2prm1,db2prm2,db2prm3,db2prm4
  3. 輸入下列指令以起始設定群組並啟用 CPU 管理程式:
          prmconfig -i
       prmconfig -e CPU
  4. 將 PRM 群組名稱新增為 db2nodes.cfg 的第五個直欄:
          1 voyager 0 voyager db2prm1 	
          2 voyager 1 voyager db2prm2 	
          3 voyager 2 voyager db2prm3 	
       4 voyager 3 voyager db2prm4

PRM 配置 (步驟 1-3) 可使用互動式 GUI 工具 xprm 來完成。

Linux 範例

在 Linux 作業系統上,resourcesetname 直欄會定義與系統上「非一致記憶體存取 (NUMA)」節點相對應的號碼。除了具有 NUMA 原則支援的 2.6 核心程式之外,numactl 系統公用程式也必須可用。如需 Linux 作業系統上 NUMA 支援的相關資訊,請參閱 numact1 的線上指令說明。

此範例顯示如何設定具有四個節點的 NUMA 電腦,其中每個邏輯節點都與一個 NUMA 節點相關聯。

  1. 確保系統上存在 NUMA 功能。
  2. 發出下列指令:
    $ numactl --hardware
    其輸出結果會與下列顯示畫面類似:
    可用:4 個節點 (0-3)
    節點 0 大小:1901 MB
    節點 0 可用大小:1457 MB
    節點 1 大小:1910 MB
    節點 1 可用大小:1841 MB
    節點 2 大小:1910 MB
    節點 2 可用大小:1851 MB
    節點 3 大小:1905 MB
    節點 3 可用大小:1796 MB
  3. 在此範例中,系統上有四個 NUMA 節點。如下所示編輯 db2nodes.cfg 檔案,以將每一個 MLN 與系統上的 NUMA 節點相關聯:
    0 hostname 0 hostname 0
    1 hostname 1 hostname 1
    2 hostname 2 hostname 2
    3 hostname 3 hostname 3

Solaris 範例

以下是如何設定 Solaris 第 9 版專案的範例。

在這個範例中,有個具有 8 個處理器的實體節點:有一個 CPU 將用於預設專案、「應用程式伺服器」將使用三個 CPU,另外四個 CPU 則提供給 DB2。實例名稱為 db2inst1。

  1. 使用編輯器建立資源儲存池配置檔。對於此範例,檔名將會是 pool.db2。內容如下:
       create system hostname
          create pset pset_default (uint pset.min = 1)
          create pset db0_pset (uint pset.min = 1; uint pset.max = 1)
          create pset db1_pset (uint pset.min = 1; uint pset.max = 1)
          create pset db2_pset (uint pset.min = 1; uint pset.max = 1)
          create pset db3_pset (uint pset.min = 1; uint pset.max = 1)
          create pset appsrv_pset (uint pset.min = 3; uint pset.max = 3)
          create pool pool_default (string pool.scheduler="TS";
                    boolean pool.default = true)
          create pool db0_pool (string pool.scheduler="TS")
          create pool db1_pool (string pool.scheduler="TS")
          create pool db2_pool (string pool.scheduler="TS") 
          create pool db3_pool (string pool.scheduler="TS") 
          create pool appsrv_pool (string pool.scheduler="TS") 
          associate pool pool_default (pset pset_default) 
          associate pool db0_pool (pset db0_pset) 
          associate pool db1_pool (pset db1_pset) 
          associate pool db2_pool (pset db2_pset) 
          associate pool db3_pool (pset db3_pset) 
          associate pool appsrv_pool (pset appsrv_pset)
  2. 編輯 /etc/project 檔案以新增 DB2 專案及 appsrv 專案,如下所示:
          system:0::::
          user.root:1::::
          noproject:2::::
          default:3:::: 
          group.staff:10:::: 
          appsrv:4000:App Serv project:root::project.pool=appsrv_pool 
          db2proj0:5000:DB2 Node 0 project:db2inst1,root::project.pool=db0_pool 
          db2proj1:5001:DB2 Node 1 project:db2inst1,root::project.pool=db1_pool 
          db2proj2:5002:DB2 Node 2 project:db2inst1,root::project.pool=db2_pool 
          db2proj3:5003:DB2 Node 3 project:db2inst1,root::project.pool=db3_pool 
  3. 建立資源儲存池:# poolcfg -f pool.db2
  4. 啟動資源儲存池:# pooladm -c
  5. 將專案名稱新增為 db2nodes.cfg 檔案中的第五個直欄:
       0 hostname 0 hostname db2proj0
          1 hostname 1 hostname db2proj1
          2 hostname 2 hostname db2proj2
          3 hostname 3 hostname db2proj3
[ 頁面頂端 | 前一頁 | 下一頁 | 目錄 ]