TCM是Linux IO Target即LIO的別稱,是核心態的iSCSI target。TCMU(TCM in Userspace)是LIO的使用者態實現,允許使用者程式方便地對接各種使用者態後端實現。基於TCMU架構和LIO loopback即tcm_loop模組,可以很方便地實現使用者態iSCSI target。本文介紹Alibaba Cloud Linux 3中如何配置tcm_loop裝置參數,以配合使用者態後端最佳化IO效能。
使用限制
作業系統:Alibaba Cloud Linux 3
核心版本:
5.10.134-17
及以上版本
tcm_loop裝置參數配置說明
通過載入tcm_loop模組時配置相關參數,即可將相應參數配置應用到新建立的tcm_loop裝置。當前tcm_loop模組一共支援4個可配置的參數,分別為:
nr_hw_queues,表示裝置的硬體隊列數量,預設值為1。
can_queue,表示每個硬體隊列的隊列深度,預設值1024。
cmd_per_lun,表示SCSI裝置每個邏輯單元編號(LUN)可執行檔最大命令數量,預設值1024。
sg_tablesize,表示裝置最大分散聚集(scatter-gather)表大小,預設值256。
方法一:通過模組載入時手動設定
若您已載入過
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
方法二:通過設定檔配置
若您已載入過
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
,實現模組載入預設參數的修改。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