Red Hat Enterprise Linux 9 で iSCSI ボリュームをマウントする

RHEL 9 で Block Storage for Classic ボリュームをマルチパス I/O でマウントし、冗長性のある高性能なストレージ・アクセスを実現する方法をご紹介します。

Red Hat Enterprise Linux® 9 オペレーティングシステムを使用する 仮想サーバー 上に IBM Cloud® Block Storage for Classic ボリュームをマウントするには、チュートリアルに従います。 ホストの 1 つのネットワーク・インターフェースからストレージ・アレイの 2 つのターゲット IP アドレスへの 2 つの接続を作成します。

その他の Linux® オペレーティングシステムをご利用の場合は、お使いのディストリビューションのドキュメントを参照し、マルチパスがパス優先順位設定において非対称論理ユニットアクセス(ALUA)をサポートしていることを確認してください。

開始前に

  1. Block Storage for Classic ボリュームにアクセスするホストが、アクセス権限を持っていることを確認してください。 詳細については、 「コンソールでホストを承認する」、 「CLI からホストを承認する」、 「Terraform を使用してホストを承認する」 を参照してください。

  2. IBM Cloud のプライベート・ネットワークにアクセスし、いくつかのサービスを利用するには、アクティブな VPN接続が 必要です。

  3. サーバーへのSSH接続を確立します。 IPアドレス、ユーザー名、パスワードはコンソールで確認できる。 メニュー メニューアイコン から、 インフラ VPCアイコン > クラシック・インフラストラクチャー > Devices をクリックします。 次に、リストでサーバーを探し、その名前をクリックして詳細を表示します。

複数のホストが協調管理されずに同じ Block Storage for Classic ボリュームをマウントすると、データが破損する危険性があります。 複数のホストが同時にボリュームに変更を加えると、ボリュームの破損が発生する可能性があります。 データ損失を防ぐには、Microsoft Cluster Shared Volumes ( CSV )、 Red Hat Global File System ( GFS2 )、 VMware® VMFS など、クラスタを意識した共有ディスク・ファイル・システムが必要です。 詳細については、お使いのOSのドキュメントを参照してください。

OSをアップデートし、 iSCSI、マルチパスユーティリティをインストールする

システムが最新の状態であることを確認し、 iscsi-initiator-utils および device-mapper-multipath パッケージがインストールされていることを確認してください。 以下のコマンドを使用して、パッケージをインストールします。

  1. OSをアップデートする。

    sudo dnf update
    
  2. マルチパスユーティリティのインストール

    sudo dnf -y install device-mapper-multipath
    

    パッケージがインストールされたら、 mpathconf --enable --user_friendly_names n コマンドを入力して有効にする。

  3. ISCSIユーティリティのインストール

    sudo dnf -y install iscsi-initiator-utils
    

    パッケージがインストールされたら、 systemctl start iscsid コマンドで起動する。

iSCSI の設定ファイルを更新する

  1. 「 IBM Cloud® 」コンソールから取得したIQNを使用して、 /etc/iscsi/initiatorname.iscsi ファイルを更新してください。

    1. 次の例は、現在のイニシエータ名をチェックする方法を示している。
    [root@vsi4classic ~]# cat /etc/iscsi/initiatorname.iscsi
    InitiatorName=iqn.1994-05.com.redhat:7acdadcdc20
    
    1. テキストエディタでファイルを開きます:
    vi /etc/iscsi/initiatorname.iscsi
    
    1. 以下の例にあるように、IQNを以下のフォーマットで入力する InitiatorName=<value-from-the-Portal>。 IQNの値を自分の値に置き換える。
    InitiatorName=iqn.2025-11.com.ibm:sl02su1414935-v154455886
    
    1. ファイルを保存し(:w )、終了する(:x )。
  2. IBM Cloud® コンソールのユーザー名とパスワードを使用して、 /etc/iscsi/iscsid.conf の以下のエントリーのコメントを解除し、更新する。 CHAP(Challenge-Handshake Authentication Protocol)名には大文字を使用する。

    node.session.auth.authmethod = CHAP
    node.session.auth.username = <Username-value-from-Portal>
    node.session.auth.password = <Password-value-from-Portal>
    discovery.sendtargets.auth.authmethod = CHAP
    discovery.sendtargets.auth.username = <Username-value-from-Portal>
    discovery.sendtargets.auth.password = <Password-value-from-Portal>
    

    その他のCHAP設定は変更しないでください。 IBM Cloud® ストレージでは、一方向認証のみが使用されます。 相互 CHAP を有効にしないこと。

  3. iscsid サービスを再始動します。

    systemctl restart iscsid
    
  4. iSCSI アレイに対してディスカバリを実行して、構成が正しいことを検証する。

    Block Storage for Classic SendTargets メソッドを使用した動的なターゲット検出が必要です。 静的なノード構成は使用しないでください。スケーラビリティに欠ける上、ストレージに変更が加えられた際(LUNへのホストのアクセス許可やアクセス権の解除など)、接続の問題を引き起こす可能性があります。 ダイナミック・ディスカバリーは、ホストがターゲット・ポータルへの変更を自動的に検出することを保証する。

    iscsiadm -m discovery -t sendtargets -p TARGET IP
    

    IPアドレス情報とアクセス詳細が表示されれば、検出は成功です。

    [root@vsi4classic ~]# iscsiadm -m discovery -t sendtargets -p 161.26.99.113
     161.26.99.113:3260,1034 iqn.1992-08.com.netapp:stfdal1006
     161.26.99.110:3260,1030 iqn.1992-08.com.netapp:stfdal1006
    

マルチパスのセットアップ

DM Multipathは、 mpathconf ユーティリティを使用して設定します。これにより、マルチパス設定ファイル /etc/multipath.conf が作成されます。 mpathconf ユーティリティの詳細については、 mpathconf(8)のマニュアルページを参照してください。

  1. まだやっていなければ、mpathconfコマンドに --enable オプションを付けて入力する。

    mpathconf --enable --user_friendly_names n
    
  2. nano, vi, またはお好みの他のエディターで /etc/multipath.conf ファイルを編集する。

    sudo vi /etc/multipath.conf
    
  3. 以下の最小構成を追加してください。

    defaults {
    user_friendly_names no
    find_multipaths on
    max_fds max
    flush_on_last_del yes
    queue_without_daemon no
    dev_loss_tmo infinity
    fast_io_fail_tmo 5
    }
    # All data in the following section must be specific to your system.
    blacklist {
    wwid "SAdaptec*"
    devnode "^hd[a-z]"
    devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
    devnode "^cciss.*"
    }
    devices {
    device {
    vendor "NETAPP"
    product "LUN"
    path_grouping_policy group_by_prio
    features "2 pg_init_retries 50"
    no_path_retry queue
    prio "alua"
    path_checker tur
    failback immediate
    path_selector "round-robin 0"
    hardware_handler "1 alua"
    rr_weight uniform
    rr_min_io 128
    }
    }
    

    設定ファイルの「initial defaults」セクションでは、マルチパスデバイスの名前が「 /dev/mapper/mpath n」という形式になるようシステムを設定します。ここで、 mpath n はデバイスのWWID(World Wide Identifier)です。

  4. 設定ファイルを保存して、エディタを終了します。

  5. 以下のコマンドを発行します。

    systemctl start multipathd.service
    

    マルチパスデーモンを起動した後にマルチパスの設定ファイルを編集する必要がある場合は、変更を反映させるために systemctl reload multipathd.service コマンドを実行する必要があります。

ストレージ・デバイスのディスカバーとログイン

iscsiadm ユーティリティは、 iSCSI ターゲットの検出およびログイン、ならびにopen-iscsiデータベースへのアクセスと管理を行うためのコマンドラインツールです。 詳細については、 iscsiadm(8)のマニュアルページを参照してください。 このステップでは、IBM Cloud® コンソールから取得したターゲット IP アドレスを使用して、デバイスをディスカバーします。

  1. iSCSI アレイに対してディスカバリーを実行します。

    iscsiadm -m discovery -t sendtargets -p TARGET IP
    

    IPアドレス情報とアクセス詳細が表示されれば、検出は成功です。

  2. iSCSI アレイにログインします。

    iscsiadm -m node --login
    
    [root@vsi4classic ~]# iscsiadm -m node --login
    Login to [iface: default, target: iqn.1992-08.com.netapp:stfdal1006, portal: 161.26.99.110,3260] successful.
    Login to [iface: default, target: iqn.1992-08.com.netapp:stfdal1006, portal: 161.26.99.113,3260] successful.
    

構成の検証

  1. iSCSI セッションが確立されていることを検証します。

    iscsiadm -m session -o show
    
  2. 複数のパスがあることを検証します。

    multipath -l
    

    このコマンドはパスを報告します。 正しく設定されていれば、各ボリュームには1つのグループがあり、そのパス数は iSCSI セッションの数と一致します。 単一のパスでボリュームをマウントすることは可能ですが、サービスの中断を防ぐためには、両方のパスで接続が確立されていることが重要です。

    [root@vsi4classic ~]# multipath -l
    3600a0980383056716724514550666270 dm-0 NETAPP,LUN C-Mode
    size=20G features='3 queue_if_no_path pg_init_retries 50' hwhandler='1 alua' wp=rw
    |-+- policy='round-robin 0' prio=0 status=active
    | `- 2:0:0:0 sda 8:0  active undef running
    `-+- policy='round-robin 0' prio=0 status=enabled
      `- 3:0:0:0 sdb 8:16 active undef running
    

    MPIO が正しく構成されていないと、ネットワーク障害が発生した場合や、IBM Cloud® チームが保守を実行するときに、ストレージ・デバイスが切断され、オフラインと表示されます。 MPIOは、こうしたイベント発生時にさらなる接続性を提供し、アクティブな読み書き操作が行われているボリュームへの確立済みセッションを維持します。

  3. 接続しているデバイスに関するパーティション表をリストします。

    fdisk -l | grep /dev/mapper
    

    デフォルトでは、ストレージ・デバイスは /dev/mapper/<wwid>に接続されます。 WWID は、ボリュームが存在する間は永続します。 コマンドは、次の例のような情報を報告します。

    [root@vsi4classic ~]# fdisk -l | grep /dev/mapper
    Disk /dev/mapper/3600a0980383056716724514550666270: 20 GiB, 21474836480 bytes, 41943040 sectors
    

    この例では、文字列 3600a0980383056716724514550666270 がWWIDである。 あなたのアプリケーションはWWIDを使うべきである。 また、 multipath.conf 内で「user_friendly_names」または「alias」キーワードを使用することで、より読みやすい名前を割り当てることも可能です。 詳細については、 multipath.conf のマニュアルページを参照してください。

    ボリュームはホスト上にマウント済みであり、アクセス可能です。 次に、ファイル・システムを作成できます。

ファイル・システムの作成 (オプション)

新しくマウントされたボリュームにファイル・システムを作成するには、以下の手順に従います。 ファイル・システムは、ほとんどのアプリケーションでボリュームを使用するために必要です。 2 TB より小さいドライブの場合は fdisk を使用し、2 TB より大きいディスクの場合は parted を使用します

fdisk を使用したファイル・システムの作成

  1. ディスク名を取得します。

    fdisk -l | grep /dev/mapper
    
    [root@vsi4classic ~]# fdisk -l | grep /dev/mapper
    Disk /dev/mapper/3600a0980383056716724514550666270: 20 GiB, 21474836480 bytes, 41943040 sectors
    
    [root@vsi4classic ~]# fdisk -l /dev/mapper/3600a0980383056716724514550666270
    Disk /dev/mapper/3600a0980383056716724514550666270: 20 GiB, 21474836480 bytes, 41943040 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 4096 bytes
    I/O size (minimum/optimal): 4096 bytes / 65536 bytes
    
  2. ディスク上にパーティションを作成します。 以下の例では、デフォルト値でパーティションを作成しています。

    [root@vsi4classic ~]# fdisk /dev/mapper/3600a0980383056716724514550666270
    
    Welcome to fdisk (util-linux 2.37.4).
    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 0x2aa2e16c.
    
    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-41943039, default 2048): 2048
    Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-41943039, default 41943039): 41943039
    
    Created a new partition 1 of type 'Linux' and of size 20 GiB.
    
    Command (m for help): w
    The partition table has been altered.
    Calling ioctl() to re-read partition table.
    Re-reading the partition table failed.: Invalid argument
    
    The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or partx(8).
    
  3. 新規パーティション上にファイル・システムを作成します。

    • 新しいパーティションは、 XXXp1 のようにディスクと一緒にリストされ、サイズ、タイプ (83)、 Linux® と続きます。次のステップで必要になるので、パーティション名をメモしておいてください。 (XXXp1 がパーティション名を表します。)

      [root@vsi4classic ~]# fdisk -l /dev/mapper/3600a0980383056716724514550666270
      Disk /dev/mapper/3600a0980383056716724514550666270: 20 GiB, 21474836480 bytes, 41943040 sectors
      Units: sectors of 1 * 512 = 512 bytes
      Sector size (logical/physical): 512 bytes / 4096 bytes
      I/O size (minimum/optimal): 4096 bytes / 65536 bytes
      Disklabel type: dos
      Disk identifier: 0x2aa2e16c
      
      Device                                           Boot Start      End  Sectors Size Id Type
      /dev/mapper/3600a0980383056716724514550666270p1        2048 41943039 41940992  20G 83 Linu
      
    • ファイル・システムを作成します。

      mkfs.ext3 /dev/mapper/XXXp1
      
      [root@vsi4classic ~]# mkfs.ext3 /dev/mapper/3600a0980383056716724514550666270p1
      mke2fs 1.46.5 (30-Dec-2021)
      Discarding device blocks: done
      Creating filesystem with 5242624 4k blocks and 1310720 inodes
      Filesystem UUID: 09e7f833-32b7-4c7f-ab68-8c6083cb8a63
      Superblock backups stored on blocks:
          32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
          4096000
      
      Allocating group tables: done
      Writing inode tables: done
      Creating journal (32768 blocks): done
      Writing superblocks and filesystem accounting information: done
      
  4. ファイル・システムのマウント・ポイントを作成し、マウントします。

    • パーティション名 PerfDisk を作成するか、ファイル・システムをマウントする場所を作成します。

      mkdir /PerfDisk
      
    • パーティション名を使用してストレージをマウントします。

      mount /dev/mapper/XXXp1 /PerfDisk
      
    • 新しいファイル・システムがリストされることを確認します。

      df -h
      
      [root@vsi4classic ~]# mkdir /PerfDisk
      [root@vsi4classic ~]# mount /dev/mapper/3600a0980383056716724514550666270p1 /PerfDisk
      [root@vsi4classic ~]# df -h
      Filesystem                                       Size  Used Avail Use% Mounted on
      devtmpfs                                         4.0M     0  4.0M   0% /dev
      tmpfs                                            469M     0  469M   0% /dev/shm
      tmpfs                                            188M   11M  177M   6% /run
      /dev/xvda2                                        24G  2.0G   21G   9% /
      /dev/xvda1                                       974M  320M  588M  36% /boot
      tmpfs                                             94M     0   94M   0% /run/user/0
      /dev/mapper/3600a0980383056716724514550666270p1   20G  156K   19G   1% /PerfDisk
      
  5. ブート時の自動マウントを有効にするには、システムの /etc/fstab ファイルに新しいファイルシステムを追加する。

    • 以下の行を /etc/fstab の末尾に追加します (ステップ 3 でメモしたパーティション名を使用します)。
    /dev/mapper/XXXp1    /PerfDisk    ext3    defaults,_netdev    0    1
    

    詳しくは、 Linux /etc/fstab ファイルの紹介を参照。

parted を使用したファイル・システムの作成

Red Hat Enterprise Linux® 9では、 parted がプリインストールされている。 ただし、必要であれば、次のコマンドを実行してインストールすることができます。

dnf install parted

parted を使用してファイル・システムを作成するには、以下のステップに従います。

  1. 対話型 parted シェルを起動します。

    parted
    
  2. ディスク上にパーティションを作成します。

    1. 特に指定がない限り、 parted ユーティリティはプライマリドライブを使用します。多くの場合、これは /dev/sda です。 コマンド select を使用して、パーティション化するディスクに切り替えます。 XXX は、新しいデバイス名に置き換えてください。

      select /dev/mapper/XXX
      
    2. print を実行して、正しいディスクを選択していることを確認してください。

      print
      
    3. パーティションテーブルを作成する。

      mklabel gpt
      
    4. Parted は、1 次ディスク・パーティションと論理ディスク・パーティションの作成に使用できます。それぞれで必要なステップは同じです。 パーティションを作成するために、このユーティリティは mkpart を使用します。 作成するパーティション・タイプに応じて、primarylogical などの他のパラメーターを指定できます。

      mkpart
      

      リストされた単位のデフォルトはメガバイト (MB) です。 10 GB のパーティションを作成するには、1 から開始して 10000 で終了します。 必要に応じて、unit TB と入力することにより、サイズ変更単位をテラバイトに変更することもできます。

    5. parted を使用して、quit を終了します。

      quit
      
  3. 新規パーティション上にファイル・システムを作成します。

    mkfs.ext3 /dev/mapper/XXXp1
    

    このコマンドを実行する際は、正しいディスクとパーティションを選択することが重要です。 パーティション表を表示することで、結果を検証してください。 「ファイルシステム」の列には、「 ext3 」と表示されています。

  4. ファイル・システムのマウント・ポイントを作成し、マウントします。

    • パーティション名 PerfDisk を作成するか、ファイル・システムをマウントする場所を作成します。
    mkdir /PerfDisk
    
    • パーティション名を使用してストレージをマウントします。
    mount /dev/mapper/XXXp1 /PerfDisk
    
    • 新しいファイル・システムがリストされることを確認します。
    df -h
    
  5. ブート時の自動マウントを有効にするには、システムの /etc/fstab ファイルに新しいファイルシステムを追加する。

    • 以下の行を /etc/fstab の末尾に追加します (ステップ 3 で取得したパーティション名を使用します)。
    /dev/mapper/XXXp1    /PerfDisk    ext3    defaults,_netdev    0    1
    

    詳しくは、 Linux /etc/fstab ファイルの紹介を参照。

マウントされたボリュームのコンテンツに対するユーザー権限の管理

システム管理者として、マウントされたボリューム上のデータへのアクセスを管理することができます。 ファイルシステムの準備ができたら、 chownchmod コマンドを使用して、個々のユーザーとグループに読み取り、書き込み、実行権限を割り当てることで、アクセス制御を絞り込むことができる。 詳細については、 Red Hat のチュートリアル「ユーザー、グループ、その他の Linux 権限を管理する方法」 を参照してください。

MPIO 構成の検証

MPIO が正しく構成されていないと、ネットワーク障害が発生した場合や、IBM Cloud® チームが保守を実行するときに、ストレージ・デバイスが切断され、オフラインと表示されます。 MPIOは、こうしたイベント発生時にさらなる接続性を提供し、アクティブな読み書き操作が行われているボリュームへの確立済みセッションを維持します。

  • マルチパスがデバイスをピックアップしているかどうかを確認するには、現在の構成をリストします。 正しく設定されていれば、各ボリュームに1つのグループが存在し、 iSCSI セッション数と同じ数のパスが存在する。

    multipath -l
    
    root@server:~# multipath -l
    3600a09803830304f3124457a45757067 dm-1 NETAPP,LUN C-Mode
    size=20G features='1 queue_if_no_path' hwhandler='0' wp=rw
    |-+- policy='round-robin 0' prio=-1 status=active
    | `6:0:0:101 sdd 8:48 active ready running
    `-+- policy='round-robin 0' prio=-1 status=enabled
     `- 7:0:0:101 sde 8:64 active ready running
    

    この例にある「 3600a09803830304f3124457a45757067 」という文字列は、そのボリュームの固有のWWIDです。 各ボリュームは固有のWWIDによって識別され、このIDはボリュームが存在する限り不変です。

  • すべてのディスクが存在することを確認します。 正しい構成では、出力内に同じ ID を持つ 2 つのディスクが表示され、同じ ID で同じサイズの /dev/mapper がリストされている必要があります。 /dev/mapper デバイスが、マルチパスによってセットアップされるデバイスです。

    fdisk -l | grep Disk
    
    • 構成が正しい場合の出力例
    root@server:~# fdisk -l | grep Disk
    Disk /dev/sda: 500.1 GB, 500107862016 bytes Disk identifier: 0x0009170d
    Disk /dev/sdc: 21.5 GB, 21474836480 bytes Disk identifier: 0x2b5072d1
    Disk /dev/sdb: 21.5 GB, 21474836480 bytes Disk identifier: 0x2b5072d1
    Disk /dev/mapper/3600a09803830304f3124457a45757066: 21.5 GB, 21474836480 bytes Disk identifier: 0x2b5072d1
    

    マルチパスで作成されるデバイス名に WWID が含まれています。 WWIDはアプリケーションで使用することを推奨する。

    • 構成が間違っている場合の出力例。 /dev/mapper ディスクが存在しない。
    root@server:~# fdisk -l | grep Disk
    Disk /dev/sda: 500.1 GB, 500107862016 bytes Disk identifier: 0x0009170d
    Disk /dev/sdc: 21.5 GB, 21474836480 bytes Disk identifier: 0x2b5072d1
    Disk /dev/sdb: 21.5 GB, 21474836480 bytes Disk identifier: 0x2b5072d1
    
  • マルチパスデバイスの一覧にローカルディスクが含まれていないことを確認するには、詳細レベル3で現在の設定を表示してください。 以下のコマンドの出力では、デバイスと、ブロック・リストに追加されたデバイスが表示されます。

    multipath -l -v 3 | grep sd <date and time>
    
  • 2つ目のパスが停止している間にボリュームがプロビジョニングされ、アタッチされた場合、ホストは初めて検出スキャンが実行されたときに1つのパスを見るかもしれません。 このまれな現象が発生した場合は、 IBM Cloud® ステータスページをチェックして、ホストがストレージにアクセスする能力に影響を与えるイベントが進行中かどうかを確認してください。 イベントが報告されない場合は、ディスカバリスキャンを再度実行し、すべてのパスが正しく検出されていることを確認してください。 イベントが進行中であれば、ストレージはシングルパスで接続できる。 ただし、イベント終了後にパスを再スキャンすることが重要です。 再スキャンを行っても両方のパスが検出されない場合は、適切に調査できるよう、 サポートケースを作成してください

Block Storage for Classic ボリュームのアンマウント

  1. ファイル・システムをアンマウントします。
    umount /dev/mapper/XXXp1 /PerfDisk
    
  2. そのターゲット・ポータルに他のボリュームがない場合は、ターゲットからログアウトできます。
    iscsiadm -m node -T <TARGET NAME> -p <PORTAL IP:PORT> --logout
    
  3. そのターゲット・ポータルに他のボリュームがない場合は、ターゲット・ポータル・レコードを削除して、今後ログインを試行できないようにします。
    iscsiadm -m node -o delete -T <TARGET IQN> -p <PORTAL IP:PORT>
    
    詳細については、『 iscsiadm 』マニュアルを参照してください。