

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 佈建適用於 Windows 的 iSCSI
<a name="mount-iscsi-windows"></a>

FSx for ONTAP 支援 iSCSI 通訊協定。您需要在 Windows 用戶端和 SVM 和磁碟區上佈建 iSCSI，才能使用 iSCSI 通訊協定在用戶端和檔案系統之間傳輸資料。iSCSI 通訊協定適用於所有具有 6 個或更少[高可用性 (HA) 對](HA-pairs.md)的檔案系統。

這些程序中的範例示範如何在用戶端和 FSx for ONTAP 檔案系統上佈建 iSCSI 通訊協定，並使用下列設定：
+ 掛載至 Windows 主機的 iSCSI LUN 已建立。如需詳細資訊，請參閱[建立 iSCSI LUN](create-iscsi-lun.md)。
+ 掛載 iSCSI LUN 的 Microsoft Windows 主機是執行 Microsoft Windows Server 2019 Amazon Machine Image (AMI) 的 Amazon EC2 執行個體。它具有設定成允許傳入和傳出流量的 VPC 安全群組，如 中所述[使用 Amazon VPC 的檔案系統存取控制](limit-access-security-groups.md)。

  您可以在設定中使用不同的 Microsoft Windows AMI。
+ 用戶端和檔案系統位於相同的 VPC 和 中 AWS 帳戶。如果用戶端位於另一個 VPC 中，您可以使用 VPC 對等互連或 AWS Transit Gateway 授予其他 VPCs存取 iSCSI 端點的權限。如需詳細資訊，請參閱[從部署 VPC 外部存取資料](supported-fsx-clients.md#access-from-outside-deployment-vpc)。

  我們建議 EC2 執行個體與您檔案系統偏好的子網路位於相同的可用區域，如下圖所示。

![\[本圖顯示具有 iSCSI LUN 的 Amazon FSx for NetApp ONTAP 檔案系統，以及與檔案系統偏好子網路位於相同可用區域的 Amazon EC2 執行個體。\]](http://docs.aws.amazon.com/zh_tw/fsx/latest/ONTAPGuide/images/fsx-ontap-iscsi-mnt-client.png)


**Topics**
+ [在 Windows 用戶端上設定 iSCSI](#configure-iscsi-win-client)
+ [在 FSx for ONTAP 檔案系統上設定 iSCSI](#configure-iscsi-on-ontap-win)
+ [在 Windows 用戶端上掛載 iSCSI LUN](#configure-iscsi-on-fsx)
+ [驗證您的 iSCSI 組態](#validate-iscsi-windows)

## 在 Windows 用戶端上設定 iSCSI
<a name="configure-iscsi-win-client"></a>

1. 使用 Windows 遠端桌面連線到您要掛載 iSCSI LUN 的 Windows 用戶端。如需詳細資訊，請參閱《*Amazon Elastic Compute Cloud 使用者指南*》中的[使用 RDP 連線至 Windows 執行個體](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/connecting_to_windows_instance.html#connect-rdp)。

1. 以管理員身分開啟 Windows PowerShell。使用下列命令在 Windows 執行個體上啟用 iSCSI，並將 iSCSI 服務設定為自動啟動。

   ```
   PS C:\> Start-Service MSiSCSI 
   PS C:\> Set-Service -Name msiscsi -StartupType Automatic
   ```

1. 擷取 Windows 執行個體的啟動器名稱。您將使用此值，在 FSx for ONTAP 檔案系統上使用 NetApp ONTAP CLI 設定 iSCSI。

   ```
   PS C:\> (Get-InitiatorPort).NodeAddress
   ```

   系統會以啟動器連接埠回應：

   ```
   iqn.1991-05.com.microsoft:ec2amaz-abc123d 
   ```

1. 若要讓您的用戶端在檔案伺服器之間自動容錯移轉，您需要在 Windows 執行個體上安裝 `Multipath-IO`(MPIO)。使用下列命令：

   ```
   PS C:\> Install-WindowsFeature Multipath-IO
   ```

1. 安裝完成後重新啟動您的 Windows `Multipath-IO` 執行個體。保持 Windows 執行個體開啟，以執行在下列區段中掛載 iSCSI LUN 的步驟。

## 在 FSx for ONTAP 檔案系統上設定 iSCSI
<a name="configure-iscsi-on-ontap-win"></a>

1. 若要存取 ONTAP CLI，請執行下列命令，在 Amazon FSx for NetApp ONTAP 檔案系統或 SVM 的管理連接埠上建立 SSH 工作階段。`management_endpoint_ip` 將 取代為檔案系統管理連接埠的 IP 地址。

   ```
   [~]$ ssh fsxadmin@management_endpoint_ip
   ```

   如需詳細資訊，請參閱[使用 CLI ONTAP 管理檔案系統](managing-resources-ontap-apps.md#fsxadmin-ontap-cli)。

1. 使用 ONTAP CLI [https://docs.netapp.com/us-en/ontap-cli-9141/lun-igroup-create.html](https://docs.netapp.com/us-en/ontap-cli-9141/lun-igroup-create.html)建立啟動器群組或 `igroup`。啟動器群組會映射至 iSCSI LUNs並控制哪些啟動器 （用戶端） 可存取 LUNs。`host_initiator_name` 使用您在先前程序中擷取的 Windows 主機中的啟動器名稱取代 。

   ```
   ::> lun igroup create -vserver svm_name -igroup igroup_name -initiator host_initiator_name -protocol iscsi -ostype windows
   ```

   Io 讓與此對應的 LUNs `igroup`可供多個主機使用，您可以使用 CLI [https://docs.netapp.com/us-en/ontap-cli-9141/lun-create.html#parameters](https://docs.netapp.com/us-en/ontap-cli-9141/lun-create.html#parameters) ONTAP 命令指定多個逗號分隔的啟動器名稱。

1. 確認`igroup`已成功使用 [lun igroup show](https://docs.netapp.com/us-en/ontap-cli-9141/lun-igroup-show.html) CLI ONTAP 命令建立 ：

   ```
   ::> lun igroup show
   ```

   系統會以下列輸出回應：

   ```
   Vserver    Igroup        Protocol OS Type  Initiators 
   ---------  ------------  -------- -------- ------------------------------------ 
   svm_name   igroup_name   iscsi    windows  iqn.1994-05.com.windows:abcdef12345
   ```

   `igroup` 建立 後，您就可以建立 LUNs並將其對應至 `igroup`。

1. 此步驟假設您已建立 iSCSI LUN。如果沒有，請參閱 [建立 iSCSI LUN](create-iscsi-lun.md) 以取得執行此作業step-by-step說明。

   建立從 LUN 到新 的 LUN 映射`igroup`。

   ```
   ::> lun mapping create -vserver svm_name -path /vol/vol_name/lun_name -igroup igroup_name -lun-id lun_id
   ```

1. 確認 LUN 已建立、上線，並使用下列命令映射：

   ```
   ::> lun show -path /vol/vol_name/lun_name 
   Vserver     Path                            State   Mapped   Type     Size 
   ---------   ------------------------------- ------- -------- -------- -------- 
   svm_name    /vol/vol_name/lun_name          online  mapped   windows  10GB
   ```

   您現在可以在 Windows 執行個體上新增 iSCSI 目標。

1. 使用下列命令擷取 SVM 的 `iscsi_1`和 `iscsi_2` 介面的 IP 地址：

   ```
   ::> network interface show -vserver svm_name
   ```

   ```
               Logical    Status     Network            Current       Current Is 
   Vserver     Interface  Admin/Oper Address/Mask       Node          Port    Home 
   ----------- ---------- ---------- ------------------ ------------- ------- ---- 
   svm_name 
               iscsi_1    up/up      172.31.0.143/20    FSxId0123456789abcdef8-01 
                                                                      e0e     true 
               iscsi_2    up/up      172.31.21.81/20    FSxId0123456789abcdef8-02 
                                                                      e0e     true 
               nfs_smb_management_1 
                          up/up      198.19.250.177/20  FSxId0123456789abcdef8-01 
                                                                      e0e     true 
   3 entries were displayed.
   ```

   在此範例中， 的 IP 地址`iscsi_1`為 `172.31.0.143`，而 `iscsi_2`為 `172.31.21.81`。

## 在 Windows 用戶端上掛載 iSCSI LUN
<a name="configure-iscsi-on-fsx"></a>

1. 在 Windows 執行個體上，以管理員身分開啟 PowerShell 終端機。

1. 您將建立執行下列動作的`.ps1`指令碼：
   + 連接到每個檔案系統的 iSCSI 介面。
   + 新增和設定 iSCSI 的 MPIO。
   + 為每個 iSCSI 連線建立 8 個工作階段，可讓用戶端驅動高達 40 Gbps (5，000 MBps) 的彙總輸送量至 iSCSI LUN。擁有 8 個工作階段可確保單一用戶端可為 ONTAP 輸送量容量的最高層級 FSx 驅動完整的 4，000 MBps 輸送量容量。您可以選擇透過修改 `RecommendedConnectionCount`變數，將工作階段數量變更為更高或更低的工作階段數量 （每個工作階段提供高達 625 MBps 的輸送量）。如需詳細資訊，請參閱《[Amazon Elastic Compute Cloud Windows 執行個體使用者指南》中的 Amazon EC2 執行個體網路頻寬](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-instance-network-bandwidth.html)。 **

   將下列命令集複製到 檔案以建立`.psl`指令碼。
   + 將 `iscsi_1`和 `iscsi_2` 取代為您在上一個步驟中擷取的 IP 地址。
   + `ec2_ip` 將 取代為 Windows 執行個體的 IP 地址。

   ```
   Write-Host "Starting iSCSI connection setup..."
        $TargetPortalAddresses = @("iscsi_1","iscsi_2"); $LocaliSCSIAddress = "ec2_ip"
        $RecommendedConnectionCount = 8
   
        Foreach ($TargetPortalAddress in $TargetPortalAddresses) {
            New-IscsiTargetPortal -TargetPortalAddress $TargetPortalAddress -TargetPortalPortNumber 3260 -InitiatorPortalAddress $LocaliSCSIAddress
        }
   
        New-MSDSMSupportedHW -VendorId MSFT2005 -ProductId iSCSIBusType_0x9
   
        $currentMPIOSettings = Get-MPIOSetting
        if ($currentMPIOSettings.PathVerificationState -ne 'Enabled') {
            Write-Host "Setting MPIO path verification state to Enabled"; Set-MPIOSetting -NewPathVerificationState Enabled
        } else { Write-Host "MPIO path verification state already Enabled" }
   
        $portalConnectionCounts = @{}
        foreach ($TargetPortalAddress in $TargetPortalAddresses) { $portalConnectionCounts[$TargetPortalAddress] = 0 }
   
        $sessions = Get-IscsiSession
        if ($sessions) {
            foreach ($session in $sessions) {
                if ($session.IsConnected) {
                    $targetPortal = (Get-IscsiTargetPortal -iSCSISession $session).TargetPortalAddress
                    if ($portalConnectionCounts.ContainsKey($targetPortal)) { $portalConnectionCounts[$targetPortal]++ }
                }
            }
        }
   
        foreach ($TargetPortalAddress in $TargetPortalAddresses) {
            $existingCount = $portalConnectionCounts[$TargetPortalAddress]; $remainingConnections = $RecommendedConnectionCount - $existingCount
            Write-Host "Portal $TargetPortalAddress has $existingCount existing connections, $remainingConnections remaining (max recommended: $RecommendedConnectionCount)"
            if ($remainingConnections -gt 0) {
                Write-Host "Creating $remainingConnections connections for portal $TargetPortalAddress"
                1..$remainingConnections | ForEach-Object {
                    Get-IscsiTarget | Connect-IscsiTarget -IsMultipathEnabled $true -TargetPortalAddress $TargetPortalAddress -InitiatorPortalAddress $LocaliSCSIAddress -IsPersistent $true
                }
            } else { Write-Host "Maximum connections (8) reached for portal $TargetPortalAddress" }
        }
   
        Set-MSDSMGlobalDefaultLoadBalancePolicy -Policy RR
   ```

1. 啟動 Windows 磁碟管理應用程式。開啟 Windows Run 對話方塊，然後輸入 `diskmgmt.msc` 並按下 **Enter**。磁碟管理應用程式隨即開啟。  
![\[隨即顯示 Windows 磁碟管理視窗。\]](http://docs.aws.amazon.com/zh_tw/fsx/latest/ONTAPGuide/images/DiskMgmt.png)

1. 尋找未配置的磁碟 這是 iSCSI LUN。在此範例中，磁碟 1 是 iSCSI 磁碟。已離線。  
![\[游標放置在磁碟 1 上時顯示的面板。\]](http://docs.aws.amazon.com/zh_tw/fsx/latest/ONTAPGuide/images/GoOnline.png)

   將游標放在**磁碟 1 **上並按一下滑鼠右鍵，然後選擇**線上**，讓磁碟區上線。
**注意**  
您可以修改儲存區域網路 (SAN) 政策，讓新的磁碟區自動上線。如需詳細資訊，請參閱 *Microsoft Windows Server 命令參考*中的 [SAN 政策](https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/san)。

1. 若要初始化磁碟，請在**磁碟 1** 上按一下滑鼠右鍵，然後選擇**初始化**。初始化對話方塊隨即出現。選擇**確定**初始化磁碟。

1. 像往常一樣格式化磁碟。格式化完成後，iSCSI 磁碟機會在 Windows 用戶端上顯示為可用的磁碟機。

## 驗證您的 iSCSI 組態
<a name="validate-iscsi-windows"></a>

我們已提供指令碼來檢查您的 iSCSI 設定是否已正確設定。指令碼會檢查工作階段計數、節點分佈和多路徑 I/O (MPIO) 狀態等參數。下列任務說明如何安裝和使用指令碼。<a name="validate-iscsi-windows-procedure"></a>

**驗證您的 iSCSI 組態**

1. 開啟 Windows PowerShell 視窗。

1. 使用下列命令下載指令碼。

   ```
   PS C:\> Invoke-WebRequest "https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/samples/CheckiSCSI.zip" -OutFile "CheckiSCSI.zip"
   ```

1. 使用下列命令展開 zip 檔案。

   ```
   PS C:\> Expand-Archive -Path ".\CheckiSCSI.zip" -DestinationPath "./"
   ```

1. 使用下列命令執行指令碼。

   ```
   PS C:\> ./CheckiSCSI.ps1
   ```

1. 檢閱輸出以了解組態的目前狀態。下列範例示範成功的 iSCSI 組態。

   ```
   PS C:\> ./CheckiSCSI.ps1
   
   This script checks the iSCSI configuration on the local instance.
   It will provide information about the number of connected sessions, connected file servers, and MPIO status.
                               
   MPIO is installed on this server.
   
   MPIO Load Balance Policy is set to Round Robin (RR).
   Initiator: 'iqn.1991-05.com.microsoft:ec2amaz-d2cebnb'
   to Target: 'iqn.1992-08.com.netapp:sn.13266b10e61411ee8bc0c76ad263d613:vs.3'
   has 16 total sessions (16 active, 0 non-active)
   spread across 2 node(s).
   MPIO: Yes
   ```