Linux-iscsi的共享设定
iscsi
iSCSI( Internet Small Computer System Interface 互联网小型计算机系统接口)是由IBM 下属的两大研发机构一一加利福尼亚AImaden和以色列Haifa研究中心共同开发的,是一个供硬件设备使用的、可在IP协议上层运行的SCSI指令集,是一种开放的基于IP协议的工业技术标准。该协议可以用TCP/IP对SCSI指令进行封装,使得这些指令能够通过基于P网络进行传输,从而实现SCSI 和TCP/IP协议的连接。对于局域网环境中的用户来说,采用该标准只需要不多的投资就可以方便、快捷地对信息和数据进行交互式传输及管理。
systemctl start target 开启服务
fdisk /dev/vdb 创建vdb1 5GB
[[email protected] Desktop]# targetcli
targetcli shell version 2.1.fb34
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]
/> /backstores/block create westos:storage1 /dev/vdb1
Created block storage object westos:storage1 using /dev/vdb1.
/> /iscsi create iqn.2017-12.com.example:storage1
Created target iqn.2017-12.com.example:storage1.
Created TPG 1.
/> /iscsi/iqn.2017-12.com.example:storage1/tpg1/acls create iqn.2017-12.com.example:westoskey
Created Node ACL for iqn.2017-12.com.example:westoskey
/> /iscsi/iqn.2017-12.com.example:storage1/tpg1/luns create /backstores/block/westos:storage1
Created LUN 0.
Created LUN 0->0 mapping in node ACL iqn.2017-12.com.example:westoskey
/> iscsi/iqn.2017-12.com.example:storage1/tpg1/portals create 172.25.254.130
Using default IP port 3260
Created network portal 172.25.254.130:3260.
/> exit
Global pref auto_save_on_exit=true
Last 10 configs saved in /etc/target/backup.
Configuration saved to /etc/target/saveconfig.json
写入这些策略
[[email protected] Desktop]# firewall-cmd --permanent --add-port=3260/tcp
success 开启3260端口 加载防火墙 然后我们进行查看
[[email protected] Desktop]# firewall-cmd --reload
success
[[email protected] Desktop]# targetcli
targetcli shell version 2.1.fb34
Copyright 2011-2013 by Datera, Inc and others.
For help on commands, type 'help'.
/> ls
o- / ......................................................................... [...]
o- backstores .............................................................. [...]
| o- block .................................................. [Storage Objects: 1]
| | o- westos:storage1 ................. [/dev/vdb1 (5.0GiB) write-thru activated]
| o- fileio ................................................. [Storage Objects: 0]
| o- pscsi .................................................. [Storage Objects: 0]
| o- ramdisk ................................................ [Storage Objects: 0]
o- iscsi ............................................................ [Targets: 1]
| o- iqn.2017-12.com.example:storage1 .................................. [TPGs: 1]
| o- tpg1 ............................................... [no-gen-acls, no-auth]
| o- acls .......................................................... [ACLs: 1]
| | o- iqn.2017-12.com.example:westoskey .................... [Mapped LUNs: 1]
| | o- mapped_lun0 ....................... [lun0 block/westos:storage1 (rw)]
| o- luns .......................................................... [LUNs: 1]
| | o- lun0 .............................. [block/westos:storage1 (/dev/vdb1)]
| o- portals .................................................... [Portals: 1]
| o- 172.25.254.130: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
客户端中进行的操作
156 yum install iscsi-initiator-utils.x86_64 -y
157 systemctl start iscsi
158 vim /etc/iscsi/initiatorname.iscsi 这个iqn是在服务端可以查看到的 如上图所示
159 systemctl start iscsi
160 iscsiadm -m discovery -t st -p 172.25.254.130 m是动作 -t是类型的意思
-m是动作 -t 是类型 -p是ip
161 iscsiadm -m node节点 -T iqn.2017-12.com.example:storage1 -p 172.25.254.130 -l(-l是登陆的意思-u是退出登录的意思)
162 fdisk -l 能看到多出来的sda就是服务端共享的/dev/vdb1
164 fdisk /dev/sda 建立出sda1 5G全部给他 直接回车
165 partprobe 同步分区表
166 blkid
167 mkfs.xfs /dev/sda1
170 mount /dev/sda1 /mnt/ 把sda1挂载到mnt下 然后在下面可以创建文件
171 df
172 cd /mnt/
173 touch file1
我们可以在服务端进行测试无法进行/dev/vdb1的挂载 应为/dev/vdb1正在被客户端进行挂载使用
挂载的时候我们可以使用永久挂载但是这里我们就需要注意了正常的永久挂载可能会导致系统起不来因为这里我们使用的是服务端的硬盘为网络设备而开机的读取中 会先读取/etc/fstab下的内容 之后再读取网络的配置文件 而这是网络设备没有网络是肯定起不来的 同时设备的名称可能会发生漂移 所以这里我们呢不写设备名称 直接用blkid 查看 写入的是id id 是唯一的 所以不用害怕会发生漂移
正确的写法如下
UUID="7a8ea28d-0374-486e-981d-cf3a8b53dd03" /mnt xfs defaults,_netdev 0 0
_netdev表明这是网络设备
之后就可以正常启动了
错误的写法
/dev/sda1 /mnt xfs defaults 0 0 这样会导致系统起不来 解决办法就是 输入ROOT用户的密码 然后vim /etc/fstab 删除掉这一行就可以了 然后reboot 系统就可以以正常启动了
如何进行卸载呢 我们可以执行以下的操作
首先第一步进行卸载 umount /mnt
iscsiadm -m node节点 -T iqn.2017-12.com.example:storage1 -p 172.25.254.130 -u (这里-u表示的是退出登陆)
iscsiadm -m node节点 -T iqn.2017-12.com.example:storage1 -p 172.25.254.130 -o delete (-o delete 表示的是删除设备)
然后我们进行重启服务 systemctl restart iscsi
fdisk -l 可以进行分区查看 可以看到sda1已经消失了
我们也可以下载tree命令 进行查看 yum install tree -y
然后使用tree /var/lib/iscsi/ 也可以看到内容消失了
这里我们也可以使用lvm分区的方式来进行
在服务端我们进行的操作如下
fdisk /dev/vdb n ~ ~ +1G t 8e 改成lvm的类型
pvcreate /dev/vdb1
61 vgcreate iscsi_vg /dev/vdb1
62 lvcreate -l 255 -n iscsi_lv0 iscsi_vg
创建lvm 分区 查看vg的由多少个pe组成的 用的vgdisplay
然后往targetcli中写入策略
[[email protected] Desktop]# targetcli
targetcli shell version 2.1.fb34
Copyright 2011-2013 by Datera, Inc and others.
For help on commands, type 'help'.
/> /backstores/block create westos:storage1 /dev/iscsi_vg/iscsi_lv0
Created block storage object westos:storage1 using /dev/iscsi_vg/iscsi_lv0.
/> /iscsi create iqn.2017-12.com.example:storage1
Created target iqn.2017-12.com.example:storage1.
Created TPG 1.
/> /iscsi/iqn.2017-12.com.example:storage1/tpg1/acls createiqn.2017-12.com.example:key1
Created Node ACL for iqn.2017-12.com.example:key1
/> /iscsi/iqn.2017-12.com.example:storage1/tpg1/luns create /backstores/block/westos:storage1
Created LUN 0.
Created LUN 0->0 mapping in node ACL iqn.2017-12.com.example:key1
/> /iscsi/iqn.2017-12.com.example:storage1/tpg1/portals create 172.25.254.130
/> ls
o- / ......................................................................... [...]
o- backstores .............................................................. [...]
| o- block .................................................. [Storage Objects: 1]
| | o- westos:storage1 [/dev/iscsi_vg/iscsi_lv0 (1020.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.2017-12.com.example:storage1 .................................. [TPGs: 1]
| o- tpg1 ............................................... [no-gen-acls, no-auth]
| o- acls .......................................................... [ACLs: 1]
| | o- iqn.2017-12.com.example:key1 ......................... [Mapped LUNs: 1]
| | o- mapped_lun0 ....................... [lun0 block/westos:storage1 (rw)]
| o- luns .......................................................... [LUNs: 1]
| | o- lun0 ................ [block/westos:storage1 (/dev/iscsi_vg/iscsi_lv0)]
| o- portals .................................................... [Portals: 0]
o- loopback ......................................................... [Targets: 0]
Using default IP port 3260
Created network portal 172.25.254.130:3260.
然后我们在客户端中进行操作
vim /etc/iscsi/initiatorname.iscsi
164 systemctl start iscsi
165 iscsiadm -m discovery -t st -p 172.25.254.130
166 iscsiadm -m node -T iqn.2017-12.com.example:storage1 -p 172.25.254.130 -l
这里我们会发现有报错无法登陆成功
我们下载tree命令进行查看会发现原来的两个记录没有删除 这时候我们对其进行删除
然后进行重启服务systemc tl restart iscsid.service
Systemctl restart iscsi.service
然后在进行登陆就可以成功啦
然后我们在客户端fdisk –l 就可以查看到1g的服务端共享硬盘
如何给这个硬盘扩容呢
在服务端进行如下操作
Fdisk /dev/vdb n 2 ~ ~ +1G t 8e wq退出保存
然后pvcreat /dev/vdb2
Vgextend iscsi_vg /dev/vdb2
Lvextend –L 1500M /dev/iscsi_vg/iscsi_lv0
Lvs 可以看到扩容成功了
接下来在客户端fdisk –l 就可以看到由1000M扩大到1500M
over~