在 ESXi/ESX 4.x 中移除 LUN 的过程比较复杂。而 ESXi 5.0 及更高版本提供了一些改进功能,可以简化该过程,使管理员可以更方便地移除 LUN。
卸载 LUN 核对清单
卸载 LUN 之前,请确保以下事项:
- 如果正在使用该 LUN 作为 VMFS 数据存储,则在该 VMFS 数据存储上存储的所有对象(如虚拟机、快照和模板)都已取消注册,或者移动到另一个数据存储。 注意 :还必须将 VMFS 数据存储上的所有 CD/DVD 映像从虚拟机中取消注册。
- 该数据存储未用于 vSphere HA 检测信号。
- 该数据存储不属于数据存储群集。 有关数据存储群集的详细信息,请参见:
vSphere 5.1 Resource Management GuidevSphere 5.0 Resource Management Guide。该数据存储不受存储 DRS 管理。。 有关 Storage DRS 的详细信息,请参见vSphere 5.1 Resource Management GuidevSphere 5.0 Resource Management Guide。
- 该数据存储没有被配置为检测核心转储分区。
- 有关详细信息,请参见 在 ESXi 5.x/6.0 主机上配置诊断核心转储分区 (2093656)。
- 已为该数据存储禁用 Storage I/O Control。 有关详细信息,请参见 vSphere 5.1 Resource Management Guide 或 vSphere 5.0 Resource Management Guide 中的“管理 Storage I/O 资源”部分。
- 在 ESXi 主机上运行的第三方脚本或实用程序无法访问有问题的 LUN。如果正在使用该 LUN 作为数据存储,请取消注册在该数据存储上存储的所有对象(如虚拟机和模板)。
- 如果正在使用该 LUN 作为 RDM,请从虚拟机中移除此 RDM。单击 编辑设置 ,突出显示 RDM 硬盘,然后单击 移除 。如果尚未选择 从磁盘删除 ,请选择该选项,然后单击 确定 。 注意 :该操作将破坏映射文件,但不会破坏 LUN 内容。
- 检查 LUN/数据存储是否 被用作主机的持久暂存位置。有关持久暂存的详细信息,请参见 为 ESXi 4.x/5.x/6.0 创建持久暂存位置 (2075508)。 以下 PowerCLI 脚本可用于检查当前暂存位置: $vcServer = "vCenter01"$cluster = "CL01"$esxCred = Get-CredentialConnect-VIServer $vcServer | Out-Null#Connect to ESX hosts in clusterforeach ($esx in Get-Cluster $cluster | Get-VMHost) {Connect-VIServer $esx -Credential $esxCred | Out-NullGet-VMHostAdvancedConfiguration -Name "ScratchConfig.ConfiguredScratchLocation"}
注意 :如果正在 vSphere 5.x 和 6.x 中使用 vSphere Web Client,则只有在数据存储卸载操作期间才会执行这些检查:
- 主机不包含任何驻留在该数据存储上的虚拟机
- 主机不应将该数据存储用于 HA 检测信号
获取要移除的 LUN 的 NAA ID
在 vSphere Client 中,可从数据存储的“属性”窗口查看此信息。 在 ESX 主机上,请运行以下命令: # esxcli storage vmfs extent list 您会看到类似以下内容的输出: Volume Name VMFS UUID Extent Number Device Name Partition----------- ----------------------------------- ------------- ------------------------------------ ---------datastore1 4de4cb24-4cff750f-85f5-0019b9f1ecf6 0 naa.6001c230d8abfe000ff76c198ddbc13e 3Storage2 4c5fbff6-f4069088-af4f-0019b9f1ecf4 0 naa.6001c230d8abfe000ff76c2e7384fc9a 1Storage4 4c5fc023-ea0d4203-8517-0019b9f1ecf4 0 naa.6001c230d8abfe000ff76c51486715db 1LUN01 4e414917-a8d75514-6bae-0019b9f1ecf4 0 naa.60a98000572d54724a34655733506751 1 记下该数据存储的 NAA ID,以便稍后在该步骤中使用此信息。 注意 :您也可以运行 esxcli storage filesystem list 命令,该命令可列出 ESXi 主机识别出的所有文件系统。
使用 vSphere Client 卸载 LUN
要使用 vSphere Client 分离存储设备,请参见 vSphere 5.0StorageGuide 中的“分离存储设备”部分。 警告 :必须先使用文档中记录的方法成功卸载数据存储,然后才能完成下面所述的步骤。有关详细信息,请参见 vSphere 5.0 Storage Guide 中的“卸载 VMFS 或 NFS 数据存储”部分。 要使用 vSphere Client 从 ESXi 5.0 主机卸载 LUN,请执行以下操作:
- 如果此 LUN 为 RDM,请跳至步骤 2。否则,在 ESXi 主机的“配置”选项卡中,单击 存储 。右键单击要移除的数据存储,然后单击 卸载 。 此时将显示“确认卸载数据存储”窗口。符合必备条件后,请单击 确定 。 注意 :要在 vSphere Client 中从多个主机中卸载某一个数据存储,请单击 主机和群集 > 数据存储和数据存储群集 视图 (Ctrl+Shift+D )。执行卸载任务,然后选择不应再访问要卸载的数据存储的相应主机。
- 单击 设备 视图(位于 配置 > 存储 ):
- 右键单击此 LUN 的 NAA ID(如上所述),然后单击 分离 。此时将显示“确认卸载设备”窗口。符合必备条件后,请单击 确定 。此 LUN 将在“设备”的“操作状态”下显示为“已卸载”。 注意 :必须按主机执行“分离”功能,该功能不会传播到 vCenter Server 中的其他主机。如果已将 LUN 提供给 SAN 上的启动器组或存储组,则必须在该 SAN 中对该启动器组中的每个主机执行“分离”功能,然后再从该组中取消该 LUN 的映射。如果不按此步骤进行操作,则会使该存储组中没有针对要取消映射的 LUN 执行“分离”操作的主机处于全部路径异常 (APD) 状态。
- 确认 LUN 是否成功分离。然后,该 LUN 便可安全地从 SAN 中取消提供。有关详细信息,请联系存储阵列供应商。
- 对可识别该 LUN 的所有 ESXi 主机执行重新扫描。该设备将自动从存储适配器中移除。
该设备一旦分离,便会处于已卸载状态,即使重新提供该设备也是如此(即,已分离状态是一种持久状态)。要使设备恢复联机状态,必须附加该设备。 如果要从 ESXi 主机中永久停用该设备,请从主机配置中手动移除 NAA 条目:
- 要列出永久分离的设备,请运行以下命令: # esxcli storage core device detached list 您会看到类似以下内容的输出: Device UID State------------------------------------ -----naa.50060160c46036df50060160c46036df offnaa.6006016094602800c8e3e1c5d3c8e011 off
- 要从系统中永久移除设备配置信息,请运行以下命令: # esxcli storage core device detached remove -d NAA_ID 例如: # esxcli storage core device detached remove -d naa.50060160c46036df50060160c46036df
使用命令行卸载 LUN
要使用命令行从 ESXi 5.x/6.x 主机卸载 LUN,请执行以下操作:
- 如果此 LUN 为 RDM,请跳至步骤 4。否则,要获取已挂载到 ESXi 主机的所有数据存储列表,请运行以下命令: # esxcli storage filesystem list 您会看到类似于以下内容的输出,其中会列出所有 VMFS 数据存储: Mount Point Volume Name UUID Mounted Type Size Free------------------------------------------------- ----------- ----------------------------------- ------- ------ ----------- -----------/vmfs/volumes/4de4cb24-4cff750f-85f5-0019b9f1ecf6 datastore1 4de4cb24-4cff750f-85f5-0019b9f1ecf6 true VMFS-5 140660178944 94577360896/vmfs/volumes/4c5fbff6-f4069088-af4f-0019b9f1ecf4 Storage2 4c5fbff6-f4069088-af4f-0019b9f1ecf4 true VMFS-3 146028888064 7968129024/vmfs/volumes/4c5fc023-ea0d4203-8517-0019b9f1ecf4 Storage4 4c5fc023-ea0d4203-8517-0019b9f1ecf4 true VMFS-3 146028888064 121057050624/vmfs/volumes/4e414917-a8d75514-6bae-0019b9f1ecf4 LUN01 4e414917-a8d75514-6bae-0019b9f1ecf4 true VMFS-5 146028888064 4266131456
- 要查看希望移除的数据存储所在的 LUN 的唯一标识符,请运行以下命令: # esxcfg-scsidevs -m 此命令将生成 VMFS 数据存储卷及其相关唯一标识符的列表。记下要卸载的数据存储的唯一标识符 ( NAA_ID ),以便稍后使用。 有关 esxcfg-scsidevs 命令的详细信息,请参见 使用 VMware ESXi/ESX 时识别磁盘 (2049662) 。
- 运行以下命令卸载数据存储: # esxcli storage filesystem unmount [-u UUID | -l label | -p path ] 例如,使用以下命令之一卸载 LUN01 数据存储: # esxcli storage filesystem unmount -l LUN01# esxcli storage filesystem unmount -u 4e414917-a8d75514-6bae-0019b9f1ecf4# esxcli storage filesystem unmount -p /vmfs/volumes/4e414917-a8d75514-6bae-0019b9f1ecf4 注意 :如果尝试卸载的 VMFS 文件系统具有活动 I/O 或尚未满足卸载 VMFS 数据存储的必备条件,则会在 VMkernel 日志中显示如下错误: WARNING:VC:637: unmounting opened volume ('4e414917-a8d75514-6bae-0019b9f1ecf4' 'LUN01') is not allowed.VC:802: Unmount VMFS volume f530 28 2 4e414917a8d7551419006bae f4ecf19b 4 1 0 0 0 0 0 :Busy
- 要验证数据存储是否已卸载,请运行以下命令: # esxcli storage filesystem list 您会看到类似以下内容的输出: Mount Point Volume Name UUID Mounted Type Size Free------------------------------------------------- ----------- ----------------------------------- ------- ------ ----------- -----------/vmfs/volumes/4de4cb24-4cff750f-85f5-0019b9f1ecf6 datastore1 4de4cb24-4cff750f-85f5-0019b9f1ecf6 true VMFS-5 140660178944 94577360896/vmfs/volumes/4c5fbff6-f4069088-af4f-0019b9f1ecf4 Storage2 4c5fbff6-f4069088-af4f-0019b9f1ecf4 true VMFS-3 146028888064 7968129024/vmfs/volumes/4c5fc023-ea0d4203-8517-0019b9f1ecf4 Storage4 4c5fc023-ea0d4203-8517-0019b9f1ecf4 true VMFS-3 146028888064 121057050624LUN01 4e414917-a8d75514-6bae-0019b9f1ecf4 false VMFS-unknown version 0 0 Mounted 字段设置为 false, Type 字段设置为 VMFS-unknown version,并且 Mount Point 不存在。 注意 :VMFS 数据存储的已卸载状态不会受重新引导的影响。这是默认行为。如果需要临时卸载数据存储,可在 unmount 命令上附加 --no-persist 标记。
- 要分离设备/LUN,请运行以下命令: # esxcli storage core device set --state=off -d NAA_ID
- 要验证设备是否处于脱机状态,请运行以下命令: # esxcli storage core device list -d NAA_ID 您会看到类似于以下内容的输出,其中会显示磁盘的 Status 是否为 off: naa.60a98000572d54724a34655733506751Display Name:NETAPP Fibre Channel Disk (naa.60a98000572d54724a34655733506751)Has Settable Display Name:trueSize:1048593Device Type:Direct-AccessMultipath Plugin:NMPDevfs Path:/vmfs/devices/disks/naa.60a98000572d54724a34655733506751Vendor:NETAPPModel:LUNRevision:7330SCSI Level:4Is Pseudo:falseStatus:offIs RDM Capable:trueIs Local:falseIs Removable:falseIs SSD:falseIs Offline:falseIs Perennially Reserved:falseThin Provisioning Status:yesAttached Filters:VAAI Status:unknownOther UIDs:vml.020000000060a98000572d54724a346557335067514c554e202020 在设备上运行 partedUtil getptbl 命令可查看设备是否未找到。 例如: # partedUtil getptbl /vmfs/devices/disks/naa.60a98000572d54724a34655733506751 Error:Could not stat device /vmfs/devices/disks/naa.60a98000572d54724a34655733506751 - No such file or directory.Unable to get device /vmfs/devices/disks/naa.60a98000572d54724a34655733506751
- 如果要永久取消使用该设备,现在便可从 SAN 中取消提供 LUN。有关详细信息,请联系您的存储团队、存储管理员或存储阵列供应商。
- 要重新扫描 ESXi 主机上的所有设备,请运行以下命令: # esxcli storage core adapter rescan [ -A vmhba# | --all ] 设备将自动从存储适配器中移除。 注意 :必须对可识别已移除的 LUN 的所有主机运行重新扫描。该设备一旦分离,便会处于已卸载状态,即使重新提供该设备也是如此(即,已分离状态是一种持久状态)。要使设备恢复联机,必须附加该设备。要通过命令行来执行该操作,请运行以下命令: # esxcli storage core device set --state=on -d NAA_ID
- 如果要从 ESXi 主机中永久取消使用该设备(即,该 LUN 已破坏或将破坏),请运行以下命令,从主机配置中移除 NAA 条目:要列出永久分离的设备,请运行以下命令: # esxcli storage core device detached list 您会看到类似以下内容的输出: Device UID State---------------------------- -----naa.50060160c46036df50060160c46036df offnaa.6006016094602800c8e3e1c5d3c8e011 off要从系统中永久移除设备配置信息,请执行以下操作: # esxcli storage core device detached remove -d NAA_ID 例如: # esxcli storage core device detached remove -d naa.50060160c46036df50060160c46036df此时,对该设备配置的引用将从 ESXi 主机的配置中永久移除。 注意 :如果分离但仍提供该设备(跳过步骤 7),以上命令将无法从系统中永久移除该设备,且该设备会自动重新附加。您必须完成步骤 7,才能永久移除该设备。
使用 PowerCLI 和 vSphere SDK for Perl 自动分离数据存储
可以使用 PowerCLI 脚本自动从多个主机中分离数据存储。 使用 PowerCLI 要使用 PowerCLI 分离存储设备,请执行以下操作:
- 查看 VMware Contributed Sample Code disclaimer。
- 从 Automating Datastore/Storage Device Detachment in vSphere 5 *载下** PowerCLI 脚本。 注意 :此 PowerCLI 脚本按原样提供,并由相应社区提供支持。如果遇到与 PowerCLI 脚本有关的问题,请从 VMware Communities 论坛获得帮助。
- 使用以下命令导入脚本: Import-Module path_to_script
- 确保已卸载目标数据存储。有关详细信息,请参见 vSphere 5.0 Storage Guide 中的“卸载 VMFS 或 NFS 数据存储”部分。
- 运行以下命令列出所有数据存储及其附加的主机: Get-Datastore | Get-DatastoreMountInfo | Sort Datastore, VMHost | FT –AutoSize 您会看到类似以下内容的输出: Datastore VMHost Lun Mounted State--------- ------ --- ------- -----IX2ISCSI01 esx01.vmw.local naa.5000144f52145699False AttachedIX2ISCSI01 esx02.vmw.local naa.5000144f52145699False AttachedIX2ISCSI01 esx03.vmw.local naa.5000144f52145699False AttachedLocalDatastore esx01.vmw.local mpx.vmhba1:C0:T0:L0 True AttachedLocalDatastore esx02.vmw.local mpx.vmhba1:C0:T0:L0 True Attachedesx04-Internal-150GB esx04.vmw.local t10.ATA_____GB0160EAPRR_____________________________WCAT25563003________ True Attachedesx04-Internal-500GB esx04.vmw.local t10.ATA_____WDC_WD5000AAKS2D00V1A0________________________WD2DWMAWF0069467 True Attachedesx03-Internal-150GB esx03.vmw.local t10.ATA_____GB0160EAPRR_____________________________WCAT25704089________ True Attachedesx03-Internal-500GB esx03.vmw.local t10.ATA_____WDC_WD5000AAKS2D00YGA0________________________WD2DWCAS85034601 True Attached
- 选择相应的数据存储,记下 Datastore 列下方的名称,然后确认所有主机的 Mounted 列的值均为 False。
- 运行以下命令从所有主机中分离设备: Get-Datastore datastore_name | Detach-Datastore 其中 datastore_name 是在步骤 3 中记下的数据存储名称。 您会看到类似以下内容的输出: Detaching LUN naa.5000144f52145699 from host esx01.vmw.local...Detaching LUN naa.5000144f52145699 from host esx02.vmw.local...Detaching LUN naa.5000144f52145699 from host esx03.vmw.local...
注意 : Powercli 命令 Get-Datastore datastore_name | Detach-Datastore 只能分离由多个 extent 组成的数据存储的 head extent (first extent)。该步骤不适用于有 multiextent 的数据存储。 使用 vSphere SDK for Perl 要使用 Perl 分离存储设备,请执行以下操作:
- 查看 VMware Contributed Sample Code disclaimer。
- 部署社区可支持的 Perl 脚本,该脚本位于 VMware vSphere 博客 Automating Datastore/Storage Device Detachment in vSphere 5 中。 注意 :继续操作前,请确保已卸载目标数据存储。有关详细信息,请参见 vSphere 5.0 Storage Guide 中的“卸载 VMFS 或 NFS 数据存储”部分。
- 运行以下命令列出所有数据存储及其附加的主机: ./lunManagement.pl --server vcenter_ip --username user --operation list 其中 vcenter_ip 是用于管理主机的 vCenter Server 的 IP 地址, user 是具有管理权限的用户。
- 系统将提示您输入步骤 3 中使用的用户帐户的密码。如果输入的密码正确,则该脚本将生成如下输出: Datastore:esx01-local-storage-1 LUN:mpx.vmhba1:C0:T0:L0esx01.vmw.local MOUNTED ATTACHEDDatastore:esx02-local-storage-1 LUN:mpx.vmhba1:C0:T0:L0esx02.vmw.local MOUNTED ATTACHEDDatastore:iSCSI-1 LUN:naa.600144f0a33bc20000004e9772510001esx01.vmw.local UNMOUNTED ATTACHEDesx02.vmw.local UNMOUNTED ATTACHEDDatastore:iSCSI-2 LUN:naa.600144f0a33bc20000004e9772ee0002esx01.vmw.local MOUNTED ATTACHEDesx02.vmw.local MOUNTED ATTACHEDDatastore:iSCSI-3 LUN:naa.600144f0a33bc20000004e9773560003esx01.vmw.local MOUNTED ATTACHEDesx02.vmw.local MOUNTED ATTACHEDDatastore:iSCSI-4 LUN:naa.600144f0a33bc20000004e9773560004esx01.vmw.local MOUNTED ATTACHEDesx02.vmw.local MOUNTED ATTACHEDDatastore:iSCSI-5 LUN:naa.600144f0a33bc20000004e9773570005esx01.vmw.local MOUNTED ATTACHEDesx02.vmw.local MOUNTED ATTACHED
- 检查相应数据存储名称和 NAA 值下方的 UNMOUNTED 关键字,确认已卸载要分离的数据存储。
- 运行以下命令从多个主机中分离设备: ./lunManagement.pl --server vcenter_ip --username user --operation detach --datastore datastore 其中 vcenter_ip 为 vCenter Server 的 IP 地址, user 为具有管理权限的用户, datastore 为步骤 4 中确定的数据存储名称。
- 系统将提示您输入密码,并确认是否要执行该操作。输入正确的密码并确认警告信息后,该工具将生成如下输出: Detaching LUN "0200000000600144f0a33bc20000004e9772510001434f4d535441" from Host "esx01.vmw.local" ...Successfully detached LUN!Detaching LUN "0200000000600144f0a33bc20000004e9772510001434f4d535441" from Host "esx02.vmw.local" ...Successfully detached LUN!
注意 :分离 LUN 后,便可在存储中取消提供该 LUN。但是,如果在存储上取消提供 LUN 之前,运行了在 ESXi 主机中永久停用 LUN 的 esxcli storage core device detached remove -d NAA_ID 命令,LUN 会重新附加到主机,并且还必须再进行分离。