DevOps开发运维
成长之路

DM8-DSC-DMASM

介绍

DMASM(DM Auto Storage Manager)是一个专用的分布式文件系统,使用DMASM自动存储管理方案,可以帮助用户更加便捷的管理DMDSC集群的数据库文件。DMASM主要部件包括:提供存储服务的裸设备、dmasmsvr服务器、dmasmapi接口、初始化工具dmasmcmd和管理工具dmasmtool等。

概述

DMDSC集群可以直接使用裸设备作为共享存储,存放数据库文件。但是由于裸设备存在一些功能限制,造成DMDSC集群在集群使用、维护上并不是那么灵活、方便。裸设备的使用限制如下:

1、不支持动态扩展文件大小;在创建数据文件是,就必须指定文件大小,并且文件无法动态扩展。

2、数据文件必须占用整个裸设备,造成空间浪费。

3、不支持类linux的文件操作命令,使用不方便。

4、操纵系统支持最大裸设备数目较小,无法创建足够的数据库文件。

为了克服裸设备的这些使用限制,DM专门设计了一个分布式文件系统DMASM,来管理裸设备的磁盘和文件。DMASM提供了基本的数据文件访问接口,可以有效降低DMDSC共享存储的维护难度,DMASM提供的主要功能包括:

1、分布式管理:支持多台机器并发访问DMASM磁盘和文件,提供全局并发控制。

2、磁盘组管理:支持创建和删除磁盘组,将裸设备格式化为DMASM格式,并由dmasmsvr统一管理;一个磁盘组可以包含一个或者多个DMASM磁盘,磁盘组支持在线增加DMASM磁盘,实现动态存储扩展。

3、文件管理:支持创建、删除、截断文件等功能;支持创建目录;支持动态扩展文件;文件可以存放在一个磁盘组的多个磁盘中,文件大小不在受限于单个磁盘大小。

4、完善、高效的访问接口:通过dmasmapi可以获得各种文件管理功能。

5、通用功能的管理工具:dmasmtool的实现主要参考了达梦数据库文件系统,因此,一些概念和实现原理与达梦数据库基本类似,熟悉达梦数据库的用户,就会更加容易理解DMASM。

DMASM磁盘

DMASM磁盘是指经过dmasmcmd工具格式化,可以被dmasmsvr识别的物理磁盘。DMASM磁盘是组成磁盘组的基本单位,一个裸设备只能格式化为一个DMASM磁盘,不支持分割使用。

磁盘组

磁盘组由一个或多个DMASM磁盘组组成,是存储DMASM文件的载体;一块DMASM磁盘只能属于一个磁盘组。DMASM支持动态添加DMASM磁盘。DMDSC集群中,一般建议将日志文件和数据文件保存到不同的磁盘组中。

DMASM文件

在DMASM磁盘组上创建的文件,称之为DMASM文件。一个DMASM文件只能保存在一个磁盘组中,但一个DMASM文件的数据可以物理存放在同一个磁盘组的多个DMASM磁盘中。DMDSC集群中,需要多个节点共享访问的数据库文件、日志文件、控制文件等,一般会创建为DMASM文件。

簇(extent)

簇是DMASM文件的最小分配单位,一个簇由物理上连续的一组AU构成。簇的大小为4,也就是说一个DMASM文件至少占用4个AU,也就是4M的物理存储空间。

AU(Allocate Unit)

DMASM存储管理的最小单位,AU的大小为1M。DMASM以AU为单位将磁盘划分为若干逻辑单元,DMASM文件也是一系列AU组成。根据AU的不同用途,系统内部定义了一系列AU类型,包括desc AU、inode AU、redo AU和data AU。

DMASM原理

DMASM磁盘与文件管理

DMASM文件系统将物理磁盘格式化后,变成可识别、可管理的DMASM磁盘,通过DMASM磁盘组将一个或多个DMASM磁盘整合成一个整体提供文件服务。

DMASM磁盘格式化后,会逻辑划分若干簇(extent),簇是管理DMASM磁盘的基本单位,DMASM文件的最小分配单位也是簇,这些逻辑划分的簇根据其用途可以分为描述簇、inode簇和数据簇。

创建、删除DMASM文件操作,在DMASM系统内部其实就是转换成修改、维护inode AU的具体动作。

而扫描全局的inode AU链表可以获取到磁盘组上的所有的DMASM文件信息。

DMASM REDO

DMASM采用重做日志机制,保证在各种异常情况下数据不被损坏。创建、删除DMASM文件等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继续完成。

簇映射表

创建DMASM文件后,用户操作DMASM文件的一般流程是:调用DMASM文件的OPEN、READ、WRITE接口,打开DMASSM文件并获取一个句柄,在使用这个句柄从文件的指定偏移读取数据、或者写入数据。用户在使用DMASM的过程中,只需要获取一个DMASM文件句柄,并不需要知道数据最终保存在物理磁盘的什么位置。

DMASM使用簇映射表(extent map)机制维护DMASM文件与物理磁盘地址的映射关系,访问DMASM文件时,根据文件号。文件偏移等信息,通过簇映射表可以快速获取到物理磁盘地址。

由于DMASM并不缓存任何用户数据,与直接读、写裸设备相比,DMASM文件的读、写操作仅仅增加了簇映射代价,而这个代价与IO代价相比几乎可以忽略,因此,使用DMASM并不会引起读写性能的降低。

DMASM技术指标

DMASM使用说明

1、使用DMASM必须使用dmasmcmd工具初始化DMASM磁盘和磁盘组,并启动dmasmsvr服务器。使用者(dmserver等)必须通过dmasmapi接口登录dmasmsvr创建dmasm文件,并进行各种DMASM文件操作。

2、DMASM文件呢的读写接口与普通的操作系统文件类似,主要的区别就是需要专用的dmasmapi接口进行操作。

3、一台共享存储上,只能搭建一套asm文件系统,多套会导致系统启动失败。

4、已经open、正在访问的DMASM文件不允许删除。

5、DMASM文件可以重复打开,但是建议用户在使用过程中,尽量避免反复打开同一个DMASM文件。如果用户反复打开同一个DMASM文件,并且没有及时关闭文件,有可能会降低DMASM文件的访问速率。

6、DMASM文件句柄不保证全局唯一,只保证连接级别的唯一性,一个连接重复打开一个DMASM文件,会返回不同的文件句柄;不同连接打开同一个DMASM文件,有可能返回相同的文件句柄。

7、支持删除磁盘组,但不能单独删除磁盘组中的某一块磁盘

8、任意文件open的情况下,其所属的磁盘组不能被删除。

9、DMASM文件路径都以‘+GROUP_NAME’开头,使用‘/’作为路径分隔符,任何以’+’开头的文件,我们都认为是DMASM文件,GROUP_NAME是磁盘组名称,比如 ‘+DATA/ctl/cm.ctl’文件,保存在DMASM文件系统的DATA磁盘组的ctl目录下。’+’只能出现在全路径的第一位,出现在任意其他位置的路径都是非法的。

10、DMASM只提供文件级别的并发控制,访问DMASM文件,系统内部会进行封锁操作。比如,正在访问的数据文件不允许被删除;但是DMASM并不提供数据文件的读写并发控制。DMASM允许多个用户同时向同一个文件的相同偏移写入数据,一旦发生这种并发写,我们无法预知最终写入磁盘的数据是什么。因此,DMASM不是一个通用的分布式文件系统,必须由使用DMASM的上层应用来控制数据文件的读写并发,采用这种实现策略的主要原因有两个;

提升DMASM文件的读写速率。通过分布式文件系统,需要实现读、写操作的全局并发控制,避免并发写入导致数据不不一致,这种策略会严重影响读写操作。

数据库管理软件已经提供了数据访问的并发控制机制,确保不会同时读写相同的数据库,DMASM不需要实现一套重复的并发控制策略。

11、目前,DMASM还未实现异步格式化机制,创建磁盘组、添加磁盘等操作需要较长的执行时间,并且格式化过程中会阻塞创建DMASM文件等操作。

12、目前,DMASM只提供了基本的数据文件管理功能,并不支持镜像存储、条带化存储、数据在平衡等功能。

DMASMCMD

DMASMCMD是DMASM文件系统初始化工具,用来格式化裸设备为DMASM磁盘,并初始化DCR Disk、Voting Disk。格式化DMASM磁盘就是在裸设备的头部写入DMASM磁盘特征描述符号,包括DMASM标识串、DMASM磁盘名、以及DMASM磁盘大小等信息。其中Voting Disk和DCR Disk也会被格式化为DMASM磁盘。

DMASMCMD工具的主要功能包括:

1、初始化DMASM磁盘

2、初始化DCR Disk,同时指定密码。

3、初始化Voting Disk

4、导出DCR Disk配置信息

5、导入DCR Disk配置信息

6、清理DCR Disk中指定组的故障节点信息

7、创建用于模拟裸设备的磁盘文件(用于单机模拟DMDSC环境)

8、列出指定路径下磁盘属性

9、联机修改DCR磁盘,扩展节点

DMASMCMD工具用法

格式:dmasmcmd KEYWORD=value                                                                                      例如:dmasmcmd SCRIPT_FILE=asmcmd.txt

1、用户没有指定脚本文件,则dmasmcmd进入交互模式运行,逐条解析、运行命令。

2、用户指定脚本文件(比如asmcmd.txt),则以行为单位读取文件内容,并依次执行,执行完成后,自动退出dmasmcmd工具。脚本文件必须以“#asm script file”开头,否则认为是无效脚本文件;脚本中其他行以“#”表示注释;脚本文件大小不超过1M。

DMASMCMD命令执行界面下支持的语句包括:

创建DMASM磁盘:

Format:create asmdisk disk_path disk_name[size(M)]                                                Usage:create asmdisk ‘/home/asmdisk/disk0.asm’ ‘DATA0’                                        Usage:create asmdisk ‘/home/asmdisk/disk0.asm’ ‘DATA0’ 100

用来将裸设备格式化为ASM Disk,会在裸设备头部写入ASM Disk标识信息。size最小取值32。

格式化为DCR磁盘

Format:create dcrdisk disk_path disk_name [size(M)]
Usage:create dcrdisk ‘/home/asmdisk/disk0.asm’ ‘DATA0’
Usage:create dcrdisk ‘/home/asmdisk/disk0.asm’ ‘DATA0’ 100
用来将裸设备格式化为DCR磁盘,会在裸设备头部写入DCR标识信息,size取值最小32.

格式化为Voting Disk

Format:create votedisk disk_path disk_name [size(M)]
Usage:create votedisk ‘/home/asmdisk/disk0.asm’ ‘DATA0’
Usage:create votedisk ‘/home/asmdisk/disk0.asm’ ‘DATA0’ 100
用来将裸设备格式化为voting disk,会在裸设备头部写入voting disk标识信息。

以上三种命令中size参数可以忽略,程序会计算disk_path的大小;但是某些操作系统计算disk_path大小会失败,这时候还是需要用户指定size信息,size取最小为32.

创建空文件模拟裸设备

Format:create emptyfile file_path size(M) num
Usage:create emptyfile ‘/opt/data/asmdisks/disk0.asm’ size 100
创建disk0.asm模拟裸设备,注意必须以 .asm结尾。模拟测试用,真实环境不建议使用。

初始化DCR&Voting Disk

Format:init dcrdisk disk_path from ini_path identified by password                          Usage:init dcrdisk ‘/dev/raw/raw2/’ from ‘/home/asm/dmdcr_cfg.ini’ identified by ‘aaaaa’

根据配置文件dmdcr_cfg.ini的内容,初始化DCR磁盘。设置登录ASM文件系统的密码,密码要用单引号括起来。

Format:init votedisk disk_path from ini_path
Usage:init votedisk ‘/dev/raw/raw3’ from ‘/home/asm/dmdcr_cfg.ini’
根据配置文件dmdcr_cfg.ini的内容,初始化Voting disk。

导出DCR的配置文件

Format:export dcrdisk disk_path to ini_path

Usage:export dcrdisk ‘/dev/raw/raw2’ to ‘/home/asm/dmdcr_cfg.ini’

解析DCR磁盘内容,导出到dmdcr_cfg.ini文件。

导入DCR的配置文件

Format:import dcrdisk ini_path to disk_path

Usage:import dcrdisk ‘/data/dmdcr_cfg.ini’ to ‘/data/asmdisk/disk0.asm’

根据配置文件/data/dmdcr_cfg.ini的内容。将修改导入DCR磁盘

校验DCR磁盘

Format:check dcrdisk disk_path                                                                                      Usage:check dcrdisk ‘/dev/raw/raw2’

校验DCR磁盘信息是否正确,根据打印出来的code值判断,如果等于0,则表示DCR磁盘正常,如果小于0,则说明DCR磁盘故障,需要重新初始化。

清理指定组的故障节点信息

Format: clear dcrdisk err_ep_arr disk_path group_name
Usage: clear dcrdisk err_ep_arr ‘/dev/raw/raw2’ ‘GRP_DSC’
清理 DCR Disk 中指定组的故障节点信息,可借助 export 命令查看对应组的
DCR_GRP_N_ERR_EP 和 DCR_GRP_ERR_EP_ARR 信 息 , 清 理 成 功 后 , 指 定 组 的DCR_GRP_N_ERR_EP P_ERR_EP_值为 0, DCR_GRP_ERR_EP_ARR内容为空。

显示指定路径下面磁盘属性

Format:listdisk path                                                                                                      Usage:listdisk ‘/dev/raw’

显示path路径下面所有磁盘,分为三种类型:normal disk:普通磁盘,unused asmdisk:初始化未使用的asmdisk,used asmdisk:已经使用的asmdisk。

联机修改DCR磁盘,扩展节点

Format:extend dcrdisk disk_path from ini_path                                                          Usage:extend dcrdisk ‘d:\asmdisks\disk0.asm’ from ‘d:\dmdcr_cfg.ini’

联机修改 DCR 磁盘,扩展节点, 会将新增节点信息写回 dcr 磁盘。

DMASMSVR

DMASMSVR是提供DMASM服务的主要载体,每个提供DMASM服务的接节点都必须启动一个DMASMSVR服务器,这些DMASMSVR一起组成共享文件集群系统,提供共享文件的全局并发控制。DMASMSVR启动时扫描/dev/raw/路径下的所有裸设备,加载DMASM磁盘,构建DMASM磁盘组和DMASM文件系统。DMASMSVR实例之间MAL系统进行信息和数据的传递。

DMASMSVR集群的启动、关闭、故障处理等流程由DMCSS控制,DMASMSVR定时向Voting Disk写入时间戳、状态、命令、以及命令执行结果等信息,DMCSS控制节点定时从Voting Disk读取信息,检查DMASMSVR实例的状态变化,启动相应的处理流程。

DMASMSVR集群中,只有一个控制节点,控制节点以外的其他节点叫做普通节点,DMASMSVR控制节点由DMCSS选取;所有DDL操作都是控制节点执行,用户登录普通节点发起的DDL请求,会通过MAL系统发送到控制节点执行并返回;而DMASM文件的读写等操作,则由登录节点直接完成,不需要传递到控制节点。

DMASMSVR启动格式

格式: dmasmsvr.exe KEYWORD=value
例如: dmasmsvr.exe DCR_INI=/home/data/DAMENG/dmdcr.ini
关键字说明(默认)
—————————————————————-
DCR_INI dmdcr.ini 路径
-NOCONSOLE 以服务方式启动
HELP 打印帮助信息

DMASMTOOL

DMASMTOOL是DMASM文件系统管理工具,提供了一套类Linux文件操作命令,用于管理DMASM文件,是管理、维护DMASM的好帮手。DMASMTOOL工具使用DMASMAPI连接到DMASMSVR,并调用相应的DMASMAPI函数,实现创建、拷贝、删除等各种文件操作命令;DMASMTOOL还支持DMASM文件的操作系统文件的相互拷贝。

DMASMTOOL可以登录本地DMASMSVR,也可以登录位于其他节点的DMASMSVR,并执行各种操作命令。一般建议登录本地DMASMSVR服务器。避免文件操作过程中网络开销,提升执行效率。

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 打印帮助信息

DMASMTOOL支持的命令说明

创建磁盘组

Format:create diskgroup name asmdisk file_path
Usage:create diskgroup ‘DMDATA’ asmdisk ‘/dev/raw/raw3’
asmdisk为磁盘组名,最长不能超过32字节。路径必须是全路径,不能是相对路径。

添加磁盘

Format:alter diskgroup name add asmdisk file_path
Usage:alter diskgroup ‘DMDATA’ add asmdisk ‘/dev/raw/raw4’
ASMDISK路径必须是全路径,不能是相对路径

删除磁盘组

Format:drop diskgroup name
Usage:drop diskgroup ‘DMDATA’

创建磁盘组,或为磁盘组添加磁盘时,一下情况可能导致失败:
1、DMASMSVR进程没有访问对应磁盘的权限;
2、磁盘路径不在的,dcr_cfg.ini配置文件中配置的DCR_EP_ASM_LOAD_PATH路径下;
3、磁盘大小不够,最少需要32M

创建文件

Format: create asmfile file_path size(M) num
Usage: create asmfile ‘+DMDATA/sample.dta’ size 20

截断文件

Format: alter asmfile file_path truncatetosize(M)
Usage: alter asmfile ‘+DMDATA/sample.dta’ truncateto 20

删除文件

Format: delete asmfile file_path
Usage: delete asmfile ‘+DMDATA/sample.dta’

重定向输出文件

Format: spool file_path [create|replace|append]
Usage: spool /home/dataspool.txt
1) create: 如果重定向文件不存在,则创建;如果存在,创建失败。
2) replace: 如果重定向文件不存在,则创建;如果存在,则替换掉。默认为 replace。
3) append: 如果重定向文件不存在,则创建;如果存在,则追加到文件末尾。
4) 多次 spool 重定向文件,第一次成功打开重定向文件之后,如果未关闭,则不再打开其他重定向文件。

关闭重定向文件
Format: spool off
Usage: spool off

兼容 LINUX 一些命令,功能受限,但是很实用

到达某目录
Format: cd[path]
Usage: cd +DMDATA/test

拷贝
Format: cp [-rf] src_file_path dst_file_path
Usage: 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’

删除
Format: rm file_path
rm -r directorie
Usage: rm ‘+DMDATA/a/sample.dta’
rm -r ‘+DMDATA/a/’
rm –f ‘+DMDATA/b/’

创建目录
Format: mkdir [-p] dir_path
Usage: mkdir ‘+DMDATA/a’
Mkdir -p ‘+DMDATA/nodir/bb’
查找
Format: find path file_name
sage: find +DMDATA/a ‘sample.dta’

显示
Format: ls [-lr] filename
Usage: ls
ls -l
ls –r
这里-r表示递归的意思,不是linux中的逆序显示。
显示存储信息
Format: df
Usage: df

当前目录                                                                                                                                pwd

DMASM 特有的一些命令

列出所有的磁盘组
Format: lsdg
Usage: lsdg

列出所有的 DMASM 磁盘
Format: lsdsk
Usage: lsdsk

列出文件的详细信息
Format: lsattr
Usage: lsattr

列出所有的信息,包括文件等
Format: lsall
Usage: lsall

修改密码
Format: password
Usage: password

登录,在断开连接后,重新登录
Format: login
Usage: login

 

赞(0)

评论 抢沙发

评论前必须登录!

 

LNMP社群 不仅仅是技术

关于我们网站地图