共享儲存之ISCSI

wang_0720發表於2013-11-06
1 簡介
2 磁碟分割槽
3 ISCSITARGET安裝和配置
4 ISCSI-INITIATOR安裝


1 簡介
1. iSCSI 技術
     多年以來,光纖通道儲存區域網 (FC SAN) 是構建基於網路的儲存解決方案所使用的唯一技術。基於以前的一組 ANSI 協議(稱為光纖分散式資料介面 (FDDI)),開發了光纖通道以在儲存網路上移動SCSI命令。
     FC SAN 的優勢包括提高了效能、磁碟利用率、可用性以及可伸縮性等,但最重要的是支援伺服器叢集!但是,FC SAN 現在仍受三個主要缺點的限制。首先是價格。儘管構建 FC SAN 的成本在近幾年有所下降,但進入成本對於 IT 預算有限的小公司來說仍然是高的驚人。第二個缺點是硬體元件不相容。採用 FC SAN 之後,許多產品製造商對光纖通道規範的解釋各不相同,從而導致許多互連問題。如果從公共製造商購買光纖通道元件,這通常不是一個問題。第三個缺點是光纖通道網路不是乙太網!它需要一種不同的網路技術,並要求資料中心人員具備另外一組技能。
     隨著千兆位乙太網的普及以及對降低成本的需要,基於 iSCSI 的儲存系統逐漸成為光纖通道的有力競爭對手。現在,iSCSI SAN 仍然是 FC SAN 的最大競爭者。
     2003年2月11日,經過Internet工程任務組 (IETF) 的批准,Internet小型計算機系統介面(一般稱為 iSCSI)成為一個基於 Internet 協議 (IP) 的儲存網路標準,用於建立和管理基於 IP 的儲存裝置、主機和客戶端之間的連線。iSCSI 是 SCSI-3 規範框架中定義的資料傳輸協議,它與光纖通道的類似之處在於它也負責在儲存網路上運送塊級資料。塊級通訊意味著資料以“塊”的形式在主機和客戶端之間傳輸。資料庫伺服器依賴此類通訊(而不是大多數 NAS 系統使用的檔案級通訊)來工作。與 FC SAN 一樣,iSCSI SAN 是一個專用於儲存的單獨物理網路,但其元件與典型 IP 網路 (LAN) 中的元件基本相同。
     儘管iSCSI擁有光明的前景,但早期的批評很快指出了其在效能方面的內在不足。iSCSI 的優勢是能夠利用大家熟悉的 IP 網路作為傳輸機制。但是,TCP/IP 協議非常複雜並且佔用過多的 CPU 資源。而使用iSCSI,大部分對資料進行的處理(TCP 和 iSCSI)都由軟體執行,比完全透過硬體處理的光纖通道慢得多。將每個 SCSI 命令對映到等價 iSCSI 事務所帶來的開銷過大。對許多公司來說,解決方案是取消 iSCSI 軟體啟動器,投資能夠從伺服器 CPU 中解除安裝 TCP/IP 和 iSCSI 處理的專用卡。這些專用卡有時稱為 iSCSI 主機匯流排介面卡 (HBA)或 TCP 解除安裝引擎 (TOE) 卡。還要考慮到目前 10 Gb 乙太網是主流!
    與其他新技術一樣,iSCSI 具有一組自己的縮略語和術語。對於本文來說,使用者只需要瞭解 iSCSI 啟動器與 iSCSI 目標之間的區別即可。

2. iSCSI 啟動器
    從本質上說,iSCSI 啟動器是一個客戶端裝置,它連線到伺服器(在本例中是 iSCSI 目標)提供的某一服務,併發起對該服務的請求。iSCSI 啟動器軟體需要安裝在每個 Oracle RAC 節點(racnode1 和 racnode2)上。
    iSCSI 啟動器可以用軟體實現,也可以用硬體實現。軟體 iSCSI 啟動器可用於大部分主要作業系統平臺。對於本文,我們將使用 iscsi-initiator-utils RPM 中提供的免費 Linux Open-iSCSI 軟體驅動程式。iSCSI 軟體啟動器通常與標準網路介面卡 (NIC)(大多數情況下是千兆位乙太網卡)配合使用。硬體啟動器是一個 iSCSI HBA(或 TCP 解除安裝引擎 (TOE) 卡),它本質上只是一個專用乙太網卡,其上的 SCSI ASIC 可以從系統 CPU 內解除安裝所有工作(TCP 和 SCSI 命令)。iSCSI HBA 可以從許多供應商處購買,包括 Adaptec、Alacritech、Intel 和 QLogic。

3. iSCSI 目標
    iSCSI 目標是 iSCSI 網路的“伺服器”元件。它通常是一個儲存裝置,包含您所需的資訊並響應來自(一個或多個)啟動器的請求。對於本文,節點 openfiler1 將是 iSCSI 目標。
    因此,根據有關 iSCSI 的所有這些討論,是否意味著光纖通道很快就會消失?可能不會。多年以來,光纖通道憑藉其極快的速度、靈活性和強健的可靠性,為自己的能力提供了有力的證明。對高效能儲存、大型複雜連線以及任務關鍵可靠性有嚴格要求的客戶將毫不猶豫地繼續選擇光纖通道。

2 磁碟分割槽
準備一個空磁碟,我這裡是一臺雙硬碟的機器,IP地址為192.168.3.84,兩塊硬碟都是300GB,其中一塊裝OS,另一塊作共享磁碟使用。
[root@sharestorage_priv ~]# fdisk -l

Disk /dev/sda: 300.0 GB, 300000000000 bytes
255 heads, 63 sectors/track, 36472 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14       36472   292856917+  8e  Linux LVM

Disk /dev/sdb: 300.0 GB, 300000000000 bytes
255 heads, 63 sectors/track, 36472 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
[root@sharestorage_priv ~]#
從fdisk顯示可以看出sdb是沒有使用的磁碟,我就在該磁碟上劃分分割槽
[root@sharestorage_priv ~]# fdisk /dev/sdb

The number of cylinders for this disk is set to 36472.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): p

Disk /dev/sdb: 300.0 GB, 300000000000 bytes
255 heads, 63 sectors/track, 36472 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-36472, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-36472, default 36472): +500M

Command (m for help): p

Disk /dev/sdb: 300.0 GB, 300000000000 bytes
255 heads, 63 sectors/track, 36472 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1          62      497983+  83  Linux
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (63-36472, default 63):
Using default value 63
Last cylinder or +size or +sizeM or +sizeK (63-36472, default 36472): +50000M

Command (m for help): p

Disk /dev/sdb: 300.0 GB, 300000000000 bytes
255 heads, 63 sectors/track, 36472 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1          62      497983+  83  Linux
/dev/sdb2              63        6142    48837600   83  Linux

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (6143-36472, default 6143):
Using default value 6143
Last cylinder or +size or +sizeM or +sizeK (6143-36472, default 36472): +50000M

Command (m for help): p

Disk /dev/sdb: 300.0 GB, 300000000000 bytes
255 heads, 63 sectors/track, 36472 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1          62      497983+  83  Linux
/dev/sdb2              63        6142    48837600   83  Linux
/dev/sdb3            6143       12222    48837600   83  Linux

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.
[root@sharestorage_priv ~]#
再次fdisk看一下
[root@sharestorage_priv ~]# fdisk -l

Disk /dev/sda: 300.0 GB, 300000000000 bytes
255 heads, 63 sectors/track, 36472 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14       36472   292856917+  8e  Linux LVM

Disk /dev/sdb: 300.0 GB, 300000000000 bytes
255 heads, 63 sectors/track, 36472 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1          62      497983+  83  Linux
/dev/sdb2              63        6142    48837600   83  Linux
/dev/sdb3            6143       12222    48837600   83  Linux
顯示建立了三個分割槽,分別是sdb1 500MB,sdb2 50GB,sdb3 50GB。
3 iscsitarget安裝和配置(server)
1. 所需軟體

2. 軟體下載
在開源軟體網站上可以下載到iscsitarget原始碼包
wget
3. 安裝
tar zxvf iscsitarget-1.4.20.1.tar.gz
cd iscsitarget-1.4.20.1
make
make install
安裝後會在/etc下生成iet目錄,iscsitarget的主要配置檔案就在該目錄下
[root@sharestorage_priv iet]# tree /etc/iet/
/etc/iet/
|-- ietd.conf
|-- ietd.conf.original
|-- initiators.allow
|-- targets.allow
`-- targets.allow.origianl

0 directories, 5 files
[root@sharestorage_priv iet]#
ietd.conf裡有很多註釋項,我將ietd.conf copy一份取名為ietd.conf.original,targets.allow copy一份取名為targets.allow.original以備參考。
4. 配置
[root@sharestorage_priv iet]# cat /etc/iet/ietd.conf
Target iqn.2001-04.com.sharestorage:racdb.crs1
Lun 0 Path=/dev/sdb1,Type=blockio

Target iqn.2001-04.com.sharestorage:racdb.data1
Lun 0 Path=/dev/sdb2,Type=blockio

Target iqn.2001-04.com.sharestorage:racdb.fra1
Lun 0 Path=/dev/sdb3,Type=blockio
[root@sharestorage_priv iet]#
只允許192.168.3.0網段的客戶發現登入iscsi服務
[root@sharestorage_priv iet]# cat /etc/iet/targets.allow
ALL 192.168.3.0/24
[root@sharestorage_priv iet]#
啟動iscsi-target
[root@sharestorage_priv iet]# /etc/init.d/iscsi-target start
Starting iSCSI Target:                                     [  OK  ]
[root@sharestorage_priv iet]#
到此為止,iscsi-target就配置完畢,現在iscsi-initiator就可以發現並登陸到iscsi-target。
4 iscsi-initiator安裝(client)
iscsi-initiator的軟體包在REDHAT安裝光碟中,確定iscsi-initiator-utils是否已經安裝
rpm -qa|grep iscsi-initiator-utils
如果iscsi-initiator-utils軟體包沒安裝,用下面的命令安裝
rpm -Uvh iscsi-initiator-utils-*
啟動iscsid服務,並使其在系統引導時自動啟動,還將配置iscsi服務在系統引導時自動啟動。
service iscsid start
chkconfig iscsid on
chkconfig iscsi on
發現網路儲存伺服器上的所有可用目標,儲存伺服器的ip在本文開頭提到192.168.3.84。
[root@rac1 ~]# iscsiadm -m discovery -t sendtargets -p 192.168.3.84
192.168.3.84:3260,1 iqn.2001-04.com.sharestorage:racdb.fra1
192.168.3.84:3260,1 iqn.2001-04.com.sharestorage:racdb.data1
192.168.3.84:3260,1 iqn.2001-04.com.sharestorage:racdb.crs1
[root@rac1 ~]#
1. 手動登入到iscsi目標
[root@rac1 ~]# iscsiadm -m node -T iqn.2001-04.com.sharestorage:racdb.fra1 -p 192.168.3.84 -l
Logging in to [iface: default, target: iqn.2001-04.com.sharestorage:racdb.fra1, portal: 192.168.3.84,3260]
Login to [iface: default, target: iqn.2001-04.com.sharestorage:racdb.fra1, portal: 192.168.3.84,3260] successful.
[root@rac1 ~]# iscsiadm -m node -T iqn.2001-04.com.sharestorage:racdb.data1 -p 192.168.3.84 -l
Logging in to [iface: default, target: iqn.2001-04.com.sharestorage:racdb.data1, portal: 192.168.3.84,3260]
Login to [iface: default, target: iqn.2001-04.com.sharestorage:racdb.data1, portal: 192.168.3.84,3260] successful.
[root@rac1 ~]# iscsiadm -m node -T iqn.2001-04.com.sharestorage:racdb.crs1 -p 192.168.3.84 -l
Logging in to [iface: default, target: iqn.2001-04.com.sharestorage:racdb.crs1, portal: 192.168.3.84,3260]
Login to [iface: default, target: iqn.2001-04.com.sharestorage:racdb.crs1, portal: 192.168.3.84,3260] successful.
[root@rac1 ~]#
2. 配置自動登入
[root@rac1 ~]# iscsiadm -m node -T iqn.2001-04.com.sharestorage:racdb.crs1 -p 192.168.3.84 --op update -n node.startup -v automatic
[root@rac1 ~]# iscsiadm -m node -T iqn.2001-04.com.sharestorage:racdb.data1 -p 192.168.3.84 --op update -n node.startup -v automatic
[root@rac1 ~]# iscsiadm -m node -T iqn.2001-04.com.sharestorage:racdb.fra1 -p 192.168.3.84 --op update -n node.startup -v automatic

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/27181165/viewspace-775803/,如需轉載,請註明出處,否則將追究法律責任。

相關文章