Centos7 ISCSI配置 徹底攻略

Centos7 ISCSI配置 徹底攻略

 

一. iscsi簡單介紹

iSCSI( Internet Small Computer System Interface 互聯網小型計算機系統接口)node

iscsi經過IP-SAN網絡的iscsi協議, 把服務端的存儲資源(RAID) 封裝到本地,像使用本地硬盤那樣使用網絡上的硬盤。shell

iSCSI技術在工做形式上分爲服務端(target)與客戶端(initiator),iSCSI服務端即用於存放硬盤存儲資源的服務器, 而iSCSI客戶端則是用戶使用的軟件,用於獲取遠程服務端的存儲資源json

在Centos7上 默認的服務端軟件是targetcli, 客戶端的軟件是iscsiadmvim

二. 標準的iscsi鏈接方式(包含CHAP認證)

服務端targetcli的簡單介紹

targetcli是 Target的用戶態的管理配置工具。提供了一個相似Shell的環境centos

​ 能夠用使用一些shell命令 如:ls 、cd、 ctr+R 歷史命令搜索 TAB 命令 補全服務器

​ targetcli 把各類類型資源 抽象成目錄。 咱們在相應的目錄進行建立就行,網絡

​ 只要理解了各類目錄的含義就容易使用了session

targetcli shell version 2.1.fb46
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]
/> 

​ /backstores/block 這個目錄是服務端配置通常存儲資源。app

​ ramdisk 這個是把內存看成存儲資源工具

​ 咱們目前用的是/backstores/block 這個目錄和/iscsi目錄下的一些目錄。

 

targetcli建立iscsi簡單流程

#建立共享資源 並重命名disk0
$ /> /backstores/block create disk0 /dev/mapper/testraid60-123
#建立iscsi 格式 iqn.<如:2018-09>.com.<不能有下劃線>:<不能有下劃線>
$ /backstores> /iscsi create iqn.2018-09.com.adawang:ada1
Created target iqn.2018-09.com.adawang:ada1.
Created TPG 1.
Global pref auto_add_default_portal=true
Created default portal listening on all IPs (0.0.0.0), port 3260.
#進入建立後的iscsi目錄
$ /backstores> cd /iscsi/iqn.2018-09.com.adawang:ada1/tpg1/
$ /iscsi/iqn.20...ang:ada1/tpg1> ls
o- tpg1 .............................. [no-gen-acls, no-auth]
  o- acls ......................................... [ACLs: 0]
  o- luns .......................................... [LUNs: 0]
  o- portals .................................... [Portals: 1]
    o- 0.0.0.0:3260 ...................................[OK]
# lun配置 添加最開始建立的disk0    
$ /iscsi/iqn.20...ang:ada1/tpg1> cd luns
$ /iscsi/iqn.20...da1/tpg1/luns>create /backstores/block/disk0 
Created LUN 0.
#Ip配置 須要刪除默認的0.0.0.0 ip才能建立
$ /iscsi/iqn.20...ang:ada1/tpg1> cd ../portals
$ /iscsi/iqn.20.../tpg1/portals> delete 0.0.0.0 3260
Deleted network portal 0.0.0.0:3260
$ /iscsi/iqn.20.../tpg1/portals> create 10.10.110.2 3260
Using default IP port 3260
Created network portal 10.10.110.2:3260.
# acl配置
$ /iscsi/iqn.20.../tpg1/portals> cd ../acls
#建立acl用戶名 acl格式和iqn一致
$ /iscsi/iqn.20...da1/tpg1/acls> create iqn.2018-09.com.adawang:ada2
Created Node ACL for iqn.2018-09.com.adawang:ada2
Created mapped LUN 0.
$ /iscsi/iqn.20...da1/tpg1/acls> cd iqn.2018-09.com.adawang:ada2/
#設置acl密碼
$ /iscsi/iqn.20....adawang:ada2> set auth password=123456789012 
Parameter password is now '123456789012'.
#退出
$ /iscsi/iqn.20....adawang:ada2> exit 
Global pref auto_save_on_exit=true
Last 10 configs saved in /etc/target/backup.
Configuration saved to /etc/target/saveconfig.json

 

Initiator客戶端 配置

修改配置文件
  1. 修改init端名稱(可選部分)

$ echo 'InitiatorName=<名稱>'  > /etc/iscsi/initiatorname.iscsi
$ source /etc/iscsi/initiatorname.iscsi
#重啓iscsi服務
$ systemctl restart iscsid.service 

   source /etc/iscsi/initiatorname.iscsi

  表示配置後的變量名InitiatorName 加載到當前Bash環境下( source 能夠用 . 代替)

  2.修改iscsi配置文件 iscsid.conf (通常首次配置 修改)

$ vim /etc/iscsi/iscsid.conf
....省略...
# *************
# CHAP Settings
# *************
# To enable CHAP authentication set node.session.auth.authmethod
# to CHAP. The default is None.
node.session.auth.authmethod = CHAP
# To set a CHAP username and password for initiator
# authentication by the target(s), uncomment the following lines:
node.session.auth.username = <initiatorname.iscsi文件配置的名稱>
node.session.auth.password = <12位-16位長度密碼>
....後文省略...

 

發現並鏈接target目標
  #發現門戶ip下的全部target目標
  $ iscsiadm -m discovery -t st -p <界面配置的門戶ip>  
  ##鏈接
  $ iscsiadm -m node -T <target目標名> -p  <門戶ip>  -l
鏈接成功後查詢鏈接的磁盤

方法一:fdisk -l 或 lsblk 命令查看

  發現新增長的網絡硬盤 /dev/sd<a-z>

  方法二: lsscsi -ds

經常使用參數 -d 顯示設備主次序列號
        -s 顯示容量大小
        -c 用全稱顯示默認的信息

14:0:0:1 最後的1表明lun id , 14表明主機控制器HOST序號


  方法三:iscsiadm -m session -P 3

最後一行 Attached scsi disk sda

-m session 顯示會話信息 ,參數 -P <0-3> 對應print級別,級別越高信息越詳細。

 

格式化成xfs文件系統並掛載

​ 用mkfs工具對發現的磁盤分區建立文件系統

$ mkfs.xfs <磁盤路徑 如:/dev/sda >
$ mkdir  /mnt/iscsi
$ mount /dev/sda  /mnt/iscsi
設置開機自動掛載(可選部分)
#blkid命令 查看掛載磁盤的uuid
$ blkid | grep sda
 /dev/sda: UUID="c02b0cbe-eaca-e082-4f4a-7490d831e96e" TYPE="xfs"
#修改fstab
$ vim /etc/fstab 
# /etc/fstab
# Created by anaconda on Fri Feb 23 09:53:59 2018
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=0b29b82e-20a5-488b-9606-b1b20e72e0aa /boot xfs     defaults        0 0
/dev/mapper/centos-home /home                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
UUID=c02b0cbe-eaca-e082-4f4a-7490d831e96e /mnt/iscsi xfs
defaults, _netdev 0 0
#確保fstab修改無誤
$ mount -a

系統在啓動的時候會自動掛載 fstab裏的,若是發送錯誤 則會致使系統沒法啓動。

通常在修改fstab後用mount -a 命令 加載fstab配置表測試修改是否無誤,沒有打印表明正常。

由於/dev/sda 容易盤符漂移,因此用uuid全局惟一標示符來代替磁盤符號。

iscsi盤是網絡存儲設備,須要加上_netdev參數,表示聯網後在掛載,不然致使開機太長或系統啓動失敗。

三. 標準的iscsi斷開方式

$ umount /mnt/iscsi
# 若是 須要斷開所有iscsi 使用iscsiadm -m node -u 
$ iscsiadm -m node -T <target名稱> -u 
# 刪除節點記錄。
# 若是 須要刪除全部節點記錄 使用iscsiadm -m node -o delete
$ iscsiadm -m node -o delete -T <target的名稱> -p <門戶ip>

四. 你可能會碰見的問題

  • 目錄顯示輸入輸出錯誤

  • 掛載的時候顯示文件系統損壞

  不一樣文件系統的在線擴容方法以上2中狀況都是由於沒有斷開iscsi的時候沒有正常卸載,mount的時候顯示文件系統的損化,是由於以前已經掛載過相同盤符或目錄,能夠經過mount命令查看掛載記錄。

    

        解決辦法:mount <盤符或者掛載目錄>

  •  沒法umount 目錄

   有2種狀況:

  目錄被BASH佔用--在掛載目錄進行卸載

​   這種狀況切換到非掛載目錄下就能夠卸載了

  因磁盤或目錄被其餘進程佔用致使沒法卸載

  這種解決起來稍微麻煩點

  1.用lsof 命令尋找到已經打開的文件的PID號

  2.ps aux | grep <磁盤名或目錄名> 查找進程的pid號

​  3.kill -9 <pid號> 命令 殺死該進程

​  4.最後umount卸載

  

五. 在線添加lun方法

  服務器新添加了一個LUN,那麼主機端須要刷新下會話

 

 iscsiadm -m session -R

六. ext4 xfs文件系統的在線擴容方法

  1. 刷新iscsi會話

    iscsiadm -m session -R

  2. ext4擴容

    resize2fs /dev/<LUN掛載的設備名>

  3. xfs擴容

    xfs_growfs /dev/<LUN掛載的設備名>

  

  能夠看到 擴容先後 blocks 變化

 

七. Centos7 多路徑的通常使用

加載多路徑驅動和啓動服務

$ multipath
#打印提示驅動沒有加載
Sep 12 17:22:38 | DM multipath kernel driver not loaded
Sep 12 17:22:38 | DM multipath kernel driver not loaded
$ modprobe dm-multipath
$ modprobe dm-round-robin
#查看多路徑multipathd服務狀態 結果顯示未啓動
$ systemctl status multipathd
● multipathd.service - Device-Mapper Multipath Device Controller
   Loaded: loaded (/usr/lib/systemd/system/multipathd.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
# 啓動服務
$ systemctl start multipathd

經常使用的multipath 指令

$ multipath  <指令>

---

-r  從新加載配置表  multipthd.conf 。修改配置表或者用multipath -F命令後使用

-ll 顯示當前全部路徑的信息,通常用於測試多路徑是否生效

-F 刷新全部多路徑設備map表

-v3 調整debug調式級別打印, 通常用於錯誤診斷 (打印級別默認v2)

配置多路徑軟件 multipthd.conf

$ vim /etc/multipthd.conf
## Use user friendly names, instead of using WWIDs as names.
defaults {
       user_friendly_names yes
       find_multipaths yes
}

若是/etc/multipthd.conf 不存在, 能夠用默認的多路徑配置拷貝到 /etc目錄

$ cp /usr/share/doc/device-mapper-multipath- 0.4.9/multipath.conf /etc/
#若是不記得默認的配置表存放目錄能夠用Find 命令找出來
$ find / -name multipath.conf
/etc/multipath.conf
/usr/share/doc/device-mapper-multipath-0.4.9/multipath.conf

查看多路徑合成結果

$ multipth -ll
#多路徑合併後的設備 /dev/mapper/mpatha 之後都用這個設備進行操做
mpatha (360a9800064665072443469563477396c) dm-0 NETAPP,LUN    

size=35G features='0' hwhandler='0' wp=rw

`-+- policy='round-robin 0' prio=4 status=active
 #多路徑下的兩個盤符sdb和sde.
|- 1:0:0:0 sdb 8:16 active ready  running  

`- 2:0:0:0 sde 8:64 active ready  running

注意:之後都用合成後的設備/dev/mapper/mpatha進行格式化掛載等操做,不能用其餘設備進行操做

相關文章
相關標籤/搜索