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。
執行
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
方法一:通過模塊加載時手動配置
若您已加載過
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