一筐带、 SCST簡介
??????? SCST是Generic SCST Target Subsystem for Linux(Linux通用SCSI目標(biāo)子系統(tǒng))的簡稱滓侍,它是Linux SCSI目標(biāo)子系統(tǒng)的一種實現(xiàn),為Linux內(nèi)核和SCST Target Driver之間提供了一個統(tǒng)一的接口费薄,同時提供了Linux內(nèi)核與存儲后端的句柄連接,用來連接真實或模擬的存儲后端與目標(biāo)驅(qū)動程序。SCST服務(wù)由SCST彤叉、iSCSI-SCST和scstadmin三個部分構(gòu)成:
1. SCST
??????? SCST在Linux內(nèi)核層和SCSI目標(biāo)驅(qū)動層之間提供統(tǒng)一的、持久的接口村怪,它盡可能地簡化了目標(biāo)驅(qū)動的開發(fā)秽浇。SCST支持如下5種I/O模式:
??????? (1).pass-through:此模式下,initiators的SCSI命令將不被修改地直接傳給Target端的SCSI硬件甚负。
??????? (2).fileio:默認(rèn)情況下SCST的導(dǎo)出模式是fileio柬焕,它允許使用文件系統(tǒng)上的文件或者塊設(shè)備作為虛擬的SCSI設(shè)備或光驅(qū)。Fileio模式可以充分利用Linux的cache梭域。NV_CACHE是fileio的一種模式斑举,它可以提供最好的性能。
??????? (3).blockio:繞開系統(tǒng)的page-cache(頁面緩存)直接bio碰辅。該模式適用于后端存儲設(shè)備比較高端或者不需要caching的應(yīng)用或者需要大量塊級吞吐的環(huán)境核芽。
??????? (4).user space:在SCST環(huán)境中使用用戶空間的虛擬SCSI設(shè)備模擬執(zhí)行枷邪。
??????? (5).performance:不與底層的SCSI設(shè)備發(fā)生實際的數(shù)據(jù)傳輸椎咧,只提供直接的性能改進(jìn)措施淫痰。
2.iSCSI-SCST
??????? 目標(biāo)驅(qū)動,與設(shè)備驅(qū)動程序一起工作循衰。主要負(fù)責(zé)接收主機(jī)命令铲敛,維護(hù)目標(biāo)端和啟動段的傳輸通道,并根據(jù)命令處理狀態(tài)向主機(jī)返回信息会钝。在Initiator看來伐蒋,Target就是一個專屬的SCSI Host工三,將用戶分配的LUN或DISK映射成為遠(yuǎn)程可訪問的虛擬設(shè)備。
??????? 目前為止SCST支持的Target驅(qū)動包括:iSCSI-SCST先鱼、FC Target俭正、FCoE Target、SAS焙畔、InfiniBand和并行的SCSI設(shè)備掸读。
??????? Target驅(qū)動作為存儲操作系統(tǒng)中不可或缺的組成部分,其性能直接影響到系統(tǒng)的性能和用戶體驗宏多,因此儿惫,大多數(shù)高性能的Target驅(qū)動,都工作在內(nèi)核態(tài)伸但,SCST Target的驅(qū)動也不例外肾请,這樣的設(shè)計減少了系統(tǒng)調(diào)用,提高了資源利用率更胖,支持的數(shù)據(jù)吞吐率也自然就比較高铛铁。
3. scstadmin
??????? scstadmin是SCST的配置和管理腳本,它可以接受命令行輸入或者直接讀取SCST的配置文件(/etc/scst.conf)來管理scst却妨。
二避归、 SCST補(bǔ)丁及Cent OS內(nèi)核編譯
??????? 由于SCST Target驅(qū)動是工作在內(nèi)核態(tài)的,我們首先需要做的就是將SCST補(bǔ)丁打包進(jìn)內(nèi)核并對內(nèi)核進(jìn)行重新編譯管呵。在此我們使用CentOS6.3(Kernel版本2.6.32-279)作為SCST的Target端。
1. 準(zhǔn)備工作
??????? (1).完全安裝Cent OS 6.3
??????? 在安裝過程中需要將鏡像中所有的安裝包全部選中哺窄,以免內(nèi)核無法正常編譯捐下。安裝完成后將防火墻關(guān)閉。
??????? (2).下載Cent OS內(nèi)核源碼包與SCST服務(wù)所需要的安裝包萌业。
??????? Cent OS 6.3內(nèi)核源碼包下載地址:http://vault.centos.org/6.3/os/Source/SPackages/
??????? SCST安裝包下載地址:http://sourceforge.net/projects/scst/files/
??????? (3).獲取Linux Kernel源碼包:
??????? 從CentOS官網(wǎng)上下載完kernel-2.6.32-279.el6.src.rpm后,在Linux系統(tǒng)下右鍵單擊然后選擇“Open with Archive Manager”打開rpm包坷襟,將linux-2.6.32-279.el6.tar.bz2復(fù)制到/usr/src/kernels下。
??????? (4).放置SCST安裝包
??????? 在/root下新建scst文件夾生年,然后將iscssi-scst-3.0.0.tar.bz2婴程、scst-3.0.0.tar.bz2、scstadmin-3.0.0.tar.bz2放到/root/scst下抱婉,并使用tar命令解壓:
??????? #cd /root/scst
??????? #tar –xvf iscssi-scst-3.0.0.tar.bz2
??????? #tar –xvf scst-3.0.0.tar.bz2
??????? #tar –xvf scstadmin-3.0.0.tar.bz2
??????? (5).掛載HDD作為虛擬空間
??????? #mkdir /mnt/vdisk1
??????? #mkdir /mnt/vdisk2
??????? #fdisk /dev/sdb(新建分區(qū))
??????? #mkfs.ext3 –T largefile /dev/sdb1(格式化新分區(qū))
??????? #mount /dev/sdb1 /mnt/vdisk1(掛載分區(qū))
??????? #chmod –R 777 /mnt/vdisk1(賦予讀寫權(quán)限)
??????? #fdisk /dev/sdc
??????? #mkfs.ext3 –T largefile /dev/sdc1
??????? #mount /dev/sdb1 /mnt/vdisk2
??????? #chmod –R 777 /mnt/vdisk2
2.補(bǔ)丁&編譯內(nèi)核
??????? (1).解壓Linux內(nèi)核源碼包并打補(bǔ)兜凳濉(注:打補(bǔ)丁時不能有error出現(xiàn))
??????? #cd /usr/src/kernels
??????? #tar –xvf linux-2.6.32-279.el6.tar.bz2
??????? #cd linux-2.6.32-279.el6
??????? #patch –p1 < /root/scst/iscsi-scst-3.0.0/kernel/patches/rhel/put_page_callback-2.6.32-279.patch
??????? #patch –p1 < /root/scst/scst-3.0.0/kernel/rhel/scst_exec_req_fifo-2.6.32.patch
??????? (2).編譯內(nèi)核(注:內(nèi)核編譯過程中不能有任何error出現(xiàn))
??????? #make menuconfig
??????????????? 1) Networking supportàNetworking options -> Enable “TCP/IP zero-copy transfer completion notification” (只有當(dāng)SCST補(bǔ)丁成功打進(jìn)kernel中時這個選項才會出現(xiàn))
??????????????? 2) File systems -> Enable “XFS Quota support”, “XFS POSIX ACL support” and “XFS Realtime subvolume support”
??????????????? 3) Enable loadable module support -> Disable “Module signature verification”
??????????????? 4) Cryptographic API -> Disable “In-kernel signature checker”
??????????????? 5) Exit and save your new kernel configuration
??????? #make(根據(jù)Server配置,此過程需要1~3個小時)
??????? #make modules
??????? #make modules_install
??????? #make install
??????? 內(nèi)核編譯完成后要重新啟動機(jī)器蒸绩,并且選擇新內(nèi)核進(jìn)入Cent OS6.3衙四。
三、SCST服務(wù)
1. SCST安裝
??????? 先安裝scst,然后再安裝iscsi-scst與scstadmin患亿,順序不能亂传蹈,不然會報錯。
??????? #cd /root/scst/scst-3.0.0
??????? #make all
??????? #make install
??????? #cd ../iscsi-scst-3.0.0
??????? #make all
??????? #make install
??????? #cd ../scstadmin-3.0.0
??????? #make all
??????? #make install
2. 配置scst.conf文件
??????? 從/root/scst/iscsi-scst-3.0.0/etc下將SCST的配置文件scst.conf拷貝到/etc目錄下,然后將配置增加到scst.conf中,修改后的scst.conf文件如下:
??????? HANDLER vdisk_fileio {
??????????? DEVICE disk01 {
??????????????? filename /dev/sdb1
??????????????? nv_cache 1
?????? ? ?? }
??????????? DEVICE disk02 {
??????????????? filename /dev/sdc1
??????????????? nv_cache 1
??????????? }
??????? }
??????? TARGET_DRIVER iscsi {
??????????????? enabled 1
??????????????? TARGET iqn.2006-10.net.vlnb:tgt {
??????????????????????? LUN 0 disk01
??????????????????????? LUN 1 disk02
??????????????????????? enabled 1
??????????????? }
??????? }
3. SCST服務(wù)開啟
??????? #chkconfig –add scst
??????? #chkconfig –level 2345 scst on
??????? #chkconfig –list scst(可以看到scst服務(wù)配置情況:scst 0:off 1:off 2:on 3:on 4:on 5:on 6:off)
??????? #service scst start
??????? 當(dāng)Scst服務(wù)成功開啟后惦界,通過lsmod可以看到scst相關(guān)的模塊:
??????? #lsmod | grep scst
??????????????? iscsi_scst???????????????????????????????81078 ?????????????4
??????????????? scst_vdisk??????????????????73016 ?????????????0
??????????????? scst ????????????????????????????1631446 ?????????2 ?????????iscsi_scst,scst_vdisk
??????????????? libcrc32c ????????????????????1246 ???????????????2 ?????????iscsi_scst,scst_vdisk
四挑格、Initiator連接
??????? 示例為在Windows Server 2008R2下通過系統(tǒng)自帶的iSCSI Initiator工具(Control Pannel -> iSCSI Initiator)來進(jìn)行iSCSI功能的連接,如下圖所示,在Target中輸入scst server的IP地址后點(diǎn)擊Quick Connect沾歪,即可自動連接iSCSI server漂彤,我們可以發(fā)現(xiàn)在Disk Management中出現(xiàn)了新的HDD,這個新的HDD就是iSCSI server虛擬出來的瞬逊。
Reference:
1.SCST官方網(wǎng)址:http://scst.sourceforge.net/
2.SCST, a SCSI Target Framework :http://events.linuxfoundation.org/sites/events/files/slides/lcna15_bvanassche.pdf