最近在项目中需要部署几套11g的rac集群,本来是信手拈来的事,由于前期基础环境未作深入了解,导致到现场后遇到了各种问题。还好都解决了,未影响项目交付。下面就一一记录。
环境介绍:
云平台华为cloudstack提供8台虚拟机,用于部署4套rac集群,虚拟机操作系统centos7.7 x64
数据库版本11.2.0.4+最新psu。
udev绑定问题:
当做共享存储检查时候发现共享磁盘无法获取scsi id,因为之前都是通过udev绑定scsi id的方式进行设备授权,如果无法获取scsi id则表示没有办法进行udev授权。后来和华为的工程师沟通后发现目前共享磁盘的格式为vbd方式,所以scsi无法获取对应的id。
/usr/lib/udev/scsi_id -g -u /dev/vdc 无返回,联系厂家针对共享盘全部修改为scsi模式(系统盘无法更改)。再次执行命令可以正常识别scsi-id信息。
正式配置udev规则(两个节点全部执行)
for i in a b c d e;
do
echo "KERNEL=="sd*", SUBSYSTEMS=="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+="asmdisk$i", OWNER="grid", GROUP="asmadmin", MODE="0660"" >>/etc/udev/rules.d/99-oracle-asmdevices.rules
done
# udevadm control --reload
# udevadm trigger
# ls -l /dev/asmdisk*
lrwxrwxrwx. 1 root root 3 Dec 10 18:43 /dev/asmdiska -> sda
lrwxrwxrwx. 1 root root 3 Dec 10 18:43 /dev/asmdiskb -> sdb
lrwxrwxrwx. 1 root root 3 Dec 10 18:43 /dev/asmdiskc -> sdc
lrwxrwxrwx. 1 root root 3 Dec 10 18:43 /dev/asmdiskd -> sdd
lrwxrwxrwx. 1 root root 3 Dec 10 18:43 /dev/asmdiske -> sde
如上asm磁盘绑定成功。
查看了部分华为的文档看了一下vbd和scsi类型的区别。
《华为云Stack 产品文档 :.. > 云硬盘(EVS) > 云硬盘(for ECS) > 相关概念》
根据是否支持高级的SCSI命令来划分云硬盘的磁盘模式,分为VBD (Virtual Block Device)类型和SCSI (Small Computer System Interface)类型。
- VBD类型:VBD类型的云硬盘只支持简单的SCSI读写命令。适用于普通的应用场景,如办公、测试等日常应用场景;或Linux常用集群场景,如RHCS。
- SCSI类型:SCSI类型的云硬盘支持SCSI指令透传,允许弹性云服务器操作系统直接访问底层存储介质。除了简单的SCSI读写命令,SCSI类型的云硬盘还可以支持更高级的SCSI命令(如SCSI-3类型持久预留锁),适用于通过SCSI锁机制保障数据安全的集群应用场景,如Windows MSCS集群。
- 使用SCSI类型磁盘的要求与限制 (这部分华为工程师也给了反馈如果磁盘使用scsi模式不能备HA集群保护。)
- 如果已开启虚拟机HA功能开关、存储面防脑裂开关及数据盘保护开关(如果需要判断是否已开启这些开关,请参考配置虚拟机HA功能),则仅支持对非SCSI类型磁盘的加锁保护,防止数据盘被双写。不支持对SCSI数据盘的加锁保护,原因是加锁保护是基于SCSI指令实现的,由于SCSI盘支持SCSI指令透传,导致加锁保护时对SCSI盘的操作可能与用户的操作冲突导致任务失败。
- 另外scsi类型的硬盘对操作系统也有要求
关于SCSI类型的云硬盘支持的弹性云服务器操作系统和对弹性云服务器软件的要求,详细信息请参见使用SCSI类型磁盘的要求与限制。《https://support.huawei.com/enterprise/zh/doc/EDOC1100203926》
centos7系列是全部支持的。
使用virtio_blk驱动的磁盘显示为“/dev/vda”,使用virtio_scsi驱动的磁盘显示为“/dev/sda”,这不同于IDE硬盘的“/dev/hda”或者SATA硬盘的“/dev/sda”这样的显示标识。
另外华为的云平台上面有单独针对共享盘的介绍:
共享盘传统集群架构中,需要多台计算节点能够访问同一份数据,以便于某个或某些计算节点故障时,整个高可用集群对外可以持续提供业务服务,不因某个部件的故障而导致业务中断。因此重要的数据文件需要放置在共享块存储上,并通过集群文件系统对共享块存储进行统一管理,在前端多个计算节点并发进行读写访问时,保持数据在多个节点间的一致性。
共享盘专为企业级客户的核心业务高可用架构而设计,适用于Share-everything架构下对块存储设备的共享访问场景,比如政府、企业和金融行业客户常用的Oracle RAC数据库高可用架构,服务器High-availability cluster高可用架构。
定义共享云硬盘是一种支持多台ECS/BMS并发读写访问的数据块存储设备,具备多挂载点、高并发性、高性能、高可靠性等特点。单个共享云硬盘可挂载至多台ECS/BMS,最多支持16台,单个非共享云硬盘只能挂载至一台ECS/BMS。本文以ECS为例说明,如图1所示。
目前,共享云硬盘只适用于数据盘,不支持系统盘。支持创建VBD或SCSI类型的共享云硬盘。图1 共享云硬盘
SCSI锁机制VBD类型的共享云硬盘不支持SCSI锁。SCSI类型的共享云硬盘支持SCSI锁。当您部署的应用需要使用SCSI锁时,则需要创建SCSI类型的共享云硬盘。
SCSI锁是多台主机用来操作磁盘的基本机制。在一个共享存储的环境下,多台业务主机可能会同时访问同一个磁盘,如果此时多台主机在同一时间点上对这个磁盘进行写操作,那么这个磁盘将不知道哪个数据先写,哪个数据后写。因此为了防止这种情况发生而导致的数据损坏,引入了SCSI锁的概念。
如果将SCSI类型共享云硬盘挂载至ECS时,由于同一个云硬盘的SCSI锁无法区分单个物理主机上的多台ECS,只有当ECS位于不同物理主机上时才支持SCSI锁,因此需要结合云服务器组的反亲和性一同使用,SCSI锁才会生效。
具有反亲和性的云服务器组是指ECS在创建时,将会分散地创建在不同的物理主机上,从而提高业务的可靠性。您只能在创建ECS的时候选择虚拟机组,对于现有的ECS,不支持添加云服务器组的操作。
通过SCSI Reservation机制来进行SCSI锁的操作,如图2所示,一个SCSI共享盘挂载给一个具有反亲和性的云服务器组中的多个ECS后,如果其中一台ECS向SCSI共享盘发送SCSI Reservation命令后,该共享盘对于其他的ECS就处于锁定状态,此时该云服务器组内的其他ECS无法写入数据到共享盘。
图2 SCSI锁的实现机制
如果ECS不属于任何一个云服务器组,则不建议为该ECS挂载SCSI类型的共享云硬盘。否则SCSI锁无法正常使用,会导致数据存在安全风险。
共享云硬盘本质是将同一块云硬盘挂载给多个实例使用,类似于将一块物理硬盘挂载给多台物理服务器,每一台服务器均可以对该硬盘任意区域的数据进行读取和写入。如果这些服务器之间没有相互约定读写数据的规则,比如读写次序和读写意义,将会导致这些服务器读写数据时相互干扰或者出现其他不可预知的错误。
共享云硬盘为实例提供一种可以共享访问的随机读写块设备,但本身并不提供集群文件系统,需要您自行搭建集群管理系统对共享云硬盘进行管理。
如果只是将共享云硬盘挂载到多个实例,但依旧使用常规文件系统来管理时,会造成磁盘空间分配冲突和数据文件不一致两个问题,具体如下:
- 磁盘空间分配冲突
- 当一个共享云硬盘挂载到多个实例,其中实例A上的进程在写文件时,会查询文件系统和可用的磁盘空间,文件写入后会修改自己的空间分配记录,但不会修改其他实例的记录。因此当实例B在尝试写入文件时,有可能会将实例A已经分配出去的磁盘空间地址再次分配出去,造成磁盘空间分配冲突。
- 数据文件不一致
- 当实例A读取数据并记录在缓存中后,实例A上另一个进程来访问同样的数据就会直接从缓存中进行读取。但如果此时实例B修改了同样的数据,而实例A并不知道,依旧从缓存中读取数据,则会造成业务数据不一致的问题。
因此正确使用共享云硬盘的方式是采用集群管理系统对共享云硬盘进行管理,如果集群需要结合使用SCSI锁,则需要申请SCSI类型的共享云硬盘。如企业应用中常见的Windows MSCS(Microsoft Cluster Service)集群、Linux RHCS(Red Hat Cluster Suite)集群等。以下以Windows MSCS集群和Linux RHCS集群为例,说明共享云硬盘的使用。
- Windows MSCS集群图3为MSCS集群示意图,集群中多个节点共享同一存储,该集群需要结合使用SCSI锁,因此使用SCSI类型的共享云硬盘。当集群中一个节点故障,则该节点承载的服务将转移至另外一个可用节点。
- 图3 Windows MSCS集群
- Linux RHCS集群图4为RHCS集群示意图,RHCS是一个提供高可用、负载均衡以及存储共享的集群套件。RHCS提供分布式锁管理器,GFS通过锁管理器的锁机制实现多个节点共享同一磁盘而不会导致数据不一致,因此,该集群中可以使用不带SCSI锁的VBD类型的共享云硬盘。如何rhcs不采用gfs集群文件系统同样需要修改为scsi模式。
- 图4 Linux RHCS集群
以上部分内容引用自《华为云Stack 产品文档 :.. > 云硬盘(EVS) > 云硬盘(for ECS) > 相关概念》
最新评论