ターゲットコアモジュール (TCM) は、カーネル内インターネットスモールコンピュータシステムインターフェイス (iSCSI) ターゲットであるLinux-IOターゲット (LIO) の別名です。 ユーザ空間におけるTCM (TCMU) は、LIOのユーザ空間実装である。 TCMUにより、ユーザ空間プログラムは、便利な方法で様々なユーザ空間バックエンド実装と協調することができる。 TCMUフレームワークとLIOループバック (tcm_loop) モジュールに基づいて、ユーザースペースiSCSIターゲットを簡単に実装できます。 このトピックでは、Alibaba Cloud Linux 3でtcm_loopデバイスパラメーターを設定して、ユーザースペースのバックエンドと連携してI/Oパフォーマンスを最適化する方法について説明します。
制限事項
オペレーティングシステム: Alibaba Cloud Linux 3
カーネルバージョン:
5.10.134-17以降
tcm_loopデバイスパラメータ
tcm_loopモジュールをロードするときに、tcm_loopデバイスパラメータを設定できます。 パラメーター設定は、すべてのtcm_loopデバイスに適用されます。 tcm_loopモジュールは、次の設定可能なパラメータをサポートします。
nr_hw_queues: tcm_loopデバイスのハードウェアキューの数を指定します。 デフォルト値は 1 です。
can_queue: 各ハードウェアキューのキュー深度を指定します。 デフォルト値: 1024。
cmd_per_lun: SCSI (Small Computer System Interface) デバイスが論理ユニット番号 (LUN) ごとに実行できるコマンドの最大数を指定します。 デフォルト値: 1024。
sg_tablesize: tcm-loopデバイスのスキャッタギャザーテーブルの最大サイズを指定します。 デフォルト値: 256
方法1: tcm_loopモジュールをロードするときのtcm_loopデバイスパラメーターの設定
tcm_loopモジュールをロードした場合は、次のコマンドを実行してモジュールを削除します。sudo modprobe -r tcm_loopmodprobeコマンドを実行してtcm_loopモジュールをロードします。<nr_hw_queues> 、<can_queue> 、<cmd_per_lun> 、および <sg_tablesize> を、指定する値に置き換えます。
sudo modprobe tcm_loop nr_hw_queues=<nr_hw_queues> can_queue=<can_queue> cmd_per_lun=<cmd_per_lun> sg_tablesize=<sg_tablesize>たとえば、
nr_hw_queuesを4、can_queueを2048、cmd_per_lunを2048、sg_tablesizeを512に設定します。sudo modprobe tcm_loop nr_hw_queues=4 can_queue=2048 cmd_per_lun=2048 sg_tablesize=512パラメーター設定が有効かどうかを確認します。
cat /sys/module/tcm_loop/parameters/nr_hw_queues cat /sys/module/tcm_loop/parameters/can_queue cat /sys/module/tcm_loop/parameters/cmd_per_lun cat /sys/module/tcm_loop/parameters/sg_tablesize
方法2: 設定ファイルを使用してtcm_loopデバイスパラメーターを設定
tcm_loopモジュールをロードした場合は、次のコマンドを実行してモジュールを削除します。sudo modprobe -r tcm_loopファイルを作成して構成します。
<tcm_loop.conf> 、<nr_hw_queues> 、<can_queue> 、<cmd_per_lun> 、および <sg_tablesize> を、指定する値に置き換えます。
sudo bash -c "cat > /etc/modprobe.d/<tcm_loop.conf> << EOF options tcm_loop nr_hw_queues=<nr_hw_queues> can_queue=<can_queue> cmd_per_lun=<cmd_per_lun> sg_tablesize=<sg_tablesize> EOF"たとえば、次のコマンドを実行して、
/etc/modprobe.dディレクトリにtcm_loop.confという名前の設定ファイルを作成して、tcm_loopデバイスパラメーターの値を設定します。sudo bash -c "cat > /etc/modprobe.d/tcm_loop.conf << EOF options tcm_loop nr_hw_queues=4 can_queue=2048 cmd_per_lun=2048 sg_tablesize=512 EOF"modprobeコマンドを実行してtcm_loopモジュールをロードします。sudo modprobe tcm_loopパラメーター設定が有効かどうかを確認します。
cat /sys/module/tcm_loop/parameters/nr_hw_queues cat /sys/module/tcm_loop/parameters/can_queue cat /sys/module/tcm_loop/parameters/cmd_per_lun cat /sys/module/tcm_loop/parameters/sg_tablesize