網絡存儲概述:
隨着企業中數據信息的不斷增長,尤其當成百上千TB的數據需要備份、恢復,以及面臨着擴容、災難恢復等需求時,DAS(直接附加存儲,就是通過與計算機主板的I/O接口,如IDE、SCSI相連接由本機操作系統負責讀寫及管理)方式使得數據的管理與維護日益困難。正因爲如此,網絡存儲技術應運而生,其最常見的就是NAS和SAN。
SAN(storage area network,存儲區域網絡)
SAN是通過光纖交換機、光纖路由器等設備將磁盤陣列、磁帶機或獨立的ISCSI設備與服務器連接,構成一個高速存儲子網,存儲的數據以數據塊的形式通過ISCSI協議進行傳輸,從而優於普通的IP包傳輸。
NAS(network p_w_upload 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服務器
ISCSI服務器通常也稱爲Target端,負責定義存儲對象、分配邏輯空間LUN(Logical Unit,邏輯單元)。在RHEL6服務器中需要安裝scsi-target-utils軟件包,對應的系統服務爲tgtd,命令行管理工具爲tgtadm。因此需要安裝相應的軟件包,安裝如下:
[root@nas /]#yum -y install scsi-target-utils
下面依次講解配置ISCSI的主要過程:準備存儲設備、創建ISCSI對象、爲客戶機分配存儲空間,客戶機使用ISCSI。
此處所說的存儲設備指將要分配給某一個客戶機使用的設備文件,在RHEL6系統中,硬盤、分區、邏輯卷、軟RAID等都可以用作ISCSI服務的存儲設備,爲了延續磁盤空間的可擴展性,建議以一個邏輯卷爲單位分配給客戶機使用,對於個別有特殊要求的客戶機,也可以將一個軟RAID陣列分配出去。
1、準備存儲設備
這裏將Target主機一個邏輯卷作爲iSCSI共享磁盤,共享給一臺linux主機使用。創建一個邏輯卷,名爲lv00,將來分配給客戶機使用。如下圖所示:
[root@nas /]#pvcreate /dev/sdb /dev/sdc /dev/sdd //創建物理卷 Physical volume "/dev/sdb" successfully created Physical volume "/dev/sdc" successfully created Physical volume "/dev/sdd" successfully created [root@nas /]#vgcreate vg00 /dev/sdb /dev/sdc /dev/sdd //創建卷組 Volume group "vg00" successfully created [root@nas /]#lvcreate -L 30 -n lv00 vg00 //創建邏輯卷 Logical volume "lv00" created
2、創建iscsi對象
根據iscsi定義的規範,Target的命名格式爲“iqn.YYYY-mm.反向域名:識別標記”,其中YYYY-mm表示年月,方向域名建議爲服務器FQDN的倒序,識別標記是用戶自定義的字符串(以便區分)。例如:作者前面創建的LVM卷可以使用對象名爲“iqn.2013-09.com.yunqn.www:lvm”。
使用tgtadm工具創建iscsi對象時,主要命令選項如下所述:
-L,--lld:指定驅動類型,如“-L iscsi”表示iscsi存儲。
-o,--op:指定操作你類型,如“-o new”表示創建,“-o delete”表示刪除。
-m,--mode:指定管理目標,如“-m target”表示iscsi對象。
-t,--tid:指定對象ID號,如“-t 1”表示第一個對象。
-T,--targetname:指定iscsi對象名稱, 應符合“iqn.YYYY-mm.反向域名:識別標記”規範。
下面以剛纔創建的LVM卷爲例,來創建一個iscsi對象。如下:創建之前需要先啓動tgtd服務,並設置系統啓動時自動啓動,iscsi通信的端口:3260/tcp,以明文傳輸數據。
[root@nas /]#service tgtd start [root@nas /]#netstat -anpt | grep tgt tcp 0 0 0.0.0.0:3260 0.0.0.0:* LISTEN 20353/tgtd [toot@nas /]#tgtadm -L iscsi -o new -m target -t 1 -T iqn.2013-09.com.yunqn.www:lvm
3、爲客戶端分配存儲空間
創建好iscsi對象後,就可以在存儲對象中爲客戶機分配可用空間了。使用tgtadm工具時,只要命令選項如下所述:
-l,--lun:指定LUN的ID號,如“-l 1”表示第一個LUN。
-b,--backing-store:指定塊設備位置,如“-b /dev/vg00/lv00”。
-l,--initiator-address:指定客戶機地址,如“-l 192.168.1.10”。
下面以前面準備的邏輯卷“lv00”爲例,將其掛在到剛纔我們新建的iscsi對象上,並指定給客戶機192.168.1.10的主機使用。其中選項“-m logicalunit”可簡寫爲“-m lu”,“--lld”可簡寫爲“-L”。
[root@nas /]#tgtadm --lld iscsi -o new -m logicalunit -t 1 -l 1 -b /dev/vg00/lv00 [root@nas /]#tgtadm --lld iscsi -o bind -m target -t 1 -I 192.168.1.10
完成上述配置以後,可以使用target命令,結合相關參數來查看iscsi對象的信息。如下:
[root@nas /]#tgtadm -L iscsi -o show -m target
4、保存配置,並設置開機自動加載。
修改文件“/etc/tgt/targets.conf”,將target、LUN信息保存爲靜態配置,以便在重啓tgtd服務後仍然有效。爲了保證客戶機正常使用,tgtd服務應該自動啓用,另外,iscsi服務器系統應先於客戶機啓動。
[root@nas /]#vim /etc/tgt/targets.conf ...//省略部分內容 <target iqn.2013-09.com.yunqn.www:lvm> backing-store /dev/vg00/lv00 initiator-address 192.168.1.10 </target> <root@nas />#chkconfig --level 35 tgtd on
注意:大家也可以省略“創建iscsi對象”和“爲客戶端分配存儲空間”,而直接將配置寫到配置文件“targets.conf”中,然後重啓tgtd服務加載配置文件即可生效。
二、客戶端使用iscsi存儲設備
iscsi客戶機也稱爲initiator端,負責連接iscsi設備,在iscsi設備中創建文件系統,以及存儲數據。在RHEL 6客戶機中需要安裝iscsi-initiator-utils軟件包,對應的系統服務爲iscsi,命令管理工具爲iscsiadm。
[root@nas /]#yum -y install iscsi-initiator-utils lsscsi
1、發現並連接iscsi設備
使用iscsiadm工具之前,先啓動iscsi服務。查找iscsi設備可以參考以下命令操作選項:
-m discovery:表示發現/查找。
-t sendtargets:表示發佈的target。
-p ip:port:用來指定服務器的IP地址以及tgtd的監聽端口。
[root@nas /]#service iscsi start [root@nas /]#iscsiadm -m discovery -t sendtargets -p 192.168.1.1 //查找iscsi對象 192.168.1.1:3260,1 iqn.2013-09.com.yunqn.www:lvm [root@nas /]#iscsiadm -m node -T iqn.2013-09.com.yunqn.www:lvm --login //連接iscsi對象 Logging in to [iface:default,target:iqn.2013-09.com.yunqn.www:lvm,portal:192.168.1.1,3260] Logging to [iface:default,target:iqn.2013-09.com.yunqn.www:lvm,portal:192.168.1.1,3260] successful
注意:看到“Login to...successful”表示連接成功了,而後面的“--login”表示連接iscsi設備,如果是“--logout”表示斷開已連接的iscsi設備。
2、使用iscsi存儲設備
當成功連接iscsi到設備時,此時的iscsi設備就好像本地服務器的磁盤一樣了,正常使用前需要將其分區,格式化,掛載等一系列動作。只有當iscsi服務器分配給客戶機的LUN是一整塊物理硬盤,而且此硬盤中已經包含了分區表,文件系統時,客戶機纔可以直接使用。
[root@nas /]#fdisk -l //查看鏈接的iscsi設備 [root@nas /]#fdisk -l /dev/sdc //將連接的iscsi設備進行分區 ...//省略部分內容 [root@nas /]#partprobe /dev/sdc [root@nas /]#mkfs -t ext4 /dev/sdc1 //格式化新建的分區 [root@nas /]#mkdir /opt/data [root@nas /]#mount /dev/sdc1 /opt/data //掛載新建的分區
3、保存iscsi連接配置
爲了是iscsi存儲設備使用正常,客戶機應確保iscsi服務能夠自動啓用,並將掛載iscsi設備中文件系統的操作寫入“/etc/fstab”文件中。由於iscsi設備的特殊性,fstab文件中的配置記錄應啓用“_netdev”掛載參數,表示這是一個網絡設備。
[root@nas /]#chkconfig --level 35 iscsi on [root@nas /]#vim /etc/fstab ...//省略部分內容 /dev/sdc1 /opt/data ext4 defaults,_netdev 0 0
也可以使用“blkid /dev/sdc1”命令查出“sdc1”的UUID,使用UUID代替fstab文件中的“/dev/sdc1”,這樣更有安全保障。
保存上述配置以後,重新啓動客戶機後將自動連接iscsi對象,並掛載指定的網絡存儲文件系統。