分类: 服务器与存储
2010-05-04 08:32:08
在multipath实现中,常常需要定期地、自动地检查实现的路径是否已经恢复,以便将它再纳入“多路径”之中。失效路径检查的方法有很多种,具体使用哪一种是在mulitpath的配置文件中指定的。
1. tur
tur使用一个特殊的SCSI命令(TEST UNIT READY),该命令检查logical unit是否已经准备好,常用于设备的自我侦测。如果tur命令应该返回GOOD状态,说明logical unit可以接收并处理特定的介质访问,则我们认为该路径已经恢复。
2. readsector0
readsector0会试图读取磁盘的第一个扇区,它用到SCSI的READ命令。在SCSI Block Commands规范中,定义了几种不同的READ命令:READ6(6字节的CDB,操作码为08h)、READ10(10字节的CDB,操作码为28h)等。执行ioctl前,将LOGICAL BLOCK ADDRESS设置为0,将TRANSFER LENGTH设置为1。如果成功返回,说明失效路径已经恢复。
3. INQUERY
使用INQUERY命令加上厂商特定的vital product data页面。例如emc_clariion、hp_sw等存储设备即采用这一方式。
4. directio
顾名思义,directio是只直接在设备上使用执行直接I/O访问的read方法。如果成功读取,则路径有效。