简单存储ISCSI实验
下一篇: 简单存储NFS实验(待更新).
下面展示ipsan脚本
。
// An highlighted block
#!/bin/bash
##脚本运行环境,能上网,有两块硬盘,其中一块空硬盘名称为sdb
##基础环境配置,修改主机名,关闭防火墙和SELinux,用yum安装iscsi
hostnamectl set-hostname ipsan
yum repolist
systemctl disable --now firewalld && setenforce 0
yum -y install targetcli
##此处添加安装python-rtslib,保证服务正常启动
yum -y install python-rtslib
systemctl status target
##添加sdb硬盘进行分区,分出10G大小的sdb1
echo "n
p
1
+10G
t
8e
w
" | fdisk /dev/sdb
##进入targetcli,建立一个块存储,配置ISCSITarget命名,创建ACL允许ISCSI客户机连接,创建lun(target块设备的逻辑单元),创建ip与端口。
HOSTIP=$(ip a| awk -F '[ /]+' 'NR==9 {print $3}')
echo "ls
cd /backstores/block
create tech /dev/sdb1
cd /iscsi
create iqn.2019-06.com.ipsan:target
cd iqn.2019-06.com.ipsan:target/tpg1/acls
create iqn.2019-06.com.host:init
cd ../luns
create /backstores/block/tech
cd ../portals/
ls
delete 0.0.0.0 3260
create $HOSTIP 3260
" | targetcli
##此脚本在ipsan虚拟机主机上运行
下面展示 Guest脚本 ,需要注意ServerIP 要替换成自己的ipsan的IP
。
// An highlighted block
#!/bin/bash
##脚本运行环境,能上网,做客户端
##基础环境配置,修改主机名,关闭防火墙和SELinux,用yum安装ISCSIInitiator和启动相关服务
hostnamectl set-hostname guest
systemctl disable --now firewalld && setenforce 0
yum repolist
yum -y install iscsi-initiator-utils targetcli
systemctl enable --now iscsi
##清空配置文件并将ISCSIInitiator名称写入配置文件
: > /etc/iscsi/initiatorname.iscsi
cat >> /etc/iscsi/initiatorname.iscsi <<EOF
InitiatorName=iqn.2019-06.com.host:init
EOF
##ServerIP=需要填写服务端的IP,注意自行修改IP
##查找ISCSI设备,连接ISCSI设备
ServerIP=192.168.100.30
iscsiadm -m discovery -t sendtargets -p $ServerIP
iscsiadm -m node -p $ServerIP:3260 --login
lsblk
##这里需要等待一秒进行连接
sleep 1s
##分区,格式化并创建目录挂载到指定目录
echo "n
p
1
t
8e
w
" | fdisk /dev/sdb
mkfs.ext4 /dev/sdb1
mkdir /mnt/iscsi
mount /dev/sdb1 /mnt/iscsi
df -h
##设置开机自动连接ISCSI设备
iscsiadm -m node -T iqn.2019-06.com.ipsan:target -p $ServerIP:3260 -o update -n node.startup -v automatic
blkid /dev/sdb1
##设置开机挂载网络磁盘,这里加了一个if语句判断,防止重复执行脚本过度写入多余信息
TEST=$(cat /etc/fstab|grep /mnt/iscsi|grep ext4 |awk -F " " '{print$5}')
if [[ $TEST == 0 ]];
then
echo "挂载已存在"
else
cat >> /etc/fstab <<EOF
$(blkid /dev/sdb1 |awk -F ' ' 'NR==1{print $2}') /mnt/iscsi ext4 defaults,_netdev 0 0
EOF
sed -i 's/"//g' /etc/fstab
echo "写入开机自动挂载成功"
fi
##脚本执行完毕
// An highlighted block
##记录一次出现报错,原因是因为未安装python-rtslib,target相关服务无法启动
File "/usr/bin/targetcli", line 24, in <module>
from targetcli import UIRoot
File "/usr/lib/python2.7/site-packages/targetcli/__init__.py", line 18, in <module>
from .ui_root import UIRoot
File "/usr/lib/python2.7/site-packages/targetcli/ui_root.py", line 32, in <module>
from .ui_backstore import complete_path, UIBackstores
File "/usr/lib/python2.7/site-packages/targetcli/ui_backstore.py", line 32, in <module>
from rtslib_fb import ALUATargetPortGroup