Linux----------iscsi網絡存儲即共享硬盤

目錄node

1、ISCSI簡介
SCSI 即小型計算機系統接口(Small Computer System Interface;簡寫:SCSI),一種用於計算機和外部設備之間(硬盤、光驅、軟驅、打印機等)系統級接口的獨立處理器標準。SCSI是一種智能的通用接口標準,它是各類計算機和外部設備之間的接口標準。shell

iSCSI是由Cisco和IBM發起的,它將SCSI命令封裝在TCP/IP包裏,並使用一個iSCSI幀頭。它基於IP協議棧,假設以不可靠的網絡爲基礎,依靠TCP恢復丟失的數據包。數據庫

背景:
相比直連存儲,網絡存儲解決方案可以更加有效地共享,整合和管理資源。從服務器爲中心的存儲轉向網絡存儲,一直依賴於數據傳輸技術的發展,速度要求與直連存儲至關,甚至更高,同事須要克服並行SCSI固有的侷限性。vim

全部數據在沒有文件系統格式化的狀況下,都以塊的形式存儲於磁盤上。並行SCSI將數據以塊的形式傳送至存儲,可是,對於網絡它的用處至關有限,由於線纜不能超過25m,並且最多鏈接16個設備;後端

光纖通道(FC,Fiber Channel,跑FC協議)是目前SAN的主導架構,它在專門的高速網絡上分離存儲資源。光纖通道協議與互聯技術起源於知足高性能傳送塊數據的需求,同時克服直連存儲的鏈接和距離限制。一般光纖通道設備鏈接距離可達到10000米,甚至數十萬米,而且對於鏈接在SAN之上的設備沒有數量要求。服務器

與SAN不一樣,NAS將數據以文件的形式傳輸而且能夠直接鏈接至IP網絡。部署NAS設備傳送數據庫塊數據,使用基於SCSI的光纖通道協議,比Server Message Block(SMB)協議更加高效。網絡

iSCSI是一種使用TCP/IP協議,在現有IP網絡上傳輸SCSI塊命令的工業標準,它是一種在現有的IP網絡上無需安裝單獨的光纖網絡便可同時傳輸消息和塊數據的突破性技術。iSCSI基於應用很是普遍的TCP/IP協議,將SCSI命令/數據塊封裝爲iSCSI包,再封裝至TCP 報文,而後封裝到IP 報文中。iSCSI經過TCP面向鏈接的協議來保護數據塊的可靠交付。因爲iSCSI基於IP協議棧,所以能夠在標準以太網設備上經過路由或交換機來傳輸。架構

2、搭建ISCSI

準備兩臺Linux服務器app

IP 安裝的軟件
172.25.0.10 iscsi target端:targetcli
172.25.0.11 iscsi客戶端:iscsi-init
tcp

要求:
配置 server 提供一個 iSCSI 共享服務;磁盤名爲 iqn.2014-09.com.example:server,服務端口爲 3260,使用 iscsi_store 做爲其後端卷其大小爲 3G,此服務只能被 desktop.example.com 訪問
配置 desktop 使其能鏈接在 server 上提供的 iscsi;iSCSI 設備在系統啓動的期間自動加載塊設備 iSCSI 上包含一個大小 1500MiB 的分區,並格式化爲 ext4,此分區掛載在/mnt/netdev 上同時在系統啓動的期間自動加載

  • Server:
//安裝服務端主程序
yum -y install targetcli*
lsblk

//分出3G的分區用於共享
fdisk /dev/vdb
+3G
partprobe /dev/vdb

//交互式配置
[root@server0 ~]# targetcli
Warning: Could not load preferences file /root/.targetcli/prefs.bin.
targetcli shell version 2.1.fb34
Copyright 2011-2013 by Datera, Inc and others.
For help on commands, type 'help'.
/> ls
o- / ................................................................................................. [...]
o- backstores ...................................................................................... [...]
| o- block .......................................................................... [Storage Objects: 0]
| o- fileio ......................................................................... [Storage Objects: 0]
| o- pscsi .......................................................................... [Storage Objects: 0]
| o- ramdisk ........................................................................ [Storage Objects: 0]
o- iscsi .................................................................................... [Targets: 0]
o- loopback ................................................................................. [Targets: 0]
/> cd backstores/block
/backstores/block> create iscsi_store /dev/vdb1
Created block storage object iscsi_store using /dev/vdb1.
/backstores/block> cd /iscsi
/iscsi> create iqn.2014-09.com.example:server
Created target iqn.2014-09.com.example:server.
Created TPG 1.
/iscsi> ls
o- iscsi ...................................................................................... [Targets: 1]
o- iqn.2014-09.com.example:server .............................................................. [TPGs: 1]
o- tpg1 ......................................................................... [no-gen-acls, no-auth]
o- acls .................................................................................... [ACLs: 0]
o- luns .................................................................................... [LUNs: 0]
o- portals .............................................................................. [Portals: 0]
/iscsi> cd iqn.2014-09.com.example:server/tpg1/acls
/iscsi/iqn.20...ver/tpg1/acls> create iqn.2014-09.com.example:desktop
Created Node ACL for iqn.2014-09.com.example:desktop
/iscsi/iqn.20...ver/tpg1/acls> cd ../luns
/iscsi/iqn.20...ver/tpg1/luns> create /backstores/block/iscsi_store
Created LUN 0.
Created LUN 0->0 mapping in node ACL iqn.2014-09.com.example:desktop
/iscsi/iqn.20...ver/tpg1/luns> cd ../portals
/iscsi/iqn.20.../tpg1/portals> create 172.25.0.11 3260
Using default IP port 3260
Created network portal 172.25.0.11:3260.
/iscsi/iqn.20.../tpg1/portals> cd /
/> ls
o- / ................................................................................................. [...]
o- backstores ...................................................................................... [...]
| o- block .......................................................................... [Storage Objects: 1]
| | o- iscsi_store ............................................. [/dev/vdb1 (3.0GiB) write-thru activated]
| o- fileio ......................................................................... [Storage Objects: 0]
| o- pscsi .......................................................................... [Storage Objects: 0]
| o- ramdisk ........................................................................ [Storage Objects: 0]
 o- iscsi .................................................................................... [Targets: 1]
| o- iqn.2014-09.com.example:server ............................................................ [TPGs: 1]
| o- tpg1 ....................................................................... [no-gen-acls, no-auth]
| o- acls .................................................................................. [ACLs: 1]
| | o- iqn.2014-09.com.example:desktop .............................................. [Mapped
LUNs: 1]
| | o- mapped_lun0 ................................................... [lun0 block/iscsi_store (rw)]
| o- luns .................................................................................. [LUNs: 1]
| | o- lun0 .......................................................... [block/iscsi_store (/dev/vdb1)]
| o- portals ............................................................................ [Portals: 1]
| o- 172.25.0.11:3260 ......................................................................... [OK]
o- loopback ................................................................................. [Targets: 0]
/> exit

//啓動target服務並加入自啓動
systemctl enable target.service
systemctl restart target.service

//加入防火牆
firewall-cmd --add-rich-rule 'rule family=ipv4 source address=172.25.0.0/24 port
port=3260 protocol=tcp accept' --permanent
firewall-cmd --reload
firewall-cmd --list-all
  • 客戶機:
//安裝客戶端iscsi程序
yum -y install iscsi-init*
man iscsiadm

//修改iscsi配置文件,並鏈接上主服務器
iscsiadm --mode discoverydb --type sendtargets --portal 172.25.0.11 –discover
vim /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2014-09.com.example:desktop
systemctl restart iscsid.service
systemctl enable iscsid.service
iscsiadm --mode node --targetname iqn.2014-09.com.example:server --portal 172.25.0.11:3260 –login

//鏈接成功後查看磁盤會發現多個新磁盤,而後根據使用需求掛載並使用
lsblk
fdisk /dev/sda
+1500M
partprobe /dev/sda
mkfs.ext4 /dev/sda1
mkdir /mnt/netdev
blkid

vim /etc/fstab
UUID /mnt/netdev ext4 defaults,_netdev 0 0
mount -a

//掛載上就能夠正常使用了
df -Th
相關文章
相關標籤/搜索