注册
VMware环境下模拟达梦DSC集群共享磁盘 —— 虚拟共享磁盘创建、挂载与绑定实战
专栏/数据追梦之路/ 文章详情 /

VMware环境下模拟达梦DSC集群共享磁盘 —— 虚拟共享磁盘创建、挂载与绑定实战

Tomliu 2026/07/21 190 0 0
摘要 在个人学习或测试环境中,搭建达梦DSC集群时,共享磁盘的模拟是至关重要的一环。本专题详细讲解如何在VMware Workstation/Pro中创建虚拟共享磁盘(Shared Disk),并完成多虚拟机之间的正确挂载与绑定操作。

VMware环境下模拟达梦DSC集群共享磁盘 —— 虚拟共享磁盘创建、挂载与绑定实战

1.1 VM虚拟机共享存储创建

重要提醒:VM虚拟共享磁盘必须使用 vmware-vdiskmanager.exe 工具创建,否则后续容易出现各种奇怪问题(如 code -13218:DCR磁盘VERSION校验失败 等)。

若频繁出现此类错误,建议修复虚拟机后重新创建共享磁盘。

创建共享磁盘命令示例

# 进入vmware-vdiskmanager所在目录 cd "C:\bigprogram\VMware\VMware Workstation\" # 创建各共享磁盘(-t 2 表示多节点共享) vmware-vdiskmanager.exe -c -s 1g -a lsilogic -t 2 "D:\database\Virtual Machines\disk\dcr.vmdk" vmware-vdiskmanager.exe -c -s 2g -a lsilogic -t 2 "D:\database\Virtual Machines\disk\vote.vmdk" vmware-vdiskmanager.exe -c -s 10g -a lsilogic -t 2 "D:\database\Virtual Machines\disk\LOG0.vmdk" vmware-vdiskmanager.exe -c -s 50g -a lsilogic -t 2 "D:\database\Virtual Machines\disk\DATA0.vmdk"

注:在 VMware 中创建一个虚拟磁盘时,会同时生成 .vmdk(描述文件)和 -flat.vmdk(实际数据文件)两个文件。-flat.vmdk 才是真正占用空间的磁盘内容文件,添加磁盘是选择.vmdk(描述文件)即可。

虚拟机配置参数(各主机均需添加)

在每台虚拟机的 .vmx 配置文件中增加以下内容:

disk.enableUUID = "TRUE" disk.locking = "false" scsi0.sharedBus = "virtual" diskLib.dataCacheMaxSize = "0" diskLib.dataCacheMaxReadAheadSize = "0" diskLib.dataCacheMinReadAheadSize = "0" diskLib.dataCachePageSize = "4096" diskLib.maxUnsyncedWrites = "0"

虚拟机添加共享存储

每台虚拟机编辑虚拟机配置,添加共享磁盘:
添加→硬盘→使用现有虚拟磁盘(E),添加完成,点击高级→独立&永久

1.2 裸设备磁盘绑定

1.2.1 裸设备磁盘查看

在正式绑定之前,需要先查看磁盘设备是否为我们预期要绑定的设备。可以通过lsblk查看,多路径的需要通过multipath查看。这里的sdb\sdc\sdd\sde就是本次准备的dcr\vote\log和data盘。

[root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 20G 0 disk ├─sda1 8:1 0 1M 0 part ├─sda2 8:2 0 1G 0 part /boot └─sda3 8:3 0 19G 0 part ├─klas-root 253:0 0 17G 0 lvm / └─klas-swap 253:1 0 2G 0 lvm [SWAP] sdb 8:16 0 1G 0 disk sdc 8:32 0 2G 0 disk sdd 8:48 0 10G 0 disk sde 8:64 0 50G 0 disk sr0 11:0 1 4.3G 0 rom /run/media/root/Kylin-Server-11 [root@localhost ~]# multipath

1.2.2 裸设备UUID查看

非多路径设备UUID查看

for disk in `ls /dev/sd*`;do echo $disk; /usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=$disk; done

多路径设备DM_UUID查看

for disk in `ls /dev/mapper/*`;do echo $disk; udevadm info --query=all --name $disk | grep -i dm_uuid; done

1.2.3 裸设备UUID绑定(推荐方式)

配置文件必须放在 /etc/udev/rules.d/ 目录下。

1.2.3.1 手动绑定示例(.rules 文件)

KERNEL=="sd?",SUBSYSTEM=="block",PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="36000c29d05ceb80787286e0b01476989",SYMLINK+="raw/ASM-DCR",OWNER="dmdba",GROUP="dinstall",MODE="660" # ... 其他磁盘类似

1.2.3.2 脚本批量生成rules文件(推荐)

# 示例脚本(根据实际盘符调整 a b c d,脚本需要写成sh脚本) curr=$(cd "$(dirname "$0")";pwd) # 如果是命令行,curr用该方式 # curr=$(pwd) 或者 curr=/etc/udev/rules.d/ rm -f $curr/88-dm-asmdevices.rules for i in a b c d;do echo "KERNEL==\"sd?\",SUBSYSTEM==\"block\", PROGRAM==\"/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/\$name\",RESULT==\"`/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/sd$i`\", SYMLINK+=\"raw/asm-disk$i\",OWNER=\"dmdba\", GROUP=\"dinstall\",MODE=\"0660\"" >> $curr/88-dm-asmdevices.rules done ## 本地实际盘为sdb\sdc\sdd\sde,脚本放在/etc/udev/rules.d/命令,生成命令如下: [root@localhost rules.d]# curr=/etc/udev/rules.d/ [root@localhost rules.d]# rm -f $curr/88-dm-asmdevices.rules itelisted --replace-whitespace --device=/dev/sd$i`\", SYMLINK+=\"raw/asm-disk$i\",OWNER=\"dmdba\", GROUP=\"dinstall\",MODE=\"0660\"" >> $curr/88-dm-asmdevices.rules done[root@localhost rules.d]# [root@localhost rules.d]# for i in b c d e;do > echo "KERNEL==\"sd?\",SUBSYSTEM==\"block\", PROGRAM==\"/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/\$name\",RESULT==\"`/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/sd$i`\", SYMLINK+=\"raw/asm-disk$i\",OWNER=\"dmdba\", GROUP=\"dinstall\",MODE=\"0660\"" >> $curr/88-dm-asmdevices.rules > done [root@localhost rules.d]# ls 88-dm-asmdevices.rules 99-vmware-scsi-udev.rules [root@localhost rules.d]# cat 88-dm-asmdevices.rules KERNEL=="sd?",SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="36000c292564bbd1d2cd39b0692e0758a", SYMLINK+="raw/asm-diskb",OWNER="dmdba", GROUP="dinstall",MODE="0660" KERNEL=="sd?",SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="36000c29f810c30f22245cd3cbd156012", SYMLINK+="raw/asm-diskc",OWNER="dmdba", GROUP="dinstall",MODE="0660" KERNEL=="sd?",SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="36000c290c56b4387beb1fa264492fbfc", SYMLINK+="raw/asm-diskd",OWNER="dmdba", GROUP="dinstall",MODE="0660" KERNEL=="sd?",SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="36000c29c1c0a9f30fd703c7acf3e4338", SYMLINK+="raw/asm-diske",OWNER="dmdba", GROUP="dinstall",MODE="0660" [root@localhost rules.d]#

如果需要自定义绑盘名称,可以自行修改SYMLINK后面的名字。

生成后复制到所有节点:

cp 88-dm-asmdevices.rules /etc/udev/rules.d/ scp 88-dm-asmdevices.rules root@其他节点IP:/etc/udev/rules.d/

1.2.4 多路径DM_UUID绑定(多路径环境)

类似上述方式,使用 ENV{DM_UUID} 进行绑定,脚本生成方式同上。

1.2.5 绑定生效与验证

# 使规则生效(建议重启更彻底) [root@localhost rules.d]# udevadm control --reload-rules [root@localhost rules.d]# udevadm trigger [root@localhost rules.d]# ll /dev/raw/ 总计 0 lrwxrwxrwx 1 root root 6 7月22日 01:01 asm-data -> ../sde lrwxrwxrwx 1 root root 6 7月22日 01:01 asm-dcr -> ../sdb lrwxrwxrwx 1 root root 6 7月22日 01:01 asm-log -> ../sdd lrwxrwxrwx 1 root root 6 7月22日 01:01 asm-vote -> ../sdc [root@localhost rules.d]# # 验证大小 /usr/sbin/blockdev --getsize64 /dev/raw/asm-diska # 批量验证 for i in dcr vote data redo;do echo "$i:"; /usr/sbin/blockdev --getsize64 /dev/raw/asm-$i; done

验证要点

  • 所有节点同一磁盘显示的大小一致
  • UUID 必须完全一致
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服