我的Azure VM有两个连接的磁盘。一个需要删除,其他包含数据库:)
如何确定我的目标驱动器是什么? OO
官方文件说"在分离之前检查" ..好的 - 怎么样?!.. 他们唯一展示的是如何获得操作系统磁盘,但其他两个磁盘不包含操作系统。
我知道如何在磁盘上找到操作系统,但在我的情况下不需要:
# 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中的更改,但它不起作用。
UPD: 不幸的是有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
相反,但如果我理解正确,则没有必要。磁盘管理器中的顺序是什么意思? 所以在D:\之后添加的磁盘会从零开始获取LUN编号吗?
答案 0 :(得分:1)
将磁盘附加到Azure VM时,必须将LUN(逻辑单元号)与其关联。如果您通过门户网站附加,则可能会默认此编号,但每个磁盘的编号必须是唯一的。值可以是0-15,因为您可以附加的最大数据磁盘数为16.确定LUN是确定哪个驱动器是哪个驱动器的关键。
首先,远程登录到目标计算机并运行以下PowerShell:
get-disk | format-list number, path
这将输出带有驱动器号(插槽)和路径的驱动器列表。对于数据磁盘,路径将类似于:
\ \ SCSI#磁盘&安培; ven_msft&安培; prod_virtual_disk#的 000001 强>#{57f56307-b6bf-19d0-94f2-00a0c91efb8b}
特别注意磁盘#000001#位。据我所知,那里的数字与LUN相匹配。在这种情况下,它说的是LUN 1。
查看要删除的驱动器的“磁盘管理”屏幕,并记下左侧的“磁盘编号”。将其与上述命令返回的数字相匹配以查找LUN编号,然后您可以匹配要删除的驱动器的LUN。
接下来,从运行Azure PowerShell cmdlet表单的计算机上执行以下操作:
get-azurevm iaasdiag | Get-AzureDataDisk | ft MediaLink, Lun
这将撤回存储中磁盘的名称和LUN值。
这应该为您提供远程计算机上的磁盘到存储中的磁盘的映射。
我认为有可能在PowerShell中更好地获取LUN,但我没有看过这个。我做了一些测试,似乎证明了这一点。
注意:这种类型的匹配可能是Azure中存储系统的一些内部工作的工作。虽然现在可能有效,但未来也可能会发生变化,恕不另行通知。如果他们有更好的方法来确定这一点,那就太好了。
答案 1 :(得分:1)
如果您使用的是Azure资源管理器,答案会略有不同。
首先,远程登录到目标计算机并运行以下PowerShell:
get-disk | format-list number, path
接下来,从运行Azure PowerShell cmdlet的计算机上执行以下操作:
get-AzureRmVm -ResourceGroupName yourResourceGroupName -Name yourVmName
get-AzureRmVm的输出将为您提供数据磁盘及其属性的列表,包括LUN编号。