在 ESXi/ESX 4.x 中移除 LUN 的过程比较复杂。而 ESXi 5.0 及更高版本提供了一些改进功能,可以简化该过程,使管理员可以更方便地移除 LUN。
卸载 LUN 核对清单
卸载 LUN 之前,请确保以下事项:
- 如果正在使用该 LUN 作为 VMFS 数据存储,则在该 VMFS 数据存储上存储的所有对象(如虚拟机、快照和模板)都已取消注册,或者移动到另一个数据存储。
注意:还必须将 VMFS 数据存储上的所有 CD/DVD 映像从虚拟机中取消注册。
- 该数据存储未用于 vSphere HA 检测信号。
- 该数据存储不属于数据存储群集。
有关数据存储群集的详细信息,请参见:
- 该数据存储不受存储 DRS 管理。。
有关 Storage DRS 的详细信息,请参见
注意:如果正在 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 3
Storage2 4c5fbff6-f4069088-af4f-0019b9f1ecf4 0 naa.6001c230d8abfe000ff76c2e7384fc9a 1
Storage4 4c5fc023-ea0d4203-8517-0019b9f1ecf4 0 naa.6001c230d8abfe000ff76c51486715db 1
LUN01 4e414917-a8d75514-6bae-0019b9f1ecf4 0 naa.60a98000572d54724a34655733506751 1
记下该数据存储的 NAA ID,以便稍后在该步骤中使用此信息。
注意:您也可以运行 esxcli storage filesystem list 命令,该命令可列出 ESXi 主机识别出的所有文件系统。
使用 vSphere Client 卸载 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 off
naa.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 121057050624
LUN01 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.60a98000572d54724a34655733506751
Display Name:NETAPP Fibre Channel Disk (naa.60a98000572d54724a34655733506751)
Has Settable Display Name:true
Size:1048593
Device Type:Direct-Access
Multipath Plugin:NMP
Devfs Path:/vmfs/devices/disks/naa.60a98000572d54724a34655733506751
Vendor:NETAPP
Model:LUN
Revision:7330
SCSI Level:4
Is Pseudo:false
Status:off
Is RDM Capable:true
Is Local:false
Is Removable:false
Is SSD:false
Is Offline:false
Is Perennially Reserved:false
Thin Provisioning Status:yes
Attached Filters:
VAAI Status:unknown
Other 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 off
naa.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 Attached
IX2ISCSI01 esx02.vmw.local naa.5000144f52145699False Attached
IX2ISCSI01 esx03.vmw.local naa.5000144f52145699False Attached
LocalDatastore esx01.vmw.local mpx.vmhba1:C0:T0:L0 True Attached
LocalDatastore esx02.vmw.local mpx.vmhba1:C0:T0:L0 True Attached
esx04-Internal-150GB esx04.vmw.local t10.ATA_____GB0160EAPRR_____________________________WCAT25563003________ True Attached
esx04-Internal-500GB esx04.vmw.local t10.ATA_____WDC_WD5000AAKS2D00V1A0________________________WD2DWMAWF0069467 True Attached
esx03-Internal-150GB esx03.vmw.local t10.ATA_____GB0160EAPRR_____________________________WCAT25704089________ True Attached
esx03-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:L0
esx01.vmw.local MOUNTED ATTACHED
Datastore:esx02-local-storage-1 LUN:mpx.vmhba1:C0:T0:L0
esx02.vmw.local MOUNTED ATTACHED
Datastore:iSCSI-1 LUN:naa.600144f0a33bc20000004e9772510001
esx01.vmw.local UNMOUNTED ATTACHED
esx02.vmw.local UNMOUNTED ATTACHED
Datastore:iSCSI-2 LUN:naa.600144f0a33bc20000004e9772ee0002
esx01.vmw.local MOUNTED ATTACHED
esx02.vmw.local MOUNTED ATTACHED
Datastore:iSCSI-3 LUN:naa.600144f0a33bc20000004e9773560003
esx01.vmw.local MOUNTED ATTACHED
esx02.vmw.local MOUNTED ATTACHED
Datastore:iSCSI-4 LUN:naa.600144f0a33bc20000004e9773560004
esx01.vmw.local MOUNTED ATTACHED
esx02.vmw.local MOUNTED ATTACHED
Datastore:iSCSI-5 LUN:naa.600144f0a33bc20000004e9773570005
esx01.vmw.local MOUNTED ATTACHED
esx02.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 会重新附加到主机,并且还必须再进行分离。