# 18.2 iSCSI target 的設定
## 18.2 iSCSI target 的設定
能夠完成 iSCSI target/initiator 設定的項目非常多 ([注4](#ps4)),鳥哥找的到的就有底下這幾個:
- 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' [2.00 GB] inherit
```
- 規劃分享的 iSCSI target 檔名
iSCSI 有一套自己分享 target 檔名的定義,基本上,藉由 iSCSI 分享出來的 target 檔名都是以 iqn 為開頭,意思是:『iSCSI Qualified Name (iSCSI 合格名稱)』的意思([注5](#ps5))。那么在 iqn 后面要接啥檔名呢?通常是這樣的:
```
iqn.yyyy-mm.<reversed domain name>:identifier
iqn.年年-月.單位網域名的反轉寫法 :這個分享的target名稱
```
鳥哥做這個測試的時間是 2011 年 8 月份,然后鳥哥的機器是 www.centos.vbird ,反轉網域寫法為 vbird.centos, 然后,鳥哥想要的 iSCSI target 名稱是 vbirddisk ,那么就可以這樣寫:
- iqn.2011-08.vbird.centos:vbirddisk
另外,就如同一般外接式儲存裝置 (target 名稱) 可以具有多個磁盤一樣,我們的 target 也能夠擁有數個磁盤裝置的。 每個在同一個 target 上頭的磁盤我們可以將它定義為邏輯單位編號 (Logical Unit Number, LUN)。我們的 iSCSI initiator 就是跟 target 協調后才取得 LUN 的存取權就是了 ([注5](#ps5))。在鳥哥的這個簡單案例中,最終的結果,我們會有一個 target ,在這個 target 當中可以使用三個 LUN 的磁盤。
- 設定 tgt 的配置文件 /etc/tgt/targets.conf
接下來我們要開始來修改配置文件了。基本上,配置文件就是修改 /etc/tgt/targets.conf 啦。這個檔案的內容可以改得很簡單, 最重要的就是設定前一點規定的 iqn 名稱,以及該名稱所對應的裝置,然后再給予一些可能會用到的參數而已。 多說無益,讓我們實際來實作看看:
```
[root@www ~]# vim /etc/tgt/targets.conf
# 此檔案的語法如下:
<target iqn.相關裝置的target名稱>
backing-store /你的/虛擬設備/完整檔名-1
backing-store /你的/虛擬設備/完整檔名-2
</target>
<target iqn.2011-08.vbird.centos:vbirddisk>
backing-store /srv/iscsi/disk1.img <==LUN 1 (LUN 的編號通常照順序)
backing-store /dev/sda10 <==LUN 2
backing-store /dev/server/iscsi01 <==LUN 3
</target>
```
事實上,除了 backing-store 之外,在這個配置文件當中還有一些比較特別的參數可以討論看看 (man tgt-admin):
- backing-store (虛擬的裝置), direct-store (實際的裝置): 設定裝置時,如果你的整顆磁盤是全部被拿來當 iSCSI 分享之用,那么才能夠使用 direct-store 。不過,根據網絡上的其他文件, 似乎說明這個設定值有點危險的樣子。所以,基本上還是建議單純使用模擬的 backing-store 較佳。例如鳥哥的簡單案例中,就通通使用 backing-store 而已。
- initiator-address (用戶端地址): 如果你想要限制能夠使用這個 target 的客戶端來源,才需要填寫這個設定值。基本上,不用設定它 (代表所有人都能使用的意思), 因為我們后來會使用 iptables 來規范可以聯機的客戶端嘛!
- incominguser (用戶賬號密碼設定): 如果除了來源 IP 的限制之外,你還想要讓使用者輸入賬密才能使用你的 iSCSI target 的話,那么就加用這個設定項目。 此設定后面接兩個參數,分別是賬號與密碼啰。
- write-cache \[off|on\] (是否使用快取): 在預設的情況下,tgtd 會使用快取來增快速度。不過,這樣可能會有遺失數據的風險。所以,如果你的數據比較重要的話, 或許不要使用快取,直接存取裝置會比較妥當一些。
上面的設定值要怎么用呢?現在,假設你的環境中,僅允許 192.168.100.0/24 這個網段可以存取 iSCSI target,而且存取時需要帳密分別為 vbirduser, vbirdpasswd ,此外,不要使用快取,那么原本的配置文件之外,還得要加上這樣的參數才行 (基本上,使用上述的設定即可,底下的設定是多加測試用的,不需要填入你的設定中)。
```
[root@www ~]# vim /etc/tgt/targets.conf
<target iqn.2011-04.vbird.centos:vbirddisk>
backing-store /home/iscsi/disk1.img
backing-store /dev/sda7
backing-store /dev/server/iscsi01
initiator-address 192.168.100.0/24
incominguser vbirduser vbirdpasswd
write-cache off
</target>
```
- 啟動 iSCSI target 以及觀察相關端口與磁盤信息
再來則是啟動、開機啟動,以及觀察 iSCSI target 所啟動的埠口啰:
```
[root@www ~]# /etc/init.d/tgtd start
[root@www ~]# chkconfig tgtd on
[root@www ~]# netstat -tlunp | grep tgt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:3260 0.0.0.0:* LISTEN 26944/tgtd
tcp 0 0 :::3260 :::* LISTEN 26944/tgtd
# 重點就是那個 3260 TCP 封包啦!等一下的防火墻務必要開放這個埠口。
# 觀察一下我們 target 相關信息,以及提供的 LUN 數據內容:
[root@www ~]# tgt-admin --show
Target 1: iqn.2011-08.vbird.centos:vbirddisk <==就是我們的 target
System information:
Driver: iscsi
State: ready
I_T nexus information:
LUN information:
LUN: 0
Type: controller <==這是個控制器,并非可以用的 LUN 喔!
....(中間省略)....
LUN: 1
Type: disk <==第一個 LUN,是磁盤 (disk) 喔!
SCSI ID: IET 00010001
SCSI SN: beaf11
Size: 2155 MB <==容量有這么大!
Online: Yes
Removable media: No
Backing store type: rdwr
Backing store path: /dev/sda10 <==磁盤所在的實際文件名
LUN: 2
Type: disk
SCSI ID: IET 00010002
SCSI SN: beaf12
Size: 2147 MB
Online: Yes
Removable media: No
Backing store type: rdwr
Backing store path: /dev/server/iscsi01
LUN: 3
Type: disk
SCSI ID: IET 00010003
SCSI SN: beaf13
Size: 524 MB
Online: Yes
Removable media: No
Backing store type: rdwr
Backing store path: /srv/iscsi/disk1.img
Account information:
vbirduser <==額外的帳戶信息
ACL information:
192.168.100.0/24 <==額外的來源 IP 限制
```
請將上面的信息對照一下我們的配置文件呦!看看有沒有錯誤就是了!尤其注意每個 LUN 的容量、實際磁盤路徑! 那個項目不能錯誤就是了。(照理說 LUN 的數字應該與 backing-store 設定的順序有關,不過,在鳥哥的測試中, 出現的順序并不相同!因此,還是需要使用 tgt-admin --show 去查閱查閱才好!)
- 設定防火墻
不論你有沒有使用 initiator-address 在 targets.conf 配置文件中,iSCSI target 就是使用 TCP/IP 傳輸數據的, 所以你還是得要在防火墻內設定可以聯機的客戶端才行!既然 iSCSI 僅開啟 3260 埠口,那么我們就這么進行即可:
```
[root@www ~]# vim /usr/local/virus/iptables/iptables.allow
iptables -A INPUT -p tcp -s 192.168.100.0/24 --dport 3260 -j ACCEPT
[root@www ~]# /usr/local/virus/iptables/iptables.rule
[root@www ~]# iptables-save | grep 3260
-A INPUT -s 192.168.100.0/24 -p tcp -m tcp --dport 3260 -j ACCEPT
# 最終要看到上述的輸出字樣才是 OK 的呦!若有其他用戶需要聯機,
# 自行復制 iptables.allow 內的語法,修改來源端即可。
```
- - - - - -
- 鳥哥的Linux私房菜:服務器架設篇 第三版
- 第一部份:架站前的進修專區
- 作者序
- 第一章、架設服務器前的準備工作
- 1.1 前言: Linux 有啥功能
- 1.2 基本架設服務器流程
- 1.3 自我評估是否已經具有架站的能力
- 1.4 本章習題
- 第二章、基礎網絡概念
- 2.1 網絡是個什么玩意兒
- 2.2 TCP/IP 的鏈結層相關協議
- 2.3 TCP/IP 的網絡層相關封包與數據
- 2.4 TCP/IP 的傳輸層相關封包與數據
- 2.5 連上 Internet 前的準備事項
- 2.6 重點回顧:
- 2.7 本章習題
- 2.8 參考數據與延伸閱讀
- 第三章、局域網絡架構簡介
- 3.1 局域網絡的聯機
- 3.2 本書使用的內部聯機網絡參數與通訊協議
- 第四章、連上 Internet
- 4.1 Linux 連上 Internet 前的注意事項
- 4.2 連上 Internet 的設定方法
- 4.3 無線網絡--以筆記本電腦為例
- 4.4 常見問題說明
- 4.5 重點回顧
- 4.6 本章習題
- 4.7 參考數據與延伸閱讀
- 第五章、 Linux 常用網絡指令
- 5.1 網絡參數設定使用的指令
- 5.2 網絡偵錯與觀察指令
- 5.3 遠程聯機指令與實時通訊軟件
- 5.4 文字接口網頁瀏覽
- 5.5 封包擷取功能
- 5.6 重點回顧
- 5.7 本章習題
- 5.8 參考數據與延伸閱讀
- 第六章、 Linux 網絡偵錯
- 6.1 無法聯機原因分析
- 6.2 處理流程
- 6.3 本章習題
- 6.4 參考數據與延伸閱讀
- 第二部分:主機的簡易資安防護措施
- 第七章、網絡安全與主機基本防護:限制端口, 網絡升級與 SELinux
- 7.1 網絡封包聯機進入主機的流程
- 7.2 網絡自動升級軟件
- 7.3 限制聯機埠口 (port)
- 7.4 SELinux 管理原則
- 7.5 被攻擊后的主機修復工作
- 7.6 重點回顧
- 7.7 課后練習
- 7.8 參考數據與延伸閱讀
- 第八章、路由觀念與路由器設定
- 8.1 路由
- 8.2 路由器架設
- 8.3 動態路由器架設:quagga (zebra + ripd)
- 8.4 特殊狀況:路由器兩邊界面是同一個 IP 網段: ARP Proxy
- 8.5 重點回顧
- 8.6 本章習題
- 8.7 參考數據與延伸閱讀
- 第九章、防火墻與 NAT 服務器
- 9.1 認識防火墻
- 9.2 TCP Wrappers
- 9.3 Linux 的封包過濾軟件:iptables
- 9.4 單機防火墻的一個實例
- 9.5 NAT 服務器的設定
- 9.6 重點回顧
- 9.7 本章習題
- 9.8 參考數據與延伸閱讀
- 第十章、申請合法的主機名
- 10.1 為何需要主機名
- 10.2 注冊一個合法的主機名
- 10.3 重點回顧
- 10.4 本章習題
- 10.5 參考數據與延伸閱讀
- 第三部分:局域網絡內常見的服務器架設
- 第十一章、遠程聯機服務器SSH / XDMCP / VNC / RDP
- 11.1 遠程聯機服務器
- 11.2 文字接口聯機服務器: SSH 服務器
- 11.3 最原始圖形接口: Xdmcp 服務的啟用
- 11.4 華麗的圖形接口: VNC 服務器
- 11.5 仿真的遠程桌面系統: XRDP 服務器
- 11.6 SSH 服務器的進階應用
- 11.7 重點回顧
- 11.8 本章習題
- 11.9 參考數據與延伸閱讀
- 第十二章、網絡參數控管者: DHCP 服務器
- 12.1 DHCP 運作的原理
- 12.2 DHCP 服務器端的設定
- 12.3 DHCP 客戶端的設定
- 12.4 DHCP 服務器端進階觀察與使用
- 12.5 重點回顧
- 12.6 本章習題
- 12.7 參考數據與延伸閱讀
- 第十三章、文件服務器之一:NFS 服務器
- 13.1 NFS 的由來與其功能
- 13.2 NFS Server 端的設定
- 13.3 NFS 客戶端的設定
- 13.4 案例演練
- 13.5 重點回顧
- 13.6 本章習題
- 13.7 參考數據與延伸閱讀
- 第十四章、賬號控管: NIS 服務器
- 14.1 NIS 的由來與功能
- 14.2 NIS Server 端的設定
- 14.3 NIS Client 端的設定
- 14.4 NIS 搭配 NFS 的設定在叢集計算機上的應用
- 14.5 重點回顧
- 14.6 本章習題
- 14.7 參考數據與延伸閱讀
- 第十五章、時間服務器: NTP 服務器
- 15.1 關于時區與網絡校時的通訊協議
- 15.2 NTP 服務器的安裝與設定
- 15.3 客戶端的時間更新方式
- 15.4 重點回顧
- 15.5 本章習題
- 15.6 參考數據與延伸閱讀
- 第十六章、文件服務器之二: SAMBA 服務器
- 16.1 什么是 SAMBA
- 16.2 SAMBA 服務器的基礎設定
- 16.3 Samba 客戶端軟件功能
- 16.4 以 PDC 服務器提供賬號管理
- 16.5 服務器簡單維護與管理
- 16.6 重點回顧
- 16.7 本章習題
- 16.8 參考數據與延伸閱讀
- 第十七章、區網控制者: Proxy 服務器
- 17.1 什么是代理服務器 (Proxy)
- 17.2 Proxy 服務器的基礎設定
- 17.3 客戶端的使用與測試
- 17.4 服務器的其他應用設定
- 17.5 重點回顧
- 17.6 本章習題
- 17.7 參考數據與延伸閱讀
- 第十八章、網絡驅動器裝置: iSCSI 服務器
- 18.1 網絡文件系統還是網絡驅動器
- 18.2 iSCSI target 的設定
- 18.3 iSCSI initiator 的設定
- 18.4 重點回顧
- 18.5 本章習題
- 18.6 參考數據與延伸閱讀
- 第四部分:常見因特網服務器架設
- 第十九章、主機名控制者: DNS 服務器
- 19.1 什么是 DNS
- 19.2 Client 端的設定
- 19.3 DNS 服務器的軟件、種類與 cache only DNS 服務器設定
- 19.4 DNS 服務器的詳細設定
- 19.5 協同工作的 DNS: Slave DNS 及子域授權設定
- 19.6 DNS 服務器的進階設定
- 19.7 重點回顧
- 19.8 本章習題
- 19.9 參考數據與延伸閱讀
- 第二十章、WWW 伺服器
- 20.1 WWW 的簡史、資源以及伺服器軟體
- 20.2 WWW (LAMP) 伺服器基本設定
- 20.3 Apache 伺服器的進階設定
- 20.4 登錄檔分析以及 PHP 強化模組
- 20.5 建立連線加密網站 (https) 及防砍站腳本
- 20.6 重點回顧
- 20.7 本章習題
- 20.8 參考資料與延伸閱讀
- 第二十一章、文件服務器之三: FTP 服務器
- 21.1 FTP 的數據鏈路原理
- 21.2 vsftpd 服務器基礎設定
- 21.3 客戶端的圖形接口 FTP 聯機軟件
- 21.4 讓 vsftpd 增加 SSL 的加密功能
- 21.5 重點回顧
- 21.6 本章習題
- 21.7 參考數據與延伸閱讀
- 第二十二章、郵件服務器: Postfix
- 22.1 郵件服務器的功能與運作原理
- 22.2 MTA 服務器: Postfix 基礎設定
- 22.3 MRA 服務器: dovecot 設定
- 22.4 MUA 軟件:客戶端的收發信軟件
- 22.5 郵件服務器的進階設定
- 22.6 重點回顧
- 22.7 本章習題
- 22.8 參考數據與延伸閱讀