Linux クライアントへの iSCSI LUN のマウント - FSx for ONTAP

Linux クライアントへの iSCSI LUN のマウント

手順で示されている例では、次の設定を使用しています。

  • Linux ホストにマウントされる iSCSI LUN はすでに作成されています。詳細については、「iSCSI LUN の作成」を参照してください。

  • iSCSI LUN をマウントしている Linux ホストは、Amazon Linux 2 Amazon マシンイメージ (AMI) を実行している Amazon EC2 インスタンスです。 Amazon VPC によるファイルシステムアクセスコントロール で説明されているように、インバウンドトラフィックとアウトバウンドトラフィックを許可するように設定された VPC セキュリティグループがあります。

  • Linux ホストと FSx for ONTAP ファイルシステムは、同じ VPC と AWS アカウント にあります。ホストが別のVPCにある場合は、VPC ピアリングまたは AWS Transit Gateway を使用して、他の VPC にボリュームの iSCS Iエンドポイントへのアクセスを許可できます。詳細については、「デプロイ用の VPC の外部からのデータへのアクセス」を参照してください。

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

    次の図に示すように、EC2インスタンスはファイルシステムの優先サブネットと同じアベイラビリティーゾーンにあることをお勧めします。


                     ファイルシステムの優先サブネットと同じアベイラビリティーゾーンに iSCSI LUN と Amazon EC2 インスタンスが配置された Amazon FSx for NetApp ONTAP ファイルシステムを示す画像。

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

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

  1. Linux デバイスに iscsi-initiator-utilsdevice-mapper-multipath がインストールされていることを確認します。SSH クライアントを使用して Linux インスタンスに接続します。詳細については、「SSH を使用した Linux インスタンスへの接続」を参照してください。

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

    ~$ sudo yum install -y device-mapper-multipath iscsi-initiator-utils
  3. 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
  4. iSCSI サービスをスタートします。

    ~$ sudo service iscsid start

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

    ~$ sudo systemctl start iscsid
  5. 次のコマンドを使用して、サービスが実行されていることを確認します。

    ~$ 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
  2. 次のコマンドを使用して、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 を設定する

  1. 次のコマンドを使用して、iSCSI LUN を作成した FSx for ONTAP ファイルシステムの NetApp ONTAP CLI に接続します。詳細については、「NetApp ONTAP CLI を使用する」を参照してください。

    ~$ ssh fsxadmin@your_management_endpoint_ip
  2. NetApp ONTAP CLI を使用してイニシエーターグループ (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」を参照してください。

  3. 次のコマンドを使用して、igroup が存在することを確認します。

    ::> lun igroup show

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

    Vserver Igroup Protocol OS Type Initiators --------- ------------ -------- -------- ------------------------------------ svm_name igroup_name iscsi linux iqn.1994-05.com.redhat:abcdef12345
  4. このステップは、iSCSI LUN がすでに作成されていることを前提としています。そうでない場合は、そのための詳細のステップバイステップについては、「iSCSI LUN の作成」を参照してください。

    次の属性を指定して、作成した LUN から作成した igroup へのマッピングを作成します。

    • 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
  5. lun show -path コマンドを使用して、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) を保存します。これは後のステップ、ブロックデバイスのわかりやすい名前を作成する際に使用します。

  6. network interface show -vserver コマンドを使用して、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_2172.31.21.81 です。

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

  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 に対応します。

  2. (オプション) target_initiator との追加セッションを確立できます。Amazon EC2 のシングルフロートラフィックの帯域幅制限は 5 Gb/秒 (〜625 MB / 秒) ですが、複数のセッションを作成して、単一のクライアントからファイルシステムに高レベルのスループットをもたらすことができます。詳細については、「 Linux インスタンスの Amazon Elastic Compute Cloud ユーザーガイド の「 Amazon EC2 インスタンスネットワーク帯域幅」を参照してください。

    次のコマンドは、各アベイラビリティーゾーンの ONTAP ノードごとにイニシエーターごとに 4 つのセッションを確立し、クライアントが最大 20 Gb/秒 (2,500 MB / 秒) の集約スループットを iSCSI LUN に駆動できるようにします。

    ~$ sudo iscsiadm --mode node -T target_initiator --op update -n node.session.nr_sessions -v 4
  3. ターゲットイニシエーターにログインします。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 レスポンスがあります。

  4. 次のコマンドを使用して、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_hexFSx for ONTAP ファイルシステムで iSCSI を設定する の手順で保存した値に置き換えます。

    • 例に示すように、プレフィックス 3600a0980serial_hex 値に追加します。これは、Amazon FSx for NetApp ONTAP が使用する NetApp ONTAP ディストリビューションの固有のプリアンブルです。

    • device_name をデバイスに使用するわかりやすい名に置き換えます。

    multipaths { multipath { wwid 3600a0980serial_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
  2. /etc/multipathd.conf への変更を有効にするには、multipathd サービスを再起動します。

    ~$ systemctl restart multipathd.service

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

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

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

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

    ~$ 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 が使用されました。

  3. パスとして /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
  2. 次のコマンドを使用してファイルシステムをマウントします。

    ~$ sudo mount -t ext4 /dev/mapper/partition_name /directory_path/mount_point
  3. (オプション) マウントディレクトリの所有権をユーザーに変更できます。username を自分のユーザーネームに置き換えます。

    ~$ sudo chown username:username /directory_path/mount_point
  4. (オプション) ファイルシステムとの間でデータの読み取りと書き込みができることを確認します。

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

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