10.1 DMASM 概述
DM 自动存储管理器(DM Auto Storage Manager,简称 DMASM)是一个专用的分布式文件系统。
DMDSC 如果直接使用块设备作为共享存储来存放数据库文件,会因为块设备本身的诸多功能限制,造成 DMDSC 集群在使用、维护上并不是那么灵活方便。为了克服块设备的这些使用限制,DM 专门设计了一款分布式文件系统 DMASM,来管理块设备的磁盘和文件。DMASM 的出现为 DMDSC 灵活管理和使用块设备提供了完美的解决方案。
使用 DMASM 自动存储管理方案,可以帮助用户更加便捷地管理 DMDSC 集群的数据库文件。DMASM 的主要部件包括:提供存储服务的块设备、DMASMSVR 服务器、DMASMAPI 接口、初始化工具 DMASMCMD 和管理工具 DMASMTOOL 等。
下图为一个部署了 DMASM 的 DMDSC 集群结构图。
10.2 使用 DMASM 的好处
下面通过对比的方式,展示在 DMDSC 中使用 DMASM 的好处。
如果直接将块设备作为 DMDSC 的共享存储,存在多项限制,增加了 DBA 的管理难度。具体限制在以下几点:
- 不支持动态扩展文件大小;在创建数据文件时,就必须指定文件大小,并且文件无法动态扩展。
- 数据文件必须占用整个裸或块设备盘,造成空间浪费。
- 不支持类 linux 的文件操作命令,使用不方便。
- 操作系统支持最大块设备数目较小,无法创建足够的数据库文件。
为了克服上述限制,推荐用户使用 DMASM 来管理块设备的磁盘和文件。DMASM 提供了基本的数据文件访问接口,可以有效降低 DMDSC 共享存储的维护难度。DMASM 提供的主要功能包括:
-
分布式管理
支持多台机器并发访问 ASM 磁盘和文件,提供全局并发控制。
-
磁盘组管理
支持创建和删除磁盘组,将块设备格式化为 DMASM 格式,并由 DMASMSVR 统一管理;一个磁盘组可以包含一个或者多个 ASM 磁盘;磁盘组支持在线增加 ASM 磁盘,实现动态存储扩展。
-
文件管理
支持创建、删除、截断文件等功能;支持创建目录;支持动态扩展文件;文件可以存放在一个磁盘组的多个磁盘中,文件大小不再受限于单个磁盘大小。
-
完善、高效的访问接口
通过 DMASMAPI 可以获得各种文件管理功能。
-
通用功能的管理工具
DMASMTOOL 提供一套类 Linux 的文件操作命令用于管理 ASM 文件,降低用户学习、使用 DMASM 文件系统的难度。
10.3 DMASM 术语和基本概念
10.3.1 DMASM 术语
本节介绍 DMASM 所用到的术语。术语的详细概念请参考[10.3.2 DMASM 基本概念](#10.3.2 DMASM 基本概念)。
中文术语 | 英文术语 |
---|---|
DM 自动存储管理器 | DM Auto Storage Manager,简称 DMASM |
ASM 磁盘 | ASM DISK |
磁盘组 | DISK GROUP |
ASM 文件 | ASM FILE |
簇 | extent |
数据分配单元 | Allocation Units,简称 AU |
DM 集群注册表 | DM Clusterware Registry,简称 DCR |
DCR 磁盘 | DCR DISK |
表决磁盘 | VOTD DISK,简称 VTD |
DMASM 文件系统初始化工具 | DMASMCMD (专门用于 DMASM 非镜像环境) |
DMASM 服务器 | DMASMSVR (专门用于 DMASM 非镜像环境) |
DMASM 应用程序访问接口 | DMASMAPI (专门用于 DMASM 非镜像环境) |
DMASM 管理工具 | DMASMTOOL (专门用于 DMASM 非镜像环境) |
10.3.2 DMASM 基本概念
下面详细介绍各概念:
DM 自动存储管理器(DM Auto Storage Manager,简称 DMASM)
DMASM 是一个分布式文件系统,用来管理块设备的磁盘和文件。
ASM 磁盘
ASM 磁盘是指经过 DMASMCMD 工具格式化,可以被 DMASMSVR 识别的物理磁盘。ASM 磁盘是组成磁盘组的基本单位,一个块设备只能格式化为一个 ASM 磁盘,不支持分割使用。
磁盘组
磁盘组由一个或多个 ASM 磁盘组成,是存储 ASM 文件的载体;一块 ASM 磁盘只能属于一个磁盘组。DMASM 支持动态添加 ASM 磁盘。DMDSC 集群中,一般建议将日志文件和数据文件保存到不同的磁盘组中。
ASM 文件(ASMFILE)
在 ASM 磁盘组上创建的文件,称之为 ASM 文件。一个 ASM 文件只能保存在一个磁盘组中,但一个 ASM 文件的数据可以物理存放在同一磁盘组的多个 ASM 磁盘中。DMDSC 集群中,需要多个节点共享访问的数据库文件、日志文件、控制文件等,一般会创建为 ASM 文件。
DMASM 文件路径都以“+GROUP_NAME”开头,使用“/”作为路径分隔符,任何以“+”开头的文件,DM 都认为是 DMASM 文件,“GROUP_NAME”是磁盘组名称。比如,“+DATA/ctl/dm.ctl”表示 dm.ctl 文件,保存在 DMASM 文件系统的“DATA”磁盘组的 ctl 目录下。"+"号只能出现在全路径的第一位,出现在任意其他地方的路径都是非法的。
DMASM 只提供文件级别并发控制,访问 ASM 文件时系统会进行封锁操作。比如,正在访问的数据文件不允许被删除。但是 DMASM 并不提供数据文件的读写并发控制。DMASM 允许多个用户同时向同一个文件的相同偏移写入数据,一旦发生这种并发写,系统无法预知最终写入磁盘的数据是什么。因此,DMASM 必须由使用 DMASM 的应用程序来控制数据文件的读写并发,即避免多个程序同时写同一个数据文件的相同数据块。
不提供读写并发控制主要原因有两个:
原因一 达梦数据库管理软件已经提供了数据读写的并发控制机制,确保不会同时读、写相同的数据页,因此 DMASM 不需要再实现一套重复的并发控制策略。
原因二 DMASM 镜像不提供读写并发控制可提升 ASM 文件的读写效率。如果提供读、写操作的全局并发控制,虽然可避免并发写入导致数据不一致,但这种策略会影响读、写性能。
簇(Extent)
簇是 ASM 文件的最小分配单位,一个簇由物理上连续的一组 AU 构成。簇的大小为 4,也就是说一个 ASM 文件至少占用 4 个 AU,也就是 4M 的物理存储空间。
数据分配单元(Allocation Units,简称 AU)
DMASM 存储管理的最小单位。AU 的大小为 1M,为系统固定大小,无需用户指定。DMASM 以 AU 为单位将磁盘划分为若干逻辑单元,ASM 文件也是由一系列 AU 组成。根据 AU 的不同用途,系统内部定义了一系列 AU 类型,包括:desc AU、inode AU、REDO AU、和 data AU。
DCR 磁盘(DCR DISK)
DM 集群注册表(DM Clusterware Registry,简称 DCR)磁盘专门用于存储 DCR 文件。DCR 文件记录了存储、维护集群配置的详细信息。整个集群环境共享 DCR 磁盘信息,包括集群(DMDSC、DMASM、DMCSS)资源、实例名、监听端口、集群中故障节点信息等。DCR 必须存储在集群中所有节点都可以访问到的共享存储中,并且只支持保存在 DMASM 文件系统管辖范围之外的共享存储上。在一个集群环境中只能配置一个 DCR 磁盘。
表决磁盘(VOTE DISK)
表决磁盘专门用于存储 VTD 文件。VTD 文件记录了集群成员信息。DM 集群通过 VOTE DISK 进行心跳检测,确定集群中节点的状态,判断节点是否出现故障。当集群中出现网络故障时,使用 VOTE DISK 来确定哪些 DMDSC 节点应该被踢出集群。表决磁盘还用来传递命令,在集群的不同状态(启动、节点故障、节点重加入等)DMCSS 通过 VOTE DISK 传递控制命令,通知节点执行相应命令。VOTE DISK 必须存储在集群中所有节点都可以访问到的共享存储中,并且只支持保存在 DMASM 文件系统管辖范围之外的共享存储上。在一个集群环境中只能配置一个表决磁盘。
集群中各实例启动时,通过访问 DCR DISK 获取集群配置信息。被监控实例从 VOTE DISK 读取监控命令,并向 VOTE DISK 写入命令响应以及自身心跳信息;DMCSS 也向 VOTE DISK 写入自己的心跳信息,并从 VOTE DISK 访问各被监控节点的运行情况,并将监控命令写入 VOTE DISK,供被监控实例访问执行。
DMASM 文件系统初始化工具(DMASMCMD)
专门用于 DMASM 非镜像环境。将在[10.7 DMASM 镜像主要部件](#10.7 DMASM 镜像主要部件)中详细介绍。
DMASM 服务器(DMASMSVR)
专门用于 DMASM 非镜像环境。将在[10.7 DMASM 镜像主要部件](#10.7 DMASM 镜像主要部件)中详细介绍。
DMASM 应用程序访问接口(DMASMAPI)
专门用于 DMASM 非镜像环境。将在[10.7 DMASM 镜像主要部件](#10.7 DMASM 镜像主要部件)中详细介绍。
DMASM 管理工具(DMASMTOOL)
专门用于 DMASM 非镜像环境。将在[10.7 DMASM 镜像主要部件](#10.7 DMASM 镜像主要部件)中详细介绍。
10.3.3 DMASM 和达梦数据库文件系统对照表
DMASM 的实现主要参考了达梦数据库文件系统,因此,一些概念和实现原理与达梦数据库基本类似,熟悉达梦数据库的用户,就会更加容易理解 DMASM。
DMASM | 达梦文件系统 |
---|---|
磁盘组(DISK GROUP) | 表空间(TABLESPACE) |
ASM 磁盘(DISK) | 数据文件(DATAFILE) |
ASM 文件(FILE) | 段(SEGMENT) |
簇(EXTENT) | 簇(EXTENT) |
AU(ALLOCATION UNITS) | 页(PAGE) |
描述 AU(DESC AU) | 描述页(DESC PAGE) |
INODE AU(INODE AU) | INODE 页(INODE PAGE) |
10.4 DMASM 关键技术
为了帮助用户更好的理解、使用 DMASM,本节从 ASM 磁盘与文件管理、DMASM REDO 日志、簇映射表等方面介绍 DMASM 原理。
10.4.1 ASM 磁盘与文件管理
DMASMCMD 将物理磁盘格式化后,变成可识别、可管理的 ASM 磁盘,再通过 ASM 磁盘组将一个或者多个 ASM 磁盘整合成一个整体提供文件服务。
ASM 磁盘格式化以后,会逻辑划分为若干簇(Extent),簇是管理 ASM 磁盘的基本单位,ASM 文件的最小分配单位也是簇。
这些逻辑划分的簇根据其用途可以分为 DESC 描述簇、INODE 簇和 DATA 数据簇。
描述簇由多个描述项组成。每一个描述项存储一个 INODE 簇或一个数据簇的元数据。元数据包括簇所属文件 ID,簇的前一位簇,簇的后一位簇等。
INODE 簇由多个 INODE 项组成。每一个 INODE 项存放一个 ASM 文件的元数据。元数据包括文件完整路径、大小、创建时间等信息。
数据簇用于存储用户数据。
创建、删除 ASM 文件操作,在 DMASM 系统内部会转换成修改、维护 INODE AU 的具体动作。而扫描全局的 INODE AU 链表就可以获取到磁盘组上所有的 ASM 文件信息。
10.4.2 DMASM REDO 日志
DMASM 采用重做日志机制保证在各种异常(比如系统掉电重启)情况下数据不被损坏。创建、删除 ASM 文件等 DDL 操作过程中,所有针对 DMASM 描述 AU、INODE AU 的修改,都会生成 REDO 日志,并且在描述 AU、INODE AU 的修改写入磁盘之前,必须确保 REDO 日志已经写入磁盘。DMASM 中,只针对描述 AU 和 INODE AU 的修改产生 REDO 日志,用户修改数据 AU 的动作并不会产生 REDO 日志。
DMASM 所有 DDL 操作(创建文件、删除文件、增加磁盘等)都是串行执行的,并且在操作完成之前,会确保所有修改的描述项、INODE 项写入磁盘;一旦 DDL 操作完成,所有 REDO 日志就可以被覆盖了。
DDL 操作过程中出现异常时,如果 REDO 日志尚未写入磁盘,则当前操作对系统没有任何影响;如果 REDO 日志已经写入磁盘,那么重新启动后,系统会重演 REDO 日志,修改描述 AU 和 INODE AU,将此 DDL 继续完成。
10.4.3 簇映射表
创建 ASM 文件后,用户操作 ASM 文件的一般流程是:调用 ASM 文件的 OPEN、READ、WRITE 接口,打开 ASM 文件并获取一个句柄,再使用这个句柄从文件的指定偏移读取数据、或者写入数据。用户在使用 DMASM 的过程中,只需要获取一个 ASM 文件句柄,并不需要知道数据最终保存在物理磁盘的什么位置。
DMASM 使用簇映射表机制维护 ASM 文件与物理磁盘地址的映射关系,访问 ASM 文件时,根据文件号、文件偏移等信息,通过簇映射表可以快速获取到物理磁盘地址。
由于 DMASM 并不缓存任何用户数据,与直接读、写块设备相比,ASM 文件的读、写操作仅仅增加了簇映射的代价,而这个代价与 IO 代价相比几乎可以忽略,因此,使用 DMASM 并不会引起读、写性能的降低。
10.5 DMASM 技术指标
本节主要介绍一下 DMASM 中的一些重要技术指标。
项 | 大小 | 说明 |
---|---|---|
AU 大小 | 1024* 1024 | 一个 AU 占用 1MB 存储空间 |
簇大小 | 4 | 一个簇包含 4 个物理上连续的 AU |
描述项大小 | 32 | 一个簇描述项占用 32 个字节的存储空间 |
描述 AU 管理的最大簇数目 | 16* 1024 | 一个描述 AU 最多管理 16384 个簇 |
描述 AU 管理的最大 AU 数 | 64* 1024 | 一个描述 AU 最多可以管理 65536 个 AU |
描述 AU 管理的最大磁盘空间 | 64GB | 一个描述 AU 最多可以管理 64GB 磁盘空间 |
Inode 项大小 | 512 | 一个 ASM 文件描述项大小,每个 ASM 文件/目录都对应着一个文件描述项目 |
Inode AU 可管理的最大文件数 | 2046 | 一个 Inode AU 最多可以管理 2046 个文件 |
ASM 文件最小尺寸 | 4MB | 每个 ASM 文件最少包含一个簇 |
ASM 文件最大尺寸 | 4PB | 一个 ASM 文件最多可以包含 4294967295 个 AU,每个 AU 是 1MB,理论上单个 ASM 文件的最大尺寸是 4PB |
一个用户连接可同时打开的 ASM 文件数 | 65536 | 一个用户连接,最多打开 65536 个 ASM 文件 |
ASM 文件数上限 | 8388607 | 一个磁盘组,最多可以创建 8388607 个 ASM 文件 |
磁盘组个数上限 | 124 | 最多可创建 124 个磁盘组 |
每 10M 共享内存大小能管理的磁盘大小 | 约 600G | 每个簇描述项大概占用 64byte 内存空间,每个簇描述项对应 4MB 磁盘空间,通过计算 10MB / 64* 4MB= 655GB;655GB 左右的磁盘,使用 10M 大小的共享内存能保证使用过程中簇描述项不被淘汰 |
10.6 DMASM 主要部件
10.6.1 DMASMCMD
DMASMCMD 是 DMASM 文件系统初始化工具,用来将块设备格式化为 ASM 磁盘,并初始化 DCR DISK、VOTE DISK。格式化 ASM 磁盘就是在块设备的头部写入 ASM 磁盘特征描述符号,包括 DMASM 标识串、ASM 磁盘名、以及 ASM 磁盘大小等信息。其中 VOTE DISK 和 DCR DISK 也会被格式化为 ASM 磁盘。
DMASMCMD 工具的主要功能包括:
- 格式化 ASM 磁盘。
- 初始化 DCR DISK,同时指定密码。
- 初始化 VOTE DISK。
- 导出、导入 DCR DISK 配置信息。
- 清理 DCR DISK 中指定组的故障节点信息。
- 创建用于模拟块设备的磁盘文件(用于单机模拟 DMDSC 环境)。
- 列出指定路径下面磁盘属性。
- 联机修改 DCR 磁盘,扩展节点。
通过 DMASMCMD HELP 可查看 DMASMCMD 工具的用法。
格式: dmasmcmd KEYWORD=value
例如: dmasmcmd SCRIPT_FILE=asmcmd.txt
关键字 说明(默认值)
----------------------------------------------------------------------------
SCRIPT_FILE asmcmd脚本文件路径
RET_FLAG 执行asmcmd脚本文件时,出错是否立即返回(0)
DFS_INI dmdfs.ini文件路径
HELP 打印帮助信息
参数说明:
SCRIPT_FILE:用于指定 ASMCMD 脚本文件绝对路径。脚本文件(例如 asmcmd.txt)集中存放了 DMASMCMD 用到的命令。
- 用户没有通过 SCRIPT_FILE 指定脚本文件,则 DMASMCMD 进入交互模式运行,逐条解析、运行命令。
- 用户通过 SCRIPT_FILE 指定脚本文件(比如 asmcmd.txt),则以行为单位读取文件内容,并依次执行,执行完成以后,自动退出 DMASMCMD 工具。脚本文件必须以“#asm script file”开头,否则认为是无效脚本文件;脚本中其它行以“#”开头表示注释;脚本文件大小不超过 1MB。
RET_FLAG:用于设置执行 ASMCMD 脚本文件时,出错是否立即返回。取值 0 或 1,0 不返回,1 返回。缺省值为 0。
DMASMCMD 命令行执行界面下支持的语句包括:
- 创建 ASM 磁盘
用来将块设备格式化为 ASM Disk,会在块设备头部写入 ASM DISK 标识信息。size 取值最小 32。
语法格式:
CREATE ASMDISK disk_path disk_name [size]
举例说明:
CREATE ASMDISK '/HOME/ASMDISKS/DISK0.ASM' 'DATA0'
CREATE ASMDISK '/HOME/ASMDISKS/DISK0.ASM' 'DATA0' 100
用来将块设备格式化为 DCR 磁盘,会在块设备头部写入 DCR 标识信息。size 取值最小 32。
语法格式:
CREATE DCRDISK disk_path disk_name [size]
举例说明:
CREATE DCRDISK '/HOME/ASMDISKS/DISK0.ASM' 'DATA0'
CREATE DCRDISK '/HOME/ASMDISKS/DISK0.ASM' 'DATA0' 100
用来将块设备格式化为 VOTE DISK,会在块设备头部写入 VOTE DISK 标识信息。
语法格式:
CREATE VOTEDISK disk_path disk_name [size]
举例说明:
CREATE VOTEDISK '/HOME/ASMDISKS/DISK0.ASM' 'DATA0'
CREATE VOTEDISK '/HOME/ASMDISKS/DISK0.ASM' 'DATA0' 100
以上三个命令中 size 参数可以省略,程序会计算 disk_path 的大小;但是某些操作系统计算 disk_path 大小会失败,这时候还是需要用户指定 size 信息,size 取值最小为 32。
- 创建空文件模拟块设备
创建名为 xxx.asm 的模拟块设备,注意必须以.asm 结尾。模拟测试用,真实环境不建议使用。size 最小值为 32MB,无上限限制。
语法格式:
CREATE EMPTYFILE file_path SIZE num
举例说明:
创建名为 DISK0.asm 的模拟块设备。
CREATE EMPTYFILE '/OPT/DATA/ASMDISKS/DISK0.ASM' SIZE 100
- 初始化 DCR DISK & VOTE DISK
根据配置文件 DMDCR_CFG.INI 的内容,初始化 DCR 磁盘。设置登录 ASM 文件系统的密码,密码要用单引号括起来。
语法格式:
INIT DCRDISK disk_path FROM ini_path IDENTIFIED BY password
举例说明:
INIT DCRDISK '/DEV/RAW/RAW2' FROM '/HOME/ASM/DMDCR_CFG.INI' IDENTIFIED BY 'AAAAAA'
根据配置文件 DMDCR_CFG.INI 的内容,初始化 VOTE DISK。
语法格式:
INIT VOTEDISK disk_path FROM ini_path
举例说明:
INIT VOTEDISK '/DEV/RAW/RAW3' FROM '/HOME/ASM/DMDCR_CFG.INI'
- 导出 DCR 的配置文件
解析 DCR 磁盘内容,导出到 DMDCR_CFG.INI 文件。
语法格式:
EXPORT DCRDISK disk_path TO ini_path
举例说明:
EXPORT DCRDISK '/DEV/RAW/RAW2' TO '/HOME/ASM/DMDCR_CFG.INI'
- 导入 DCR 的配置文件
将修改后的 DMDCR_CFG.INI 文件导入到 DCR 磁盘。必须以组为单位进行修改。其中,DCR_N_GRP、DCR_GRP_N_EP、DCR_GRP_NAME、DCR_GRP_TYPE、DCR_GRP_EP_ARR、DCR_EP_NAME、EP 所属的组类型、CHECKSUM 值、密码不可修改。
语法格式:
IMPORT DCRDISK ini_path TO disk_path
举例说明:
IMPORT DCRDISK '/DATA/DMDCR_CFG.INI' TO '/DATA/ASMDISKS/DISK0.ASM'
- 校验 DCR 磁盘
校验 DCR 磁盘信息是否正常,根据打印出来的值进行判断。如果等于 0,表示 DCR 磁盘正常;如果小于 0,说明 DCR 磁盘故障,需要重新初始化。
语法格式:
CHECK DCRDISK disk_path
举例说明:
CHECK DCRDISK '/DEV/RAW/RAW2'
- 清理指定组的故障节点信息
清理 DCR DISK 中指定组的故障节点信息,可借助 export 命令查看对应组的 DCR_GRP_N_ERR_EP 和 DCR_GRP_ERR_EP_ARR 信息,清理成功后,指定组的 DCR_GRP_N_ERR_EP 值为 0,DCR_GRP_ERR_EP_ARR 内容为空。
语法格式:
CLEAR DCRDISK err_ep_arr disk_path group_name
举例说明:
CLEAR DCRDISK ERR_EP_ARR '/DEV/RAW/RAW2' 'GRP_DSC'
- 显示指定路径下面磁盘属性
显示 path 路径下面所有磁盘的信息,分为三种类型:
NORMAL DISK:普通磁盘;
UNUSED ASMDISK:初始化未使用的 ASMDISK;
USED ASMDISK:已经使用的 ASMDISK。
语法格式:
LISTDISKS path
举例说明:
LISTDISKS '/DEV/RAW/'
限制:
如果查询模拟 ASM 磁盘的磁盘信息,则对 path 路径没有限制;如果查询真实环境中共享存储路径下的磁盘信息,则 path 路径的根目录名称必须以“dev”开头,例如:listdisks '/dev/DMDATA/' 或 listdisks '/dev_data/DMDATA/',否则将不会显示该路径下的磁盘信息。
- 联机修改 DCR 磁盘,扩展节点
联机修改 DCR 磁盘,扩展节点,会将新增节点信息写回 dcr 磁盘。
语法格式:
EXTEND DCRDISK disk_path FROM ini_path
举例说明:
EXTEND DCRDISK 'D:\ASMDISKS\DISK0.ASM' FROM 'D:\DMDCR_CFG.INI'
10.6.2 DMASMSVR
DMASMSVR 是提供 DMASM 服务的主要载体,每个提供 DMASM 服务的节点都必须启动一个 DMASMSVR 服务器,这些 DMASMSVR 一起组成共享文件集群系统,提供共享文件的全局并发控制。DMASMSVR 启动时扫描/dev/raw/路径下的所有块设备,加载 ASM 磁盘,构建 ASM 磁盘组和 DMASM 文件系统。DMASMSVR 实例之间使用 MAL 系统进行信息和数据的传递。
DMASMSVR 集群的启动、关闭、故障处理等流程由 DMCSS 控制,DMASMSVR 定时向 VOTE DISK 写入时间戳、状态、命令、以及命令执行结果等信息,DMCSS 控制节点定时从 VOTE DISK 读取信息,检查 DMASMSVR 实例的状态变化,启动相应的处理流程。
DMASMSVR 集群中,只有一个控制节点,控制节点以外的其他节点叫做普通节点,DMASMSVR 控制节点由 DMCSS 选取;所有 DDL 操作(比如创建文件,创建磁盘组等)都是在控制节点执行,用户登录普通节点发起的 DDL 请求,会通过 MAL 系统发送到控制节点执行并返回;而 ASM 文件的读、写等操作,则由登录节点直接完成,不需要传递到控制节点执行。
通过 DMASMSVR HELP 可查看 DMASMSVR 的启动用法。
格式: dmasmsvr.exe KEYWORD=value
例如: dmasmsvr.exe DCR_INI=/home/data/DAMENG/dmdcr.ini
关键字说明(默认)
----------------------------------------------------------------
DCR_INI dmdcr.ini路径
-NOCONSOLE 以服务方式启动
HELP 打印帮助信息
参数说明:
DCR_INI:DMDCR.INI 的路径。DMDCR.INI 配置文件记录了 DCR 磁盘路径、实例序列号等信息;如果不指定 DCR_INI 参数,DMASMSVR 默认在当前路径下查找 DMDCR.INI 文件。
说明使用DMASMTOOL或DMASMAPI函数dmasm_connect()登录DMASMSVR时,用户名只能为“ASMSYS”。若为本地登录,不校验密码;若为远程登录,应使用初始化DCR磁盘时设置的登录ASM文件系统的密码。
10.6.3 DMASMAPI
DMASMAPI 是 DMASM 文件系统的应用程序访问接口,通过调用 DMASMAPI 接口,用户可以访问、操作 ASM 文件。与达梦数据库接口 DPI 类似,访问 ASM 文件之前,必须先分配一个 conn 对象,并登录到 DMASMSVR 服务器,再使用这个 conn 对象进行创建磁盘组、创建文件、删除文件、读取数据和写入数据等 DMASM 相关操作。
DMASMAPI 接口的详细使用说明请参考 19 附录。
10.6.4 DMASMTOOL
DMASMTOOL 是 DMASM 文件系统管理工具,提供了一套类 Linux 文件操作命令,用于管理 ASM 文件,是管理、维护 DMASM 的好帮手。DMASMTOOL 工具使用 DMASMAPI 连接到 DMASMSVR,并调用相应的 DMASMAPI 函数,实现创建、拷贝、删除等各种文件操作命令;DMASMTOOL 还支持 ASM 文件和操作系统文件的相互拷贝。
DMASMTOOL 可以登录本地 DMASMSVR,也可以登录位于其他节点的 DMASMSVR,并执行各种文件操作命令。一般建议登录本地 DMASMSVR 服务器,避免文件操作过程中的网络开销,提升执行效率。
通过 DMASMTOOL HELP 可查看 DMASMTOOL 的启动方法。
格式: dmasmtool.exe KEYWORD=value
例如: dmasmtool.exe DCR_INI=/home/data/DAMENG/dmdcr.ini
关键字说明(默认)
----------------------------------------------------------------
DCR_INI dmdcr.ini文件路径
HOST asm服务器地址
PORT_NUM asm服务器端口号
USERID 登录asm服务器用户名密码,(格式:USER/PWD)
SCRIPT_FILE asmtool脚本文件路径
HELP 打印帮助信息
注意1) DMASMTOOL的最大命令长度是1024。
2) 用户没有指定脚本文件,则DMASMTOOL进入交互模式运行,逐条解析、运行命令;用户指定脚本文件(比如asmtool.txt),则以行为单位读取文件内容,并依次执行,执行完成以后,自动退出DMASMTOOL工具。脚本文件必须以"#asm script file"开头,否则认为是无效脚本文件;脚本中其他行以"#"开始表示注释。
3) DMASMTOOL命令直接输入的host/port信息配置的是连接ASMSVR的信息,可以在DMDCR_CFG.INI里面找到,分别为要连接的ASM节点的DCR_EP_HOST和DCR_EP_PORT。
DMASMTOOL 支持的命令说明:
-
创建 ASM 磁盘组,添加 ASM 磁盘,删除 ASM 磁盘组
创建磁盘组,或为磁盘组添加磁盘时,以下情况可能导致失败:
DMASMSVR 服务器没有访问对应磁盘的权限;
磁盘路径不在 DMDCR_CFG.INI 配置文件中配置的 DCR_EP_ASM_LOAD_PATH 路径下;
磁盘大小不够,最少需要 32MB。
- 创建 ASM 磁盘组
语法格式:
CREATE DISKGROUP name ASMDISK file_path
参数说明:
name:磁盘组名,最长不能超过 32 字节。
file_path:磁盘组路径,必须是全路径,不能是相对路径。
举例说明:
CREATE DISKGROUP 'DMDATA' ASMDISK '/DEV/RAW/RAW3'
- 添加磁盘
语法格式:
ALTER DISKGROUP name ADD ASMDISK file_path
参数说明:
name:磁盘组名,最长不能超过 32 字节。
file_path:ASMDISK 路径。必须是全路径,不能是相对路径。
举例说明:
ALTER DISKGROUP 'DMDATA' ADD ASMDISK '/DEV/RAW/RAW4'
- 删除 ASM 磁盘组
语法格式:
DROP DISKGROUP name
参数说明:
name:磁盘组名。
举例说明:
DROP DISKGROUP 'DMDATA'
- 创建文件,扩展文件,截断文件,删除文件
- 创建文件
语法格式:
CREATE ASMFILE file_path SIZE num
参数说明:
file_path:ASM 文件路径。必须是全路径,不能是相对路径。
num:ASM 文件大小,单位 M。取值范围:0~2^24 个 AU,需转换为单位 M。
举例说明:
CREATE ASMFILE '+DMDATA/SAMPLE.DTA' SIZE 20
- 扩展文件
语法格式:
ALTER ASMFILE file_path EXTEND TO size
参数说明:
file_path:ASM 文件路径。必须是全路径,不能是相对路径。
size:扩展到指定大小,单位 M。取值范围:0~2^24 个 AU,需转换为单位 M。
举例说明:
ALTER ASMFILE '+DMDATA/SAMPLE.DTA' EXTEND TO 20
- 截断文件
语法格式:
ALTER ASMFILE file_path TRUNCATE TO size
参数说明:
file_path:ASM 文件路径。必须是全路径,不能是相对路径。
size:截断到指定大小,单位 M。取值范围:0~224 个 AU,需转换为单位 M。
举例说明:
ALTER ASMFILE '+DMDATA/SAMPLE.DTA' TRUNCATE TO 20
- 删除文件
删除 ASM 文件。已经 open、正在访问的 DMASM 文件不允许删除。
语法格式:
DELETE ASMFILE file_path
参数说明:
file_path:ASM 文件路径。必须是全路径,不能是相对路径。
举例说明:
DELETE ASMFILE '+DMDATA/SAMPLE.DTA'
- 重定向输出文件
重定向输出文件。如果多次重定向文件,第一次成功打开重定向文件之后,如果未关闭,则不再打开其他重定向文件。
语法格式:
SPOOL file_path [CREATE|REPLACE|APPEND]
参数说明:
file_path:输出文件路径。
CREATE:如果重定向文件不存在,则创建;如果存在,创建失败。
REPLACE:如果重定向文件不存在,则创建;如果存在,则替换掉。缺省为 REPLACE。
APPEND:如果重定向文件不存在,则创建;如果存在,则追加到文件末尾。
举例说明:
SPOOL /HOME/DATASPOOL.TXT
- 关闭重定向文件
语法格式:
SPOOL OFF
举例说明:
SPOOL OFF
- 兼容 LINUX 一些命令,功能受限,但是很实用
- 到达某目录
语法格式:
CD [path]
参数说明:
path:目标路径。
举例说明:
CD +DMDATA/TEST
- 拷贝
语法格式:
CP [-RF] <src_file_path> <dst_file_path >
或
CP [-RF] <src_dir_path> < dst_dir_path>
参数说明:
-R:递归拷贝,将指定目录下的子文件和子目录一并拷贝。
-F:执行拷贝,不给出提示。
src_file_path:源文件路径。必须是全路径,不能是相对路径。
dst_file_path:目标文件路径。必须是全路径,不能是相对路径。
src_dir_path:源文件所在磁盘路径。
dst_file_path:目标文件所在磁盘路径。
举例说明:
CP '+DMDATA/AA/SAMPLE.DTA' '+DMDATA/A/B.DTA'
CP -R '+DMDATA/AA' '+DMDATA/BB'
CP –F '+DMDATA/AA/SAMPLE.DTA' '+DMDATA/A/B.DTA'
- 删除
语法格式:
RM [-RF] <file_path|dir_path>
参数说明:
-R:递归删除,将指定目录下的子文件和子目录一并删除。
-F:执行删除,不给出提示。
file_path:文件路径。必须是全路径,不能是相对路径。
dir_path:磁盘路径。
举例说明:
RM '+DMDATA/A/SAMPLE.DTA'
RM -R '+DMDATA/A/'
RM –F '+DMDATA/B/'
- 创建目录
语法格式:
MKDIR [-P] dir_path
参数说明:
-P:自动创建不存在的中间目录。
dir_path:磁盘路径。
举例说明:
MKDIR '+DMDATA/A'
MKDIR -P '+DMDATA/NODIR/BB'
- 查找
语法格式:
FIND path <file_name>
参数说明:
path:磁盘路径。
file_name:文件名。
举例说明:
FIND +DMDATA/A 'SAMPLE.DTA'
- 显示
语法格式:
LS [-LR] <file_name|dir_name>
参数说明:
-L:显示文件详细信息。
-R:递归显示。
file_name:文件名。
dir_name:磁盘名。
举例说明:
LS '+DMDATA/A'
LS -L '+DMDATA/A'
LS –R '+DMDATA/A'
- 显示存储信息
语法格式:
DF
举例说明:
DF
- 当前目录
语法格式:
PWD
举例说明:
PWD
- DMASM 特有的一些命令
- 列出所有的磁盘组
语法格式:
LSDG
举例说明:
LSDG
- 列出所有的 ASM 磁盘
语法格式:
LSDSK
举例说明:
LSDSK
- 列出文件的详细信息
语法格式:
LSATTR
举例说明:
LSATTR
- 列出所有的信息,包括文件等
语法格式:
LSALL
举例说明:
LSALL
- 修改密码
语法格式:
PASSWORD
举例说明:
PASSWORD
- 登录,在断开连接后,重新登录
语法格式:
LOGIN
举例说明:
LOGIN
- 测试 ASM 环境下磁盘的读写速度,包括随机读/写速度和顺序读/写速度
语法格式:
IOTEST
执行 iotest 命令时,会在当前路径下创建一个后缀名为.iotest 的临时文件,大小为 1G,测试完成后会自动删除该临时文件。如果当前路径为“+”目录,则默认在 0 号 group 根目录下创建临时文件。出现以下情况时将报错:
若磁盘空间不足 1G,则报错;
若临时文件生成路径下已经存在 iotest 文件,则报错,需要手动删除 iotest 文件后才能继续执行 iotest 命令。
举例说明:
IOTEST
注意1) DMASMTOOL工具的上下键,查找历史记录,以及TAB键的自动补齐功能是基于readline实现的,由于readline输入不支持中文,因此目前DMASMTOOL工具不支持中文输入。
2) 若文件名或路径中包含中文字符,当客户端与服务器的编码不一致时,可能出现乱码,因此建议不要使用包含中文字符的文件名或路径。
3) 在DMASMTOOL工具执行命令时,如果路径名或者文件名首字母为数字,需要给字符串加单引号'。
4) 在DMASMTOOL工具使用cd命令,首字母为'+', '\', '/'符号都会从目录最上层开始查找目录。
5) ASM文件全路径长度不能超过256字节。
10.7 DMASM 使用说明
DMASM 的配置和使用大致分为三步。
第一步 环境准备
- 硬件
准备多台部署 DMDSC 集群的机器。机器数和集群节点数一致。
- 存储设备
准备共享磁盘。用户根据实际数据量来准备共享磁盘的数量。至少一块。
- 操作系统
为所有机器配置相同的操作系统。支持 Windows 和 Linux 系统。用户根据实际需求选择操作系统。
- 网络配置
每台机器至少配置两块网卡。一块用于配置内网网段,一块用于配置外网网段。
- 用户权限准备
如果用户选择 Linux 操作系统,那么需要在每台机器上使用 root 用户创建用于搭建环境的用户和组。
- 目录规划
为每台机器各创建三个目录。
目录一 使用 DMDBA 用户创建用于镜像环境搭建的目录,不同机器上此目录必须相同。
目录二 DM 执行码和工具存放于目录,不同机器上此目录必须相同。
目录三 配置文件存放于目录,不同的机器上此目录可以不同。
- 磁盘准备
首先使用多路径软件为共享存储的磁盘创建目录名,即将磁盘链接到一个目录中。然后将磁盘的用户权限修改为和目录的用户权限一致。
第二步 搭建 DMASM
搭建按照下面顺序依次进行:
- 使用 DMASMCMD 工具创建所有磁盘。具体为 DCR 磁盘、VOTE 磁盘和 ASM 磁盘,其中 ASM 磁盘用于存放数据(DATA)和日志(LOG)。
- 配置并启动 DMCSS。
- 配置并启动 DMASMSVR。
- 使用 DMASMTOOL 工具创建 ASMDISK 磁盘组。具体为 DATA 磁盘组和 LOG 磁盘组两种,分别管理 DATA 磁盘和 LOG 磁盘。
- 配置并启动 DMSERVER。
- 配置并启动 DMCSSM。
至此,一个使用了 DMASM 镜像的 DMDSC 部署完成。
第三步 正常使用数据库
用户登录到任意一个 DM 实例,即可获得完整的达梦数据库服务。同时,用户可通过两种方式来管理 ASM 文件:一是编写用户代码,通过调用 DMASMAPI 接口来管理 ASM 文件;二是使用 DMASMCMD 和 DMASMTOOL 工具来管理 ASM 文件。