我有两个相同的服务器相同的硬件和克隆的Linux操作系统。 他们都有超微HBA AOC-S3008L。 然而,一台服务器将SATA磁盘标识为SCSI,而另一台则将其正确标识为SATA。 我的问题是,我需要使用libatasmart或udisks (而不是smartmontools )来监视磁盘的健康状况,但是由于在其中一个服务器上磁盘被标识为SCSI,所以我无法这样做。 如何让SystemB识别通过SATA总线连接的磁盘? 在BIOS中有没有特定的选项造成这种情况?
SystemA(SATA as SATA):
SystemA:~$ sudo udevadm info --query=property --name /dev/sda DEVLINKS=/dev/disk/by-id/ata-WDC_WD60EZRX-00MVLB1_WD-WX21D947N3HR /dev/disk/by-id/wwn-0x50014ee2b5d6e7b0 /dev/disk/by-path/pci-0000:01:00.0-sas-0x500304801eac0aa1-lun-0 DEVNAME=/dev/sda DEVPATH=/devices/pci0000:00/0000:00:01.0/0000:01:00.0/host0/port-0:0/expander-0:0/port-0:0:1/end_device-0:0:1/target0:0:0/0:0:0:0/block/sda DEVTYPE=disk ID_ATA=1 ID_ATA_DOWNLOAD_MICROCODE=1 ID_ATA_FEATURE_SET_HPA=1 ID_ATA_FEATURE_SET_HPA_ENABLED=1 ID_ATA_FEATURE_SET_PM=1 ID_ATA_FEATURE_SET_PM_ENABLED=1 ID_ATA_FEATURE_SET_PUIS=1 ID_ATA_FEATURE_SET_PUIS_ENABLED=0 ID_ATA_FEATURE_SET_SECURITY=1 ID_ATA_FEATURE_SET_SECURITY_ENABLED=0 ID_ATA_FEATURE_SET_SECURITY_ENHANCED_ERASE_UNIT_MIN=66306 ID_ATA_FEATURE_SET_SECURITY_ERASE_UNIT_MIN=66306 ID_ATA_FEATURE_SET_SMART=1 ID_ATA_FEATURE_SET_SMART_ENABLED=1 ID_ATA_ROTATION_RATE_RPM=5700 ID_ATA_SATA=1 ID_ATA_SATA_SIGNAL_RATE_GEN1=1 ID_ATA_SATA_SIGNAL_RATE_GEN2=1 ID_ATA_WRITE_CACHE=1 ID_ATA_WRITE_CACHE_ENABLED=1 ID_BUS=ata ID_MODEL=WDC_WD60EZRX-00MVLB1 ID_MODEL_ENC=WDC\x20WD60EZRX-00MVLB1\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20 ID_PART_TABLE_TYPE=gpt ID_PATH=pci-0000:01:00.0-sas-0x500304801eac0aa1-lun-0 ID_PATH_TAG=pci-0000_01_00_0-sas-0x500304801eac0aa1-lun-0 ID_REVISION=80.00A80 ID_SERIAL=WDC_WD60EZRX-00MVLB1_WD-WX21D947N3HR ID_SERIAL_SHORT=WD-WX21D947N3HR ID_TYPE=disk ID_WWN=0x50014ee2b5d6e7b0 ID_WWN_WITH_EXTENSION=0x50014ee2b5d6e7b0 MAJOR=8 MINOR=0 SUBSYSTEM=block UDISKS_ATA_SMART_IS_AVAILABLE=1 UDISKS_PARTITION_TABLE=1 UDISKS_PARTITION_TABLE_COUNT=1 UDISKS_PARTITION_TABLE_SCHEME=gpt UDISKS_PRESENTATION_NOPOLICY=0 USEC_INITIALIZED=72490
SystemB(SATA作为SCSI):
SystemB:~$ sudo udevadm info --query=property --name /dev/sda DEVLINKS=/dev/disk/by-id/scsi-350014ee261a4fe1f /dev/disk/by-id/wwn-0x50014ee261a4fe1f /dev/disk/by-path/pci-0000:03:00.0-sas-0x500304801eabe304-lun-0 DEVNAME=/dev/sda DEVPATH=/devices/pci0000:00/0000:00:03.0/0000:03:00.0/host0/port-0:0/expander-0:0/port-0:0:1/end_device-0:0:1/target0:0:0/0:0:0:0/block/sda DEVTYPE=disk ID_BUS=scsi ID_MODEL=WDC_WD60EZRX-00M ID_MODEL_ENC=WDC\x20WD60EZRX-00M ID_PART_TABLE_TYPE=gpt ID_PATH=pci-0000:03:00.0-sas-0x500304801eabe304-lun-0 ID_PATH_TAG=pci-0000_03_00_0-sas-0x500304801eabe304-lun-0 ID_REVISION=0A80 ID_SCSI=1 ID_SCSI_SERIAL=WD-WX31D55DF9X0 ID_SERIAL=350014ee261a4fe1f ID_SERIAL_SHORT=50014ee261a4fe1f ID_TYPE=disk ID_VENDOR=ATA ID_VENDOR_ENC=ATA\x20\x20\x20\x20\x20 ID_WWN=0x50014ee261a4fe1f ID_WWN_WITH_EXTENSION=0x50014ee261a4fe1f MAJOR=8 MINOR=0 SUBSYSTEM=block UDISKS_PARTITION_TABLE=1 UDISKS_PARTITION_TABLE_COUNT=1 UDISKS_PARTITION_TABLE_SCHEME=gpt UDISKS_PRESENTATION_NOPOLICY=0 USEC_INITIALIZED=80270 $ sudo skdump /dev/sda Device: sat16:/dev/sda Type: 16 Byte SCSI ATA SAT Passthru Size: 5723166 MiB Awake: Operation not supported ATA SMART not supported.
更新:服务器有32个托架连接到PCI-E SAS3 HBA。 我以前曾经将SystemB(将SATA作为SCSI公开)中的一些磁盘移到SystemA(将它们公开为SATA),并将它们标识为SATA。 所以我想我们可以排除引起这个的磁盘。 请注意,我的目标是两台服务器都将磁盘标识为ATA,以便skdump (或udisks )能够检查磁盘。
# lsscsi -g < – OUTPUT
# lshw < – SystemA SystemB
$ udevadm info -a -p $(udevadm info -q path -n /dev/sdb) SystemA SystemB
$ dmesg SystemA SystemB
解决:问题原来是与SAS控制器的固件太旧了。 更新固件的窍门是:
$ sudo sas3flash -o -f 3008IT14.ROM -b mptsas3.rom
UPDATE
哇,驱动器是旧的,巨大的。 http://products.wdc.com/library/SpecSheet/ENG/2879-800026.pdf
最大传输速率是175 MB / s,所以如果在gen1协商的链路,你将被限制在150 MB / s以下
如果你在2014年买了它,看起来保修期已经过期了
ENDUPDATE
首先,所有的磁盘都在Linux上performance为SCSI(除非它是一个提供原始块设备的顽固的RAID控制器)。 自从libsas被引入并且libata被整合(2008?)以来,这是真实的。 您的驱动器所获得的支持程度各不相同。
是的,您的驱动器是由所述控制器驱动的,而这些物理驱动器根据sysfs被送入似乎是SAS扩展器。 我不知道你有多less个海湾,但是无论哪种方式,看起来在发现过程中都有一个谈判的问题,在这个过程中,扩展器决定closures这个phy的驱动不能通过。
http://www.sasexpanders.com/faq/
我会build议获取SMP utils并发送链接重置到驱动器,看看是否改善事项。 你也许可以通过sysfs来做到这一点,看看它是否暴露了一个重置或类似的文件,并回声1。
http://sg.danny.cz/sg/smp_utils.html
驱动器固件版本似乎是相同的…
# GOOD ID_MODEL=WDC_WD60EZRX-00MVLB1 # GOOD ID_REVISION=80.00A80 # BAD ID_MODEL=WDC_WD60EZRX-00M # BAD ID_REVISION=0A80
只提供4个字符的问题是,我不是“80 ..”在坏的驱动器上。 如果你把它们放在同一个工作系统中,比较起来会容易得多。 如果它出现在那里,那么你知道这不是磁盘。 与型号相同的东西…
SATA规范认为只报告四个字符是一个好主意。 这是一个线索。 尽pipe它们都是以SD设备的forms出现的,但是从libata获得的支持比其他的要多。 工作的驱动器正在获得完整的固件版本,这意味着它坚持SAT,scsi to ata翻译规范。 这就是SCSI驱动器的样子。 另一个不是。
它并没有说什么链接速度坏谈判。 这是骗子。
ppetraki@:scaleout_demo$ dmesg | grep -i link | grep SATA [ 1.759912] ata6: SATA link down (SStatus 0 SControl 300) [ 1.763905] ata5: SATA link down (SStatus 0 SControl 300) [ 1.927906] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300) [ 1.935870] ata2: SATA link up 1.5 Gbps (SStatus 113 SControl 300)
和这个。
ppetraki@:scaleout_demo$ sudo hdparm -t /dev/sda /dev/sda: Timing buffered disk reads: 762 MB in 3.00 seconds = 253.77 MB/sec
3Gb SAS / SATA链接传输大约300 MBps等等。 这反映在hdparm -t正在尽可能快地从媒体读取。 以253 MB / s执行意味着此驱动器按预期执行,或者执行不正常。 这意味着如果你将6G SSD放入该链路中,吞吐量将不会超过253 MB / s。
我这样说是因为好的驱动器说它在第二代谈判,第二个不说。 如果您在两个驱动器上运行hdparmtesting,并且数字大不相同,那么可能会出现硬盘驱动器出现问题,导致硬盘以较低的链接速度进行协商。
SAS和SATA使用相同的电气/物理电线格式。 唯一不同的是,SAS驱动器在开机或重启时驱动COMINIT和COMSAS,而不是仅驱动(OOB)COMINIT的SATA驱动器。 取决于协商,适当的发现状态机被激活等等。
我不记得哪个状态机决定ATA传递的可行性。 规格草案在那里…而且很厚。
希望这可以帮助。
第二个SATA磁盘可能连接到SAS端口,从而启用SATA-on-SAS隧道。
确保将SATA磁盘连接到真正的SATA端口。