我们已经成功运行 CentOS 7 服务器几个月了,有两个 iSCSI 目标,全部使用targetcli
.这些是使用 MS iSCSI 启动器从 Windows 7 盒子安装的。效果很好。大约一个月前,我添加了另一个目标,要从第二台机器安装。看来我可能忘记了我需要跑步saveconfig
。上周,我们开始评估元数据服务器 TigerStore。它安装在第三台 Windows 7 计算机上。我在 CentOS 机器上设置了第四个目标,用于使用 TigerStore 进行测试(它还使用 Windows 启动器来安装然后提供服务的目标)。再次忘记我需要saveconfig
。
我们一直在使用所有四个目标,没有出现任何问题。事实上,我周五晚上就在使用它。然而,当我今天早上进来时,第一台机器上的目标已经安装了几个月,只显示一个驱动器号,当我点击时,给我一个权限错误。我检查了 Windows 机器#2,其安装的 iSCSI 目标也是如此。 TigerStore 服务器仍然连接到目标并且工作正常。
重新启动所有三台 Windows 机器,权限问题相同。现在是我真正搞砸的地方:重新启动 CentOS 服务器,并且两个目标配置显示没有 LUN(这是我没有运行 saveconfig 的两个配置)。因为……设备的位置发生了变化。重启前,一对是/dev/sdb1
和/dev/sdb2
,另一对是/dev/sdc1
和。/dev/sdc2
现在这些不同了,作为/dev/sdc
我的系统驱动器,以前/dev/sdb
是现在/dev/sda
,/dev/sdc
现在是/dev/sdb
。因此,所有的映射都是一团糟。
所以我想我这里有一个由两部分组成的问题:
1) 我是否可以创建新的 LUN 以targetcli
指向新的块设备位置,以便使映射正常工作(无需更改目标上的用户数据)?
2) 我可以强制系统/dev/sd*
每次启动时使用相同的位置分配吗?
好的,三部分问题:
3)如果我不能做到#2,我应该采取什么不同的措施来确保这种情况不会再次发生。作为参考,这是 a 的输出targetcli
ls
:
o- / ..................................................................... [...]
o- backstores .......................................................... [...]
| o- block .............................................. [Storage Objects: 2]
| | o- block1 ..................... [/dev/sdb1 (0 bytes) write-thru activated]
| | | o- alua ............................................... [ALUA Groups: 1]
| | | o- default_tg_pt_gp ................... [ALUA state: Active/optimized]
| | o- block3 ..................... [/dev/sdb2 (0 bytes) write-thru activated]
| | o- alua ............................................... [ALUA Groups: 1]
| | o- default_tg_pt_gp ................... [ALUA state: Active/optimized]
| o- fileio ............................................. [Storage Objects: 0]
| o- pscsi .............................................. [Storage Objects: 0]
| o- ramdisk ............................................ [Storage Objects: 0]
o- iscsi ........................................................ [Targets: 4]
| o- iqn.2018-03.com.grd.t3 ............................ [TPGs: 1]
| | o- tpg1 .............................................. [gen-acls, no-auth]
| | o- acls ...................................................... [ACLs: 0]
| | o- luns ...................................................... [LUNs: 1]
| | | o- lun0 ................ [block/block3 (/dev/sdb2) (default_tg_pt_gp)]
| | o- portals ................................................ [Portals: 1]
| | o- 10.0.0.1:3260 ................................................ [OK]
| o- iqn.2018-03.com.grd:t1 ............................ [TPGs: 1]
| | o- tpg1 .............................................. [gen-acls, no-auth]
| | o- acls ...................................................... [ACLs: 0]
| | o- luns ...................................................... [LUNs: 1]
| | | o- lun0 ................ [block/block1 (/dev/sdb1) (default_tg_pt_gp)]
| | o- portals ................................................ [Portals: 1]
| | o- 10.0.0.1:3260 ................................................ [OK]
| o- iqn.2018-03.com.grd:t2 ............................ [TPGs: 1]
| | o- tpg1 .............................................. [gen-acls, no-auth]
| | o- acls ...................................................... [ACLs: 0]
| | o- luns ...................................................... [LUNs: 0]
| | o- portals ................................................ [Portals: 1]
| | o- 10.0.0.1:3260 ................................................ [OK]
| o- iqn.2018-04.com.grd:t3 ............................ [TPGs: 1]
| o- tpg1 .............................................. [gen-acls, no-auth]
| o- acls ...................................................... [ACLs: 0]
| o- luns ...................................................... [LUNs: 0]
| o- portals ................................................ [Portals: 1]
| o- 10.0.0.1:3260 ................................................ [OK]
o- loopback ..................................................... [Targets: 0]
o- srpt ......................................................... [Targets: 0]
谢谢!
答案1
解决方案是删除后台存储块和 lun(将目标保留在原处)。然后,我在 targetcli 中重建了块以指向正确的 /dev/sd* 位置。
展望未来,我们将使用 /dev/disk/by-partuuid 迁移所有这些内容,将后台存储映射到块设备,这应该可以解决持久性问题。