要管理 SCSI 磁盘,必须指定并了解其 SCSI 控制器和逻辑单元号 (LUN)。对于 vSphere 磁盘对象,可以使用 Cloud Assembly 在云模板中分配这两个值。
能够使用不同 SCSI 控制器对性能至关重要,并且对于某些部署类型(如 Oracle Real Application Clusters,RAC),此功能是必需的。
SCSI 控制器和 LUN 磁盘属性
要分配 SCSI 控制器和 LUN,请添加以下云模板属性:
SCSIController
unitNumber
您还可以选择省略这些属性,在这种情况下,分配遵循可预测的默认值。Cloud Assembly 不再按随机顺序部署 SCSI 磁盘,因为这会使其难以进行管理。
SCSI 控制器和磁盘按顺序进行编号,从 0 开始。每个 SCSI 控制器都可以支持单元号为 0-15 的 SCSI 磁盘。
方案 1:同时设置 SCSI 控制器和单元号
可以完全指定这两个属性,如以下示例所示。在这种情况下,SCSI 控制器和单元号的分配与您输入的值相匹配。
resources:
Cloud_vSphere_Machine_1:
type: Cloud.vSphere.Machine
properties:
image: centos
cpuCount: 1
totalMemoryMB: 1024
attachedDisks:
- source: '${resource.Cloud_vSphere_Disk_1.id}'
- source: '${resource.Cloud_vSphere_Disk_2.id}'
- source: '${resource.Cloud_vSphere_Disk_3.id}'
Cloud_vSphere_Disk_1:
type: Cloud.vSphere.Disk
properties:
capacityGb: 1
SCSIController: SCSI_Controller_2
unitNumber: 0
Cloud_vSphere_Disk_2:
type: Cloud.vSphere.Disk
properties:
capacityGb: 1
SCSIController: SCSI_Controller_2
unitNumber: 1
Cloud_vSphere_Disk_3:
type: Cloud.vSphere.Disk
properties:
capacityGb: 1
SCSIController: SCSI_Controller_3
unitNumber: 4
方案 2:仅设置 SCSI 控制器
可以指定 SCSI 控制器而省略单元号。在这种情况下,SCSI 控制器的分配与您输入的值相匹配。单元号设置为该控制器下的第一个可用单元号。
resources:
Cloud_vSphere_Machine_1:
type: Cloud.vSphere.Machine
properties:
image: centos
cpuCount: 1
totalMemoryMB: 1024
attachedDisks:
- source: '${resource.Cloud_vSphere_Disk_1.id}'
- source: '${resource.Cloud_vSphere_Disk_2.id}'
- source: '${resource.Cloud_vSphere_Disk_3.id}'
Cloud_vSphere_Disk_1:
type: Cloud.vSphere.Disk
properties:
capacityGb: 1
SCSIController: SCSI_Controller_0
Cloud_vSphere_Disk_2:
type: Cloud.vSphere.Disk
properties:
capacityGb: 1
SCSIController: SCSI_Controller_0
Cloud_vSphere_Disk_3:
type: Cloud.vSphere.Disk
properties:
capacityGb: 1
SCSIController: SCSI_Controller_1
方案 3:同时省略这两个属性
可以省略 SCSI 控制器和单元号。在这种情况下,分配将设置为第一个可用的 SCSI 控制器,以及该控制器下的第一个可用单元号。
resources:
Cloud_vSphere_Machine_1:
type: Cloud.vSphere.Machine
properties:
image: centos
cpuCount: 1
totalMemoryMB: 1024
attachedDisks:
- source: '${resource.Cloud_vSphere_Disk_1.id}'
- source: '${resource.Cloud_vSphere_Disk_2.id}'
- source: '${resource.Cloud_vSphere_Disk_3.id}'
Cloud_vSphere_Disk_1:
type: Cloud.vSphere.Disk
properties:
capacityGb: 1
Cloud_vSphere_Disk_2:
type: Cloud.vSphere.Disk
properties:
capacityGb: 1
Cloud_vSphere_Disk_3:
type: Cloud.vSphere.Disk
properties:
capacityGb: 1
不是方案:仅 LUN
不能省略 SCSI 控制器,而仅指定单元号。这样做可能会导致出现如下部署:多个 SCSI 控制器都具有该编号的磁盘,但管理时却不知道哪个磁盘是哪个磁盘。
使用输入设置 SCSI 控制器和 LUN
要使设计更加动态,请使用输入,以便用户在请求或更新时可以指定 SCSI 控制器和单元号。
inputs:
diskProperties:
type: array
minItems: 1
maxItems: 10
items:
type: object
properties:
size:
type: integer
SCSIController:
type: string
title: SCSI Controller
enum:
- SCSI_Controller_0
- SCSI_Controller_1
- SCSI_Controller_2
- SCSI_Controller_3
unitNumber:
type: integer
title: Unit Number
resources:
app:
type: Cloud.vSphere.Machine
allocatePerInstance: true
properties:
flavor: small
image: centos
attachedDisks: '${map_to_object(slice(resource.disk[*].id, 0, 4), ''source'')}'
disk:
type: Cloud.vSphere.Disk
allocatePerInstance: true
properties:
capacityGb: '${input.diskProperties[count.index].size}'
SCSIController: '${input.diskProperties[count.index].SCSIController}'
unitNumber: '${input.diskProperties[count.index].unitNumber}'
count: ${length(input.diskProperties)}