能夠完成 iSCSI target/initiator 設定的專案非常多 (註4),鳥哥找的到的就有底下這幾個:
- Linux SCSI target framework (tgt):http://stgt.sourceforge.net/
- Linux-iSCSI Project:http://linux-iscsi.sourceforge.net/
- Open-iSCSI:http://www.open-iscsi.org/
由於被我們 CentOS 6.x 官方直接使用的是 tgt 這個軟體,因此底下我們會使用 tgt 來介紹整個 iSCSI target 的設定喔!
18.2.1 所需軟體與軟體結構
CentOS 將 tgt 的軟體名稱定義為 scsi-target-utils ,因此你得要使用 yum 去安裝他才行。至於用來作為 initiator 的軟體則是使用 linux-iscsi 的專案,該專案所提供的軟體名稱則為 iscsi-initiator-utils 。所以,總的來說,你需要的軟體有:
- scsi-target-utils:用來將 Linux 系統模擬成為 iSCSI target 的功能;
- iscsi-initiator-utils:掛載來自 target 的磁碟到 Linux 本機上。
那麼 scsi-target-utils 主要提供哪些檔案呢?基本上有底下幾個比較重要需要注意的:
- /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:建置預計分享的映像檔裝置的工具 (以映像檔模擬磁碟);
其實 CentOS 已經將很多功能都設定好了,因此我們只要修訂設定檔,然後啟動 tgtd 這個服務就可以囉! 接下來,就讓我們實際來玩一玩 iSCSI target 的設定吧!
18.2.2 target 的實際設定
從上面的分析來看,iSCSI 就是透過一個網路介面,將既有的磁碟給分享出去就是了。那麼有哪些類型的磁碟可以分享呢? 這包括:
- 使用 dd 指令所建立的大型檔案可供模擬為磁碟 (無須預先格式化);
- 使用單一分割槽 (partition) 分享為磁碟;
- 使用單一完整的磁碟 (無須預先分割);
- 使用磁碟陣列分享 (其實與單一磁碟相同方式);
- 使用軟體磁碟陣列 (software raid) 分享成單一磁碟;
- 使用 LVM 的 LV 裝置分享為磁碟。
其實沒有那麼複雜,我們大概知道可以透過 (1)大型檔案; (2)單一分割槽; (3)單一裝置 (包括磁碟、陣列、軟體磁碟陣列、LVM 的 LV 裝置檔名等等) 來進行分享。在本小節當中,我們將透過新的分割產生新的沒有用到的分割槽、LVM 邏輯捲軸、大型檔案等三個咚咚來進行分享。既然如此,那就得要先來搞定這些咚咚囉! 要注意喔,等一下我們要分享出去的資料,最好不要被使用,也最好不要開機就被掛載 (/etc/fstab 當中沒有存在記錄的意思)。 那麼就來玩玩看囉!
-
建立所需要的磁碟裝置
既然 iSCSI 要分享的是磁碟,那麼我們得要準備好啊!目前預計準備的磁碟為:
- 建立一個名為 /srv/iscsi/disk1.img 的 500MB 檔案;
- 使用 /dev/sda10 提供 2GB 作為分享 (從第一章到目前為止的分割數);
- 使用 /dev/server/iscsi01 的 2GB LV 作為分享 (再加入 5GB /dev/sda11 到 server VG 中)。
實際處理的方式如下:
# 1. 建立大型檔案:
[root@www ~]# mkdir /srv/iscsi
[root@www ~]# dd if=/dev/zero of=/srv/iscsi/disk1.img bs=1M count=500
[root@www ~]# chcon -Rv -t tgtd_var_lib_t /srv/iscsi/
[root@www ~]# ls -lh /srv/iscsi/disk1.img
-rw-r--r--. 1 root root 500M Aug 2 16:22 /srv/iscsi/disk1.img <==容量對的!
# 2. 建立實際的 partition 分割:
[root@www ~]# fdisk /dev/sda <==實際的分割方式自己處理吧!
[root@www ~]# partprobe <==某些情況下得 reboot 喔!
[root@www ~]# fdisk -l
Device Boot Start End Blocks Id System
/dev/sda10 2202 2463 2104483+ 83 Linux
/dev/sda11 2464 3117 5253223+ 8e Linux LVM
# 只有輸出 /dev/sda{10,11} 資訊,其他的都省略了。注意看容量,上述容量單位 KB
[root@www ~]# swapon -s; mount | grep 'sda1'
# 自己測試一下 /dev/sda{10,11} 不能夠被使用喔!若有被使用,請 umount 或 swapoff
# 3. 建立 LV 裝置 :
[root@www ~]# pvcreate /dev/sda11
[root@www ~]# vgextend server /dev/sda11
[root@www ~]# lvcreate -L 2G -n iscsi01 server
[root@www ~]# lvscan
ACTIVE '/dev/server/myhome' [6.88 GiB] inherit
ACTIVE '/dev/server/iscsi01' |