Linux 用 iSCSI のプロビジョニング
FSx for ONTAP は iSCSI プロトコルをサポートしています。iSCSI プロトコルを使用してクライアントとファイルシステム間でデータを転送するには、Linux クライアントとファイルシステムの両方で iSCSI をプロビジョニングする必要があります。iSCSI プロトコルは、高可用性 (HA) ペアが 6 つ以下のすべてのファイルシステムで使用できます。
Amazon FSx for NetApp ONTAP で iSCSI を設定するプロセスには、主に 3 つのステップがあります。これらのステップについては、次の手順で説明します。
Linux ホストに iSCSI クライアントをインストールして設定する
ファイルシステムの SVM で iSCSI を設定します。
iSCSI イニシエータグループを作成します。
イニシエータグループを LUN にマッピングします。
Linux クライアントに iSCSI LUN をマウントします
開始する前に
iSCSI 用にファイルシステムを設定するプロセスを開始する前に、次の項目を完了しておく必要があります。
FSx for ONTAP ファイルシステムを作成します。詳細については、「ファイルシステムの作成」を参照してください。
ファイルシステムに iSCSI LUN を作成します。詳細については、「iSCSI LUN の作成」を参照してください。
ファイルシステムと同じ VPC にある Amazon Linux 2 Amazon マシンイメージ (AMI) を実行する EC2 インスタンスを作成します。これは、iSCSI を設定し、ファイルデータにアクセスする Linux ホストです。
これらの手順の範囲を超えて、ホストが別のVPCにある場合は、VPC ピアリングまたは AWS Transit Gateway を使用して、他の VPC にボリュームの iSCS Iエンドポイントへのアクセスを許可できます。詳細については、「デプロイ用の VPC の外部からのデータへのアクセス」を参照してください。
Amazon VPC によるファイルシステムアクセスコントロール で説明されているように、インバウンドトラフィックとアウトバウンドトラフィックを許可するように Linux ホストの VPC セキュリティグループを設定します。
ONTAP CLI へのアクセスに使用する
fsxadmin
権限を持つ ONTAP ユーザーの認証情報を取得します。詳細については、「ONTAP ロールとユーザー」を参照してください。iSCSI 向けに設定し、FSx for ONTAP ファイルシステムにアクセスするために使用する Linux ホストは、同じ VPC と AWS アカウント にあります。
次の図に示すように、EC2インスタンスはファイルシステムの優先サブネットと同じアベイラビリティーゾーンにあることをお勧めします。
EC2 インスタンスが Amazon Linux 2 とは異なる Linux AMI を実行している場合、これらの手順や例で使用されるユーティリティの一部がすでにインストールされている可能性があり、必要なパッケージをインストールするために異なるコマンドを使用する場合があります。パッケージのインストールを除いて、このセクションで使用されるコマンドは他の EC2 Linux AMI で有効です。
トピック
Linux コストに iSCSI をインストールして設定する
iSCSI クライアントをインストールするには
-
Linux デバイスに
iscsi-initiator-utils
とdevice-mapper-multipath
がインストールされていることを確認します。SSH クライアントを使用して Linux インスタンスに接続します。詳細については、「SSH を使用した Linux インスタンスへの接続」を参照してください。 次のコマンドを使用して、
multipath
と iSCSI クライアントをインストールします。ファイルサーバー間で自動的にフェイルオーバーしたい場合は、multipath
をインストールする必要があります。~$
sudo yum install -y device-mapper-multipath iscsi-initiator-utils-
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 iSCSI サービスをスタートします。
~$
sudo service iscsid startお使いの Linux のバージョンによっては、代わりにこのコマンドを使用しなければならない場合があります。
~$
sudo systemctl start iscsid-
次のコマンドを使用して、サービスが実行されていることを確認します。
~$
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 を設定するには
-
クライアントがファイルサーバー間で自動的にフェイルオーバーできるようにするには、マルチパスを設定する必要があります。以下のコマンドを使用します。
~$
sudo mpathconf --enable --with_multipathd y -
次のコマンドを使用して、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 を設定する
-
次のコマンドを使用して、iSCSI LUN を作成した FSx for ONTAP ファイルシステムの NetApp ONTAP CLI に接続します。詳細については、「NetApp ONTAP CLI の使用」を参照してください。
~$
ssh fsxadmin@your_management_endpoint_ip
-
NetApp ONTAP CLI lun igroup create
コマンドを使用してイニシエーターグループ ( igroup
) を作成します。イニシエーターグループは iSCSI LUN にマッピングし、どのイニシエーター (クライアント) が LUN にアクセスできるかをコントロールします。host_initiator_name
を、前の手順で取得した Linux ホストのイニシエーター名に置き換えます。::>
lun igroup create -vserver
-igroupsvm_name
igroup_name
-initiatorhost_initiator_name
-protocol iscsi -ostype linuxこの igroup にマップされた LUN を複数のホストで使用できるようにする場合は、コンマで区切って複数のイニシエーター名を指定できます。詳細については、「NetApp ONTAP ドキュメントセンター」の「 lun igroup create
」を参照してください。 -
次の lun igroup show
コマンドを使用して、 igroup
が存在することを確認します。::>
lun igroup showシステムは次の出力でレスポンスします。
Vserver Igroup Protocol OS Type Initiators --------- ------------ -------- -------- ------------------------------------
svm_name
igroup_name
iscsi linux iqn.1994-05.com.redhat:abcdef12345 -
このステップは、iSCSI LUN がすでに作成されていることを前提としています。そうでない場合は、そのための詳細のステップバイステップについては、「iSCSI LUN の作成」を参照してください。
次の属性を指定して、作成した LUN から作成した igroup へのマッピングを lun mapping create
を使用して作成します。 -
- iSCSI ターゲットを提供するストレージ仮想マシンの名前。ホストはこの値を使用して LUN に到達します。svm_name
-
- LUN をホストしているボリュームの名前。vol_name
-
- LUN に割り当てた名前。lun_name
-
- イニシエーターグループの名前。igroup_name
-
- LUN ID 整数は、LUN 自体ではなく、マッピングに固有です。これは、論理的なユニット番号がストレージにアクセスするときにイニシエーターにこの値を使用するため、igroup のイニシエーターによって使用されます。lun_id
::>
lun mapping create -vserversvm_name
-path /vol/vol_name
/lun_name
-igroupigroup_name
-lun-idlun_id
-
-
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 mappedserial_hex
値 (この例では6c5742314e5d52766e796150
) を保存します。これは後のステップ、ブロックデバイスのわかりやすい名前を作成する際に使用します。 -
network interface show -vserver
コマンドを使用して、iSCSI LUNを作成した SVM の iscsi_1
およびiscsi_2
インターフェイスのアドレスを取得します。::>
network interface show -vserversvm_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 をマウントします
Linux クライアントに iSCSI LUN をマウントするプロセスには、次の 3 つのステップがあります。
ターゲット iSCSI ノードの検出
iSCSI LUN のパーティション分割
iSCSI LUN をクライアントにマウントする
これらについては、以下の手順で説明します。
ターゲット iSCSI ノードを検出するには
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
に対応します。(オプション) iSCSI LUN への Amazon EC2 単一クライアントの最大 5 Gb/秒 (625 MB/秒以下) よりも高いスループットを実現するには、Linux インスタンス用 Amazon Elastic Compute Cloud ユーザーガイドの「Amazon EC2 インスタンスネットワーク帯域幅」に記載されている手順に従って、スループットを向上させるための追加のセッションを確立します。
次のコマンドは、各アベイラビリティーゾーンの ONTAP ノードごとに、イニシエーターごとに 8 つのセッションを確立し、クライアントが最大 40 Gb/秒 (5,000 MB / 秒) の集約スループットを iSCSI LUN に駆動できるようにします。
~$
sudo iscsiadm --mode node -T
target_initiator
--op update -n node.session.nr_sessions -v 8ターゲットイニシエーターにログインします。iSCSI LUN は、使用可能なディスクとして表示されます。
~$
sudo iscsiadm --mode node -T
target_initiator
--loginLogging 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
レスポンスがあります。次のコマンドを使用して、
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
は、デバイス間で一貫している LUN の一意の識別子です。次のステップでは、wwid
にわかりやすい名前を付けて、他のマルチパスディスクと区別できるようにします。wwid
ブロックデバイスにわかりやすい名前を割り当てるには
デバイスにわかりやすい名前を付けるには、
/etc/multipath.conf
ファイルにエイリアスを作成します。これを行うには、好みのテキストエディタを使用してファイルに次のエントリを追加し、次のプレースホルダーを置き換えます。serial_hex
を FSx for ONTAP ファイルシステムで iSCSI を設定する の手順で保存した値に置き換えます。例に示すように、プレフィックス
3600a0980
をserial_hex
値に追加します。これは、Amazon FSx for NetApp ONTAP が使用する NetApp ONTAP ディストリビューションの固有のプリアンブルです。device_name
をデバイスに使用するわかりやすい名に置き換えます。
multipaths { multipath { wwid 3600a0980
serial_hex
aliasdevice_name
} }別の方法として、次のスクリプティングを
multipath_alias.sh
などの bash ファイルとしてコピーして保存することもできます。スクリプティングは sudo 許可で実行でき、
(3600a0980 プレフィックスなし) とserial_hex
をそれぞれのシリアル番号と目的のフレンドリ名に置き換えます。このスクリプティングは、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
/etc/multipathd.conf
への変更を有効にするには、multipathd
サービスを再起動します。~$
systemctl restart multipathd.service
LUN をパーティション分割するには
次のステップでは、fdisk
を使用して LUN をフォーマットおよびパーティション分割すします。
-
次のコマンドを使用して、
device_name
へのパスが存在することを確認します。~$
ls /dev/mapper/
device_name
/dev/
device_name
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
が使用されました。-
パスとして
/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 をマウントするには
-
ファイルシステムのマウントポイントとしてディレクトリ
directory_path
を作成します。~$
sudo mkdir /
directory_path
/mount_point
-
次のコマンドを使用してファイルシステムをマウントします。
~$
sudo mount -t ext4 /dev/mapper/
partition_name
/directory_path
/mount_point
-
(オプション) マウントディレクトリの特定のユーザーに所有権を付与する場合は、
を所有者のユーザー名に置き換えます。username
~$
sudo chown
username
:username
/directory_path
/mount_point
-
(オプション) ファイルシステムとの間でデータの読み取りと書き込みができることを確認します。
~$
echo "Hello world!" > /
directory_path
/mount_point
/HelloWorld.txt~$
cat
directory_path
/HelloWorld.txtHello world!
これで、Linux クライアントに iSCSI LUN が正常に作成されてマウントされました。