Ubuntu OSに iSCSI ボリュームをマウントする

冗長化された高性能ストレージアクセスを実現するマルチパスI/Oを使用して、 Block Storage for Classic ボリュームを Ubuntu にマウントする方法について説明します。

チュートリアルに従って、 Ubuntu オペレーティング・システムを搭載したサーバーに IBM Cloud® Block Storage for Classic ボリュームをマウントする。 ホストの 1 つのネットワーク・インターフェースからストレージ・アレイの 2 つのターゲット IP アドレスへの 2 つの接続を作成します。

「 iSCSI 」サービスが「 Ubuntu 」OS上でどのように動作するかについての詳細は、「 iSCSI 」イニシエーター(またはクライアント) のドキュメントを参照してください。 その他の Linux® オペレーティングシステムをご利用の場合は、お使いのディストリビューションのドキュメントを参照し、マルチパスがパス優先順位設定において非対称論理ユニットアクセス(ALUA)をサポートしていることを確認してください。

開始前に

  1. コンソール、CLI、API、または Terraform を使用して 、Classic の仮想サーバーを作成します

  2. 同じデータセンターで ブロック・ストレージ・ボリュームを注文する

  3. ホストが Block Storage for Classic ボリュームにアクセスする権限があることを確認する。 詳細については、コンソールでホストを承認するCLIからホストを認証するTerraform でホストを承認する。 認証が完了したら、ユーザー名、パスワード、ホストIQN情報を記録する。

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

iSCSI, の設定を始める前に、open-iscsi パッケージが正しく動作するように、特に起動時にネットワークインターフェイスが正しく設定され、構成されていることを確認してください。 Ubuntu の新しいバージョンでは、ネットワークアドレス情報を設定する主なツールは Netplan です。 YAML 設定ファイルを使用してネットワーク設定を定義し、 /etc/network/interfaces のような古い方法に取って代わる。 Netplanは、コマンドラインまたはデスクトップ環境の NetworkManager。

ファイアウォールをバイパスするように VLAN 上でストレージ・トラフィックを実行することをお勧めします。 ソフトウェア・ファイアウォールを介してストレージ・トラフィックを実行すると、待ち時間が増加し、ストレージ・パフォーマンスに悪影響を与えます。 ストレージ・トラフィックを独自の VLAN インターフェースにルーティングすることについて詳しくは、FAQ を参照してください。

iSCSI とマルチパス・ユーティリティーのインストール

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

  • OSを更新する:

    apt-get update
    
  • open-iscsi をインストールします。

    sudo apt install open-iscsi
    

    パッケージがインストールされると、以下の 2 つのファイルが作成されます。

    • /etc/iscsi/iscsid.conf
    • /etc/iscsi/initiatorname.iscsi
  • サービスを開始する:

    systemctl enable open-iscsi
    
    systemctl enable iscsid
    
  • multipath-tools をインストールします。

    sudo apt install multipath-tools
    

ISCSIの設定

イニシエータ名の更新

  1. /etc/iscsi/initiatorname.iscsi ファイルが存在することを確認し、その内容を確認する。

    cat /etc/iscsi/initiatorname.iscsi
    
    root@vsi4classicubuntu:~# cat /etc/iscsi/initiatorname.iscsi
    GenerateName=yes
    
  2. テキストエディタを使用して、 IBM Cloud® コンソールから IQN で /etc/iscsi/initiatorname.iscsi ファイルを更新する。 以下の形式で値を入力してください。

    InitiatorName=<IQN-value-from-the-portal>
    

資格情報の構成

  1. ファイル iscsid.conf が存在することを確認するには、その内容を確認してください。

    cat /etc/iscsi/iscsid.conf
    
  2. テキストエディタを使って、以下のエントリーのコメントを解除し、編集する。 ユーザー名とパスワードは、 IBM Cloud® コンソールで確認できます。

    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. 変更を有効にするために、iscsi サービスを再始動します。

    systemctl restart iscsid.service
    

詳細については、 Ubuntu マニュアル - iscsid および Ubuntu マニュアル - systemctl をご覧ください。

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

  1. マルチパスユーティリティをインストールしたら、 multipath.conf ファイルのデフォルトの内容を確認できます。

    cat /etc/multipath.conf
    
  2. テキストエディタで /etc/multipath.conf のデフォルト値を、以下のスニペットの内容で置き換えて変更してください。

    defaults {
    user_friendly_names no
    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 "3 queue_if_no_path pg_init_retries 50"
    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/mpathn 」という形式になるようシステムを設定します。ここで、 mpathn はデバイスのWWID(World Wide Identifier)番号です。 詳細については 、 Ubuntu のマニュアル - multipath.conf をご覧ください。

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

  4. マルチパス・サービスを開始します。

    service multipath-tools start
    
    1. 必要なサービスを有効にします。

    マルチパスデーモンを起動した後にマルチパス設定ファイルを編集する必要がある場合は、変更を反映させるために multipathd サービスを再起動する必要があります。

    Ubuntu 20 でのデバイスマッパー・マルチパス機能の使用に関する詳細については、「 デバイスマッパー・マルチパシングの概要」を参照してください。

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

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

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

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

    iscsiadm -m discovery -t sendtargets -p <ip-value-from-IBM-Cloud-console>
    

    IP 情報とアクセスの詳細が表示されている場合、ディスカバリーは成功しています。

    root@vsi4classicubuntu:~# iscsiadm -m discovery -t sendtargets -p 161.26.114.197
    161.26.114.197:3260,1052 iqn.1992-08.com.netapp:stfdal1304
    161.26.114.196:3260,1049 iqn.1992-08.com.netapp:stfdal1304
    
  2. 自動ログインを構成します。

    sudo iscsiadm -m node --op=update -n node.conn[0].startup -v automatic
    sudo iscsiadm -m node --op=update -n node.startup -v automatic
    
  3. iSCSI アレイにログインします。

    sudo iscsiadm -m node --login
    

構成の検証

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

    iscsiadm -m session -o show
    
    root@vsi4classicubuntu:~# iscsiadm -m session -o show
    tcp: [3] 161.26.114.197:3260,1052 iqn.1992-08.com.netapp:stfdal1304 (non-flash)
    tcp: [4] 161.26.114.196:3260,1049 iqn.1992-08.com.netapp:stfdal1304 (non-flash)
    
  2. 複数のパスがあることを検証します。

    multipath -ll
    

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

    root@vsi4classicubuntu:~# multipath -ll
     3600a0980383056666424506a33426478 dm-0 NETAPP,LUN C-Mode
     size=500G features='3 queue_if_no_path pg_init_retries 50' hwhandler='1 alua'
     wp=rw
     |-+- policy='service-time 0' prio=50 status=active
     | `- 3:0:0:0 sdb 8:16 active ready running
     `-+- policy='service-time 0' prio=10 status=enabled
       `- 2:0:0:0 sda 8:0    active ready running
    

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

    この例では、3600a0980383056666424506a33426478 は、ボリュームが存在する限り永続的に保持される WWID です。 アプリケーションで WWID を使用することをお勧めします。 また、 multipath.conf 内で「user_friendly_names」または「alias」キーワードを使用することで、より読みやすい名前を割り当てることも可能です。

  3. dmesgを調べて、新しいディスクが検出されたことを確認します。

    dmesg
    

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

ボリュームをホスト上にマウントしてアクセス可能にした後に、ファイル・システムを作成できます。 新しくマウントされたボリュームにファイル・システムを作成するには、以下の手順に従います。

  1. パーティションを作成します。

    $ sudo fdisk /dev/mapper/mpatha
    
    Welcome to fdisk (util-linux 2.34).
    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 0x92c0322a.
    
    Command (m for help): p
    Disk /dev/mapper/mpatha: 1 GiB, 1073741824 bytes, 2097152 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 65536 bytes
    Disklabel type: dos
    Disk identifier: 0x92c0322a
    
    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):
    First sector (2048-2097151, default 2048):
    Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-2097151, default 2097151):
    
    Created a new partition 1 of type 'Linux' and of size 1023 MiB.
    
    Command (m for help): w
    The partition table has been altered.
    
  2. ファイル・システムを作成します。

    $ sudo mkfs.ext4 /dev/mapper/mpatha-part1
    mke2fs 1.45.5 (07-Jan-2020)
    Creating filesystem with 261888 4k blocks and 65536 inodes
    Filesystem UUID: cdb70b1e-c47c-47fd-9c4a-03db6f038988
    Superblock backups stored on blocks:
            32768, 98304, 163840, 229376
    
    Allocating group tables: done
    Writing inode tables: done
    Creating journal (4096 blocks): done
    Writing superblocks and filesystem accounting information: done
    
  3. ブロック・デバイスをマウントします。

    sudo mount /dev/mapper/mpatha-part1 /mnt
    
  4. データにアクセスして、新しいパーティションとファイル・システムを使用する準備ができていることを確認します。

    ls /mnt
    

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

ボリュームが不要になったら、削除する前にマウントを解除してください。

  1. ファイル・システムをアンマウントします。

    umount /dev/mapper/XXXp1 /PerfDisk
    

    詳細については 、 Ubuntu のマニュアル( umount )をご覧ください。

  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>
    

    詳細については 、 Ubuntu のマニュアル( iscsiadm )をご覧ください。