主頁 > 知識庫 > 利用openfiler實現(xiàn)iSCSI原理分析

利用openfiler實現(xiàn)iSCSI原理分析

熱門標簽:美圖手機 成都移動外呼系統(tǒng) 佛山外呼系統(tǒng)平臺 長春外呼系統(tǒng)價格 電銷機器人的效果 長沙智能外呼系統(tǒng)中心 南寧智能外呼系統(tǒng)線路商 南昌語音外呼系統(tǒng)代理 聯(lián)客智能語音外呼系統(tǒng)賬號格式

iSCSI概述
iSCSI:Internet 小型計算機系統(tǒng)接口 (iSCSI:Internet Small Computer System Interface)。
Internet 小型計算機系統(tǒng)接口(iSCSI)是一種基于 TCP/IP的協(xié)議,用來建立和管理IP存儲設備、主機和客戶機等之間的相互連接,并創(chuàng)建存儲區(qū)域網(wǎng)絡(SAN)。SAN 使得 SCSI 協(xié)議應用于高速數(shù)據(jù)傳輸網(wǎng)絡成為可能,這種傳輸以數(shù)據(jù)塊級別(block-level)在多個數(shù)據(jù)存儲網(wǎng)絡間進行。
SCSI 結構基于客戶/服務器模式,其通常應用環(huán)境是:設備互相靠近,并且這些設備由SCSI總線連接。iSCSI的主要功能是在 TCP/IP 網(wǎng)絡上的主機系統(tǒng)(啟動器 initiator)和存儲設備(目標器 target)之間進行大量數(shù)據(jù)的封裝和可靠傳輸過程。此外,iSCSI 提供了在 IP 網(wǎng)絡封裝 SCSI 命令,且運行在 TCP 上。
iSCSI(Internet SCSI)是2003年IETF(InternetEngineering Task Force,互聯(lián)網(wǎng)工程任務組)制訂的一項
bcm5722 ISCSI網(wǎng)卡標準,用于將SCSI數(shù)據(jù)塊映射成以太網(wǎng)數(shù)據(jù)包。SCSI(Small Computer System Interface)是塊數(shù)據(jù)傳輸協(xié)議,在存儲行業(yè)廣泛應用,是存儲設備最基本的標準協(xié)議。從根本上說,iSCSI協(xié)議是一種利用IP網(wǎng)絡來傳輸潛伏時間短的SCSI數(shù)據(jù)塊的方法,ISCSI使用以太網(wǎng)協(xié)議傳送SCSI命令、響應和數(shù)據(jù)。ISCSI可以用我們已經(jīng)熟悉和每天都在使用的以太網(wǎng)來構建IP存儲局域網(wǎng)。通過這種方法,ISCSI克服了直接連接存儲的局限性,使我們可以跨不同服務器共享存儲資源,并可以在不停機狀態(tài)下擴充存儲容量。
iSCSI的工作過程
當iSCSI主機應用程序發(fā)出數(shù)據(jù)讀寫請求后,操作系統(tǒng)會生成一個相應的SCSI命令,該SCSI命令在iSCSI initiator層被封裝成ISCSI消息包并通過TCP/IP傳送到設備側,設備側的iSCSI target層會解開iSCSI消息包,得到SCSI命令的內(nèi)容,然后傳送給SCSI設備執(zhí)行;設備執(zhí)行SCSI命令后的響應,在經(jīng)過設備側iSCSI target層時被封裝成ISCSI響應PDU,通過TCP/IP網(wǎng)絡傳送給主機的ISCSI initiator層,iSCSI initiator會從ISCSI響應PDU里解析出SCSI響應并傳送給操作系統(tǒng),操作系統(tǒng)再響應給應用程序。
iSCSI 啟動器
從本質上說,iSCSI 啟動器是一個客戶端設備,它連接到服務器提供的某一服務,并發(fā)起對該服務的請求。如果利用iscsi創(chuàng)建RAC,iSCSI 啟動器軟件需要安裝在每個 Oracle RAC 節(jié)點上。
iSCSI 啟動器可以用軟件實現(xiàn),也可以用硬件實現(xiàn)。軟件 iSCSI 啟動器可用于大部分主要操作系統(tǒng)平臺,可以使用 iscsi-initiator-utils RPM中提供的免費 Linux Open-iSCSI 軟件驅動程序。iSCSI 軟件啟動器通常與標準網(wǎng)絡接口卡 (NIC)(大多數(shù)情況下是千兆位以太網(wǎng)卡)配合使用。硬件啟動器是一個 iSCSI HBA(或 TCP 卸載引擎 (TOE) 卡),它本質上只是一個專用以太網(wǎng)卡,其上的 SCSI ASIC 可以從系統(tǒng) CPU 內(nèi)卸載所有工作(TCP 和 SCSI 命令)。iSCSI HBA 可以從許多供應商處購買,包括 Adaptec、Alacritech、Intel 和 QLogic。
iSCSI 目標
iSCSI 目標是 iSCSI 網(wǎng)絡的“服務器”組件。它通常是一個存儲設備,包含您所需的信息并響應來自(一個或多個)啟動器的請求。對于本文,節(jié)點 openfiler1 將是 iSCSI 目標。
openfiler
openfiler是一個基于瀏覽器的網(wǎng)絡存儲管理工具。來自于Linux系統(tǒng)。openfiler在一個網(wǎng)絡架構里面里面支持文件級的NAS和數(shù)據(jù)塊級的SAN,支持CIFS,NFS,HTT/DAV,F(xiàn)TP 和iSCSI協(xié)議。openfiler是一個存儲管理操作系統(tǒng),基于Linux 2.6內(nèi)核和其他開源程序比如apache,samba,lvm2,ext3,Linux NFS和iSCSI企業(yè)級target。他把這些所有的技術集成在一個很小的,易于管理的強大的web界面里。

配置openfiler

openfiler的安裝和安裝linux類似,十分簡單這里不做過多介紹,不明白的讀者可以自行查閱資料。以下配置環(huán)境是以RAC配置為基礎,目標是將openfiler上的存儲空間已共享存儲的方式劃分給rac1和rac2兩個節(jié)點。

瀏覽器:Firefox3.6(不推薦用IE進行此設置,下面會講原因)
客戶端操作系統(tǒng):RHEL 5.4
iSCSI客戶端:open-iscsi-2.0-871

要將 Openfiler 用作 iSCSI 存儲服務器,我們需要執(zhí)行六個主要任務:設置 iSCSI 服務、配置網(wǎng)絡訪問、指定物理存儲器并對其分區(qū)、創(chuàng)建新的卷組、創(chuàng)建所有邏輯卷,最后,為每個邏輯卷創(chuàng)建新的 iSCSI 目標。

服務

在瀏覽器輸入https://192.168.2.195:446/ 開啟Openfiler的Web界面,這里192.168.2.195為openfiler系統(tǒng)的ip,446為服務端口。Openfiler的默認用戶名為openfiler,密碼為password。

要控制服務,我們使用 Openfiler Storage Control Center 并轉到 [Services] / [Manage Services]:

要啟用 iSCSI 服務,單擊“iSCSI target server”服務名稱后面的“Enable”鏈接。之后,“iSCSI target server”狀態(tài)應變?yōu)?ldquo;Enabled”。

ietd 程序將實現(xiàn) iSCSI Enterprise Target 軟件的用戶級部分,以便在 Linux 上構建 iSCSI 存儲系統(tǒng)。啟用 iSCSI target 之后,我們應該能夠通過 SSH 登錄到 Openfiler 服務器,并且可看到 iscsi-target 服務正在運行:

[root@openfiler1 ~]# service iscsi-target status

ietd (pid 14243) is running...

網(wǎng)絡訪問配置

下一步是配置 Openfiler 中的網(wǎng)絡訪問,指定需要通過存儲(專用)網(wǎng)絡訪問 iSCSI 卷的兩個 Oracle RAC 節(jié)點(racnode1racnode2)。注意,本節(jié)稍后將會創(chuàng)建 iSCSI 卷。另請注意,本步驟并不實際授予兩個 Oracle RAC 節(jié)點訪問 iSCSI 邏輯卷所需的相應權限。授予權限的操作將在本節(jié)稍后通過對每個新邏輯卷更新 ACL 來進行。

如同上一節(jié),我們使用 Openfiler Storage Control Center 并轉到 [System] / [Network Setup] 來完成網(wǎng)絡訪問配置。通過頁面底部的“Network Access Configuration”部分,管理員可以設置網(wǎng)絡和/或主機以允許其訪問 Openfiler appliance 導出的資源。就本文而言,我們希望單獨添加兩個 Oracle RAC 節(jié)點,而不是允許整個 192.168.2.0 網(wǎng)絡訪問 Openfiler 資源。

輸入每個 Oracle RAC 節(jié)點時,請注意“Name”域只是一個邏輯名稱,僅供參考。根據(jù)輸入節(jié)點的慣例,我僅使用了為該 IP 地址定義的節(jié)點名稱。接下來,在“Network/Host”域中輸入實際節(jié)點時,始終使用其 IP 地址,即使其主機名已經(jīng)在 /etc/hosts 文件或 DNS 中定義。最后,在我們的 C 類網(wǎng)絡中輸入實際主機時,使用子網(wǎng)掩碼 255.255.255.255

記住,您要為集群中的每個 RAC 節(jié)點輸入專用 網(wǎng)絡 (eth1) 的 IP 地址,這一點很重要。

下圖顯示了添加兩個 Oracle RAC 節(jié)點后的結果:

物理存儲

在本節(jié)中,我們將創(chuàng)建三個 iSCSI 卷,以供集群中的兩個 Oracle RAC 節(jié)點用作共享存儲。這將在連接到 Openfiler 服務器的內(nèi)置 73GB 15K SCSI 硬盤驅動器上執(zhí)行多個步驟。

存儲設備(如內(nèi)置 IDE/SATA/SCSI/SAS 磁盤、存儲陣列、外置 USB 驅動器、外置 FireWire 驅動器或者任何其他存儲設備)可以連接到 Openfiler 服務器,并供客戶端使用。如果在操作系統(tǒng)級發(fā)現(xiàn)了這些設備,就可以使用 Openfiler Storage Control Center 設置和管理所有這些存儲設備。

在本例中,我們有一個 73GB 的內(nèi)置 SCSI 硬盤驅動器用于滿足共享存儲之需。在 Openfiler 服務器上,該驅動器顯示為 /dev/sdb (MAXTOR ATLAS15K2_73SCA)。要看到該驅動器并啟動 iSCSI 卷的創(chuàng)建過程,請從 Openfiler Storage Control Center 轉到 [Volumes] / [Block Devices]:

對物理磁盤進行分區(qū)
我們要執(zhí)行的第一步是在 /dev/sdb 內(nèi)置硬盤上創(chuàng)建一個主分區(qū)。單擊 /dev/sdb 鏈接,我們會看到“Edit”或“Create”選項,分別用于編輯和創(chuàng)建分區(qū)。由于我們將創(chuàng)建一個跨整個磁盤的主分區(qū),因此可以將大多數(shù)選項保留為默認設置,唯一的修改是將“Partition Type ”由“Extended partition”更改為“Physical volume ”。下面是我為了在 /dev/sdb 上創(chuàng)建主分區(qū)而指定的值:
模式: Primary
分區(qū)類型: Physical volume
開始柱面: 1
結束柱面: 8924
現(xiàn)在,大小將顯示 68.36 GB。要接受該設置,單擊“Create”按鈕。這將在我們的內(nèi)置硬盤上生成一個新的分區(qū) (/dev/sdb1 ):


圖 9:對物理卷進行分區(qū)

卷組管理

下一步是創(chuàng)建卷組。我們將創(chuàng)建一個名為 racdbvg 的卷組,其中包含新創(chuàng)建的主分區(qū)。從 Openfiler Storage Control Center 中轉到 [Volumes] / [Volume Groups]。我們將看到所有現(xiàn)有的卷組,或者什么也看不到(我們的情況就是這樣)。在 Volume Group Management 屏幕中,輸入新卷組的名稱 (racdbvg),單擊 /dev/sdb1 前面的復選框以選中該分區(qū),最后單擊“Add volume group”按鈕。之后,我們會看到一個列表,其中顯示出我們新創(chuàng)建的這個名為“racdbvg”的卷組:
邏輯卷

現(xiàn)在,我們可以在新創(chuàng)建的卷組 (racdbvg) 中創(chuàng)建三個邏輯卷。從 Openfiler Storage Control Center 中轉到 [Volumes] / [Add Volume]。我們將看到新創(chuàng)建的卷組 (racdbvg) 及其塊存儲統(tǒng)計信息。該屏幕底部還提供了一個選項,用于在選定的卷組中創(chuàng)建一個新卷 —(在“racdbvg”中創(chuàng)建一個卷)。使用該屏幕創(chuàng)建以下三個邏輯 (iSCSI) 卷。在創(chuàng)建每個邏輯卷之后,應用程序將轉至“Manage Volumes”屏幕。然后,您需要單擊后退到“Add Volume”選項卡以創(chuàng)建下一個邏輯卷,直至三個 iSCSI 卷全部創(chuàng)建完畢:

iSCSI / 邏輯卷卷名卷描述所需空間 (MB)文件系統(tǒng)類型racdb-crs1racdb - ASM CRS Volume 12,208iSCSIracdb-data1racdb - ASM Data Volume 133,888iSCSIracdb-fra1racdb - ASM FRA Volume 133,888iSCSI

實際上,我們已經(jīng)創(chuàng)建了三個 iSCSI 磁盤,現(xiàn)在可以將它們呈現(xiàn)給網(wǎng)絡上的 iSCSI 客戶端(racnode1racnode2)。“Manage Volumes”屏幕應如下所示:

iSCSI 目標

現(xiàn)在,我們有了三個 iSCSI 邏輯卷。但是,為了使 iSCSI 客戶端可以訪問這些邏輯卷,首先需要為這三個卷中的每個卷創(chuàng)建一個 iSCSI 目標。每個 iSCSI 邏輯卷將映射 到一個特定的 iSCSI 目標,并將為兩個 Oracle RAC 節(jié)點授予對該目標的相應網(wǎng)絡訪問權限。對于本文,在 iSCSI 邏輯卷和 iSCSI 目標之間將會有一一映射的關系。

創(chuàng)建和配置 iSCSI 目標的過程包括三步:創(chuàng)建一個唯一的目標 IQN(實質上是新的 iSCSI 目標的通用名稱),將上一節(jié)中創(chuàng)建的一個 iSCSI 邏輯卷映射到新創(chuàng)建的 iSCSI 目標,最后,授予兩個 Oracle RAC 節(jié)點訪問該新 iSCSI 目標的權限。請注意,需要對上一節(jié)中創(chuàng)建的三個 iSCSI 邏輯卷中的每個卷都執(zhí)行一次此過程。

對于本文,下表列出了新的 iSCSI 目標名稱(目標 IQN)及其將映射到的 iSCSI 邏輯卷:

iSCSI 目標/邏輯卷映射目標 IQNiSCSI 卷名卷描述iqn.2006-01.com.openfiler:racdb.crs1racdb-crs1racdb - ASM CRS Volume 1iqn.2006-01.com.openfiler:racdb.data1racdb-data1racdb - ASM Data Volume 1iqn.2006-01.com.openfiler:racdb.fra1racdb-fra1racdb - ASM FRA Volume 1

現(xiàn)在我們來創(chuàng)建三個新的 iSCSI 目標 — 為每個 iSCSI 邏輯卷創(chuàng)建一個。下面舉例說明通過創(chuàng)建 Oracle Clusterware/racdb-crs1 目標 ( iqn.2006-01.com.openfiler:racdb.crs1) 來創(chuàng)建新的 iSCSI 目標時所需執(zhí)行的三個步驟。這個三步過程需要對上表中列出的三個新 iSCSI 目標中的每一個都重復執(zhí)行一遍。

創(chuàng)建新目標 IQN

從 Openfiler Storage Control Center 中轉到 [Volumes] / [iSCSI Targets]。確保選擇了灰色子選項卡“Target Configuration”。您可在此選項卡頁中創(chuàng)建一個新的 iSCSI 目標。系統(tǒng)會自動生成一個默認值,作為新 iSCSI 目標的名稱(常稱為“目標 IQN”)。目標 IQN 的一個示例是“iqn.2006-01.com.openfiler:tsn.ae4683b67fd3”:



我喜歡用更具含義的字串來替換這個默認目標 IQN 最后一段。對于第一個 iSCSI 目標(Oracle Clusterware/racdb-crs1),我將這樣來修改默認的目標 IQN:將字符串“tsn.ae4683b67fd3”替換為“racdb.crs1”,如下圖所示:

對新的目標 IQN 滿意之后,單擊“Add”按鈕。這將會創(chuàng)建一個新的 iSCSI 目標,然后會出現(xiàn)一個頁面,您可以在該頁面中修改新 iSCSI 目標的一系列設置。對于本文,無需更改新 iSCSI 目標的任何設置。

LUN 映射

創(chuàng)建新的 iSCSI 目標之后,下一步是將相應的 iSCSI 邏輯卷映射到該目標。在“Target Configuration”子選項卡下,驗證在“Select iSCSI Target”部分中選擇了正確的 iSCSI 目標。如果不是這樣,使用下拉菜單選擇正確的 iSCSI 目標,然后單擊“Change”按鈕。

接下來,單擊名為“LUN Mapping”的灰色子選項卡(在“Target Configuration”子選項卡旁)。找到相應的 iSCSI 邏輯卷(本例中為 /dev/racdbvg/racdb-crs1),然后單擊“Map”按鈕。無需更改此頁面中的任何設置。對卷 /dev/racdbvg/racdb-crs1 單擊“Map”按鈕后,您的屏幕應如下圖所示:

網(wǎng)絡 ACL

需要先授予 iSCSI 客戶端相應的權限,它才能訪問新創(chuàng)建的 iSCSI 目標。在前面,我們已通過 Openfiler 對兩個主機(Oracle RAC 節(jié)點)進行網(wǎng)絡訪問配置。這兩個節(jié)點需要通過存儲(專用)網(wǎng)絡訪問新的 iSCSI 目標?,F(xiàn)在,我們需要授予這兩個 Oracle RAC 節(jié)點訪問新 iSCSI 目標的權限。

單擊名為“Network ACL”的灰色子選項卡(在“LUN Mapping”子選項卡旁)。對當前的 iSCSI 目標,將兩個主機的“Access”值由“Deny”更改為“Allow”,然后單擊“Update”按鈕。

返回到創(chuàng)建新的目標 IQN 一節(jié),對其余兩個 ISCSI 邏輯卷執(zhí)行這三個任務,同時替換“iSCSI 目標/邏輯卷映射”表中找到的值。

在 Oracle RAC 節(jié)點上配置 iSCSI 卷

在集群中的兩個 Oracle RAC 節(jié)點上配置 iSCSI 啟動器。而創(chuàng)建分區(qū)只應在 RAC 集群的一個節(jié)點上執(zhí)行。

iSCSI 客戶端可以是提供 iSCSI 支持(驅動程序)的任何系統(tǒng)(Linux、Unix、MS Windows、Apple Mac 等)。在我們的示例中,客戶端是兩個 Linux 服務器(racnode1racnode2),它們運行的是 Oracle Enterprise Linux 5.4。

在本節(jié)中,我們將在兩個 Oracle RAC 節(jié)點上配置 iSCSI 軟件啟動器。Oracle Enterprise Linux 5.4 包括 Open-iSCSI iSCSI 軟件啟動器,該軟件啟動器位于 iscsi-initiator-utils RPM 中。這是對早期版本 Oracle Enterprise Linux (4.x) 的一個更改,這些早期版本中包含作為 Linux-iSCSI 項目的一部分而開發(fā)的 Linux iscsi-sfnet 軟件驅動程序。所有 iSCSI 管理任務(如發(fā)現(xiàn)和登錄)將使用 Open-iSCSI 中包含的命令行接口 iscsiadm

iSCSI 軟件啟動器將配置為自動登錄網(wǎng)絡存儲服務器 (openfiler1),并發(fā)現(xiàn) 上一節(jié)中創(chuàng)建的 iSCSI 卷。之后,我們將逐步使用 udev 為發(fā)現(xiàn)的每個 iSCSI 目標名稱創(chuàng)建永久性本地 SCSI 設備名稱(即 /dev/iscsi/crs1)。擁有一致的本地 SCSI 設備名稱及其映射到的 iSCSI 目標,有助于在配置 ASM 時能夠區(qū)分三個卷。但是,在此之前,我們首先必須安裝 iSCSI 啟動器軟件。

安裝 iSCSI(啟動器)服務

就 Oracle Enterprise Linux 5.4 來說,默認情況下不會安裝 Open-iSCSI iSCSI 軟件啟動器。該軟件包含在 1 號 CD 上的 iscsi-initiator-utils 程序包中。要確定該程序包是否已安裝(大多數(shù)情況下沒有安裝),在兩個 Oracle RAC 節(jié)點上執(zhí)行以下命令:

[root@racnode1 ~]# rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n"| grep iscsi-initiator-utils

如果 iscsi-initiator-utils 程序包未安裝,將 1 號 CD 加載到每個 Oracle RAC 節(jié)點中并執(zhí)行以下命令

[root@racnode1 ~]# mount -r /dev/cdrom /media/cdrom
[root@racnode1 ~]# cd /media/cdrom/Server
[root@racnode1 ~]# rpm -Uvh iscsi-initiator-utils-*
[root@racnode1 ~]# cd /
[root@racnode1 ~]# eject

確認 iscsi-initiator-utils 程序包現(xiàn)在已安裝:

[root@racnode1 ~]# rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n"| grep iscsi-initiator-utils
iscsi-initiator-utils-6.2.0.871-0.10.el5 (x86_64)  

配置 iSCSI(啟動器)服務

驗證 iscsi-initiator-utils 程序包已經(jīng)安裝到兩個 Oracle RAC 節(jié)點之后,啟動 iscsid 服務,并使其在系統(tǒng)引導時自動啟動。我們還將配置 iscsi 服務在系統(tǒng)啟動時自動啟動,自動登錄到所需的 iSCSI 目標。

[root@racnode1 ~]# service iscsid start
Turning off network shutdown. Starting iSCSI daemon: [ OK]
 [ OK ]
[root@racnode1 ~]# chkconfig iscsid on

[root@racnode1 ~]# chkconfig iscsi on

現(xiàn)在 iSCSI 服務已經(jīng)啟動,下面使用 iscsiadm 命令行接口發(fā)現(xiàn)網(wǎng)絡存儲服務器上的所有可用目標。這應該在兩個 Oracle RAC 節(jié)點上執(zhí)行,以檢驗配置是否正常工作:

[root@racnode1 ~]# iscsiadm -m discovery -t sendtargets -p openfiler1-priv
192.168.2.195:3260,1 iqn.2006-01.com.openfiler:racdb.crs1
192.168.2.195:3260,1 iqn.2006-01.com.openfiler:racdb.fra1
192.168.2.195:3260,1 iqn.2006-01.com.openfiler:racdb.data1

 

手動登錄到 iSCSI 目標

此時,iSCSI 啟動器服務已經(jīng)啟動,每個 Oracle RAC 節(jié)點都能夠從網(wǎng)絡存儲服務器中發(fā)現(xiàn)可用目標。下一步是手動登錄每個可用目標,這可以使用 iscsiadm 命令行接口完成。這需要在兩個 Oracle RAC 節(jié)點上運行。注意,我必須指定網(wǎng)絡存儲服務器的 IP 地址而非其主機名 (openfiler1-priv) — 我認為必須這么做,因為上述發(fā)現(xiàn)使用 IP 地址顯示目標。

[root@racnode1 ~]# iscsiadm -m node -T iqn.2006-01.com.openfiler:racdb.crs1 -p 192.168.2.195 -l
[root@racnode1 ~]# iscsiadm -m node -T iqn.2006-01.com.openfiler:racdb.data1 -p 192.168.2.195 -l
[root@racnode1 ~]# iscsiadm -m node -T iqn.2006-01.com.openfiler:racdb.fra1 -p 192.168.2.195 -l  

如果此時更新了openfiler服務器上的資源配置,可以使用如下命令更新相關配置

iscsiadm -m node -T iqn.2006-01.com.openfiler:RACDBcrs1 -p 192.168.0.201 -R

配置自動登錄

下一步是確保在計算機引導(或 iSCSI 啟動器服務啟動/重啟)時,客戶端將自動登錄到上面列出的每個目標。如同上面描述的手動登錄過程,在兩個 Oracle RAC 節(jié)點上執(zhí)行以下命令:

[root@racnode1 ~]# iscsiadm -m node -T iqn.2006-01.com.openfiler:racdb.crs1 -p 192.168.2.195 --op update -n node.startup -v automatic
[root@racnode1 ~]# iscsiadm -m node -T iqn.2006-01.com.openfiler:racdb.data1 -p 192.168.2.195 --op update -n node.startup -v automatic
[root@racnode1 ~]# iscsiadm -m node -T iqn.2006-01.com.openfiler:racdb.fra1 -p 192.168.2.195 --op update -n node.startup -v automatic      

創(chuàng)建永久性本地 SCSI 設備名稱

在本節(jié)中,我們將逐步為每個 iSCSI 目標名稱創(chuàng)建永久性本地 SCSI 設備名稱。我們將使用 udev 來完成該任務。擁有一致的本地 SCSI 設備名稱及其映射到的 iSCSI 目標,有助于在配置 ASM 時能夠區(qū)分三個卷。盡管并未嚴格要求這么做(因為我們將對所有卷使用 ASMLib 2.0),這提供了一種自我文檔編制的方法,有助于快速確定每個 iSCSI 卷的名稱和位置。

如果任一 Oracle RAC 節(jié)點引導并且 iSCSI 啟動器服務啟動,它會以一種隨機的方式自動登錄到配置的每個目標,并將這些目標映射到下一個可用的本地 SCSI 設備名稱。例如,目標 iqn.2006-01.com.openfiler:racdb.crs1 可能會映射到 /dev/sdb。實際上,我可以通過查看 /dev/disk/by-path 目錄來確定所有目標的當前映射:

[root@racnode1 ~]# (cd /dev/disk/by-path; ls -l *openfiler* | awk '{FS=" ";
print $9 " " $10 " " $11}')
ip-192.168.2.195:3260-iscsi-iqn.2006-01.com.openfiler:racdb.crs1-lun-0 -> ../../sdb
ip-192.168.2.195:3260-iscsi-iqn.2006-01.com.openfiler:racdb.data1-lun-0 -> ../../sdd
ip-192.168.2.195:3260-iscsi-iqn.2006-01.com.openfiler:racdb.fra1-lun-0 -> ../../sdc

使用上述 ls 命令的輸出結果,我們可以建立以下當前映射:

iSCSI 目標名稱到本地 SCSI 設備名稱的當前映射iSCSI 目標名稱SCSI 設備名稱iqn.2006-01.com.openfiler:racdb.crs1/dev/sdbiqn.2006-01.com.openfiler:racdb.data1/dev/sddiqn.2006-01.com.openfiler:racdb.fra1/dev/sdc

但是,每次重新引導 Oracle RAC 節(jié)點時,該映射都可能有所不同。例如,重新引導之后,可能會決定將 iSCSI 目標 iqn.2006-01.com.openfiler:racdb.crs1 映射到本地 SCSI 設備 /dev/sdc。由于您無法預測重新引導后的 iSCSI 目標映射,依賴于使用本地 SCSI 設備名稱是不現(xiàn)實的。

我們需要的是可引用的一致的設備名稱(即 /dev/iscsi/crs1),該設備名稱在重新引導后將始終指向相應的 iSCSI 目標。這就是引入名為 udev動態(tài)設備管理 工具的原因。 udev 提供了一個動態(tài)設備目錄,使用一組可配置的規(guī)則通過符號鏈接指向實際設備。當 udev 收到設備事件(例如,客戶端登錄到 iSCSI 目標)時,就會根據(jù) sysfs 中提供的可用設備屬性匹配其配置好的規(guī)則以便識別設備。匹配規(guī)則可以提供其他設備信息或指定設備節(jié)點名和多個符號鏈接名,并指示 udev 運行其他程序(例如,一個 SHELL 腳本)作為設備事件處理過程的一部分。

第一步是創(chuàng)建一個新的規(guī)則文件。該文件將命名為 /etc/udev/rules.d/55-openiscsi.rules,并且只包含一行用于接收我們感興趣事件的名稱=值對。它還將定義一個調(diào)出 SHELL 腳本 (/etc/udev/scripts/iscsidev.sh),用于處理事件。

在兩個 Oracle RAC 節(jié)點上創(chuàng)建以下規(guī)則文件 /etc/udev/rules.d/55-openiscsi.rules

# /etc/udev/rules.d/55-openiscsi.rules

KERNEL=="sd*", BUS=="scsi", PROGRAM="/etc/udev/scripts/iscsidev.sh %b",SYMLINK+="iscsi/%c/part%n"

現(xiàn)在,我們需要創(chuàng)建在接收該事件時將調(diào)用的 UNIX SHELL 腳本。我們首先在兩個 Oracle RAC 節(jié)點上創(chuàng)建一個單獨的目錄,用于存儲 udev 腳本:

[root@racnode1 ~]# mkdir -p /etc/udev/scripts

接下來,在兩個 Oracle RAC 節(jié)點上創(chuàng)建 UNIX shell 腳本 /etc/udev/scripts/iscsidev.sh

#!/bin/sh
 # FILE: /etc/udev/scripts/iscsidev.sh

BUS=${1}
HOST=${BUS%%:*}
 [ -e /sys/class/iscsi_host ] || exit 1
file="/sys/class/iscsi_host/host${HOST}/device/session*/iscsi_session*/
targetname"
target_name=$(cat ${file})
# This is not an open-scsi drive
if [ -z "${target_name}" ]; then
   exit 1
fi

# Check if QNAP drive
check_qnap_target_name=${target_name%%:*}
if [ $check_qnap_target_name = "iqn.2004-04.com.qnap" ]; then
    target_name=`echo "${target_name%.*}"`
fi

echo "${target_name##*.}"

創(chuàng)建 UNIX SHELL 腳本后,將其更改為可執(zhí)行文件:

[root@racnode1 ~]# chmod 755 /etc/udev/scripts/iscsidev.sh

既然已經(jīng)配置了 udev,下面將在兩個 Oracle RAC 節(jié)點上重新啟動 iSCSI 服務:

[root@racnode1 ~]# service iscsi stop
Logging out of session [sid: 6, target: iqn.2006-01.com.openfiler:racdb.crs1, portal: 192.168.2.195,3260]
Logging out of session [sid: 7, target: iqn.2006-01.com.openfiler:racdb.fra1, portal: 192.168.2.195,3260]
Logging out of session [sid: 8, target: iqn.2006-01.com.openfiler:racdb.data1, portal: 192.168.2.195,3260]
Logout of [sid: 6, target: iqn.2006-01.com.openfiler:racdb.crs1, portal: 192.168.2.195,3260]: successful
Logout of [sid: 7, target: iqn.2006-01.com.openfiler:racdb.fra1, portal: 192.168.2.195,3260]: successful
Logout of [sid: 8, target: iqn.2006-01.com.openfiler:racdb.data1, portal: 192.168.2.195,3260]: successful
Stopping iSCSI daemon:                               [ OK ]
[root@racnode1 ~]# service iscsi start
iscsid dead but pid file exists
Turning off network shutdown. Starting iSCSI daemon: [ OK ]
                                                     [ OK ]
Setting up iSCSI targets: Logging in to [iface: default, target: iqn.2006-01.com.openfiler:racdb.crs1, portal: 192.168.2.195,3260]
Logging in to [iface: default, target: iqn.2006-01.com.openfiler:racdb.fra1, portal: 192.168.2.195,3260]
Logging in to [iface: default, target: iqn.2006-01.com.openfiler:racdb.data1, portal: 192.168.2.195,3260]
Login to [iface: default, target: iqn.2006-01.com.openfiler:racdb.crs1, portal: 192.168.2.195,3260]: successful
Login to [iface: default, target: iqn.2006-01.com.openfiler:racdb.fra1, portal: 192.168.2.195,3260]: successful
Login to [iface: default, target: iqn.2006-01.com.openfiler:racdb.data1, portal: 192.168.2.195,3260]: successful [ OK ]

下面,我們來看一下我們的辛勤工作是否得到了回報:

[root@racnode1 ~]# ls -l /dev/iscsi/*
/dev/iscsi/crs1:
total 0
lrwxrwxrwx 1 root root 9 Nov  3 18:13 part -> ../../sdc
/dev/iscsi/data1:
total 0
lrwxrwxrwx 1 root root 9 Nov  3 18:13 part -> ../../sde
/dev/iscsi/fra1:
total 0
lrwxrwxrwx 1 root root 9 Nov  3 18:13 part -> ../../sdd

上面的清單顯示, udev 所做的工作正是我們所期待的!現(xiàn)在,我們擁有了一組一致的本地設備名稱,可用于引用 iSCSI 目標。例如,我們可以安全地認為設備名稱 /dev/iscsi/crs1/part 將始終引用 iSCSI 目標 iqn.2006-01.com.openfiler:racdb.crs1?,F(xiàn)在,我們擁有了一致的 iSCSI 目標名稱到本地設備名稱的映射,如下表所示:

iSCSI 目標名稱到本地設備名稱的映射iSCSI 目標名稱本地設備名稱iqn.2006-01.com.openfiler:racdb.crs1/dev/iscsi/crs1/partiqn.2006-01.com.openfiler:racdb.data1/dev/iscsi/data1/partiqn.2006-01.com.openfiler:racdb.fra1/dev/iscsi/fra1/part

標簽:南陽 武漢 莆田 南京 開封 黔南 綿陽 陽泉

巨人網(wǎng)絡通訊聲明:本文標題《利用openfiler實現(xiàn)iSCSI原理分析》,本文關鍵詞  利用,openfiler,實現(xiàn),iSCSI,;如發(fā)現(xiàn)本文內(nèi)容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《利用openfiler實現(xiàn)iSCSI原理分析》相關的同類信息!
  • 本頁收集關于利用openfiler實現(xiàn)iSCSI原理分析的相關信息資訊供網(wǎng)民參考!
  • 推薦文章