在HPE服务器上部署vSAN群集时,遇到了一个问题。vSAN向导没有显示驱动器的物理托架号,因此我必须找出另一种方法来将显示的驱动器NAA ID与物理驱动器位置相关联。
出现在vSAN配置向导中的磁盘
在我的情况下,我希望将托架1、3和5中的驱动器放在磁盘组1中,将托架2、4和6中的驱动器放在磁盘组2中。要形象化此最终目标,请查看下图。
所需的磁盘组布局
为了使该解决方案起作用,需要将ESXi与HPE ESXi映像一起安装 。HPE自定义映像包括Smart Storage Administrator CLI(SSACLI)实用程序,它是用于以编程方式在HPE服务器中标识驱动器位置的秘密工具。对于ESXi 6.5及更高版本,以下命令将返回物理驱动器信息:/opt/smartstorageadmin/ssacli/bin/ssacli ctrl slot=0 pd all show detail
输出看起来像这样,每个驱动器都有一个条目。
physicaldrive 1I:1:4
Port:1I
Box:1
Bay:4
Status:OK
驱动器类型:未分配的驱动器
接口类型:固态SAS
大小:1.9 TB
暴露给OS的驱动器:True
Logical / Physical Block Size:512/4096
固件修订版:HPD2
序列号:–
WWID:58CE38EE2057D3C6
型号:HP MO001920JWFWU
当前温度(C):29
最高温度(C):30
剩余使用量:100.00%
开机时间:592
SSD Smart Trip磨损:虚假
PHY计数:2
PHY传输速率:12.0Gbps,未知的
驱动器身份验证状态:正常
运营商应用程序版本:11
运营商Bootloader版本:6
支持的Sanitize Erase:True
Sanitize估计的最大擦除时间:1分钟,10秒
不受限制的Sanitize支持:True
Shingled磁记录支持:无
驱动器唯一ID:58CE38EE2057D3C56193000858CE38EE
请注意突出显示的WWID值。我故意遗漏了最后一个字符。突出显示的字符串与显示在vSphere向导中的NAA ID相同,但减去最后一个字符。现在我们知道该示例中的驱动器属于托架4,并且是磁盘组2中的容量驱动器。类似于此示例,您现在可以使用其他驱动器的输出来标识每个NAA值的物理位置,并且将其分配给适合您的设计的磁盘组。
或者,您可以使用序列号(从此示例中删除)与您在iLO界面中找到的序列号匹配。
但是,登录到每个主机并运行命令可能会有些乏味。相反,我整理了一个快速的Powershell脚本,该脚本利用pytty连接工具 从指定的主机中提取该信息。您可以轻松地修改脚本以一次处理多个主机,也可以随意处理输出。
########## Define the below values ##########
$vmhost = "esx1"
$user = "root"
$Passwd = "password"
$PathToPlink = "C:\plink.exe"
######## DO NOT EDIT BELOW THIS LINE ########
$cmd = "/opt/smartstorageadmin/ssacli/bin/ssacli ctrl slot=0 pd all show detail"
$plink = "echo y | " + $PathToPlink + " " + "-ssh" + " " + "$user" + "@" + $vmhost + " " + "-pw" + " " + $Passwd + " " + '"' + $cmd + '"'
Connect-VIServer $vmhost -User $user -Password $Passwd
#Starts the ssh service on the host if it is not running
$sshstatus = Get-VMHostService -VMHost $vmhost| Where-Object {$psitem.key -eq "tsm-ssh"}
if ($sshstatus.Running -eq $False) {
Get-VMHostService | Where-Object {$psitem.key -eq "tsm-ssh"} | Start-VMHostService
}
Write-Verbose -Message "Executing $cmd on $vmhost"
$cmdOutput = Invoke-Expression -command $plink
#If SSH was stopped on the host before running this script, this will put it back to a stopped state
if ($sshstatus.Running -eq $False) {
Get-VMHostService | Where-Object {$psitem.key -eq "tsm-ssh"} | Stop-VMHostService -Confirm:$False
}
$cmdOutput