如何从ESXi 主机卸载 LUN 或分离数据存储设备
search cancel

如何从ESXi 主机卸载 LUN 或分离数据存储设备

book

Article ID: 301367

calendar_today

Updated On:

Products

VMware vSphere ESXi

Issue/Introduction

本文提供了从 ESXi 5.x/6.x 主机卸载 LUN 的步骤,包括卸载文件系统和分离设备。必须为每个 ESXi 主机执行这些步骤。

注意:在文档中记录的方法使用 vSphere Client,并仅限于按主机分离设备。要将某个存储设备同时从多个主机分离,请参见本文“解决方法”部分中的“使用 PowerCLI 和 vSphere SDK for Perl 自动分离数据存储”。

有关在 ESXi/ESX 4.x 中卸载数据存储的信息,请参见 Removing a LUN containing a datastore from VMware ESXi 4x and ESX 4.x (1029786)


Symptoms:
免责声明:本文为 How to unmount a LUN or detach a datastore device from ESXi hosts 的翻译版本。尽管我们会不断努力为本文提供最佳翻译版本,但本地化的内容可能会过时。有关最新内容,请参见英文版本。

Environment

VMware vSphere ESXi 5.0
VMware vSphere ESXi 6.0
VMware vSphere ESXi 5.5
VMware vSphere ESXi 5.1
VMware vSphere ESXi 6.5

Resolution

在 ESXi/ESX 4.x 中移除 LUN 的过程比较复杂。而 ESXi 5.0 及更高版本提供了一些改进功能,可以简化该过程,使管理员可以更方便地移除 LUN。

卸载 LUN 核对清单

卸载 LUN 之前,请确保以下事项:
    • 如果正在使用该 LUN 作为 VMFS 数据存储,则在该 VMFS 数据存储上存储的所有对象(如虚拟机、快照和模板)都已取消注册,或者移动到另一个数据存储。

      注意:还必须将 VMFS 数据存储上的所有 CD/DVD 映像从虚拟机中取消注册。

       
    • 该数据存储未用于 vSphere HA 检测信号。
    • 该数据存储不属于数据存储群集。

      有关数据存储群集的详细信息,请参见:
    • 该数据存储没有被配置为检测核心转储分区。
       

      有关详细信息,请参见 在 ESXi 5.x/6.0 主机上配置诊断核心转储分区 (2093656)

    • 已为该数据存储禁用 Storage I/O Control。

      有关详细信息,请参见 vSphere 5.1 Resource Management GuidevSphere 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-Credential
      Connect-VIServer $vcServer | Out-Null
      #Connect to ESX hosts in cluster
      foreach ($esx in Get-Cluster $cluster | Get-VMHost) {
      Connect-VIServer $esx -Credential $esxCred | Out-Null
      Get-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 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

    要使用 vSphere Client 分离存储设备,请参见 vSphere 5.0StorageGuide 中的“分离存储设备”部分。

    警告:必须先使用文档中记录的方法成功卸载数据存储,然后才能完成下面所述的步骤。有关详细信息,请参见 vSphere 5.0 Storage Guide 中的“卸载 VMFS 或 NFS 数据存储”部分。

    要使用 vSphere Client 从 ESXi 5.0 主机卸载 LUN,请执行以下操作:
    1. 如果此 LUN 为 RDM,请跳至步骤 2。否则,在 ESXi 主机的“配置”选项卡中,单击存储。右键单击要移除的数据存储,然后单击卸载

      此时将显示“确认卸载数据存储”窗口。符合必备条件后,请单击确定

      注意:要在 vSphere Client 中从多个主机中卸载某一个数据存储,请单击主机和群集 > 数据存储和数据存储群集视图 (Ctrl+Shift+D)。执行卸载任务,然后选择不应再访问要卸载的数据存储的相应主机。

       
    2. 单击设备视图(位于配置 > 存储):


       
    3. 右键单击此 LUN 的 NAA ID(如上所述),然后单击分离。此时将显示“确认卸载设备”窗口。符合必备条件后,请单击确定。此 LUN 将在“设备”的“操作状态”下显示为“已卸载”。

      注意:必须按主机执行“分离”功能,该功能不会传播到 vCenter Server 中的其他主机。如果已将 LUN 提供给 SAN 上的启动器组或存储组,则必须在该 SAN 中对该启动器组中的每个主机执行“分离”功能,然后再从该组中取消该 LUN 的映射。如果不按此步骤进行操作,则会使该存储组中没有针对要取消映射的 LUN 执行“分离”操作的主机处于全部路径异常 (APD) 状态。

       
    4. 确认 LUN 是否成功分离。然后,该 LUN 便可安全地从 SAN 中取消提供。有关详细信息,请联系存储阵列供应商。
    5. 对可识别该 LUN 的所有 ESXi 主机执行重新扫描。该设备将自动从存储适配器中移除。

    该设备一旦分离,便会处于已卸载状态,即使重新提供该设备也是如此(即,已分离状态是一种持久状态)。要使设备恢复联机状态,必须附加该设备。

    如果要从 ESXi 主机中永久停用该设备,请从主机配置中手动移除 NAA 条目:

    1. 要列出永久分离的设备,请运行以下命令:

      # esxcli storage core device detached list

      您会看到类似以下内容的输出:

      Device UID State
      ------------------------------------ -----
      naa.50060160c46036df50060160c46036df off
      naa.6006016094602800c8e3e1c5d3c8e011 off

       
    2. 要从系统中永久移除设备配置信息,请运行以下命令:

      # 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,请执行以下操作:
    1. 如果此 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

       
    2. 要查看希望移除的数据存储所在的 LUN 的唯一标识符,请运行以下命令:

      # esxcfg-scsidevs -m

      此命令将生成 VMFS 数据存储卷及其相关唯一标识符的列表。记下要卸载的数据存储的唯一标识符 (NAA_ID),以便稍后使用。

      有关 esxcfg-scsidevs 命令的详细信息,请参见 使用 VMware ESXi/ESX 时识别磁盘 (2049662)

       
    3. 运行以下命令卸载数据存储:

      # 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

       
    4. 要验证数据存储是否已卸载,请运行以下命令:

      # 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 字段设置为 falseType 字段设置为 VMFS-unknown version,并且 Mount Point 不存在。

      注意:VMFS 数据存储的已卸载状态不会受重新引导的影响。这是默认行为。如果需要临时卸载数据存储,可在 unmount 命令上附加 --no-persist 标记。

       
    5. 要分离设备/LUN,请运行以下命令:

      # esxcli storage core device set --state=off -d NAA_ID

       
    6. 要验证设备是否处于脱机状态,请运行以下命令:

      # 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

       
    7. 如果要永久取消使用该设备,现在便可从 SAN 中取消提供 LUN。有关详细信息,请联系您的存储团队、存储管理员或存储阵列供应商。
    8. 要重新扫描 ESXi 主机上的所有设备,请运行以下命令:

      # esxcli storage core adapter rescan [ -A vmhba# | --all ]

      设备将自动从存储适配器中移除。

      注意
      • 必须对可识别已移除的 LUN 的所有主机运行重新扫描。
      • 该设备一旦分离,便会处于已卸载状态,即使重新提供该设备也是如此(即,已分离状态是一种持久状态)。要使设备恢复联机,必须附加该设备。要通过命令行来执行该操作,请运行以下命令:

        # esxcli storage core device set --state=on -d NAA_ID
    9. 如果要从 ESXi 主机中永久取消使用该设备(即,该 LUN 已破坏或将破坏),请运行以下命令,从主机配置中移除 NAA 条目:
       
      1. 要列出永久分离的设备,请运行以下命令:

        # esxcli storage core device detached list

        您会看到类似以下内容的输出:

        Device UID State
        ---------------------------- -----
        naa.50060160c46036df50060160c46036df off
        naa.6006016094602800c8e3e1c5d3c8e011 off

         
      2. 要从系统中永久移除设备配置信息,请执行以下操作:

        # 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 分离存储设备,请执行以下操作:
    1. 查看 VMware Contributed Sample Code disclaimer
    2. Automating Datastore/Storage Device Detachment in vSphere 5 下载 PowerCLI 脚本。

      注意:此 PowerCLI 脚本按原样提供,并由相应社区提供支持。如果遇到与 PowerCLI 脚本有关的问题,请从 VMware Communities 论坛获得帮助。

       
    3. 使用以下命令导入脚本:

      Import-Module path_to_script

       
    4. 确保已卸载目标数据存储。有关详细信息,请参见 vSphere 5.0 Storage Guide 中的“卸载 VMFS 或 NFS 数据存储”部分。
    5. 运行以下命令列出所有数据存储及其附加的主机:

      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

       
    6. 选择相应的数据存储,记下 Datastore 列下方的名称,然后确认所有主机的 Mounted 列的值均为 False
    7. 运行以下命令从所有主机中分离设备:

      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 分离存储设备,请执行以下操作:

    1. 查看 VMware Contributed Sample Code disclaimer
    2. 部署社区可支持的 Perl 脚本,该脚本位于 VMware vSphere 博客 Automating Datastore/Storage Device Detachment in vSphere 5 中。

      注意:继续操作前,请确保已卸载目标数据存储。有关详细信息,请参见 vSphere 5.0 Storage Guide 中的“卸载 VMFS 或 NFS 数据存储”部分。

       
    3. 运行以下命令列出所有数据存储及其附加的主机:

      ./lunManagement.pl --server vcenter_ip --username user --operation list

      其中 vcenter_ip 是用于管理主机的 vCenter Server 的 IP 地址, user 是具有管理权限的用户。

       
    4. 系统将提示您输入步骤 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

       
    5. 检查相应数据存储名称和 NAA 值下方的 UNMOUNTED 关键字,确认已卸载要分离的数据存储。
    6. 运行以下命令从多个主机中分离设备:

      ./lunManagement.pl --server vcenter_ip --username user --operation detach --datastore datastore

      其中 vcenter_ip 为 vCenter Server 的 IP 地址, user 为具有管理权限的用户, datastore 为步骤 4 中确定的数据存储名称。

       
    7. 系统将提示您输入密码,并确认是否要执行该操作。输入正确的密码并确认警告信息后,该工具将生成如下输出:

      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 会重新附加到主机,并且还必须再进行分离。



    Additional Information

    要删除数据存储,而不是取消提供它,请参见以下文档:

     
    如果尝试移除的 LUN 标记为永久预留,以免导致主机引导延迟。永久预留标记会阻止 LUN 顺利卸载。
     
    要移除永久预留标记,请运行以下命令:
     
    # esxcli storage core device setconfig -d $device --perennially-reserved=false
     
    然后运行以下命令,重新尝试移除设备:
     
    # esxcli storage core device detached remove -d $device
     
    注意:将标记设置为 false(即使不需要)不会产生不良影响。
    How to unmount a LUN or detach a datastore device from ESXi hosts
    为 ESXi 4.x/5.x/6.x 创建持久暂存位置
    在 ESXi 5.x/6.0 主机上配置诊断核心转储分区