DSC集群的存储依赖于共享存储,ASM是处于共享存储和DMSERVER之间的中间存储管理服务。ASM是DM 自动存储管理器(DM Auto Storage Manager,简称 DMASM)的缩写,它是一个分布式文件系统,为DMSERVER上层的读写提供可靠的服务。
ASM集群是由DMASMSVR服务主要组成,它的运行又依赖于dmcss服务,在正常提供服务的ASM集群中,必须要保证每个dmasmserver服务运行机器上都有一个dmcss服务运行。
对于共享存储的管理维护,DM提供了两个工具dmasmtool和dmasmcmd,这两个工具的功能不同,dmasmcmd主要是用来管理挂载到本地的共享磁盘,对他们进行磁盘格式化、初始化、查看共享磁盘信息等;
dmasmtool主要是用来对指定的ASM集群中的文件系统进行管理,对asm磁盘进行创建组、删除组,对组中的文件进行创建、浏览、删除等操作。
这个实践是基于virtualbox的两台虚拟机(192.168.56.102和192.168.56.103)进行测试。
主要包括以下几个步骤:
VirtualBox中可以手工添加虚拟硬盘,但是默认是不可共享的,并且需要修改为预分配空间才可以共享。
首先第一步,宿主机上创建5个虚拟硬盘,每个大小10G,设置访问属性为可共享,空间为预分配机制。
然后将它们都加到两台虚拟机中的存储SATA设备中。
对两台虚拟机进行了相同的添加虚拟磁盘操作后,就要开始需要配置一个udev绑定块设备的操作,以便于后续配置ASM操作,两台虚拟机需要同样的操作:
查看/dev/sd*中哪些是新加的虚拟机磁盘,然后用以下命令查看它们的uuid:
/usr/lib/udev/scsi_id -u -g /dev/sdb
在/etc/udev/rules.d/中添加一个配置文件66-dmasmdevices.rules,将上述的uuid配置到其中,对应到5个共享盘:
KERNEL=="sd*",SUBSYSTEM=="block",PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="1ATA_VBOX_HARDDISK_VBd7139490-2e4aa1c4",SYMLINK+="DM_ARCH", RUN+="/bin/sh -c 'chown -R dmdba:dinstall /dev/DM_ARCH; chmod 0660 /dev/DM_ARCH; chmod 777 /dev/sd*'"
KERNEL=="sd*",SUBSYSTEM=="block",PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="1ATA_VBOX_HARDDISK_VB24c8ab39-58800dab",SYMLINK+="DM_DATA", RUN+="/bin/sh -c 'chown -R dmdba:dinstall /dev/DM_DATA; chmod 0660 /dev/DM_DATA; chmod 777 /dev/sd*'"
KERNEL=="sd*",SUBSYSTEM=="block",PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="1ATA_VBOX_HARDDISK_VB8c0acefb-908780b9",SYMLINK+="DM_DCR", RUN+="/bin/sh -c 'chown -R dmdba:dinstall /dev/DM_DCR; chmod 0660 /dev/DM_DCR; chmod 777 /dev/sd*'"
KERNEL=="sd*",SUBSYSTEM=="block",PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="1ATA_VBOX_HARDDISK_VBd7c80718-e103cc45",SYMLINK+="DM_VOTE", RUN+="/bin/sh -c 'chown -R dmdba:dinstall /dev/DM_VOTE; chmod 0660 /dev/DM_VOTE; chmod 777 /dev/sd*'"
KERNEL=="sd*",SUBSYSTEM=="block",PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="1ATA_VBOX_HARDDISK_VBf6c48c1c-c6331462",SYMLINK+="DM_LOG", RUN+="/bin/sh -c 'chown -R dmdba:dinstall /dev/DM_LOG; chmod 0660 /dev/DM_LOG; chmod 777 /dev/sd*'"
执行以下命令进行配置热更新
/sbin/udevadm control --reload-rules
/sbin/udevadm trigger --action=add
/sbin/udevadm trigger --type=devices --action=change
刷新后,确认生效
ls -ltr /dev_DMDATA/DM*
ls -ltr /dev/DM_*
为了初始化ASM中的VOTE和DCR这两个diskgroup,需要配置以下dmdcr_cfg.ini文件
准备/home/dmdba/DSC/dmdcr_cfg.ini文件,进行votedisk的配置,配置信息包括三类:集群环境全局信息、集群组信息、以及组内节点信息:
DCR_N_GRP = 3
DCR_VTD_PATH = /dev_DMDATA/DM_VOTE #规划为vote的磁盘
DCR_OGUID = 210715
[GRP]
DCR_GRP_TYPE = CSS
DCR_GRP_NAME = GRP_CSS
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 65
[GRP_CSS]
DCR_EP_NAME = CSS0
DCR_EP_HOST = 192.168.56.102
DCR_EP_PORT = 11286
[GRP_CSS]
DCR_EP_NAME = CSS1
DCR_EP_HOST = 192.168.56.103
DCR_EP_PORT = 11286
[GRP]
DCR_GRP_TYPE = ASM
DCR_GRP_NAME = GRP_ASM
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 61
[GRP_ASM]
DCR_EP_NAME = ASM0
DCR_EP_SHM_KEY = 42424
DCR_EP_SHM_SIZE = 1024
DCR_EP_HOST = 192.168.56.102
DCR_EP_PORT = 11276
DCR_EP_ASM_LOAD_PATH = /dev_DMDATA
[GRP_ASM]
DCR_EP_NAME = ASM1
DCR_EP_SHM_KEY = 42425
DCR_EP_SHM_SIZE = 1024
DCR_EP_HOST = 192.168.56.103
DCR_EP_PORT = 11277
DCR_EP_ASM_LOAD_PATH = /dev_DMDATA
[GRP]
DCR_GRP_TYPE = DB
DCR_GRP_NAME = GRP_DSC
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 57
[GRP_DSC]
DCR_EP_NAME = DSC0
DCR_EP_SEQNO = 0
DCR_EP_PORT = 10038
DCR_CHECK_PORT = 11256
[GRP_DSC]
DCR_EP_NAME = DSC1
DCR_EP_SEQNO = 1
DCR_EP_PORT = 10038
DCR_CHECK_PORT = 11257
然后使用dmasmcmd工具进行初始化磁盘操作:
create dcrdisk '/dev_DMDATA/DM_DCR' 'dcr'
create votedisk '/dev_DMDATA/DM_VOTE' 'vote'
create asmdisk '/dev_DMDATA/DM_LOG' 'LOG0'
create asmdisk '/dev_DMDATA/DM_DATA' 'DATA0'
create asmdisk '/dev_DMDATA/DM_ARCH' 'ARCH0'
init dcrdisk '/dev_DMDATA/DM_DCR' from '/home/dmdba/DSC/dmdcr_cfg.ini' identified by 'abcd'
init votedisk '/dev_DMDATA/DM_VOTE' from '/home/dmdba/DSC/dmdcr_cfg.ini'
此时通过listdisks /dev_DMDATA命令可以看到这个组下已经都是创建成功的disk了:
准备一份DMASM的MAL配置文件dmasvrmal.ini,在192.168.56.102和192.168.56.103上都需要,其中内容完全一致,内容如下:
#/home/dmdba/DSC/dmasvrmal.ini
[MAL_INST0]
MAL_INST_NAME = ASM0
MAL_HOST = 192.168.56.102
MAL_PORT = 11266
[MAL_INST1]
MAL_INST_NAME = ASM1
MAL_HOST = 192.168.56.103
MAL_PORT = 11266
准备dmdcr.ini配置文件,在192.168.56.102和192.168.56.103上都需要,其中内容稍有差异,DMDCR_SEQNO 分别为 0 和 1,内容如下:
# /home/dmdba/DSC/dmdcr.ini
# 192.168.56.102上
DMDCR_PATH = /dev_DMDATA/DM_DCR
DMDCR_MAL_PATH = /home/dmdba/DSC/dmasvrmal.ini
DMDCR_SEQNO = 0
DMDCR_ASM_RESTART_INTERVAL = 0
DMDCR_ASM_STARTUP_CMD = /home/dmdba/dmdbms/bin/DmAsmServiceASM0 start
DMDCR_DB_RESTART_INTERVAL = 0 #设置为0不自动拉起
DMDCR_DB_STARTUP_CMD = /home/dmdba/dmdbms/bin/DmServiceDSC0 start
DMDCR_AUTO_OPEN_CHECK = 111
DMDCR_ASM_TRACE_LEVEL = 2
# 192.168.56.103上
DMDCR_PATH = /dev_DMDATA/DM_DCR
DMDCR_MAL_PATH = /home/dmdba/DSC/dmasvrmal.ini
DMDCR_SEQNO = 1
DMDCR_ASM_RESTART_INTERVAL = 0
DMDCR_ASM_STARTUP_CMD = /home/dmdba/dmdbms/bin/DmAsmServiceASM1 start
DMDCR_DB_RESTART_INTERVAL = 0 #设置为0不自动拉起
DMDCR_DB_STARTUP_CMD = /home/dmdba/dmdbms/bin/DmServiceDSC1 start
DMDCR_AUTO_OPEN_CHECK = 111
DMDCR_ASM_TRACE_LEVEL = 2
启动DMCSS、DMASM服务程序
在192.168.56.102上执行
./dmcss DCR_INI=/home/dmdba/DSC/dmdcr.ini
# 再开一个窗口执行
./dmasmsvr DCR_INI=/home/dmdba/DSC/dmdcr.ini
在192.168.56.103上执行
./dmcss DCR_INI=/home/dmdba/DSC/dmdcr.ini
# 再开一个窗口执行
./dmasmsvr DCR_INI=/home/dmdba/DSC/dmdcr.ini
使用dmasmtool工具创建DMDATA,DMARCH,DMLOG三个diskgroup:
create diskgroup 'DMLOG' asmdisk '/dev_DMDATA/DM_LOG'
create diskgroup 'DMDATA' asmdisk '/dev_DMDATA/DM_DATA'
create diskgroup 'DMARCH' asmdisk '/dev_DMDATA/DM_ARCH'
lsdsk
dminit初始化时会向ASM中磁盘组写入数据文件,必须要在dmcss的控制节点也就是192.168.56.102上执行,否则会报错。
dminit初始化配置文件:
DB_NAME = data
SYSDBA_PWD = Sysdba@123
SYSAUDITOR_PWD = Sysauditor@123
SYSTEM_PATH = +DMDATA/data
SYSTEM = +DMDATA/data/SYSTEM.dbf
SYSTEM_SIZE = 100
ROLL = +DMDATA/data/ROLL.dbf
ROLL_SIZE = 100
MAIN = +DMDATA/data/MAIN.dbf
MAIN_SIZE = 100
CTL_PATH = +DMDATA/data/dm.ctl
CTL_SIZE = 8
LOG_SIZE = 100
DCR_PATH = /dev_DMDATA/DM_DCR
DCR_SEQNO = 0
AUTO_OVERWRITE = 2
PAGE_SIZE = 32
EXTENT_SIZE = 16
BLANK_PAD_MODE = 1
CHARSET = 1
[DSC0]
CONFIG_PATH = /home/dmdba/DSC/DSC0
PORT_NUM = 10038
MAL_HOST = 192.168.56.102
MAL_PORT = 8344
LOG_PATH = +DMLOG/DSC0_LOG01.log
LOG_PATH = +DMLOG/DSC0_LOG02.log
[DSC1]
CONFIG_PATH = /home/dmdba/DSC/DSC1
PORT_NUM = 10038
MAL_HOST = 192.168.56.103
MAL_PORT = 8346
LOG_PATH = +DMLOG/DSC1_LOG01.log
LOG_PATH = +DMLOG/DSC1_LOG02.log
执行初始化命令:
./dminit control=/home/dmdba/DSC/dminit.ini
正常运行的asm集群可以使用dmasmtool进行文件管理,其中的使用命令与linux下的文件操作相似,
例如ls查看文件,cd打开目录等.
help可以看到所有可以执行的命令帮助
包括文件操作、磁盘操作、磁盘组操作等
查看当前asm中有哪些diskgroup
查看某个diskgroup下的文件和目录
查找文件
切换到某个目录下
使用已经初始化过的asmdisk来创建磁盘组
删除组
直接用cp命令即可
直接用cp命令即可,可以拷贝单个文件,也可以拷贝目录
ASM分布式文件系统是一个很强大的系统,内部实现了一套完整的文件系统接口,使用dcrdisk和votedisk传递节点间信息,通过dmasmtool和dmasmcmd工具我们可以方便得查看到比较浅层的细节,如果还需要看到更多信息,就需要多尝试,并从日志中查看对应的执行细节信息。
文章
阅读量
获赞