RHEL 7上的iSCSI目标和启动器配置
通过RHEL 7上的targetcli配置iSCSI目标。
准备工作
我们有3个VM,分别名为ipa,srv1和srv2.
我们之前设置的ipa服务器将配置为iSCSI目标,而srv1和srv2将是iSCSI客户端。
- iSCSI目标提供了远程块存储,称为服务器,
- iSCSI启动器使用该存储,称为客户端。
iSCSI目标安装
在将用作iSCSI目标的IPA服务器上,创建具有100MB逻辑卷的卷组以用于iSCSI:
# vgcreate vg_san /dev/sdb # lvcreate --name lv_block1 --size 100M vg_san
安装targetcli软件包并启用目标服务以在启动时启动:
# yum install -y targetcli # systemctl enable target
配置firewalld以允许TCP端口3260上的传入iSCSI通信:
# firewall-cmd --add-port=3260/tcp --permanent # firewall-cmd --reload
配置iSCSI目标
运行targetcli以配置iSCSI目标:
# targetcli
我们配置目标的计划如下:
- backstore->块,
- backstore-> fileio,
- iscsi(IQN名称),
- iscsi-> tpg1->门户,
- iscsi-> tpg1-> luns,
- iscsi-> tpg1-> acls。
创建两个backstore,block和fileio,并禁用本地文件系统缓存,以降低数据丢失的风险:
backstores/block create block1 /dev/vg_san/lv_block1 write_back=false backstores/fileio create file1 /root/file1.img size=100M sparse=true write_back=false
创建一个IQN(Iscsi合格名称)。
iscsi/create iqn.2003-01.local.rhce.ipa:target Created target iqn.2003-01.local.rhce.ipa:target. Created TPG 1.
在RHEL 7.0上,我们需要创建一个门户,但是,门户配置是在RHEL 7.2上自动创建的。
iscsi/iqn.2003-01.local.rhce.ipa:target/tpg1/portals create 0.0.0.0 ip_port=3260
为fileio后台存储创建lun:
iscsi/iqn.2003-01.local.rhce.ipa:target/tpg1/luns create /backstores/fileio/file1
为我们的iSCSI客户端创建两个ACL(srv1和srv2),但不要将先前映射的lun添加到srv1,而lun应该仅对srv2可用:
iscsi/iqn.2003-01.local.rhce.ipa:target/tpg1/acls create iqn.1994-05.com.redhat:srv1 add_mapped_luns=false iscsi/iqn.2003-01.local.rhce.ipa:target/tpg1/acls create iqn.1994-05.com.redhat:srv2
为块后台存储创建一个lun,该lun将可用于两个服务器:
iscsi/iqn.2003-01.local.rhce.ipa:target/tpg1/luns create /backstores/block/block1
禁用身份验证(无论如何仍应默认禁用):
iscsi/iqn.2003-01.local.rhce.ipa:target/tpg1 set attribute authentication=0
(可选)设置用户标识和密码。
导航到我们目标的某个ACL:
iscsi/iqn.2003-01.local.rhce.ipa:target/tpg1/acls/iqn.1994-05.com.redhat:srv1/set auth userid=client password=client
保存配置并退出。
saveconfig
列出配置:
ls o-/....................................................................................... [...] o- backstores ............................................................................ [...] | o- block ................................................................ [Storage Objects: 1] | | o- block1 .......................... [/dev/vg_san/lv_block1 (100.0MiB) write-thru activated] | o- fileio ............................................................... [Storage Objects: 1] | | o- file1 ................................. [/root/file1.img (100.0MiB) write-thru activated] | o- pscsi ................................................................ [Storage Objects: 0] | o- ramdisk .............................................................. [Storage Objects: 0] o- iscsi .......................................................................... [Targets: 1] | o- iqn.2003-01.local.rhce.ipa:target ............................................... [TPGs: 1] | o- tpg1 ............................................................. [no-gen-acls, no-auth] | o- acls ........................................................................ [ACLs: 2] | | o- iqn.1994-05.com.redhat:srv1 ........................................ [Mapped LUNs: 1] | | | o- mapped_lun0 .............................................. [lun1 block/block1 (rw)] | | o- iqn.1994-05.com.redhat:srv2 ........................................ [Mapped LUNs: 2] | | o- mapped_lun0 .............................................. [lun0 fileio/file1 (rw)] | | o- mapped_lun1 .............................................. [lun1 block/block1 (rw)] | o- luns ........................................................................ [LUNs: 2] | | o- lun0 ............................................... [fileio/file1 (/root/file1.img)] | | o- lun1 ......................................... [block/block1 (/dev/vg_san/lv_block1)] | o- portals .................................................................. [Portals: 1] | o- 0.0.0.0:3260 ................................................................... [OK] o- loopback ....................................................................... [Targets: 0]
重新启动目标并检查其状态:
# systemctl restart target # systemctl status target
配置iSCSI客户端(启动器)
iSCSI启动器的配置需要安装iscsi-initiator-utils软件包,该软件包包括iscsi和iscsid服务以及“ /etc/iscsi/iscsid.conf”和“ /etc/iscsi/initiatorname.iscsi”配置文件。
在iSCSI客户端srv1和srv2上,安装软件包:
# yum install -y iscsi-initiator-utils
请注意,在iSCSI启动器上,这两项服务都是必需的。
iscsid服务是访问所有涉及的配置文件的主要服务。
iscsi服务是建立iSCSI连接的服务。
# systemctl enable iscsi iscsid
我们配置客户端的计划如下:
- 配置iSCSI启动器名称,
- 发现目标
- 登录目标。
打开文件“ /etc/iscsi/initiatorname.iscsi”进行编辑,然后启动器的名称为iqn.1994-05.com.redhat:srv1.
如果配置了用户名和密码,请将其放入'/etc/iscsi/iscsid.conf'中:
node.session.auth.authmethod = CHAP node.session.auth.username = client node.session.auth.password = client
请注意,CHAP身份验证不使用强加密来传递凭据。
如果需要iSCSI数据的安全性,则控制协议的网络侧是保证它的更好方法。
例如,从安全的角度来看,使用隔离的vlan传递iSCSI通信将是更好的实现。
发现目标(ipa服务器在10.8.8.70上):
# iscsiadm -m discovery -t sendtargets -p 10.8.8.70:3260 10.8.8.70:3260,1 iqn.2003-01.local.rhce.ipa:target
# iscsiadm -m discovery -P1 SENDTARGETS: DiscoveryAddress: 10.8.8.70,3260 Target: iqn.2003-01.local.rhce.ipa:target Portal: 10.8.8.70:3260,1 Iface Name: default iSNS: No targets found. STATIC: No targets found. FIRMWARE: No targets found.
登录发现的目标:
# iscsiadm -m node -T iqn.2003-01.local.rhce.ipa:target -p 10.8.8.70:3260 --login
检查会话:
# iscsiadm -m session -P3 | less
此时,iSCSI磁盘应该可用。
请注意,由于服务器srv2都映射到服务器,因此它将同时看到iSCSI块磁盘block1和fileio file1.
对于服务器srv1,情况并非如此。
[srv1]# lsblk --scsi|grep LIO sdb 3:0:0:0 disk LIO-ORG block1 4.0 iscsi
创建一个文件系统:
[srv1]# mkfs.ext4 -m0 /dev/sdb
创建一个安装点并获取UUID:
[srv1]# mkdir /mnt/block1
[srv1]# blkid | grep sdb /dev/sdb: UUID="6a1c44d0-3e2f-49fc-85ba-ced3e44bb5b0" TYPE="ext4"
将以下内容添加到'/etc/fstab'中:
UUID=6a1c44d0-3e2f-49fc-85ba-ced3e44bb5b0 /mnt/block1 ext4 _netdev 0 0
挂载iSCSI驱动器:
[srv1]# mount /mnt/block1
我们可以通过以下方式注销或者删除会话:
# iscsiadm -m node -T iqn.2003-01.local.rhce.ipa:target -p 10.8.8.70:3260 --logout # iscsiadm -m node -T iqn.2003-01.local.rhce.ipa:target -p 10.8.8.70:3260 -o delete
如果出现问题,我们可以停止iscsi.service并删除“/var/lib/iscsi/nodes”下的所有文件以清理所有当前配置。
之后,我们需要重新启动iscsi.service并开始发现并再次登录。