ターゲットコアモジュール (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_loop
modprobe
コマンドを実行して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