linuxio的体系结构和基本配置
iSCSI中使用C/S模型
主机一般是Initiator,存储设备是target
Initiator:
SCSI会话的发起方。
向target请求LUN,并将数据的读写指令发送给target。
Target
接受SCSI会话的一方。
接受来自Initiator的指令,为initiator提供LUN,并实现对LUN的读写。
LUN:可以认为是逻辑的块设备
下面开始实验:
安装linux的存储服务器
用我KVM1里的centos7.0
安装targetcli软件包
yum -y install targetcli
打开
targetcli
targetcli类似与shell的交互,创建target,tgp都是以目录显示出来的,功能都类似于目录树。
配置target
先给centos7.0加一块硬盘用于target块存储,正好原先挂载到/vm下那80G剩了好多,新建个卷
fdisk -l
因为是虚拟机里的虚拟机,硬盘好像叫/dev/vdb,创建一个分区
fdisk /dev/vdb
n
p
w
这块盘就作为存储
1、创建存储对象
创建块存储对象
进入targetcli
targetcli
cd backstores/block
create block1 dev=/dev/vdb1
创建fileio对象
cd到fileio目录下,创建一个名字叫fileio1.img的文件,大小为50M,如果文件系统支持稀疏文件,它会把fileio1做成稀疏文件
create fileio1 /tmp/fileio1.img 50M
创建ramdisk对象
cd到/backstores/ramdisk
create ramdisk1 1M
这就是三个创建练习
2、创建iSCSI Target
首先要cd到/iscsi
如果create后面不跟名字会自动起个名字,为了好记我这里用学校的名字
create iqn.2020-02.com.heboc:qiushan
发现它自动创建好了tpg,下面来配置它们
3、配置target portal group(TGP)
配置portals
配置LUN:添加块设备、ramdisk、fileio三个LUN
配置ACL查看iSCSI initiator查看其IQN
为每个initiator创建ACL
portals默认是创建好的,如果创建的话cd到tpg1/portals下
create
配置LUN就是把刚才创建的块设备,ramdisk,fileio分配给tpg1,做一个mapper
cd到luns目录下
create /backstores/block/block1
同样的方法
target判断initiator有没有权限访问是通过名称,所以需要知道initiator的名称。
我现在切换一下,
centos7.0是刚才的Target
centos7.0-2是Initiator
Target的ip:192.168.122.83
Initiator的ip:192.168.122.197
可以先ping一下确保互通
在initiator端,先安装iscsi-initiator-utils初始化iSCSI驱动
yum install iscsi-initiator-utils iscsi-initiator-utils-devel
然后配置文件默认安装到/etc/iscsi/目录下
从/etc/iscsi/initiatorname.iscsi中找到name
把冒号后面的改成自己好记的名字
回到target
cd到acls/下,创建acls
create iqn.1994-05.com.redhat:qiushankvm
4、保存配置
cd /
saveconfig
5、设置target服务为自动启用
exit退出targetcli
systemctl enable target.service
6、检查配置
Initiator连接Target
切换到客户端centos7.0-2
yum -y install iscsiadm
然后检查是否可以发现target
iscsiadm -m discovery -t sendtargets -p 192.168.122.83
提示:
iscsiadm: cannot make connection to 192.168.122.83: No route to host
应该是防火墙的缘故,
systemctl stop firewalld
再试,ok,它已经找到了target
测试挂载设备
iscsiadm -d2 -m node --login
fdisk -l
已经可以看到40G的块存储,50M的fileio,1M的randisk
这里分区,搞vg什么的一样的,自由控制。
退出登录
iscsiadm -d2 -m node --logout
补充:
用virt-manager也可以创建一个iSCSI的存储池,需要填上target和initiator的iqn,自动挂载LUN