DB2 Linux 版、UNIX 版和 Windows 版版本 9.7
在安装 DB2 服务器产品之后 > 安装后任务 > 分区数据库环境 >

DB2 节点配置文件的格式

db2nodes.cfg 文件用来定义参与 DB2® 实例的数据库分区服务器。如果想要将高速互连用于数据库分区服务器通信,那么还可以使用 db2nodes.cfg 文件来指定高速互连的 IP 地址或主机名。

Linux® 和 UNIX® 操作系统上的 db2nodes.cfg 文件的格式如下:

dbpartitionnum hostname logicalport netname resourcesetname

在下一节中定义了 dbpartitionnumhostnamelogicalportnetnameresourcesetname

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)上查询来进行解析,这由机器上的操作系统设置确定。

从 DB2 版本 9.1 开始支持 TCP/IPv4 和 TCP/IPv6 协议。用于解析主机名的方法已更改。

如果在 db2nodes.cfg 文件中定义了短名称,那么版本 9.1 之前的发行版将按 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

可以使用交互式 GUI 工具 xprm 执行 PRM 配置(步骤 1-3)。

Linux 示例

在 Linux 操作系统上,resourcesetname 列定义与系统上"非一致性内存访问"(NUMA)节点相对应的一个数字。作为对支持 NUMA 策略的 2.6 内核的补充,还必须具有 numactl 系统实用程序。有关 Linux 操作系统上的 NUMA 支持的更多信息,请参阅关于 numact1 的联机帮助页。

本示例说明如何设置一个具有四个 NUMA 节点的计算机,并使每个逻辑节点都与一个 NUMA 节点相关联。

  1. 确保系统上具备 NUMA 功能。
  2. 发出下列命令:
    $ numactl --hardware
    将显示与以下内容相似的输出:
    available: 4 nodes (0-3)
    node 0 size: 1901 MB 
    node 0 free: 1457 MB 
    node 1 size: 1910 MB 
    node 1 free: 1841 MB 
    node 2 size: 1910 MB 
    node 2 free: 1851 MB 
    node 3 size: 1905 MB 
    node 3 free: 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 V9 设置项目的示例。

在此示例中,有一个带有 8 个处理器的物理节点:其中 1 个 CPU 将用于缺省项目,3 个 CPU 由应用程序服务器使用,4 个 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
[ 页的顶部 | 上一页 | 下一页 | 目录 ]