一、簡介
iSCSI(internet SCSI)技術由IBM公司研究開發,是一個供硬件設備使用的、可以在IP協議的上層運行的SCSI指令集,這種指令集合可以實現在IP網絡上運行SCSI協議,使其能夠在諸如高速千兆以太網上進行路由選擇。iSCSI技術是一種新儲存技術,該技術是將現有SCSI接口與以太網絡(Ethernet)技術結合,使服務器可與使用IP網絡的存儲裝置互相交換資料。
iSCSI是一種基於TCP/IP 的協議,用來建立和管理IP存儲設備、主機和客戶機等之間的相互連接,並創建存儲區域網絡(SAN)。SAN 使得SCSI 協議應用於高速數據傳輸網絡成爲可能,這種傳輸以數據塊級別(block-level)在多個數據存儲網絡間進行。SCSI 結構基於C/S模式,其通常應用環境是:設備互相靠近,並且這些設備由SCSI 總線連接。
iSCSI 的主要功能是在TCP/IP 網絡上的主機系統(啓動器 initiator)和存儲設備(目標器 target)之間進行大量數據的封裝和可靠傳輸過程。
二、配置環境
操作系統:KylinV4serverX86
iSCSI Target:192.168.47.131/ tgt 1:1.0.63-1kord1
操作系統:KylinV4DesktopX86
iSCSI Initiator:192.168.47.128/ open-iscsi 2.0.873+git0.3b4b4500-14kord3
防火牆已關閉:Firewall is not running.
SELINUX=disabled
三、準備工作
iSCSI可分享的設備類型有很多,包括鏡像文件(*.img)、分區(partition)、物理硬盤、raid設備、邏輯卷等,我們給出配置示例的是鏡像和分區。
3.1 模擬鏡像
在iSCSITarget的/srv目錄下創建一個200M大小的鏡像文件。
# mkdir /srv/iscsi
# dd if=/dev/zero of=/srv/iscsi/disk1.img bs=1M count=200
# ll -lh /srv/iscsi/disk1.img
3.2 建立分區
創建一個1G大小的分區/dev/sdb1。
# fdisk /dev/sdb
四、配置iSCSI Target
4.1 安裝tgt
Kylin使用tgt軟件做爲iscsitarget端,我們使用該軟件進行target設置。
# apt-get install tgt
4.2 配置tgt
tgt的主配置文件爲/etc/tgt/targets.conf,下面我們來設置該文件。
在該文件最後新增以下設置:
<target iqn.2014-07.dev.iscsi-target:iscsidisk>
backing-store /srv/iscsi/disk1.img
backing-store /dev/sdb1
</target>
說明:
iqn = iSCSI Qualified Name
iSCSI target的名稱規則如下:
iqn.2014-07.dev.iscsi-target:iscsidisk
iqn.年份-月份.域名反寫.設備識別
每個在同一個target上的backing-store 稱爲邏輯單元號(Logical Unit Number,LUN),這個實驗中有2個LUN。
其他高級設置如initiator-address、incominguser,大家自行查資料。
· iscsi target 配置文檔與管理程序
·
· /etc/tgt/targets.conf 主配置文檔,設置要分享的磁盤
· /usr/sbin/tgt-admin 線上查詢、刪除target 等功能的管理工具;
· /usr/sbin/tgt-setup-lun 建立target 以及設置分享的磁盤與可使用的用戶端等工具軟體。
· /usr/sbin/tgtadm 手動直接管理的管理員工具(可使用配置文檔取代);
· /usr/sbin/tgtd 主要提供iSCSI target 服務的主程式;
· /usr/sbin/tgtimg 建置預計分享的映像檔裝置的工具(以映像檔模擬磁盤)
4.3 重啓iSCSI target
# systemctl restart tgt
# ss -tulnp|grep tgt
查看tgt服務是否已正常啓動
4.4 檢查iSCSI target運行狀態
4.5查看iSCSI target
# tgt-admin --show
LUN0 是控制器,可以看到各個LUN的大小和磁盤路徑。
注意:initiator端連接後才能show出此效果。第六行可以看到客戶端的initiator。
4.6將iSCSI Target服務配置爲開機自啓動
查看是否開機自啓動:
systemctl is-enabled tgt
如果顯示enabled,則表示tgt服務開機會自啓動。
否則,配置開機自啓動:
systemctl enable tgt
再次檢查systemctl is-enabled tgt
至此,iSCSI Target 設定完畢。
五、在客戶端配置iSCSI Initiator
5.1 安裝initiator
# apt-get install open-iscsi
5.2檢查客戶端運行狀態,如果未運行則開啓
# systemctl status open-iscsi
# systemctl restart open-iscsi
5.3 發現Target
iSCSI客戶端連接Target,首先要發現Target
# iscsiadm -m discovery -t sendtargets -p 192.168.47.131
說明:
-m discovery //偵測target
-t sendtargets //通過iscsi協議
-p IP:port //指定target的IP和port,不寫port的話,默認爲3260
5.4 顯示已發現target
查看目前系統上面所有的target
# iscsiadm -m node
5.5 連接target
登錄target
# iscsiadm -m node -p 192.168.47.131 --login
如果怕指定IP什麼太煩,直接連接所有Target
# iscsiadm -m node --login all
5.6 查看磁盤情況
# ls /dev/sd*
可以看到,initiator 上面多了/dev/sdb和/dev/sdc,與target上的LUN一致。這時你就可以像使用本地磁盤一樣使用這些iSCSI設備了,下面我們來測試。
5.7查看iSCSI session信息
用iscsiadm -m session查看iSCSI session和設備信息。
5.8 設置開機自動登錄到iscsi-target
重啓後沒有自動登錄,想要自動登錄target,需要在initiator端修改配置文件/etc/iscsi/nodes/iqn.2014-07.dev.iscsi-target:iscsidisk/192.168.47.131,3260,1/default
配置內容 | 對應語句 |
在開機後是否自動登錄Target。 | node.startup = automatic 表示自動登錄(默認是automatic), node.startup = manual 表示需手動登錄。 |
將node.startup= manual修改爲node.startup = automatic,重啓後自動登錄生效。
5.9將/dev/sdb格式化爲ext4並掛載到本地使用
# fdisk /dev/sdb
根據提示創建主分區/dev/sdb1
n,p,回車,回車,w,q
格式化成ext4格式:
mkfs.ext4 /dev/sdb1
創建掛載點:
mkdir /mnt/iscsi01
掛載到本地:
mount /dev/sdb1 /mnt/iscsi01
開機自動掛載,修改/etc/fstab文件,增加一行。
/dev/sdb1 /mnt/iscsi01 ext4 defaults 0 0
但是因爲文件系統掛載時iscsi磁盤還沒有準備好,因此係統會啓不來!
修改/etc/fstab文件,將掛載方式的defaults修改爲_netdev,即可成功自動掛載!
/dev/sdb1 /mnt/iscsi01 ext4 _netdev 0 0
如果怕系統重啓後,磁盤設備的名稱可能會發生飄移,從而引起文件系統不能掛載上來或者不能正確掛載,使用UUID的方式進行掛載可以解決這個問題。
查看UUID:
blkid
修改/etc/fstab,增加或修改/dev/sdb1的掛載配置如最後一行:
UUID=dec7bc24-4133-475a-bc3b-2b849a57267f /mnt/iscsi01 ext4 _netdev 0 0
保存退出,系統重啓後可見/dev/sdb1已自動掛載到/mnt/iscsi01
--------------------------
銀河麒麟操作系統是天津麒麟信息技術有限公司自主研發的類Linux操作系統,目前有桌面版和服務器版以及一些特種行業的定製版本。銀河麒麟社區版可在http://www.ubuntukylin.com/downloads/自由下載使用。