注册
搭建DMDSC共享磁盘环境
技术分享/ 文章详情 /

搭建DMDSC共享磁盘环境

,,, 2025/12/31 150 0 0

dsc共享磁盘准备

使用vmware创建共享磁盘并将磁盘挂载到两台linux虚拟机上,并搭建dsc所需的磁盘环境

虚拟机软件:VMWare Workstation 16

虚拟机系统:CentOS7 CentOS7

共享磁盘数量:4

创建虚拟硬盘

dmdsc需要4块磁盘,分别是

  1. DCR 盘(集群注册配置)
  2. VOTE 盘(仲裁盘,防脑裂)
  3. DATA 盘(数据文件)
  4. LOG 盘(联机日志)

理论上不支持通过逻辑分区来替代物理磁盘,所以我们需要创建4块共享硬盘,推荐的大小为

DCR 盘(1 GB) VOTE 盘(1 GB)DATA 盘(10–20 GB) LOG 盘(10 GB)

第一台虚拟机

右键虚拟机标签选择虚拟机设置

image20251229161529177.png

image20251229161719332.png

然后按照下列要求依次进行

虚拟磁盘类型:SCSI

  • scsi类型支持并发读写,共享集群必须选择

选择磁盘:创建新虚拟磁盘

指定磁盘容量:20G(按需填写),将虚拟磁盘存储为单个文件

指定磁盘文件:按需选择和命名。

创建完成后,选择新添加得硬盘 2 (SCSI) > 高级 > 设置设备号为 SCSI 1:1 ,模式为独立、永久。

(图片截取有误,在1:1无挂载硬盘的前提下,推荐使用1:1)

屏幕截图 20251229 162343.png

为什么要虚拟节点要挂载到这个位置

SCSI 1:0 第一个数字是SCSI 控制器编号,第二个数字是设备在该控制器上的目标 ID

官方明确建议将共享磁盘放在独立的 SCSI 控制器上,模式scsi控制器编号为0,所以我们挂载到1上

一般来说,第二个数字0号id是控制器本身的保留地址或引导盘

但是在很多虚拟机中,控制器本身可能不占用0,此时像图中挂载到1:0是完全可行的,但是为了一般性,建议读者还是挂载到1:1。

重复这个步骤,直至创建完4个磁盘

第二台虚拟机

大致相同的步骤,在选择磁盘的时候,选择在第一台虚拟机中创建的磁盘vmdk文件

image20251229162213086.png
创建完成后同样地挂载到相应节点。

修改vmx配置

两台虚拟机操作相同

找到虚拟机创建路径下的vmx文件,通过记事本形式打开。

添加以下内容,在添加时删除注释内容,避免无法识别!

# 启用 SCSI 总线共享
scsi1.sharedBus = "physical" 

# 明确指定设备类型为磁盘
scsi1:1.deviceType = "disk"
scsi1:2.deviceType = "disk"
scsi1:3.deviceType = "disk"
scsi1:4.deviceType = "disk"
# 注意控制器号和设备号与之前设置的一致
# 禁用磁盘锁定机制。
disk.locking = "false"

# 禁用缓存,确保I/O直通
diskLib.dataCacheMaxSize = "0"
diskLib.dataCacheMaxReadAheadSize = "0"
diskLib.DataCacheMinReadAheadSize = "0"
diskLib.dataCachePageSize = "4096"
diskLib.maxUnsyncedWrites = "0"

# 为虚拟磁盘生成并暴露唯一 UUID
disk.EnableUUID = "TRUE"

启动虚拟机

启动界面中出现类似下面的信息,sdb,scdc,sdd,sde则为新添加的磁盘

2aa6077e2bcf118e9726069e6ed81923.png
root权限查看磁盘信息

# 列出系统中所有磁盘及其分区表的详细信息
fdisk -l
# 以树状结构列出所有块设备(磁盘、分区、LVM、加密卷等)
lsblk

image20251229164911739.png

image20251230122745651.png

dsc磁盘环境准备

两台虚拟机操作相同

  1. 通过 scsi_id 获取磁盘信息。
/usr/lib/udev/scsi_id -g -u /dev/sdb

这里获取到的是 36000c296497388ed68408470fce830a4

  1. 创建磁盘链接。

以下操作两台机子都需进行

编写/etc/udev/rules.d/66-dmdevices.rules 配置信息,创建磁盘链接。书写时一个 KERNEL 为一行,不能换行。

注意:

  • 其中的result 对应上面获取的 scsi_id

  • dmdba:dmdba 根据实际情况换成对应的用户组和用户

## DCR磁盘配置,且在软链接之前创建文件夹 /dev_DSC2
KERNEL=="sd*",SUBSYSTEM=="block",PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="234074fa79680f431",SYMLINK+="DCR", OWNER="dmdba", GROUP="dmdba", MODE="0660", RUN+="/bin/sh -c 'chown dmdba:dmdba /dev/$name;mkdir -p /dev_DSC2; ln -s /dev/DCR /dev_DSC2/DCR'"
## VOTE 磁盘配置
KERNEL=="sd*",SUBSYSTEM=="block",PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="234074fa746a006ac",SYMLINK+="VOTE", OWNER="dmdba", GROUP="dmdba", MODE="0660", RUN+="/bin/sh -c 'chown dmdba:dmdba /dev/$name; ln -s /dev/VOTE /dev_DSC2/VOTE'"
## DMDATA 磁盘配置
KERNEL=="sd*",SUBSYSTEM=="block",PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="234074fa7f643c18b",SYMLINK+="DMDATA", OWNER="dmdba", GROUP="dmdba", MODE="0660", RUN+="/bin/sh -c 'chown dmdba:dmdba /dev/$name; ln -s /dev/DMDATA /dev_DSC2/DMDATA'"
## DMLOG 磁盘配置,且在搭建完成之后,将权限直接赋予 dmdba组的dmdba用户
KERNEL=="sd*",SUBSYSTEM=="block",PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="234074fa795eb6057",SYMLINK+="DMLOG", OWNER="dmdba", GROUP="dmdba", MODE="0660", RUN+="/bin/sh -c 'chown dmdba:dmdba /dev/$name; ln -s /dev/DMLOG /dev_DSC2/DMLOG ; chown -R dmdba:dmdba /dev_DSC2
'"
  1. 重启 systemd-udev-trigger 服务
[root@test107 ~]# systemctl restart systemd-udev-trigger
  1. 检查磁盘权限
ls -lth /dev_DSC2/
 
 
lrwxrwxrwx 1 dmdba dmdba 32 10月 31 14:06 DMDATA -> /dev/DMDATA
lrwxrwxrwx 1 dmdba dmdba 32 10月 31 14:06 DMLOG -> /dev/DMLOG
lrwxrwxrwx 1 dmdba dmdba 27 10月 31 14:05 VOTE -> /dev/VOTE
lrwxrwxrwx 1 dmdba dmdba 27 10月 31 14:05 DCR -> /dev/DCR

至此,dmdsc集群搭建的磁盘准备已经就绪,可以开始搭建dmdsc!

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服