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。
1、创建 ASM 磁盘组,添加 ASM 磁盘,删除 ASM 磁盘组
创建磁盘组,或为磁盘组添加磁盘时,以下情况可能导致失败:
DMASMSVR 服务器没有访问对应磁盘的权限;
磁盘路径不在 DMDCR_CFG.INI 配置文件中配置的 DCR_EP_ASM_LOAD_PATH 路径下;
磁盘大小不够,最少需要 32MB。
1、创建 ASM 磁盘组
语法格式:
CREATE DISKGROUP name ASMDISK file_path
# name:磁盘组名,最长不能超过 32 字节。
# file_path:磁盘组路径,必须是全路径,不能是相对路径。
举例说明:
CREATE DISKGROUP 'DMDATA' ASMDISK '/dev/raw/raw4'
2、添加磁盘
语法格式:
ALTER DISKGROUP name ADD ASMDISK file_path
# name:磁盘组名,最长不能超过 32 字节。
# file_path:ASMDISK 路径。必须是全路径,不能是相对路径。
举例说明:
ALTER DISKGROUP 'DMDATA' ADD ASMDISK '/dev/raw/raw4'
3、删除 ASM 磁盘组
语法格式:
DROP DISKGROUP name
# name:磁盘组名。
举例说明:
DROP DISKGROUP 'DMDATA'
2、创建文件,扩展文件,截断文件,删除文件
1、创建文件
语法格式:
CREATE ASMFILE file_path SIZE num
# file_path:ASM 文件路径,建议使用全路径。
# num:ASM 文件大小,单位 M。取值范围:0~2^24 个AU,需转换为单位 M。
举例说明:
CREATE ASMFILE '+DMDATA/a.txt' SIZE 20
2、扩展文件
语法格式:
ALTER ASMFILE file_path EXTEND TO size
# file_path:ASM 文件路径,建议使用全路径。
# size:扩展到指定大小,单位 M。取值范围:0~2^24 个 AU,需转换为单位 M。
举例说明:
ALTER ASMFILE '+DMDATA/a.txt' EXTEND TO 40
3、截断文件
语法格式:
ALTER ASMFILE file_path TRUNCATE TO size
# file_path:ASM 文件路径,建议使用全路径。
# size:截断到指定大小,单位 M。取值范围:0~224 个 AU,需转换为单位 M。
举例说明:
ALTER ASMFILE '+DMDATA/a.txt' TRUNCATE TO 20
4、删除文件
删除 ASM 文件。已经 open、正在访问的 DMASM 文件不允许删除。
语法格式:
DELETE ASMFILE file_path
# file_path:ASM 文件路径,建议使用全路径。
举例说明:
DELETE ASMFILE '+DMDATA/a.txt'
5、重定向输出文件
重定向输出文件。如果多次重定向文件,第一次成功打开重定向文件之后,如果未关闭,则不再打开其他重定向文件。
语法格式:
SPOOL file_path [CREATE|REPLACE|APPEND]# file_path:输出文件路径。
# CREATE:如果重定向文件不存在,则创建;如果存在,创建失败。
# REPLACE:如果重定向文件不存在,则创建;如果存在,则替换掉。缺省为 REPLACE。
# APPEND:如果重定向文件不存在,则创建;如果存在,则追加到文件末尾。
举例说明:
SPOOL /dm8/a.txt
6、关闭重定向文件
语法格式:
SPOOL OFF
举例说明:
SPOOL OFF
3、兼容 LINUX 一些命令,功能受限,但是很实用
1、到达某目录
语法格式:
CD [path]
# path:目标路径。
举例说明:
CD +DMDATA/DSC
2、拷贝
语法格式:
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'
3、删除
语法格式:
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/'
4、创建目录
语法格式:
MKDIR [-P] dir_path# -P:自动创建不存在的中间目录。
# dir_path:磁盘路径。
举例说明:
MKDIR '+DMDATA/A'
MKDIR -P '+DMDATA/NODIR/BB'
5、查找
语法格式:
FIND path <file_name># path:磁盘路径。
# file_name:文件名。
举例说明:
FIND +DMDATA/A 'SAMPLE.DTA'
6、显示
语法格式:
LS [-LR] <file_name|dir_name># -L:显示文件详细信息。
# -R:递归显示。
# file_name:文件名。
# dir_name:磁盘名。
举例说明:
LS '+DMDATA/A'
LS -L '+DMDATA/A'
LS –R '+DMDATA/A'
7、显示存储信息
语法格式:
DF
举例说明:
DF
8、显示当前目录
语法格式:
PWD
举例说明:
PWD
9、估算文件空间已使用情况
语法格式:
DU [dir_path{,dir_path}]# dir_path:要估算的文件目录,未指定则默认为当前目录。
举例说明:
du
du DMDATA
du DMDATA,DMLOG
du DMDATA DMLOG
估算结果中,出现的单位有字节(缺省)、K、M 和 G 等情况。
ASM>du
5.3G +DATA/data/rac00/arch
5.3G +DATA/data/rac00
586.6M +DATA/data/rac01/arch
586.6M +DATA/data/rac01
0 +DATA/data/rac/bak
631.5K +DATA/data/rac/ctl_bak
0 +DATA/data/rac/HMAIN
1012.6M +DATA/data/rac
6.8G +DATA/data
6.8G +DATA
4、DMASM 特有的一些命令
1、列出所有的磁盘组
语法格式:
LSDG
举例说明:
LSDG
2、列出所有的 ASM 磁盘
语法格式:
LSDSK
举例说明:
LSDSK
3、列出文件的详细信息
语法格式:
LSATTR
举例说明:
LSATTR
4、列出所有的信息,包括文件等
语法格式:
LSALL
举例说明:
LSALL
5、修改密码
语法格式:
PASSWORD
举例说明:
PASSWORD
6、登录,在断开连接后,重新登录
语法格式:
LOGIN
举例说明:
LOGIN
7、测试 ASM 环境下磁盘的读写速度,包括随机读/写速度和顺序读/写速度
语法格式:
IOTEST [DISKGROUP=<diskgroup_name>] [ASMFILE=<file_name>] [SIZE=<file_size>]# <diskgroup_name>:磁盘组名。若指定则在指定磁盘组下生成临时文件,若不指定则在当前路径下生成临时文件,如果当前路径为“+”目录,则默认在 0 号 group 根目录下生成临时文件。
# <file_name>:指定生成的临时文件名称,若不指定则系统自动生成临时文件名。
# <file_size> :指定临时文件大小,取值范围 0~2147483647,单位 MB。若不指定则默认临时文件大小为 1024MB。
使用说明:
DM 系统文件 IO 接口封装了 Windows 的 ReadFile/WriteFile 函数和 Linux 的 pread/pwrite 函数,DM 系统 IO 线程从系统 IO 任务链表中获取 IO 任务后调用 DM 系统文件 IO 接口读取指定文件相关内容。
Iotest 命令属于 ASM 文件系统,ASM 文件系统的存储最小单位为扇区,ASM 文件读写接口读写的字节数必须是扇区(512 字节)的倍数,如果 ASM 文件系统和 ASM 应用部署在同一台机器上,则使用本地读写接口,如果在不同的机器上,则使用远程读写接口。ASM 本地读写接口设置好 IO 任务参数后将 IO 任务加入 DM 系统 IO 任务链表,等待 DM 系统 IO 线程执行完该 IO 任务后回调唤醒 ASM 本地读写接口线程,完成文件读写操作。ASM 远程读写接口使用 MAL 链路网络通信,通知 ASM 文件系统向 DM 系统 IO 任务链表添加对应的文件 IO 任务,待文件 IO 完成后发送完成信件给 IO 调用节点,唤醒 IO 调用节点的对应线程,完成文件读写操作。
测试随机读写和顺序读写的方式:
随机读写的文件读写偏移随机为文件大小之内的当前读写单位大小的倍数,即如果文件大小为 1G,当前读写单位大小为 8M,则会进行 1G/8M=128 次文件读写,读写偏移为 1G 内的 8M 倍数,如 8M、16M 等。顺序读写的文件读写偏移则从 0 开始以当前读写单位顺序增长到文件大小,即如果文件大小为 1G,当前读写单位大小为 8M,则会进行 1G/8M=128 次文件读写,读写偏移为 0,8M,16M 直到 1016M。
Iotest 命令以单线程执行,并且不会走服务器缓存。
现有 ASM 系统只能测试磁盘组的文件读写速度,如果一个磁盘组由多个磁盘组成,则只能测试正在使用的未满磁盘的文件读写速度。预期磁盘组的 AU_SIZE 越小,文件读取速度越快。
执行 iotest 命令时,会在指定路径或当前路径下创建一个后缀名为.iotest 的临时文件,测试完成后自动删除该临时文件。出现以下情况时将报错:
若磁盘空间不足,则报错;
若临时文件生成路径下已经存在同名文件,则报错,需要手动删除同名文件后才能继续执行 iotest 命令。
举例说明:
IOTEST DISKGROUP=DMDATA SIZE=128
大家想学习达梦数据库或者解决报错问题,可以去达梦数据库社区地址(https://eco.dameng.com)
制作不易,各位看官如果觉得还可以,对您有帮助,请给小弟一键三连鼓励一下,后续还会继续保持