## 18.3 iSCSI initiator 的設定
談完了 target 的設定,并且觀察到相關 target 的 LUN 數據后,接下來就是要來掛載使用啰。使用的方法很簡單, 只不過我們得要安裝額外的軟件來取得 target 的 LUN 使用權就是了。
* * *
### 18.3.1 所需軟件與軟件結構
在前一小節就談過了,要設定 iSCSI initiator 必須要安裝 iscsi-initiator-utils 才行。安裝的方法請使用 yum 去處理,這里不再多講話。那么這個軟件的結構是如何呢?
* /etc/iscsi/iscsid.conf:主要的配置文件,用來連結到 iSCSI target 的設定;
* /sbin/iscsid:啟動 iSCSI initiator 的主要服務程序;
* /sbin/iscsiadm:用來管理 iSCSI initiator 的主要設定程序;
* /etc/init.d/iscsid:讓本機模擬成為 iSCSI initiater 的主要服務;
* /etc/init.d/iscsi:在本機成為 iSCSI initiator 之后,啟動此腳本,讓我們可以登入 iSCSI target。所以 iscsid 先啟動后,才能啟動這個服務。為了防呆,所以 /etc/init.d/iscsi 已經寫了一個啟動指令, 啟動 iscsi 前尚未啟動 iscsid ,則會先呼叫 iscsid 才繼續處理 iscsi 喔!
老實說,因為 /etc/init.d/iscsi 腳本已經包含了啟動 /etc/init.d/iscsid 的步驟在里面,所以,理論上, 你只要啟動 iscsi 就好啦!此外,那個 iscsid.conf 里面大概只要設定好登入 target 時的帳密即可, 其他的 target 搜尋、設定、取得的方法都直接使用 iscsiadm 這個指令來完成。由于 iscsiadm 偵測到的結果會直接寫入 /var/lib/iscsi/nodes/ 當中,因此只要啟動 /etc/init.d/iscsi 就能夠在下次開機時,自動的連結到正確的 target 啰。 那么就讓我們來處理處理整個過程吧 ([注6](#ps6))!
* * *
### 18.3.2 initiator 的實際設定
首先,我們得要知道 target 提供了啥咚咚啊,因此,理論上,不論是 target 還是 initiator 都應該是要我們管理的機器才對。 而現在我們知道 target 其實有設定賬號與密碼的,所以底下我們就得要修改一下 iscsid.conf 的內容才行。
* 修改 /etc/iscsi/iscsid.conf 內容,并啟動 iscsi
這個檔案的修改很簡單,因為里面的參數大多已經預設做的不錯了,所以只要填寫 target 登入時所需要的帳密即可。 修改的地方有兩個,一個是偵測時 (discovery) 可能會用到的帳密,一個是聯機時 (node) 會用到的帳密:
```
[root@clientlinux ~]# vim /etc/iscsi/iscsid.conf
node.session.auth.username = vbirduser <==在 target 時設定的
node.session.auth.password = vbirdpasswd <==約在 53, 54 行
discovery.sendtargets.auth.username = vbirduser <==約在 67, 68 行
discovery.sendtargets.auth.password = vbirdpasswd
[root@clientlinux ~]# chkconfig iscsid on
[root@clientlinux ~]# chkconfig iscsi on
```
由于我們尚未與 target 聯機,所以 iscsi 并無法讓我們順利啟動的!因此上面只要 chkconfig 即可,不需要啟動他。 要開始來偵測 target 與寫入系統信息啰。全部使用 iscsiadm 這個指令就可以完成所有動作了。
* 偵測 192.168.100.254 這部 target 的相關數據
雖然我們已經知道 target 的名字,不過,這里假設還不知道啦!因為有可能哪一天你的公司有錢了, 會去買實體的 iSCSI 數組嘛!所以這里還是講完整的偵測過程好了!你可以這樣使用:
```
[root@clientlinux ~]# iscsiadm -m discovery -t sendtargets -p IP:port
選項與參數:
-m discovery :使用偵測的方式進行 iscsiadmin 指令功能;
-t sendtargets :透過 iscsi 的協議,偵測后面的設備所擁有的 target 數據
-p IP:port :就是那部 iscsi 設備的 IP 與埠口,不寫埠口預設是 3260 啰!
范例:偵測 192.168.100.254 這部 iSCSI 設備的相關數據
[root@clientlinux ~]# iscsiadm -m discovery -t sendtargets -p 192.168.100.254
192.168.100.254:3260,1 iqn.2011-08.vbird.centos:vbirddisk
# 192.168.100.254:3260,1 :在此 IP, 端口上面的 target 號碼,本例中為 target1
# iqn.2011-08.vbird.centos:vbirddisk :就是我們的 target 名稱啊!
[root@clientlinux ~]# ll -R /var/lib/iscsi/nodes/
/var/lib/iscsi/nodes/iqn.2011-08.vbird.centos:vbirddisk
/var/lib/iscsi/nodes/iqn.2011-08.vbird.centos:vbirddisk/192.168.100.254,3260,1
# 上面的特殊字體部分,就是我們利用 iscsiadm 偵測到的 target 結果!
```
現在我們知道了 target 的名稱,同時將所有偵測到的信息通通寫入到上述 /var/lib/iscsi/nodes/iqn.2011-08.vbird.centos:vbirddisk/192.168.100.254,3260,1 目錄內的 default 檔案中, 若信息有修訂過的話,那你可以到這個檔案內修改,也可以透過 iscsiadm 的 update 功能處理相關參數的。
* 開始進行聯機 iSCSI target
因為我們的 initiator 可能會連接多部的 target 設備,因此,我們得先要瞧瞧目前系統上面偵測到的 target 有幾部, 然后再找到我們要的那部 target 來進行登入的作業。不過,如果你想要將所有偵測到的 target 全部都登入的話, 那么整個步驟可以再簡化:
```
范例:根據前一個步驟偵測到的資料,啟動全部的 target
[root@clientlinux ~]# /etc/init.d/iscsi restart
正在停止 iscsi: [ 確定 ]
正在激活 iscsi: [ 確定 ]
# 將系統里面全部的 target 通通以 /var/lib/iscs/nodes/ 內的設定登入
# 上面的特殊字體比較需要注意啦!你只要做到這里即可,底下的瞧瞧就好。
范例:顯示出目前系統上面所有的 target 數據:
[root@clientlinux ~]# iscsiadm -m node
192.168.100.254:3260,1 iqn.2011-08.vbird.centos:vbirddisk
選項與參數:
-m node:找出目前本機上面所有偵測到的 target 信息,可能并未登入喔
范例:僅登入某部 target ,不要重新啟動 iscsi 服務
[root@clientlinux ~]# iscsiadm -m node -T target名稱 --login
選項與參數:
-T target名稱:僅使用后面接的那部 target ,target 名稱可用上個指令查到!
--login :就是登入啊!
[root@clientlinux ~]# iscsiadm -m node -T iqn.2011-08.vbird.centos:vbirddisk \
> --login
# 這次進行會出現錯誤,是因為我們已經登入了,不可重復登入喔!
```
接下來呢?呵呵!很棒的是,我們要來開始處理這個 iSCSI 的磁盤了喔!怎么處理?瞧一瞧!
```
[root@clientlinux ~]# fdisk -l
Disk /dev/sda: 8589 MB, 8589934592 bytes <==這是原有的那顆磁盤,略過不看
....(中間省略)....
Disk /dev/sdc: 2147 MB, 2147483648 bytes
67 heads, 62 sectors/track, 1009 cylinders
Units = cylinders of 4154 * 512 = 2126848 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
Disk /dev/sdb: 2154 MB, 2154991104 bytes
67 heads, 62 sectors/track, 1013 cylinders
Units = cylinders of 4154 * 512 = 2126848 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
Disk /dev/sdd: 524 MB, 524288000 bytes
17 heads, 59 sectors/track, 1020 cylinders
Units = cylinders of 1003 * 512 = 513536 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
```
你會發現主機上面多出了三個新的磁盤,容量與剛剛在 192.168.100.254 那部 iSCSI target 上面分享的 LUN 一樣大。 那這三顆磁盤可以怎么用?你想怎么用就怎么用啊!只是,唯一要注意的,就是 iSCSI target 每次都要比 iSCSI initiator 這部主機還要早開機,否則我們的 initiator 恐怕就會出問題。
* 更新/刪除/新增 target 數據的方法
如果你的 iSCSI target 可能因為某些原因被拿走了,或者是已經不存在于你的區網中,或者是要送修了~ 這個時候你的 iSCSI initiator 總是得要關閉吧!但是,又不能全部關掉 (/etc/init.d/iscsi stop), 因為還有其他的 iSCSI target 在使用。這個時候該如何取消不要的 target 呢?很簡單!流程如下:
```
[root@clientlinux ~]# iscsiadm -m node -T targetname --logout
[root@clientlinux ~]# iscsiadm -m node -o [delete|new|update] -T targetname
選項與參數:
--logout :就是注銷 target,但是并沒有刪除 /var/lib/iscsi/nodes/ 內的數據
-o delete:刪除后面接的那部 target 鏈接信息 (/var/lib/iscsi/nodes/*)
-o update:更新相關的信息
-o new :增加一個新的 target 信息。
范例:關閉來自鳥哥的 iSCSI target 的數據,并且移除鏈接
[root@clientlinux ~]# iscsiadm -m node <==還是先秀出相關的 target iqn 名稱
192.168.100.254:3260,1 iqn.2011-08.vbird.centos:vbirddisk
[root@clientlinux ~]# iscsiadm -m node -T <u>iqn.2011-08.vbird.centos:vbirddisk</u> \
> --logout
Logging out of session [sid: 1, target: iqn.2011-08.vbird.centos:vbirddisk,
portal: 192.168.100.254,3260]
Logout of [sid: 1, target: iqn.2011-08.vbird.centos:vbirddisk, portal:
192.168.100.254,3260] successful.
# 這個時候的 target 連結還是存在的,雖然注銷你還是看的到!
[root@clientlinux ~]# iscsiadm -m node -o delete \
> -T iqn.2011-08.vbird.centos:vbirddisk
[root@clientlinux ~]# iscsiadm -m node
iscsiadm: no records found! <==嘿嘿!不存在這個 target 了~
[root@clientlinux ~]# /etc/init.d/iscsi restart
# 你會發現唔!怎么 target 的信息不見了!這樣瞭了乎!
```
如果一切都沒有問題,現在,請回到 discovery 的過程,重新再將 iSCSI target 偵測一次,再重新啟動 initiator 來取得那三個磁盤吧!我們要來測試與利用該磁盤啰!
* * *
### 18.3.3 一個測試范例
到底 iSCSI 可以怎么用?我們就來玩一玩。假設:
1. 你剛剛如同鳥哥的整個運作流程,已經在 initiator 上面將 target 數據清除了;
2. 現在我們只知道 iSCSI target 的 IP 是 192.168.100.254 ,而需要的帳密是 vbirduser, vbirdpasswd;
3. 帳密信息你已經寫入 /etc/iscsi/iscsid.conf 里面了;
4. 假設我們預計要將 target 的磁盤拿來當作 LVM 內的 PV 使用;
5. 并且將所有的磁盤容量都給一個名為 /dev/iscsi/disk 的 LV 使用;
6. 這個 LV 會被格式化為 ext4 ,且掛載在 /data/iscsi 內。
那么,整體的流程是:
```
# 1\. 啟動 iscsi ,并且開始偵測及登入 192.168.100.254 上面的 target 名稱
[root@clientlinux ~]# /etc/init.d/iscsi restart
[root@clientlinux ~]# chkconfig iscsi on
[root@clientlinux ~]# iscsiadm -m discovery -t sendtargets -p 192.168.100.254
[root@clientlinux ~]# /etc/init.d/iscsi restart
[root@clientlinux ~]# iscsiadm -m node
192.168.100.254:3260,1 iqn.2011-08.vbird.centos:vbirddisk
# 2\. 開始處理 LVM 的流程,由 PV, VG, LV 依序處理喔!
[root@clientlinux ~]# fdisk -l <==出現的資料中你會發現 /dev/sd[b-d]
[root@clientlinux ~]# pvcreate /dev/sd{b,c,d} <==建立 PV 去!
Wiping swap signature on /dev/sdb
Physical volume "/dev/sdb" successfully created
Physical volume "/dev/sdc" successfully created
Physical volume "/dev/sdd" successfully created
[root@clientlinux ~]# vgcreate iscsi /dev/sd{b,c,d} <==建立 VG 去!
Volume group "iscsi" successfully created
[root@clientlinux ~]# vgdisplay <==要找到可用的容量啰!
--- Volume group ---
VG Name iscsi
....(中間省略)....
Act PV 3
VG Size 4.48 GiB
PE Size 4.00 MiB
Total PE 1148 <==就是這玩意兒!共 1148 個!
Alloc PE / Size 0 / 0
Free PE / Size 1148 / 4.48 GiB
....(底下省略)....
[root@clientlinux ~]# lvcreate -l 1148 -n disk iscsi
Logical volume "disk" created
[root@clientlinux ~]# lvdisplay
--- Logical volume ---
LV Name /dev/iscsi/disk
VG Name iscsi
LV UUID opR64B-Zeoe-C58n-ipN2-em3O-nUYs-wjEZDP
LV Write Access read/write
LV Status available
# open 0
LV Size 4.48 GiB <==注意一下容量對不對啊!
Current LE 1148
Segments 3
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:2
# 3\. 開始格式化,并且進行開機自動掛載的動作!
[root@clientlinux ~]# mkfs -t ext4 /dev/iscsi/disk
[root@clientlinux ~]# mkdir -p /data/iscsi
[root@clientlinux ~]# vim /etc/fstab
/dev/iscsi/disk /data/iscsi ext4 defaults,_netdev 1 2
[root@clientlinux ~]# mount -a
[root@clientlinux ~]# df -Th
文件系統 類型 Size Used Avail Use% 掛載點
/dev/mapper/iscsi-disk
ext4 4.5G 137M 4.1G 4% /data/iscsi
```
比較特殊的是 /etc/fstab 里面的第四個字段,加上 _netdev (最前面是底線) 指的是,因為這個 partition 位于網絡上, 所以得要網絡開機啟動完成后才會掛載的意思。現在,請讓你的 iSCSI initiator 重新啟動看看, 試看看重新啟動系統后,你的 /data/iscsi 是否還存在呢? ^_^
然后,讓我們切回 iSCSI target 那部主機,研究看看到底誰有使用我們的 target 呢?
```
[root@www ~]# tgt-admin --show
Target 1: iqn.2011-08.vbird.centos:vbirddisk
System information:
Driver: iscsi
State: ready
I_T nexus information:
I_T nexus: 2
Initiator: iqn.1994-05.com.redhat:71cf137f58f2 <==不是很喜歡的名字!
Connection: 0
IP Address: 192.168.100.10 <==就是這里聯機進來啰!
LUN information:
....(后面省略)....
```
明明是 initiator 怎么會是那個 redhat 的名字呢?如果你不介意那就算了,如果挺介意的話,那么修改 initiator 那部主機的 /etc/iscsi/initiatorname.iscsi 這個檔案的內容,將它變成類似如下的模樣即可:
**Tips:** 不過,這個動作最好在使用 target 的 LUN 之前就進行,否則,當你使用了 LUN 的磁盤后,再修改這個檔案后, 你的磁盤文件名可能會改變。例如鳥哥的案例中,改過 initiatorname 之后,原本的磁盤文件名竟變成 /dev/sd[efg] 了!害鳥哥的 LV 就不能再度使用了...

```
# 1\. 先在 iSCSI initiator 上面進行如下動作:
[root@clientlinux ~]# vim /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2011-08.vbird.centos:initiator
[root@clientlinux ~]# /etc/init.d/iscsi restart
# 2\. 在 iSCSI target 上面就可以發現如下的數據修訂了:
[root@www ~]# tgt-admin --show
Target 1: iqn.2011-08.vbird.centos:vbirddisk
System information:
Driver: iscsi
State: ready
I_T nexus information:
I_T nexus: 5
Initiator: iqn.2011-08.vbird.centos:initiator
Connection: 0
IP Address: 192.168.100.10
....(后面省略)....
```
* * *
- 鳥哥的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 參考數據與延伸閱讀