### 准备工作
所有节点:
- 系统: `CentOS7.6`
iSCSI :
- IP/主机:`172.16.0.3(node1)`
从节点:
- IP/主机:`172.16.0.4(node2)`
### 创建 iSCSI target
#### 创建后备存储设备
`fdisk创建一个分区/dev/vdb1`
 
#### 安装targetcli
```bash
yum -y install targetcli
```
 
#### 使用targetcli管理iSCSI targets
```bash
targetcli
```
```bash
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]
```
 
#### 创建block backstores
创建一个新的block
```bash
/backstores/block> create dev=/dev/vdb1 name=vdb1
Created block storage object vdb1 using /dev/vdb1.
/backstores/block> ls
o- block ................................................................ [Storage Objects: 1]
o- vdb1 ....................................... [/dev/vdb1 (0 bytes) write-thru deactivated]
o- alua ................................................................. [ALUA Groups: 1]
o- default_tg_pt_gp ..................................... [ALUA state: Active/optimized]
```
 
#### 创建iSCSI targets
```bash
/>cd /iscsi
/iscsi>create wwn=iqn.2019-07.com.example:servers
Created target iqn.2018-12.com.example:servers.
Created TPG 1.
Global pref auto_add_default_portal=true
Created default portal listening on all IPs (0.0.0.0), port 3260.
/iscsi> ls
o- iscsi ......................................................................... [Targets: 1]
o- iqn.2019-07.com.example:servers ................................................ [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]
```
 
#### 添加ACLs
```bash
/>cd iscsi/iqn.2019-07.com.example:servers/tpg1/acls
/iscsi/iqn.20...ers/tpg1/acls> create wwn=iqn.2018-12.com.example:node1
Created Node ACL for iqn.2018-12.com.example:node1
```
 
#### 添加LUNs到iSCSI target
```bash
/> cd iscsi/iqn.2018-12.com.example:servers/tpg1/luns
/iscsi/iqn.20...ers/tpg1/luns> create /backstores/block/vdb1
Created LUN 0.
Created LUN 0->0 mapping in node ACL iqn.2018-12.com.example:node1
/iscsi/iqn.20...ers/tpg1/luns> exit
Global pref auto_save_on_exit=true
Configuration saved to /etc/target/saveconfig.json
```
 
#### 启动和开启target服务
```bash
systemctl start target
systemctl enable target
```
 
 
### 创建 iSCSI Initiator
#### 安装iscsi-initiator包
```bash
yum -y install iscsi-initiator-utils
```
 
#### 设置iSCSI Initiator名
```bash
cat /etc/iscsi/initiatorname.iscsi
```
```
InitiatorName=iqn.2019-07.com.example:node1
```
 
#### 重启iscsid
```bash
systemctl restart iscsid
```
 
#### 发现LUNs
```bash
iscsiadm --mode discovery --type sendtargets --portal 172.16.0.4 --discover
```
```
172.16.0.4:3260,1 iqn.2019-07.com.example:servers
```
发现之后数据目录更新
```bash
ls -l /var/lib/iscsi/nodes
```
```
drw------- 3 root root 4096 Jul 23 03:21 iqn.2019-07.com.example:servers
```
```bash
ls -l /var/lib/iscsi/send_targets/172.16.0.4,3260/
```
```
lrwxrwxrwx 1 root root 70 Jul 23 03:21 iqn.2019-07.com.example:servers,172.16.0.4,3260,1,default -> /var/lib/iscsi/nodes/iqn.2019-07.com.example:servers/172.16.0.4,3260,1
-rw------- 1 root root 549 Jul 23 03:21 st_config
```
 
#### 创建连接(默认持久连接,重启生效)
```bash
iscsiadm --mode node --targetname iqn.2019-07.com.example:servers --login
```
```
Logging in to [iface: default, target: iqn.2019-07.com.example:servers, portal: 172.16.0.4,3260] (multiple)
Login to [iface: default, target: iqn.2019-07.com.example:servers, portal: 172.16.0.4,3260] successful.
```
监控连接
```bash
iscsiadm --mode node -P 1
```
```
Target: iqn.2019-07.com.example:servers
Portal: 172.16.0.4:3260,1
Iface Name: default
```
列出scsi设备
```bash
lsscsi
```
```
[1:0:0:0] cd/dvd QEMU QEMU DVD-ROM 2.5+ /dev/sr0
[2:0:0:0] disk LIO-ORG vdb1 4.0 /dev/sda
```
 
#### 移除连接
断开连接
```bash
iscsiadm --mode node --targetname iqn.2018-12.com.example:servers --portal 10.0.2.13 -u
```
```
Logging out of session [sid: 1, target: iqn.2018-12.com.example:servers, portal: 10.0.2.13,3260]
Logout of [sid: 1, target: iqn.2018-12.com.example:servers, portal: 10.0.2.13,3260] successful.
```
删除IQN子目录和内容
```bash
iscsiadm --mode node --targetname iqn.2018-12.com.example:servers --portal 10.0.2.13 -o delete
```
`停止iscsi服务,移除/var/lib/iscsi/nodes下所有文件清理配置,重启iscsi服务,开始discovery再次登录`
 
#### 格式化iSCSI设备
```bash
mkfs.ext4 /dev/sda #也可以对设备进行分区
```
#### 挂载iscsi设备
```bash
blkid /dev/sda
```
```
/dev/sda: UUID="dce62896-9ac9-42cf-aa3b-38344974c309" TYPE="ext4"
```
#### 设置开机挂载
```bash
vim /etc/fstab
```
```
UUID="dce62896-9ac9-42cf-aa3b-38344974c309" /test ext4 defaults 0 0
```
挂载/etc/fstab中的配置
```bash
mount -a
```
查看挂载信息
```bash
df -h
```
```
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 25G 1.8G 22G 8% /
devtmpfs 486M 0 486M 0% /dev
tmpfs 496M 0 496M 0% /dev/shm
tmpfs 496M 50M 446M 11% /run
tmpfs 496M 0 496M 0% /sys/fs/cgroup
tmpfs 100M 0 100M 0% /run/user/0
/dev/sda 2.0G 6.0M 1.8G 1% /test
```
应用场景:利用服务器多余的磁盘空间整合成大的逻辑卷用于备份(流程:服务器创建iSCSI targets,客户端通过iSCSI initators登陆获取targets。客户端使用LVM对磁盘创建一个总的逻辑卷)