文檔目的
部署iSCSI服務
基礎知識
傳統的SCSI小型計算機系統接口(Small Computer System Interface)技術是存儲設備最基本的標準協議,但通常需要設備互相靠近並用SCSI總線鏈接,因此受到了物理環境的限制。
iSCSI小型計算機系統接口(即Internet Small Computer System Interface)則是由IBM公司研究開發用於實現在IP網絡上運行SCSI協議的新存儲技術,即能夠讓SCSI接口與以太網技術相結合,使用iSCSI協議基於以太網傳送SCSI命令與數據,克服了SCSI需要直接連接存儲設備的侷限性,使得我們可以跨越不同的服務器共享存儲設備,並可以做到不停機狀態下擴展存儲容量。
SAN存儲區域網絡技術(Storage Area Network)便是基於iSCSI存儲協議,採用高速光釺通道傳輸存儲數據的服務程序。
邏輯單元LUN(即Logical Unit Number)是使用iSCSI協議中的重要概念,因爲當客戶機想要使用服務端存儲設備時都必需輸入對應的名稱(Target ID),而一個服務端可能會同時提供多個可用的存儲設備,於是便用LUN來詳細的描述設備或對象,同時每個LUN Device可能代表一個硬盤或RAID設備,LUN的名稱由用戶指定。
iSCSI的工作方式分爲服務端(target)與客戶端(initiator)
常用命令
mdadm -Cv /dev/md0 -n 3 -l 5 -x 1 /dev/sdb /dev/sdc /dev/sdd /dev/sde | 創建RAID 5 |
mdadm -D /dev/md0 | 查看RAID陣列詳細信息,獲取UUID值 |
create | iSCSI中創建磁盤鏡像 |
delete [ip] [port] | 刪除portals下ip地址和端口 |
systemctl restart iscsid | iscsi客戶端重啓 |
iscsiadm
| |
file /dev/sdb | 檢查硬盤信息 |
所需軟件
targetd
targetcli
系統環境
服務器:Linux version 3.10.0-229.el7.x86_64 ([email protected]) (gcc version 4.8.2 20140120 (Red Hat 4.8.2-16) (GCC) )
客戶端:Linux version 3.10.0-229.el7.x86_64 ([email protected]) (gcc version 4.8.2 20140120 (Red Hat 4.8.2-16) (GCC) )
操作步驟
配置iSCSI服務器
1.準備作爲LUN發佈的存儲設備
現在虛擬機中添加四個容量爲20GB的硬盤
創建RAID5並且設置一塊備份用的故障盤
mdadm -Cv /dev/md0 -n 3 -l 5 -x 1 /dev/sdb /dev/sdc /dev/sdd /dev/sde
注:如果提示mdadm命令未找到,請先安裝mdadm命令(yum install mdadm -y)
查看RAID陣列UUID值
mdadm -D /dev/md0
創建RAID陣列配置文件
vim /etc/mdadm.conf
寫入以下語句
DEVICE /dev/sdb /dev/sdc /dev/sdd /dev/sde
ARRAY /dev/md0 UUID=edf6f2dd:17c58f31:e60b3208:e585f906
2.安裝target服務程序
yum -y install targetd targetcli
啓動iSCSI target服務程序
systemctl start targetd
添加iSCSI target服務到開機啓動項
systemctl enable targetd
3.創建存儲對象
targetcli
進入/backstores/block目錄中創建設備disk0
cd /backstores/block
create disk0 /dev/md0
返回根目錄,查看創建後的設備
cd /
ls
4.配置iSCSI target目標
進入iscis目錄
cd iscsi
創建iSCSI target 目標
create
進入target/luns目錄中創建LUN設備
cd iqn.2003-...........
cd tpg1
cd luns
create /backstores/block/disk0
5.設置訪問控制列表
創建訪問控制列表
ls /
cd ..
cd acls
create iqn.2003-01.org.linux-iscsi.centos-cloud.x8664:sn.c15800d54445:client
注:create的acl名字可以用 ls / 查看iscisi下targetID,並在顯示的targetID後加上“:client”
切換到portals目錄中,先刪除0.0.0.0:3260, 再添加允許監聽的IP地址
cd ..
cd portals
delete 0.0.0.0 3260
create 172.16.34.71
注:這裏一定要先刪除0.0.0.0地址,否則會報錯“Could not create NetworkPortal in configFS”!
6.關閉端口防火牆
firewall-cmd --zone=public --add-port=3260/tcp --permanent
firewall-cmd --reload
配置iSCSI客戶端
1.檢查能否與iscsi服務端通信
ping -c 172.16.34.71
2. 安裝客戶端服務程序
yum install iscsi-initiator-utils -y
3.編輯iscsi客戶端名稱文件
vim /etc/iscsi/initiatorname.iscsi
替換以下語句
InitiatorName=iqn.2003-01.org.linux-iscsi.centos-cloud.x8664:sn.c15800d54445:client
注:這裏的名字必須與iscsi服務端設置的acls名稱一致,否則會報錯“iSCSI login failed due to authorization failure”!
重啓iscsi客戶端服務
systemctl restart iscsid
發現iscsi服務端的可用存儲設備
iscsiadm -m discovery -t st -p 172.16.34.71
連接iscsi服務端的可用存儲設備
iscsiadm -m node -T iqn.2003-01.org.linux-iscsi.centos-cloud.x8664:sn.c15800d54445 -p 172.16.34.71 --login
驗證
file /dev/sdb
連接前
fdisk -l
連接後
fdisk -l
格式化磁盤
mkfs.xfs /dev/sdb
mkdir /iscsi
mount /dev/sdb /iscsi
df -h
常見問題
問題一:無法建立本地IP portals 監聽,顯示“Could not create NetworkPortal in configFS”
解決方法:
刪除/iscsi/iqn.20../portals 已有IP:端口,再次建立即可
cd /iscsi/iqn.20../tpg1/portals
delete 0.0.0.0 3260
create 172.16.34.70 (這裏的IP是iSCSI服務器的IP地址)
問題二:iSCSI客戶端無法連接iSCSI服務端,顯示錯誤“iSCSI login failed due to authorization failure”
解決方法:
客戶端中的initiator唯一標識(/etc/iscsi/initiatorname.iscsi)必須和服務器上的名字一直
客戶端 vim /etc/iscsi/initiatorname.iscsi
服務端
targetcli
cd /
ls
參考文獻
文章架構:
http://www.linuxprobe.com/chapter-17.html
http://www.linuxprobe.com/chapter-07.html
create IP 問題:
http://target-devel.vger.kernel.narkive.com/kxGYQSnh/could-not-create-networkportal-in-configfs