1.关于ISCSI
iSCSI技术实现了物理硬盘设备与TCP/TP网络传输协议的相互结合,使得用户可以通过互联网方便的获取到远程机房提供的共享存储资源
iscsi 是直接对设备进行共享的服务
之前学的nfs是对文件系统的共享:
是将服务器的磁盘以文件系统的形式映射到内核上面,然后在内核上面开启一个nfs服务,就可以把自己的文件系统共享出去了
此时就是客户端在本地直接可以远程修改nfs上面的东西,并且同步到nfs
现在我们想把服务器的磁盘直接划分一块出来放到内核上面,在内核上面直接下载iscsi服务,直接将设备共享
此时客户端就可以探测并且使用服务端的共享磁盘了
之前共享出来的文件系统叫做nfs
现在共享出来的设备叫iscsi
2.部署iscsi服务器
主机信息 | 功能 |
---|---|
desktop(172.25.254.111) | iscsi服务器 |
server(172.25.254.211) | 客户端 |
#1首先在真机里面开启desktop虚拟机的配置基础信息
#2 在真机里面开启我的server虚拟机并且配置基本信息
#3 在服务端搭建iscsi服务器
yum install targetcli -y #安装策略编写工具,这个服务才可以将划分出来的磁盘共享给客户端
systemctl start target #开启服务
fdisk -l查看可以进行划分的设备
fdisk /dev/vdb # 在/dev/vdb这个设备上面划分一个分区,划分一个1G的设备/dev/vdb2准备将这个设备共享出去
partprobe同步分区表
targetcli 开始划分准备共享出去的设备
ls
/> ls查看一下
/> /backstores/block create westos:linux1 /dev/vdb2 给真实设备起一个名字,随便都可以
/> /iscsi create iqn.2019-05.com.westos:linux1 起一个对外的名字
/> /iscsi/iqn.2019-05.com.westos:linux1/tpg1/luns create /backstores/block/westos:linux1关联二者
/> /iscsi/iqn.2019-05.com.westos:linux1/tpg1/acls create iqn.2019-05.com.westos:key1给一个密码
/> /iscsi/iqn.2019-05.com.westos:linux1/tpg1/portals create 172.25.254.111开启接口
/> exit退出
#4 在server客户端上面进行测试
yum search iscsi #查找使用共享磁盘的服务
yum install -y iscsi-initiator-utils.x86_64 #安装使用共享磁盘的服务,才可以使用别人的磁盘
iscsiadm -m discovery -t st -p 172.25.254.111 #发现111共享出来的设备
iscsiadm -m node -T iqn.2019-05.com.westos:linux1 -p 172.25.254.111 -l #登陆
没办法登陆,因为没有111设定的密码
vim /etc/iscsi/initiatorname.iscsi #写入密码 在服务端复制
InitiatorName=iqn.2019-05.com.westos:key1
systemctl restart iscsid.service #重启服务
iscsiadm -m discovery -t st -p 172.25.254.111 #发现111共享出来的设备
iscsiadm -m node -T iqn.2019-05.com.westos:linux1 -p 172.25.254.111 -l #登陆,显示成功
fdisk -l #查看有没有服务端共享出来的一个设备/dev/sda
可以看到/dev/sda 其实是111上面共享出来的/dev/vdb2,大小是1G
fdisk /dev/sda #直接在它上面划分分区,挂载使用
partprobe #同步分区表
mkfs.xfs /dev/sda1 #格式化这个分区
mount /dev/sda1 /mnt #挂载到本地
df #查看挂载
cd /mnt #进入挂载目录
ls #查看
touch file #建立一个文件
ll #可以看到file,就说明这个共享设备可以使用
#3 在客户端设置服务端共享的磁盘设备开机自动挂载在本地
先卸载
blike 因为共享设备的名字会变,不稳定,因此用id
blkid # 查看id
vim /etc/fstab ##编辑这个永久挂载文件
id=“” /mnt xfs defaults,_netdev 0 0,开机的时候系统初始化完了之后要挂载,这个必须由网络才可以
设置完reboot
第一次会起不来,这是一个bug
在真机里面强制关机
rht-vmctl poweroff server
rht-vmctl start server
rht-vmctl view server
df #查看有没有实现开机自动挂载
mount #查看挂载信息
4.怎样在客户端删除这个设备?
先卸载umount
cd /var/lib/iscsi #在这个目录下查看共享设备的信息
ls #发现目录很多
yum istall tree -y #安装这个树形服务
tree /var/lib/iscsi #以树形结构显示共享设备的文件结构
iscsiadm -m node -T iqn.2019-05.com.westos:linux1 -p 172.25.254.111 -u #临时删除共享设备
fdisk -l #已经不见了
tree /var/lib/iscsi #信息依然在
systemctl restart iscsi #重启服务
fdisk -l #又回来了
iscsiadm -m node -T iqn.2019-05.com.westos:linux1 -p 172.25.254.111 -u #临时删除
iscsiadm -m node -T iqn.2019-05.com.westos:linux1 -p 172.25.254.111 -o delete #永久删除
tree /var/lib/iscsi #信息不见了,已经永久删除
systemctl restart iscsi #再次重启服务验证
fdisk -l #不见了
#5.怎样在服务端删除这个设备?
targetcli #进入划分共享设备的状态
ls #查看
clearconfig confirm=True
ls #此时已经在服务端上永久删除
exit #退出
共享设备
[root@shareserver ~]# yum install targetcli -y # 下载策略编写工具
[root@shareserver ~]# systemctl start target
[root@shareserver ~]# fdisk /dev/vdb # 新建分区,大小为1G(我建立的是逻辑卷,因为可以扩容)
[root@shareserver ~]# pvcreate /dev/vdb1
[root@shareserver ~]# vgcreate vg0 /dev/vdb1
[root@shareserver ~]# vgdisplay # 查看pe的个数
[root@shareserver ~]# lvcreate -l 255 -n lv0 vg0 # -l表示指定pe的个数,把所有的pe都分给lv0[
root@shareserver ~]# targetcli # 打开软件
/> 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 create westos:storagel /dev/vg0/lv0 # 对逻辑卷重命名
/> /iscsi create iqn.2018-11.com.westos:storagel # 客户端访问时显示的名称
/> /iscsi/iqn.2018-11.com.westos:storagel/tpg1/acls create iqn.2018-11.com.westos:westoskey # 生成密钥
/> /iscsi/iqn.2018-11.com.westos:storagel/tpg1/luns create /backstores/block/westos:storagel # 将在客户端显示的名称与实际共享的设备的连接
/> /iscsi/iqn.2018-11.com.westos:storagel/tpg1/portals/ create 172.25.254.142 # 创建一个网络接口
排错
/> /iscsi/iqn.2018-11.com.westos:storagel/tpg1/portals/ create 172.25.254.142
Using default IP port 3260
Could not create NetworkPortal in configFS
/> ls # 排查的时候发现已经存在一个网络接口了
/> iscsi/iqn.2018-11.com.westos:storagel/tpg1/portals/ delete 0.0.0.0 3260 # 删除即可
/> /iscsi/iqn.2018-11.com.westos:storagel/tpg1/portals/ create 172.25.254.142 # 再次重新添加即可
/> exit
在客户端
在iSCSI客户端使用共享存储资源,需要先发现,再登陆,最后挂载并使用,iscsiadm是用于管理、查询、插入、更新或删除iSCSI数据库配置文件的命令行工具,用户需要先使用这个iscsiadm命令对远程iSCSI服务端进行扫描发现,查看该服务器上面有哪些可用的共享存储资源
[root@client ~]# yum search iscsi
[root@client ~]# yum install -y iscsi-initiator-utils.x86_64
[root@client ~]# iscsiadm -m discovery -t st -p 172.25.254.142172.25.254.142:3260,1 iqn.2018-11.com.westos:storagel # 扫描,发现设备
-m discovery # 扫描发现可用存储资源,
-t st # 指定扫描发现操作的类型,
-p 172.25.254.142 # 服务端iSCSI服务端的IP地址
[root@client ~]# iscsiadm -m node -T iqn.2018-11.com.westos:storagel -p 172.25.254.142 -l # 登录
-m node # 将本机作为一台节点服务器
-T iqn.2018-11.com.westos:storagel # 要使用的存储资源名称,字符串很长手打容易错,我们直接复制上面扫描发现到的结果即可
-p 172.25.254.142 # 对方iSCSI服务端的IP地址
-l # 登录
iSCSI协议是通过客户端名称进行验证的,而该名称也就是iSCSI客户端的唯一标识,这串信息 必须与服务端配置文件中ACL访问控制列表中的信息匹配一致,否则客户端在尝试使用存储共享时 就会弹出验证失败的报错信息。
[root@client ~]# vim /etc/iscsi/initiatorname.iscsi # 把刚刚服务端的ACL访问控制列表名称填写进入
InitiatorName=iqn.2018-11.com.westos:westoskey
[root@client ~]# systemctl restart iscsid.service
[root@client ~]# iscsiadm -m node -T iqn.2018-11.com.westos:storagel -p 172.25.254.142 -l # 成功登录
[root@client ~]# fdisk -l # 查看到新增加了一块分区
在服务端扩展磁盘
[root@shareserver ~]# fdisk /dev/vdb # 再新建一个分区
[root@shareserver ~]# pvcreate /dev/vdb2
[root@shareserver ~]# vgextend vg0 /dev/vdb2
[root@shareserver ~]# vgdisplay
[root@shareserver ~]# lvextend -l 510 /dev/vg0/lv0 # 把所有的PE都给/dev/vg0/lv0
在客户端
[root@client ~]# iscsiadm -m node -T iqn.2018-11.com.westos:storagel -p 172.25.254.142 -u # 因为共享设备的大小已经更新,所以我们需要退出登录,通过再次登录来刷新客户端的大小,-u表示退出登录
[root@client ~]# iscsiadm -m node -T iqn.2018-11.com.westos:storagel -p 172.25.254.142 -l # 重新登录
[root@client ~]# fdisk -l # 大小已经改变
在对iSCSI服务端进行登陆验证显示顺利成功后就会在系统中多了一块名为/dev/sda的设备文件,这个远程的存储资源设备文件就这么活生生的出现到了iSCSI客户端主机上面,接下来我们就可以 像使用自己电脑上的硬盘一样来对这块设备进行操作了。
使用共享设备
(1)永久挂载设备
[root@client ~]# fdisk /dev/sda # 在这块设备上建立一个新的分区
[root@client ~]# fdisk -l # 查看分区
[root@client ~]# partprobe
[root@client ~]# mkfs.xfs /dev/sda1
[root@client ~]# mount /dev/sda1 /mnt/ # 临时挂载
[root@client ~]# df
[root@client ~]# umount /mnt
[root@client ~]# vim /etc/fstab # 永久挂载
/dev/sda1 /mnt xfs defaults,_netdev 0 0 # _netdev表示声明这是一个网络设备
[root@client ~]# reboot
注:第一次如果重启很慢的话,就先强制关机,在开机即可
[root@client ~]# df # 开机之后再次查看,自动挂载
3.删除设备
在客户端
[root@client ~]# yum install tree -y
[root@client ~]# tree /var/lib/iscsi/ # 以树形图的方式显示此目录,/var/lib/iscsiIscsi的认证数据目录
[root@client ~]# vim /etc/fstab
删除:/dev/sda1 /mnt xfs defaults,_netdev 0 0
[root@client ~]# iscsiadm -m node -T iqn.2018-11.com.westos:storagel -p 172.25.254.142 -u # 登出iscsi
[root@client ~]# iscsiadm -m node -T iqn.2018-11.com.westos:storagel -p 172.25.254.142 -o delete # 删除配置文件
[root@client ~]# tree /var/lib/iscsi/ # 再次查看就已经删除
[root@client ~]# fdisk -l # 查看设备已经删除
在服务端
[root@shareserver ~]# targetcli
/> ls
/> clearconfig confirm=True
/> ls # 查看成功删除