網絡存儲的概述
隨着企業中數據信息的不斷增長,尤其當成百上千TB的數據需要備份、恢復,以及面臨着擴容、災難恢復等需求時,DAS(直接附加存儲,就是通過與計算機主板的I/O接口,如IDE、SCSI相連接由本機操作系統負責讀寫及管理)方式使得數據的管理與維護日益困難。正因爲如此,網絡存儲技術應運而生,其最常見的就是NAS和SAN
SAN(storage area network,存儲區域網絡)
SAN是通過光纖交換機、光纖路由器等設備將磁盤陣列、磁帶機或獨立的ISCSI設備與服務器連接,構成一個高速存儲子網,存儲的數據以數據塊的形式通過ISCSI協議進行傳輸,從而優於普通的IP包傳輸。
NAS(network attachment storage,網絡附加存儲)
NAS存儲設備相當於一臺獨立的服務器,設備本身帶有操作系統,也擁有網絡接口,因此不依賴於其他服務器,在NAS設備中爲客戶機分配存儲空間時,通常採用共享文件夾的方式進行發佈,存儲的數據以文件的形式進行傳輸,採用CIFS或者NFS等協議
iscsi(iscsi= internet Small Computer System Interface )是由IEETF開發的網絡存儲標準,目的是爲了用IP協議將存儲設備連接在一起。通過在IP網上傳送SCSI命令和數據,ISCSI推動了數據在網際之間的傳遞,同時也促進了數據的遠距離管理。由於其出色的數據傳輸能力,ISCSI協議被認爲是促進存儲區域網(SAN)市場快速發展的關鍵因素之一。因爲IP網絡的廣泛應用, ISCSI能夠在LAN、WAN甚至internet上進行數據傳送,使得數據的存儲不再受地域的限制。
ISCSI技術的核心是在TCP/IP網絡上傳輸SCSI協議,是指用TCP/IP報文、和ISCSI報文封裝SCSI報文,使得SCSI命令和數據可以在普通以太網絡上進行傳輸,如下圖:
iSCSI協議定義了在 TCP/IP 網絡發送、接收 block(數據塊)級的存儲數據的規則和方 法。發送端將SCSI命令和數據封裝到 TCP/IP 包中再通過網絡轉發,接收端收到 TCP/IP 包之後,將其還原爲SCSI命令和數據並執行,完成之後將返回的SCSI命令和數據再封裝到 TCP/IP包中再傳送回發送端。而整個過程在用戶看來,使用遠端的存儲設備就像訪問本地的 SCSI設備一樣簡單。
在RHEL6中搭建ISCSI存儲服務器:
ISCSI服務器通常也稱爲Target端,負責定義存儲對象、分配邏輯空間LUN(Logical Unit,邏輯單元)。在RHEL6服務器中需要安裝scsi-target-utils軟件包,對應的系統服務爲tgtd,命令行管理工具爲tgtadm.
下面依次講解配置ISCSI的主要過程:準備存儲設備、創建ISCSI對象、爲客戶機分配存儲空間,客戶機使用ISCSI。
此處所說的存儲設備指將要分配給某一個客戶機使用的設備文件,在RHEL6系統中,硬盤、分區、邏輯卷、軟RAID等都可以用作ISCSI服務的存儲設備,爲了延續磁盤空間的可擴展性,建議以一個邏輯卷爲單位分配給客戶機使用,對於個別有特殊要求的客戶機,也可以將一個軟RAID陣列分配出去。
這裏將Target主機一個邏輯卷作爲iSCSI共享磁盤,共享給一臺linux主機使用。
創建一個邏輯卷,名爲lv00,將來分配給客戶機使用。如下圖所示:
ISCSI服務器配置推薦步驟:
1、在ISCSI存儲服務器上安裝iscsi target軟件包,如下圖所示:
2、iscsi target配置文件是/etc/tgt/targets.conf,此文件中的配置項默認全被注示掉了。編輯該文件,實現簡單的ISCSI存儲服務器配置。在文件尾部添加如下內容:
若要將多個存儲設備分配給客戶機可以在targets.conf文件中添加多個
<target ……>
……
</target>
注:Target的命名在同一子網內應該是唯一的,標準命名方式爲:
iqn.yyyy-mm.<reversed domain name>[:identifier]
其中:
iqn:表示“iSCSI Qualified Name”,簡稱iqn。
yyyy-mm:表示年份-月份。這裏是2011-08。
reversed domain name:表示倒過來的域名,這裏是com.example。
identifier:表示識別代碼,這裏是disk
backing-store用於指定存儲設備,一般指非實際的物理磁盤,如LVM卷、某個分區、raid磁盤陣列。
initiator-address 地址 用於將target指派給指定的客戶機使用。
然後啓動tgtd服務,並設置系統啓動時自動啓動,iscsi通信的端口:3260/tcp,以明文傳輸數據
#service tgtd start
#chkconfig tgtd on
若是ISCSI服務器上開啓了防火牆可以將iptables關閉或創建允許規則,如下圖所示:
運行tgtadm --lld iscsi --op show --mode target查看target信息
至此,iscsi target存儲服務器配置完成,使用iSCSI Initiator就可以連接iscsi target服務器了。
使用tgtadm工具創建ISCSI對象時,主要命令選項如下所述:
-L,--lld:指定驅動類型,如“-L iscsi”表示ISCSI存儲。
-o,--op:指定操作類型,如“-o new”表示創建,“-o delete”表示刪除,“-o show”表示查看信息。
-m,--mode:指定管理目標,如“-m target”表示ISCSI對象。
-t,--tid:指定對象ID號,如“-t 1”表示第一個對象。
-T,--targetname:指定ISCSI對象的名稱。
在RHEL6上iscsi客戶端配置:
1、安裝iscsi發起端軟件:iscsi-initiator-utils和lsscsi軟件包
#service iscsi start
#chkconfig iscsi on
2、查找iscsi服務器上的iscsi目標,即iscsi發現。
執行iscsiadm -m discovery –t st –p iscsi服務器的IP
或
iscsiadm -m discovery -t sendtargets -p targetIP地址:端口號
若是默認端口3260可以省略不寫。
3、登錄服務器上的iscsi目標,即iscsi註冊
執行iscsiadm -m node -T target名稱 -p targetIP地址:端口號 --login
退出iscsi盤陣
執行iscsiadm -m node -T target名稱 -p targetIP地址:端口號 --logout
4、查看/dev/disk/by-path目錄中iscsi符號鏈接所指向的位置或fdisk -l查看磁盤情況或檢查iscsi的狀態:service iscsi status或dmesg |tail
此時,可以使用iscsi磁盤,就好像它是本地連接硬盤驅動器。
5、對連接的iscsi磁盤建立LVM並實現自動掛載
未分區前顯示sdb信息如下, 執行fdisk -l /dev/sdb查看
在ISCSI客戶機上執行fdisk /dev/sdb創建LVM類型分區並查看/dev/sdb新建分區後的信息
爲了實現磁盤擴容,在客戶機上可以將連接的ISCSI磁盤創建爲LVM。
在建好的邏輯捲上創建文件系統。
創建掛載點目錄並掛載
修改/etc/fstab文件實現自動掛載
執行blkid /dev/vg_data/lv_data獲得邏輯卷lv_data的UUID
修改/etc/fstab文件自動掛載邏輯卷lv_data,如下圖所示:
測試自動掛載:mount –a或重啓系統後執行df –hT查看掛載情況
注意:
1、 使用blkid確定文件系統UUID並使用UUID掛載,而不是/dev/sd*設備名稱。(每次引導時顯示的設備名稱都不同,具體取決於iscsi設備通過網絡進行響應的順序,如果按設備名稱掛載,這會導致使用錯誤的設備)
2、 在/etc/fstab中使用_netdev作爲掛載選項。(這將確保客戶端不會嘗試掛載文件系統,直至啓用聯網,否則,在引導時系統將出錯)
3、 確保iscsi服務在引導時將啓動
#chkconfig iscsi on