如何确定分配给 Azure 驱动器的字母是什么?

How to determine what letter is assigned to Azure drive?

我的 Azure VM 有两个附加磁盘。一个需要删除,另一个包含数据库:)

如何确定我的目标驱动器是什么? oO

官方文档说 "check before detach"..好的 - 怎么样?!.. 他们唯一展示的是如何获得 OS 磁盘,但其他两个磁盘不包含 OS.

我知道如何找到 OS 磁盘,但在我的情况下不需要:

   # Get storage account name
$myServiceName =    "bla"
$myVMname =         "bla"

    # Get Virtual machine
$vm = Get-AzureVM -ServiceName $myServiceName -Name $myVMname 

    # Get storage account name and path to vhd 
$vmOSDisk = $vm | Get-AzureOSDisk;

这个命令也没有告诉我任何有用的信息:

Get-AzureDisk | Get-AzureDisk | Format-list DiskName, AttachedTo, DiskSizeInGB, OS

我试图缩小音量以查看powershell的变化,但它不起作用。

更新: 可惜有Win Server 2008 R2,不支持'get-disk'。但我可以改用其他功能

$drive = gwmi Win32_DiskPartition
$drive 

我可以使用

中的东西

Win32_LogicalDisk Win32_MappedLogicalDisk Win32_DiskPartition Win32_DiskDrive Win32_LogicalDiskRootDirectory Win32_DiskQuota Win32_LogonSessionMappedDisk Win32_LogicalDiskToPartition Win32_DiskDrivePhysicalMedia Win32_DiskDriveToDiskPartition Win32_OfflineFilesDiskSpaceLimit

相反,但如果我理解正确,则没有必要。磁盘管理器中的 order 是什么意思? 那么在 D:\ 之后添加的磁盘将获得从零开始的 LUN 编号?

所以我成功删除了第一卷,认为E的LUN为零,H的LUN为1

当您将磁盘附加到 Azure VM 时,LUN(逻辑单元号)必须与其相关联。如果您通过门户附加,它可能会默认此编号,但每个磁盘的编号必须是唯一的。值可以是 0-15,因为您可以附加的最大数据磁盘数是 16。弄清楚 LUN 是确定哪个驱动器是哪个驱动器的关键。

首先,远程进入目标机器并运行以下PowerShell:

get-disk  | format-list number, path

这将输出驱动器列表及其驱动器编号(插槽)和路径。对于数据磁盘,路径类似于:

\?\scsi#disk&ven_msft&prod_virtual_disk#000001#{57f56307-b6bf-19d0-94f2-00a0c91efb8b }

特别注意 disk#000001# 位。据我所知,那里的数字与 LUN 相匹配。在这种情况下,它表示它是 LUN 1。

查看要删除的驱动器的“磁盘管理”屏幕,并记下左侧的磁盘编号。将其与上述命令返回的编号进行匹配以找到 LUN 编号,然后您可以匹配要删除的驱动器的 LUN。

接下来,从您运行使用 Azure PowerShell cmdlet 表单的计算机上执行以下操作:

get-azurevm iaasdiag | Get-AzureDataDisk | ft MediaLink, Lun

这将拉回存储中的磁盘名称和 LUN 值。

这应该为您提供远程计算机上的磁盘到存储中的磁盘的映射。

我认为可能有一种方法可以在 PowerShell 中更好地访问 LUN,但我并没有忽略它。我做了一些测试,似乎证明了。

注意:这种类型的匹配很可能是 Azure 中存储系统的某些内部工作原理。虽然它现在可能有效,但将来也可能会更改,恕不另行通知。如果他们有更好的方法来确定这一点,那就太好了。

如果您使用的是 Azure 资源管理器,答案会略有不同。

首先,远程进入目标机器并运行以下PowerShell:

get-disk | format-list number, path

接下来,从您运行从中使用 Azure PowerShell cmdlet 的计算机执行以下操作:

get-AzureRmVm -ResourceGroupName yourResourceGroupName -Name yourVmName

get-AzureRmVm 的输出将为您提供数据磁盘及其属性的列表,包括 LUN 编号。