1. 程式人生 > >iscsi共享儲存的簡單配置和應用

iscsi共享儲存的簡單配置和應用

1、環境介紹 SCSI(Small Computer System Interface)是塊資料傳輸協議,在儲存行業廣泛應用,是儲存裝置最基本的標準協議。從根本上說,iSCSI協議是一種利用IP網路來傳輸潛伏時間短的SCSI資料塊的方法,ISCSI使用乙太網協議傳送SCSI命令、響應和資料。ISCSI可以用我們已經熟悉和每天都在使用的乙太網來構建IP儲存區域網。通過這種方法,ISCSI克服了直接連線儲存的侷限性,使我們可以跨不同伺服器共享儲存資源,並可以在不停機狀態下擴充儲存容量。 所需軟體與軟體結構 CentOS 將 tgt 的軟體名稱定義為 scsi-target-utils ,因此你得要使用 yum 去安裝他才行。至於用來作為 initiator 的軟體則是使用 linux-iscsi 的專案,該專案所提供的軟體名稱則為 iscsi-initiator-utils 。所以,總的來說,你需要的軟體有: scsi-target-utils:用來將 Linux 系統模擬成為 iSCSI target 的功能; iscsi-initiator-utils:掛載來自 target 的磁碟到 Linux 本機上。 那麼 scsi-target-utils 主要提供哪些檔案呢?基本上有底下幾個比較重要需要注意的: /etc/tgt/targets.conf:主要配置檔案,設定要分享的磁碟格式與哪幾顆; /usr/sbin/tgt-admin:線上查詢、刪除 target 等功能的設定工具; /usr/sbin/tgt-setup-lun:建立 target 以及設定分享的磁碟與可使用的 客戶端等工具軟體。 /usr/sbin/tgtadm:手動直接管理的管理員工具 (可使用配置檔案取代); /usr/sbin/tgtd:主要提供 iSCSI target 服務的主程式; /usr/sbin/tgtimg:建置預計分享的映像檔案裝置的工具 (以映像檔案模擬磁碟);

這次的實驗結構 image.png (sdx1、sdy1是物理的磁碟通過lun連線到target虛擬的共享塊,在客戶端掛載這個塊。這裡我們新增一塊硬碟sdb,建立sdb1(400m)和sdb2(500m))


2、server端配置 新增一塊磁碟後 複查一下

[[email protected] ~]# lsblk 
NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda             8:0    0   60G  0 disk 
├─sda1          8:1    0  500M  0 part /boot
└─sda2          8:2    0 59.5G  0 part 
  ├─rhel-swap 253:0    0    2G  0 lvm  [SWAP]
  ├─rhel-root 253:1    0 38.6G  0 lvm  /
  └─rhel-home 253:2    0 18.9G  0 lvm  /home
sdb             8:16   0   10G  0 disk 
├─sdb1          8:17   0  400M  0 part 
└─sdb2          8:18   0  500M  0 part 
sr0            11:0    1  3.6G  0 rom  /dvd

安裝target並加入開機自啟動 yum install -y target* systemctl start target systemctl enable target

配置target的ctl將sdb1和sdb2共享出去 (一)、block關聯磁碟

[[email protected] ~]# targetcli 
targetcli shell version 2.1.fb37
Copyright 2011-2013 by Datera, Inc and others.
For help on commands, type 'help'.

/> /backstores/block create block1 /dev/sdb
/dev/sdb   /dev/sdb1  /dev/sdb2  
...................................dev
/> /backstores/block create block1 /dev/sdb1
Created block storage object block1 using /dev/sdb1.
/> /backstores/block create block2 /dev/sdb2
Created block storage object block2 using /dev/sdb2.
/> ls
o- / ..................................................................... [...]
  o- backstores .......................................................... [...]
  | o- block .............................................. [Storage Objects: 2]
  | | o- block1 .................. [/dev/sdb1 (400.0MiB) write-thru deactivated]#新建的block
  | | o- block2 .................. [/dev/sdb2 (500.0MiB) write-thru deactivated]#新建的block
  | o- fileio ............................................. [Storage Objects: 0]
  | o- pscsi .............................................. [Storage Objects: 0]
  | o- ramdisk ............................................ [Storage Objects: 0]
  o- iscsi ........................................................ [Targets: 0]
  o- loopback ..................................................... [Targets: 0]
/> 

(二)、建立target

/> /iscsi create iqn.2018-10.20.com:disk
Created target iqn.2018-10.20.com:disk.
Created TPG 1.
Global pref auto_add_default_portal=true
Created default portal listening on all IPs (0.0.0.0), port 3260.
/> ls
o- / ..................................................................... [...]
  o- backstores .......................................................... [...]
  | o- block .............................................. [Storage Objects: 2]
  | | o- block1 .................. [/dev/sdb1 (400.0MiB) write-thru deactivated]
  | | o- block2 .................. [/dev/sdb2 (500.0MiB) write-thru deactivated]
  | o- fileio ............................................. [Storage Objects: 0]
  | o- pscsi .............................................. [Storage Objects: 0]
  | o- ramdisk ............................................ [Storage Objects: 0]
  o- iscsi ........................................................ [Targets: 1] #這裡是建立tartet的目錄
  | o- iqn.2018-10.20.com:disk ....................................... [TPGs: 1]
  |   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]
  o- loopback ..................................................... [Targets: 0]

(三)、建立lun關聯block和target

/> ls
o- / ..................................................................... [...]
  o- backstores .......................................................... [...]
  | o- block .............................................. [Storage Objects: 2]
  | | o- block1 .................. [/dev/sdb1 (400.0MiB) write-thru deactivated]
  | | o- block2 .................. [/dev/sdb2 (500.0MiB) write-thru deactivated]
  | o- fileio ............................................. [Storage Objects: 0]
  | o- pscsi .............................................. [Storage Objects: 0]
  | o- ramdisk ............................................ [Storage Objects: 0]
  o- iscsi ........................................................ [Targets: 1]
  | o- iqn.2018-10.20.com:disk ....................................... [TPGs: 1]
  |   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]
  o- loopback ..................................................... [Targets: 0]
/> iscsi/iqn.2018-10.20.com:disk/tpg1/acls create iqn.2018-10.20.com:xx
Created Node ACL for iqn.2018-10.20.com:xx
/> ls
o- / ..................................................................... [...]
  o- backstores .......................................................... [...]
  | o- block .............................................. [Storage Objects: 2]
  | | o- block1 .................. [/dev/sdb1 (400.0MiB) write-thru deactivated]
  | | o- block2 .................. [/dev/sdb2 (500.0MiB) write-thru deactivated]
  | o- fileio ............................................. [Storage Objects: 0]
  | o- pscsi .............................................. [Storage Objects: 0]
  | o- ramdisk ............................................ [Storage Objects: 0]
  o- iscsi ........................................................ [Targets: 1]
  | o- iqn.2018-10.20.com:disk ....................................... [TPGs: 1]
  |   o- tpg1 ........................................... [no-gen-acls, no-auth]
  |     o- acls ...................................................... [ACLs: 1]
  |     | o- iqn.2018-10.20.com:xx ............................ [Mapped LUNs: 0]
  |     o- luns ...................................................... [LUNs: 0]
  |     o- portals ................................................ [Portals: 1]
  |       o- 0.0.0.0:3260 ................................................. [OK]
  o- loopback ..................................................... [Targets: 0]
/> iscsi/iqn.2018-10.20.com:disk/tpg1/luns create /
/backstores/block/block1  /lib/                     /sbin/                    
/backstores/block/block2  /lib64/                   /srv/                     
/bin/                     /media/                   /sys/                     
/boot/                    /mnt/                     /tmp/                     
/dev/                     /opt/                     /usr/                     
/dvd/                     /proc/                    /var/                     
/etc/                     /root/                    
/home/                    /run/                     
..................................................storage_object
/> iscsi/iqn.2018-10.20.com:disk/tpg1/luns create /backstores/block/block
/backstores/block/block1  /backstores/block/block2  
..................................................storage_object
/> iscsi/iqn.2018-10.20.com:disk/tpg1/luns create /backstores/block/block1
Created LUN 0.
Created LUN 0->0 mapping in node ACL iqn.2018-10.20.com:xx
/> iscsi/iqn.2018-10.20.com:disk/tpg1/luns create /backstores/block/block2
Created LUN 1.
Created LUN 1->1 mapping in node ACL iqn.2018-10.20.com:xx
/> ls
o- / ..................................................................... [...]
  o- backstores .......................................................... [...]
  | o- block .............................................. [Storage Objects: 2]
  | | o- block1 .................... [/dev/sdb1 (400.0MiB) write-thru activated]
  | | o- block2 .................... [/dev/sdb2 (500.0MiB) write-thru activated]
  | o- fileio ............................................. [Storage Objects: 0]
  | o- pscsi .............................................. [Storage Objects: 0]
  | o- ramdisk ............................................ [Storage Objects: 0]
  o- iscsi ........................................................ [Targets: 1]
  | o- iqn.2018-10.20.com:disk ....................................... [TPGs: 1]
  |   o- tpg1 ........................................... [no-gen-acls, no-auth]
  |     o- acls ...................................................... [ACLs: 1] #添加了一條認證
  |     | o- iqn.2018-10.20.com:xx ............................ [Mapped LUNs: 2]
  |     |   o- mapped_lun0 ............................ [lun0 block/block1 (rw)] #關聯lun
  |     |   o- mapped_lun1 ............................ [lun1 block/block2 (rw)] #關聯lun

  |     o- luns ...................................................... [LUNs: 2]
  |     | o- lun0 ................................... [block/block1 (/dev/sdb1)]
  |     | o- lun1 ................................... [block/block2 (/dev/sdb2)]
  |     o- portals ................................................ [Portals: 1]
  |       o- 0.0.0.0:3260 ................................................. [OK]
  o- loopback ..................................................... [Targets: 0]
/> exit
Global pref auto_save_on_exit=true
Last 10 configs saved in /etc/target/backup.
Configuration saved to /etc/target/saveconfig.json

至此伺服器端就配置完了,詳細的配置可以到/etc/target/saveconfig.json修改


3、client端配置 (一)、安裝iscsi* 軟體包 iscsi-initiator-utils-6.2.0.873-29.el7.x86_64 軟體包 iscsi-initiator-utils-iscsiuio-6.2.0.873-29.el7.x86_64 [[email protected] ~]# yum install -y iscsi*

(二)、加入開機自啟 [[email protected] ~]# systemctl restart iscsid.service [[email protected] ~]# systemctl enable iscsid.service

(三)、做一個發現的操作,發現伺服器共享的target名字是什麼

[[email protected] ~]# iscsiadm -m discovery -t st -p 192.168.137.100
192.168.137.100:3260,1 iqn.2018-10.20.com:disk  
m模式mode-discovery, discoverydb.
t型別type  must  be  sendtargets (or abbreviated as st), slp, isns or fw. Currently only sendtargets, fw, and iSNS is  supported,  see the DISCOVERY TYPES section.
p是IP:port

(四)、檢視發現的條目

[[email protected] ~]# iscsiadm -m discovery -p 192.168.137.100
# BEGIN RECORD 6.2.0.873-28
discovery.startup = manual
discovery.type = sendtargets #-t st 
discovery.sendtargets.address = 192.168.137.100 #target服務端
discovery.sendtargets.port = 3260 #埠
discovery.sendtargets.auth.authmethod = None #認證沒有
discovery.sendtargets.auth.username = <empty>
discovery.sendtargets.auth.password = <empty>
discovery.sendtargets.auth.username_in = <empty>
discovery.sendtargets.auth.password_in = <empty>
discovery.sendtargets.timeo.login_timeout = 15 #登入超時時間
discovery.sendtargets.use_discoveryd = No #沒有使用這個發現
discovery.sendtargets.discoveryd_poll_inval = 30
discovery.sendtargets.reopen_max = 5
discovery.sendtargets.timeo.auth_timeout = 45
discovery.sendtargets.timeo.active_timeout = 30
discovery.sendtargets.iscsi.MaxRecvDataSegmentLength = 32768
# END RECORD

(五)、修改客戶端的acl並登入

[[email protected] ~]# iscsiadm -m node -T iqn.2018-10.20.com:disk -p 192.168.137.100 -l
Logging in to [iface: default, target: iqn.2018-10.20.com:disk, portal: 192.168.137.100,3260] (multiple)
Login to [iface: default, target: iqn.2018-10.20.com:disk, portal: 192.168.137.100,3260] successful.
[[email protected] ~]# lsblk 
NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda             8:0    0   60G  0 disk 
├─sda1          8:1    0  500M  0 part /boot
└─sda2          8:2    0 59.5G  0 part 
  ├─rhel-swap 253:0    0    2G  0 lvm  [SWAP]
  ├─rhel-root 253:1    0 38.6G  0 lvm  /
  └─rhel-home 253:2    0 18.9G  0 lvm  /home
sdb             8:16   0  400M  0 disk 
sdc             8:32   0  500M  0 disk 
sr0            11:0    1  3.6G  0 rom  /dvd
[[email protected] ~]# cat /etc/iscsi/initiatorname.iscsi 
#InitiatorName=iqn.1994-05.com.redhat:949f18f9ce84
InitiatorName=iqn.2018-10.20.com:xx ##剛才設定的acl條目

注:這個自動載入過來的磁碟重啟之後是自動載入過來的


4、客戶端掛載iscsi的盤 格式化sdb和sdc

[[email protected] ~]# mkfs.xfs /dev/sdb
meta-data=/dev/sdb               isize=256    agcount=8, agsize=12800 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0        finobt=0
data     =                       bsize=4096   blocks=102400, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal log           bsize=4096   blocks=853, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[[email protected] ~]# mkfs.xfs /dev/sdc
meta-data=/dev/sdc               isize=256    agcount=8, agsize=16000 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0        finobt=0
data     =                       bsize=4096   blocks=128000, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal log           bsize=4096   blocks=853, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

建立掛載點並掛載 [[email protected] ~]# mkdir /sdb [[email protected] ~]# mkdir /sdc 注:如果需要實時同步的話需要使用gfs叢集檔案系統

[[email protected] ~]# cat /etc/fstab |tail -n 4
/dev/mapper/rhel-swap   swap                    swap    defaults        0 0
/dev/cdrom /dvd iso9660 defaults 0 0
/dev/sdb /sdb xfs _netdev 0 0 #新增的條目
/dev/sdc /sdc xfs _netdev 0 0 #新增的條目
[[email protected] ~]# # mount -a 
[[email protected] ~]# mount |tail -n 4
gvfsd-fuse on /run/user/0/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,relatime,user_id=0,group_id=0)
fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime)
/dev/sdb on /sdb type xfs (rw,relatime,seclabel,attr2,inode64,noquota,_netdev)
/dev/sdc on /sdc type xfs (rw,relatime,seclabel,attr2,inode64,noquota,_netdev)
[[email protected] ~]# 

5、總結 (一)、增加iscsi儲存

(1)發現iscsi儲存:iscsiadm -m discovery -t st -p ISCSI_IP

(2)檢視iscsi發現記錄:iscsiadm -m node

(3)登入iscsi儲存:iscsiadm -m node -T LUN_NAME -p ISCSI_IP -l

(4)開機自動: iscsiadm -m node –T LUN_NAME -p ISCSI_IP --op

update -n node.startup -v

automatic

 

(二)、刪除iscsi儲存

(1)登出iscsi儲存 iscsiadm -m node -T LUN_NAME -p ISCSI_IP -u

(2)對出iscsi所有登入 iscsiadm -m node --logoutall=all

(3)刪除iscsi發現記錄:iscsiadm -m node -o delete -T LUN_NAME -p ISCSI_IP

簡書連結