Linux下iscsi基本操作

来源:互联网 发布:js shift方法 编辑:程序博客网 时间:2024/06/05 01:07
18.2 iSCSI target 的設定

能夠完成 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' [2.00 GB] inherit

  • 規劃分享的 iSCSI target 檔名

iSCSI 有一套自己分享 target 檔名的定義,基本上,藉由 iSCSI 分享出來的 target 檔名都是以 iqn 為開頭,意思是:『iSCSI Qualified Name (iSCSI 合格名稱)』的意思(註5)。那麼在 iqn 後面要接啥檔名呢?通常是這樣的:

iqn.yyyy-mm.<reversed domain name>:identifieriqn.年年-月.單位網域名的反轉寫法  :這個分享的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)。在鳥哥的這個簡單案例中,最終的結果,我們會有一個 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 tgtActive Internet connections (only servers)Proto Recv-Q Send-Q Local Address   Foreign Address   State   PID/Program nametcp        0      0 0.0.0.0:3260    0.0.0.0:*         LISTEN  26944/tgtdtcp        0      0 :::3260         :::*              LISTEN  26944/tgtd# 重點就是那個 3260 TCP 封包啦!等一下的防火牆務必要開放這個埠口。# 觀察一下我們 target 相關資訊,以及提供的 LUN 資料內容:[root@www ~]# tgt-admin --showTarget 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.allowiptables -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 內的語法,修改來源端即可。

大標題的圖示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)!


小標題的圖示18.3.2 initiator 的實際設定

首先,我們得要知道 target 提供了啥咚咚啊,因此,理論上,不論是 target 還是 initiator 都應該是要我們管理的機器才對。 而現在我們知道 target 其實有設定帳號與密碼的,所以底下我們就得要修改一下 iscsid.conf 的內容才行。


  • 修改 /etc/iscsi/iscsid.conf 內容,並啟動 iscsi

這個檔案的修改很簡單,因為裡面的參數大多已經預設做的不錯了,所以只要填寫 target 登入時所需要的帳密即可。 修改的地方有兩個,一個是偵測時 (discovery) 可能會用到的帳密,一個是連線時 (node) 會用到的帳密:

[root@clientlinux ~]# vim /etc/iscsi/iscsid.confnode.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.254192.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 node192.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 -lDisk /dev/sda: 8589 MB, 8589934592 bytes  <==這是原有的那顆磁碟,略過不看....(中間省略)....Disk /dev/sdc: 2147 MB, 2147483648 bytes67 heads, 62 sectors/track, 1009 cylindersUnits = cylinders of 4154 * 512 = 2126848 bytesSector size (logical/physical): 512 bytes / 512 bytesDisk /dev/sdb: 2154 MB, 2154991104 bytes67 heads, 62 sectors/track, 1013 cylindersUnits = cylinders of 4154 * 512 = 2126848 bytesSector size (logical/physical): 512 bytes / 512 bytesDisk /dev/sdd: 524 MB, 524288000 bytes17 heads, 59 sectors/track, 1020 cylindersUnits = cylinders of 1003 * 512 = 513536 bytesSector 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 iqn.2011-08.vbird.centos:vbirddisk \>  --logoutLogging 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 nodeiscsiadm: 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 node192.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 --showTarget 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.iscsiInitiatorName=iqn.2011-08.vbird.centos:initiator[root@clientlinux ~]# /etc/init.d/iscsi restart# 2. 在 iSCSI target 上面就可以發現如下的資料修訂了:[root@www ~]# tgt-admin --showTarget 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....(後面省略)....
0 0