

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Linux 用 iSCSI のプロビジョニング
<a name="mount-iscsi-luns-linux"></a>

FSx for ONTAP は iSCSI プロトコルをサポートしています。iSCSI プロトコルを使用してクライアントとファイルシステム間でデータを転送するには、Linux クライアントとファイルシステムの両方で iSCSI をプロビジョニングする必要があります。iSCSI プロトコルは、[高可用性 (HA) ペア](HA-pairs.md)が 6 つ以下のすべてのファイルシステムで使用できます。

Amazon FSx for NetApp ONTAP で iSCSI を設定するプロセスには、主に 3 つのステップがあります。これらのステップについては、次の手順で説明します。

1. Linux ホストに iSCSI クライアントをインストールして設定する

1. ファイルシステムの SVM で iSCSI を設定します。
   + iSCSI イニシエータグループを作成します。
   + イニシエータグループを LUN にマッピングします。

1. Linux クライアントに iSCSI LUN をマウントします

## 開始する前に
<a name="iscsi-linux-byb"></a>

iSCSI 用にファイルシステムを設定するプロセスを開始する前に、次の項目を完了しておく必要があります。
+ FSx for ONTAP ファイルシステムを作成します。詳細については、「[ファイルシステムの作成](creating-file-systems.md)」を参照してください。
+ ファイルシステムに iSCSI LUN を作成します。詳細については、「[iSCSI LUN の作成](create-iscsi-lun.md)」を参照してください。
+ ファイルシステムと同じ VPC にある Amazon Linux 2 Amazon マシンイメージ (AMI) を実行する EC2 インスタンスを作成します。これは、iSCSI を設定し、ファイルデータにアクセスする Linux ホストです。

  これらの手順の範囲を超えて、ホストが別のVPCにある場合は、VPC ピアリングまたは AWS Transit Gateway を使用して、他の VPC にボリュームの iSCS Iエンドポイントへのアクセスを許可できます。詳細については、「[デプロイ用の VPC の外部からのデータへのアクセス](supported-fsx-clients.md#access-from-outside-deployment-vpc)」を参照してください。
+ [Amazon VPC によるファイルシステムアクセスコントロール](limit-access-security-groups.md) で説明されているように、インバウンドトラフィックとアウトバウンドトラフィックを許可するように Linux ホストの VPC セキュリティグループを設定します。
+ ONTAP CLI へのアクセスに使用する `fsxadmin` 権限を持つ ONTAP ユーザーの認証情報を取得します。詳細については、「[ONTAP ロールとユーザー](roles-and-users.md)」を参照してください。
+ iSCSI 向けに設定し、FSx for ONTAP ファイルシステムにアクセスするために使用する Linux ホストは、同じ VPC と AWS アカウント にあります。
+ 次の図に示すように、EC2インスタンスはファイルシステムの優先サブネットと同じアベイラビリティーゾーンにあることをお勧めします。  
![ファイルシステムの優先サブネットと同じアベイラビリティーゾーンに iSCSI LUN と Amazon EC2 インスタンスが配置された Amazon FSx for NetApp ONTAP ファイルシステムを示す画像。](http://docs.aws.amazon.com/ja_jp/fsx/latest/ONTAPGuide/images/fsx-ontap-iscsi-mnt-client.png)

EC2 インスタンスが Amazon Linux 2 とは異なる Linux AMI を実行している場合、これらの手順や例で使用されるユーティリティの一部がすでにインストールされている可能性があり、必要なパッケージをインストールするために異なるコマンドを使用する場合があります。パッケージのインストールを除いて、このセクションで使用されるコマンドは他の EC2 Linux AMI で有効です。

**Topics**
+ [開始する前に](#iscsi-linux-byb)
+ [Linux コストに iSCSI をインストールして設定する](#configure-iscsi-on-linux-client)
+ [FSx for ONTAP ファイルシステムで iSCSI を設定する](#configure-iscsi-on-fsx-ontap)
+ [Linux クライアントにiSCSI LUN をマウントします](#mount-iscsi-lun-on-linux-client)

## Linux コストに iSCSI をインストールして設定する
<a name="configure-iscsi-on-linux-client"></a>

**iSCSI クライアントをインストールするには**

1. Linux デバイスに `iscsi-initiator-utils` と `device-mapper-multipath` がインストールされていることを確認します。SSH クライアントを使用して Linux インスタンスに接続します。詳細については、「[SSH を使用した Linux インスタンスへの接続](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html)」を参照してください。

1. 次のコマンドを使用して、`multipath` と iSCSI クライアントをインストールします。ファイルサーバー間で自動的にフェイルオーバーしたい場合は、`multipath` をインストールする必要があります。

   ```
   ~$ sudo yum install -y device-mapper-multipath iscsi-initiator-utils
   ```

1. `multipath` の使用時にファイルサーバー間で自動的にフェイルオーバーする際のレスポンスを高速化するには、デフォルト値の `120` を使用する代わりに、`/etc/iscsi/iscsid.conf` ファイルの置換タイムアウト値を `5` の値に設定します。

   ```
   ~$ sudo sed -i 's/node.session.timeo.replacement_timeout = .*/node.session.timeo.replacement_timeout = 5/' /etc/iscsi/iscsid.conf; sudo cat /etc/iscsi/iscsid.conf | grep node.session.timeo.replacement_timeout
   ```

1. iSCSI サービスをスタートします。

   ```
   ~$ sudo service iscsid start
   ```

   お使いの Linux のバージョンによっては、代わりにこのコマンドを使用しなければならない場合があります。

   ```
   ~$ sudo systemctl start iscsid
   ```

1. 次のコマンドを使用して、サービスが実行されていることを確認します。

   ```
   ~$ sudo systemctl status iscsid.service
   ```

   システムは次の出力でレスポンスします。

   ```
   iscsid.service - Open-iSCSI 
       Loaded: loaded (/usr/lib/systemd/system/iscsid.service; disabled; vendor preset: disabled) 
       Active: active (running) since Fri 2021-09-02 00:00:00 UTC; 1min ago
       Docs: man:iscsid(8)
       man:iscsiadm(8)
       Process: 14658 ExecStart=/usr/sbin/iscsid (code=exited, status=0/SUCCESS)
       Main PID: 14660 (iscsid)
       CGroup: /system.slice/iscsid.service
       ├─14659 /usr/sbin/iscsid
       └─14660 /usr/sbin/iscsid
   ```

**Linux クライアントで iSCSI を設定するには**

1. クライアントがファイルサーバー間で自動的にフェイルオーバーできるようにするには、マルチパスを設定する必要があります。以下のコマンドを使用します。

   ```
   ~$ sudo mpathconf --enable --with_multipathd y
   ```

1. 次のコマンドを使用して、Linux ホストのイニシエーター名を確認します。イニシエーター名の場所は、iSCSI ユーティリティによって異なります。`iscsi-initiator-utils` を使用している場合、イニシエーター名はファイル `/etc/iscsi/initiatorname.iscsi` にあります。

   ```
   ~$ sudo cat /etc/iscsi/initiatorname.iscsi
   ```

   システムはイニシエーター名でレスポンスします。

   ```
   InitiatorName=iqn.1994-05.com.redhat:abcdef12345
   ```

## FSx for ONTAP ファイルシステムで iSCSI を設定する
<a name="configure-iscsi-on-fsx-ontap"></a>

1. 次のコマンドを使用して、iSCSI LUN を作成した FSx for ONTAP ファイルシステムの NetApp ONTAP CLI に接続します。詳細については、「[NetApp ONTAP CLI の使用](managing-resources-ontap-apps.md#netapp-ontap-cli)」を参照してください。

   ```
   ~$ ssh fsxadmin@{{your_management_endpoint_ip}}
   ```

1. NetApp ONTAP CLI [https://docs.netapp.com/us-en/ontap-cli-9111/lun-igroup-create.html](https://docs.netapp.com/us-en/ontap-cli-9111/lun-igroup-create.html) コマンドを使用してイニシエーターグループ (`igroup`) を作成します。イニシエーターグループは iSCSI LUN にマッピングし、どのイニシエーター (クライアント) が LUN にアクセスできるかをコントロールします。`host_initiator_name` を、前の手順で取得した Linux ホストのイニシエーター名に置き換えます。

   ```
   ::> lun igroup create -vserver {{{{svm_name}}}} -igroup {{igroup_name}} -initiator {{host_initiator_name}} -protocol iscsi -ostype linux 
   ```

   この igroup にマップされた LUN を複数のホストで使用できるようにする場合は、コンマで区切って複数のイニシエーター名を指定できます。詳細については、*NetApp ONTAP ドキュメントセンター*の「[lun igroup create](https://docs.netapp.com/us-en/ontap-cli-9111/lun-igroup-create.html)」を参照してください。

1. 次の [https://docs.netapp.com/us-en/ontap-cli-9111/lun-igroup-show.html](https://docs.netapp.com/us-en/ontap-cli-9111/lun-igroup-show.html) コマンドを使用して、`igroup` が存在することを確認します。

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

   システムは次の出力でレスポンスします。

   ```
   Vserver   Igroup       Protocol OS Type  Initiators
   --------- ------------ -------- -------- ------------------------------------
   {{svm_name}}  {{igroup_name}}  iscsi    linux    iqn.1994-05.com.redhat:abcdef12345
   ```

1. このステップは、iSCSI LUN がすでに作成されていることを前提としています。そうでない場合は、そのための詳細のステップバイステップについては、「[iSCSI LUN の作成](create-iscsi-lun.md)」を参照してください。

   次の属性を指定して、作成した LUN から作成した igroup へのマッピングを [https://docs.netapp.com/us-en/ontap-cli-9111/lun-mapping-create.html](https://docs.netapp.com/us-en/ontap-cli-9111/lun-mapping-create.html) を使用して作成します。
   + `{{svm_name}}` - iSCSI ターゲットを提供するストレージ仮想マシンの名前。ホストはこの値を使用して LUN に到達します。
   + `{{vol_name}}` - LUN をホストしているボリュームの名前。
   + `{{lun_name}}` - LUN に割り当てた名前。
   + `{{igroup_name}}` - イニシエーターグループの名前。
   + `{{lun_id}}` - LUN ID 整数は、LUN 自体ではなく、マッピングに固有です。これは、論理的なユニット番号がストレージにアクセスするときにイニシエーターにこの値を使用するため、igroup のイニシエーターによって使用されます。

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

1. [https://docs.netapp.com/us-en/ontap-cli-9111/lun-show.html](https://docs.netapp.com/us-en/ontap-cli-9111/lun-show.html) コマンドを使用して、LUN が作成され、オンラインになり、マッピングされていることを確認します。

   ```
   ::> lun show -path /vol/{{vol_name}}/{{lun_name}} -fields state,mapped,serial-hex
   ```

   システムは次の出力でレスポンスします。

   ```
    Vserver    Path                           serial-hex               state    mapped
    --------- ------------------------------- ------------------------ -------- --------
    {{svm_name}}  /vol/{{vol_name}}/{{lun_name}}          6c5742314e5d52766e796150 online   mapped
   ```

   `serial_hex` 値 (この例では `6c5742314e5d52766e796150`) を保存します。これは後のステップ、ブロックデバイスのわかりやすい名前を作成する際に使用します。

1. [https://docs.netapp.com/us-en/ontap-cli-9111/network-interface-show.html](https://docs.netapp.com/us-en/ontap-cli-9111/network-interface-show.html) コマンドを使用して、iSCSI LUN を作成した SVM の`iscsi_1`および`iscsi_2`インターフェイスのアドレスを取得します。

   ```
   ::> 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.
   ```

   この例では、`iscsi_1` の IP アドレスは `172.31.0.143` で、`iscsi_2` は `172.31.21.81` です。

## Linux クライアントにiSCSI LUN をマウントします
<a name="mount-iscsi-lun-on-linux-client"></a>

Linux クライアントに iSCSI LUN をマウントするプロセスには、次の 3 つのステップがあります。

1. ターゲット iSCSI ノードの検出

1. iSCSI LUN のパーティション分割

1. iSCSI LUN をクライアントにマウントする

これらについては、以下の手順で説明します。

**ターゲット iSCSI ノードを検出するには**

1. Linux クライアントで、次のコマンドを使用して、`iscsi_1` の IP アドレス {{iscsi\_1\_IP}} を使用してターゲット iSCSI ノードを検出します。

   ```
   ~$ sudo iscsiadm --mode discovery --op update --type sendtargets --portal {{iscsi_1_IP}}
   ```

   ```
   172.31.0.143:3260,1029 iqn.1992-08.com.netapp:sn.9cfa2c41207a11ecac390182c38bc256:vs.3
   172.31.21.81:3260,1028 iqn.1992-08.com.netapp:sn.9cfa2c41207a11ecac390182c38bc256:vs.3
   ```

   この例では、`iqn.1992-08.com.netapp:sn.9cfa2c41207a11ecac390182c38bc256:vs.3` は優先アベイラビリティーゾーンの iSCSI LUN の `target_initiator` に対応します。

1. (オプション) iSCSI LUN に対して Amazon EC2 シングルクライアントの最大 5 Gbps (\~625 MBps) よりも高いスループットを実現するには、Linux インスタンス用 Amazon Elastic Compute Cloud ユーザーガイドの[ Amazon EC2 インスタンスのネットワーク帯域幅](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-network-bandwidth.html)で説明されている手順に従って、スループットを向上させるための追加セッションを確立します。

   次のコマンドは、各アベイラビリティーゾーンの ONTAP ノードごとにイニシエータごとに 8 つのセッションを確立し、クライアントが iSCSI LUN に対して最大 40 Gbps (5,000 MBps) の総スループットを実現できるようにします。

   ```
   ~$ sudo iscsiadm --mode node -T {{target_initiator}} --op update -n node.session.nr_sessions -v 8
   ```

1. ターゲットイニシエーターにログインします。iSCSI LUN は、使用可能なディスクとして表示されます。

   ```
   ~$ sudo iscsiadm --mode node -T {{target_initiator}} --login
   ```

   ```
   Logging in to [iface: default, target: iqn.1992-08.com.netapp:sn.9cfa2c41207a11ecac390182c38bc256:vs.3, portal: 172.31.14.66,3260] (multiple)
   Login to [iface: default, target: iqn.1992-08.com.netapp:sn.9cfa2c41207a11ecac390182c38bc256:vs.3, portal: 172.31.14.66,3260] successful.
   ```

   上記の出力は切り捨てられます。各ファイルサーバーのセッションごとに 1 つの `Logging in` と 1 つの `Login successful` レスポンスが表示されます。ノードごとに 4 つのセッションの場合、8 つの `Logging in` および 8 つの `Login successful` レスポンスがあります。

1. 次のコマンドを使用して、`dm-multipath` が複数のポリシーを持つ単一の LUN を表示することにより、iSCSI セッションを識別してマージしたことを確認します。`active` としてリストされているデバイスと `enabled` としてリストされているデバイスの数は同じである必要があります。

   ```
   ~$ sudo multipath -ll
   ```

   出力では、ディスク名は `dm-xyz` としてフォーマットされます。ここで、`xyz` は整数です。他にマルチパスディスクがない場合、この値は `dm-0` です。

   ```
   3600a09806c5742314e5d52766e79614f {{dm-xyz}} NETAPP  ,LUN C-Mode      
   size=10G features='4 queue_if_no_path pg_init_retries 50 retain_attached_hw_handle' hwhandler='0' wp=rw
   |-+- policy='service-time 0' prio=50 status=active
   | |- 0:0:0:1 sda     8:0   active ready running
   | |- 1:0:0:1 sdc     8:32  active ready running
   | |- 3:0:0:1 sdg     8:96  active ready running
   | `- 4:0:0:1 sdh     8:112 active ready running
   `-+- policy='service-time 0' prio=10 status=enabled
     |- 2:0:0:1 sdb     8:16  active ready running
     |- 7:0:0:1 sdf     8:80  active ready running
     |- 6:0:0:1 sde     8:64  active ready running
     `- 5:0:0:1 sdd     8:48  active ready running
   ```

   これで、ブロックデバイスが Linux クライアントに接続されました。パス `/dev/{{dm-xyz}}` の下にあります。このパスを管理目的で使用しないでください。代わりに、パス `/dev/mapper/{{wwid}}` の下にあるシンボリックリンクを使用します。`{{wwid}}` は、デバイス間で一貫している LUN の一意の識別子です。次のステップでは、`{{wwid}}` にわかりやすい名前を付けて、他のマルチパスディスクと区別できるようにします。

**ブロックデバイスにわかりやすい名前を割り当てるには**

1. デバイスにわかりやすい名前を付けるには、`/etc/multipath.conf` ファイルにエイリアスを作成します。これを行うには、好みのテキストエディタを使用してファイルに次のエントリを追加し、次のプレースホルダーを置き換えます。
   + `serial_hex` を [FSx for ONTAP ファイルシステムで iSCSI を設定する](#configure-iscsi-on-fsx-ontap) の手順で保存した値に置き換えます。
   + 例に示すように、プレフィックス `3600a0980` を `serial_hex` 値に追加します。これは、Amazon FSx for NetApp ONTAP が使用する NetApp ONTAP ディストリビューションの固有のプリアンブルです。
   + `device_name` をデバイスに使用するわかりやすい名に置き換えます。

   ```
   multipaths {
       multipath {
           wwid 3600a0980{{serial_hex}}
           alias {{device_name}}
       }
   }
   ```

   別の方法として、次のスクリプティングを `multipath_alias.sh` などの bash ファイルとしてコピーして保存することもできます。スクリプティングは sudo 許可で実行でき、`{{serial_hex}}` (3600a0980 プレフィックスなし) と `{{device_name}}` をそれぞれのシリアル番号と目的のフレンドリ名に置き換えます。このスクリプティングは、`/etc/multipath.conf` ファイル内のコメントされていない `multipaths` セクションを検索します。もしそれが存在する場合は、そのセクションに `multipath` エントリを追加します。それ以外の場合は、ブロックデバイスの `multipath` エントリを含む新しい `multipaths` セクションが作成されます。

   ```
   #!/bin/bash
   SN=serial_hex
   ALIAS=device_name
   CONF=/etc/multipath.conf
   grep -q '^multipaths {' $CONF
   UNCOMMENTED=$?
   if [ $UNCOMMENTED -eq 0 ]
   then
           sed -i '/^multipaths {/a\\tmultipath {\n\t\twwid 3600a0980'"${SN}"'\n\t\talias '"${ALIAS}"'\n\t}\n' $CONF
   else
           printf "multipaths {\n\tmultipath {\n\t\twwid 3600a0980$SN\n\t\talias $ALIAS\n\t}\n}" >> $CONF
   fi
   ```

1. `/etc/multipathd.conf` への変更を有効にするには、`multipathd` サービスを再起動します。

   ```
   ~$ systemctl restart multipathd.service
   ```

**LUN をパーティション分割するには**

次のステップでは、`fdisk` を使用して LUN をフォーマットおよびパーティション分割すします。

1. 次のコマンドを使用して、`device_name` へのパスが存在することを確認します。

   ```
   ~$ ls /dev/mapper/{{device_name}}
   ```

   ```
   /dev/{{device_name}}
   ```

1. `fdisk` を使用してディスクをパーティション分割します。インタラクティブなプロンプトを入力します。表示されている順序でオプションを入力します。最後のセクター (この例では `20971519`) よりも小さい値を使用して、複数のパーティションを作成できます。
**注記**  
`Last sector` 値は、iSCSI LUN のサイズ (この例では 10GB) によって異なります。

   ```
   ~$ sudo fdisk /dev/mapper/{{device_name}}
   ```

   `fsdisk` インタラクティブプロンプトが起動します。

   ```
   Welcome to fdisk (util-linux 2.30.2). 
   
   Changes will remain in memory only, until you decide to write them. 
   Be careful before using the write command. 
   
   Device does not contain a recognized partition table. 
   Created a new DOS disklabel with disk identifier 0x66595cb0. 
   
   Command (m for help): n 
   Partition type 
      p primary (0 primary, 0 extended, 4 free) 
      e extended (container for logical partitions) 
   Select (default p): p 
   Partition number (1-4, default 1): 1 
   First sector (2048-20971519, default 2048): 2048 
   Last sector, +sectors or +size{K,M,G,T,P} (2048-20971519, default 20971519): 20971519
                                       
   Created a new partition 1 of type 'Linux' and of size 512 B.
   Command (m for help): w
   The partition table has been altered.
   Calling ioctl() to re-read partition table. 
   Syncing disks.
   ```

   `w` を入力すると、新しいパーティション `/dev/mapper/{{partition_name}}` が使用可能になります。{{partition\_name}} の形式は {{<device\_name>}}{{<partition\_number>}}です。前のステップの `fdisk` コマンドのパーティション番号として、`1` が使用されました。

1. パスとして `/dev/mapper/{{partition_name}}` を使用してファイルシステムを作成します。

   ```
   ~$ sudo mkfs.ext4 /dev/mapper/{{partition_name}}
   ```

   システムは次の出力でレスポンスします。

   ```
   mke2fs 1.42.9 (28-Dec-2013)
   Discarding device blocks: done 
   Filesystem label=
   OS type: Linux
   Block size=4096 (log=2)
   Fragment size=4096 (log=2)
   Stride=0 blocks, Stripe width=16 blocks
   655360 inodes, 2621184 blocks
   131059 blocks (5.00%) reserved for the super user
   First data block=0
   Maximum filesystem blocks=2151677952
   80 block groups
   32768 blocks per group, 32768 fragments per group
   8192 inodes per group
   Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
   Allocating group tables: done 
   Writing inode tables: done 
   Creating journal (32768 blocks): done
   Writing superblocks and filesystem accounting information: done
   ```

**Linux クライアントに LUN をマウントするには**

1. ファイルシステムのマウントポイントとしてディレクトリ {{directory\_path}} を作成します。

   ```
   ~$ sudo mkdir /{{directory_path}}/{{mount_point}}
   ```

1. 次のコマンドを使用してファイルシステムをマウントします。

   ```
   ~$ sudo mount -t ext4 /dev/mapper/{{partition_name}} /{{directory_path}}/{{mount_point}}
   ```

1. (オプション) マウントディレクトリの特定のユーザーに所有権を付与する場合は、{{`username`}} を所有者のユーザー名に置き換えます。

   ```
   ~$ sudo chown {{username}}:{{username}} /{{directory_path}}/{{mount_point}}
   ```

1. (オプション) ファイルシステムとの間でデータの読み取りと書き込みができることを確認します。

   ```
   ~$ echo "Hello world!" > /{{directory_path}}/{{mount_point}}/HelloWorld.txt
   ~$ cat {{directory_path}}/HelloWorld.txt
   Hello world!
   ```

   これで、Linux クライアントに iSCSI LUN が正常に作成されてマウントされました。