您好,登錄后才能下訂單哦!
tgt服務(wù)端流程是怎樣的,針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。
Figure1 tgt流程圖
安裝tgt包:
yum --enablerepo=epel -y install scsi-target-utils
安裝完成后,啟動(dòng) TGT 服務(wù):
# service tgtd start
如果想在系統(tǒng)啟動(dòng)時(shí)自動(dòng)啟動(dòng) TGT 服務(wù),可以使用如下命令:
# chkconfig tgtd on
如果想確認(rèn) TGT 服務(wù)是否啟動(dòng),可以用 # servicetgtd status 查看服務(wù)狀態(tài);當(dāng)然,也可以查詢 TGT 服務(wù)占用的端口:
# netstat -anlpt | grep 3260
其中,3260 是 TGT 服務(wù)的監(jiān)聽(tīng)端口。結(jié)果如下:
創(chuàng)建Target:
tgtadm --lld iscsi --mode target --op new --tid 2--targetname iqn.2012-12.com.example:server.target
查詢Target:
tgtadm --lld iscsi--mode target --op show
查詢?cè)敿?xì)信息:
tgtadm --lld iscsi--mode target --op show --tid 2
創(chuàng)建用作LUN的文件:
ddif=/dev/zero of=/home/lun.bin count=0 obs=1 seek=1G
添加LUN:(需要關(guān)閉SELinux,否則報(bào)錯(cuò)invalid)
tgtadm --lld iscsi--mode logicalunit --op new --tid 2 --lun 1 --backing-store /home/lun.bin
修改配置文件需要重啟機(jī)器:
修改/etc/selinux/config 文件
將SELINUX=enforcing改為SELINUX=disabled
重啟機(jī)器即可
設(shè)置訪問(wèn)權(quán)限all:(服務(wù)端權(quán)限要設(shè)到具體IP,否則客戶端discover失?。?/strong>
tgtadm --lldiscsi --mode target --op bind --tid 2 -I all
tgtadm --lld iscsi--mode target --op bind --tid 2 -I 192.168.56.103
iscsi initiator 連接(需要關(guān)閉服務(wù)端防火墻)
systemctl stop firewalld.service
systemctl disable firewalld.service
iscsiadm -m discovery -t sendtargets -p 192.168.56.102
登錄:
iscsiadm -m node --login
#登錄某一個(gè)
#iscsiadm --mode node --targetname iqn.2012-10.net.cpd:san.target01 --portal 172.16.201.200 --login
查看核對(duì)登錄信息
iscsiadm -m session -o show
登陸后,fdisk -l 能看到iscsi掛載的服務(wù)端設(shè)備,然后可以當(dāng)做正常磁盤(pán)設(shè)備一樣使用。
配置tgt編譯環(huán)境:
去掉doc相關(guān)編譯,網(wǎng)絡(luò)連接問(wèn)題會(huì)卡住,
find -name Makefile | xargs grep O2 -R--colour
make DEBUG=yes
make install
然后就可以gdb調(diào)試了~
tgt流程分析:
http://www.sysnote.org/2014/08/23/tgt-arch/
/usr/sbin/tgtd -f
tgt鎖:
/var/run/tgtd/socket.0.lock
清理鎖:
rm -f /var/run/tgtd/*
殺掉tgtd進(jìn)程:
kill -9 pid
帶debug信息調(diào)試:
gdb -args /usr/sbin/tgtd -f -d 1
執(zhí)行:
tgtadm --lld iscsi --mode target --op new --tid 2--targetname iqn.2012-12.com.example:server.target
觸發(fā):
mgmt_event_handler
main ->ipc_init -> tgt_event_add (mgmt_event_handler )
通過(guò)socket來(lái)觸發(fā)事件:/var/run/tgtd/socket.0
tgtadm 的ipc_mgmt_connect觸發(fā)了tgtd的事件mgmt_event_handler
main -> ipc_mgmt_req -> ipc_mgmt_connect
ipc_mgmt_req -> ipc_mgmt_rsp -> ipc_mgmt_connect
用來(lái)連接進(jìn)程。
多次觸發(fā):
mtask_recv_send_handler 來(lái)進(jìn)行進(jìn)程間通信。
mtask_recv_send_handler ->mtask_received->mtask_execute ->target_mgmt ->tgt_target_create->tgt_device_create
backing 為 0,不會(huì)啟動(dòng)bs工作線程
用來(lái)進(jìn)行具體操作。
執(zhí)行:
tgtadm --lld iscsi --mode logicalunit --op new --tid 2--lun 1 --backing-store /home/lun.bin
觸發(fā):
mgmt_event_handler(添加了管理事件處理)
mtask_recv_send_handler ->mtask_received->mtask_execute -> device_mgmt -> tgt_device_create ->bs_rdwr_init ->bs_thread_open->bs_thread_worker_fn
在執(zhí)行new 后端時(shí),會(huì)調(diào)用 bs_rdwr_init從而開(kāi)啟bs_thread_worker_fn.
創(chuàng)建設(shè)備時(shí),創(chuàng)建了16個(gè)bs工作線程。
3260是監(jiān)聽(tīng)端口
getaddrinfo 來(lái)獲取socketaddr結(jié)構(gòu)鏈表
https://baike.baidu.com/item/getaddrinfo/9021771
main ->bs_init ->bs_init_signalfd (bs_sig_request_done)
信號(hào)量對(duì)應(yīng)的處理函數(shù)是bs_sig_request_done。
初始化后scsi_cmd_perform中才能根據(jù)操作碼op來(lái)找到對(duì)應(yīng)的操作cmd_perform。
bs_thread_worker_fn 中的 info 和 bs_thread_cmd_submit 中的 info 是指向同一塊內(nèi)存x單元(gdb證實(shí))
bs_thread_worker_fn 中從info->pending_list上取下cmd
bs_rdwr_request從設(shè)備句柄fd里讀出信息到scsi的buffer中,這個(gè)函數(shù)應(yīng)該是底層塊設(shè)備的具體操作了。
iscsi_tx_handler ->iscsi_task_tx_start-> iscsi_data_rsp_build 將讀取的數(shù)據(jù)存在conn->rsp.data中
以上基本上就是一個(gè)完整的服務(wù)端讀操作,響應(yīng)給客戶端的流程細(xì)節(jié)。
服務(wù)端上數(shù)據(jù)的讀或?qū)懯怯煽蛻舳丝刂频膔eq->cdb傳值給cmd->scb
bs_rdwr_request 中根據(jù)cmd->scb[0]來(lái)對(duì)塊設(shè)備進(jìn)行操作。
關(guān)于tgt服務(wù)端流程是怎樣的問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。