我有两台相同的服务器,它们具有相同的硬件和克隆的 Linux 操作系统。它们都具有 Supermicro HBA AOC-S3008L。然而,一台服务器将 SATA 磁盘识别为 SCSI,而另一台服务器正确地将它们识别为 SATA。我的问题是我需要使用libatasmart
或udisks
(而不是smartmontools
)来监控磁盘的运行状况,但由于其中一台服务器将磁盘识别为 SCSI,因此我无法这样做。我如何让 SystemB 将磁盘识别为通过 SATA 总线连接?BIOS 中是否有任何特定选项导致这种情况?
系统 A(SATA 作为 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
系统 B(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
<-输出
$ udevadm info -a -p $(udevadm info -q path -n /dev/sdb)
系统A 系统B
解决了: 问题出在 SAS 控制器的固件太旧。更新固件即可解决问题:
$ sudo sas3flash -o -f 3008IT14.ROM -b mptsas3.rom
答案1
更新
哇,那个驱动器很旧,并且很大。 http://products.wdc.com/library/SpecSheet/ENG/2879-800026.pdf
最大传输速率为 175 MB/s,因此如果在 gen1 协商链接,则限制在 150 MB/s 以下
如果你在 2014 年购买,保修似乎刚刚过期
结束更新
首先,在 Linux 上,所有磁盘都以 SCSI 形式呈现(除非是某个顽固的 raid 控制器呈现原始块设备)。自从引入 libsas 并集成 libata(2008 年?)以来,情况一直如此。不同之处在于您的驱动器获得的支持级别。
是的,您的驱动器由所述控制器驱动,并且根据 sysfs,这些物理层被送入似乎是 SAS 扩展器的东西中。我不知道您有多少个托架,但无论如何,看起来在发现过程中存在协商问题,扩展器决定该物理层上的驱动器无法通过。
http://www.saseexpanders.com/faq/
我建议获取 SMP 实用程序并向驱动器发送链接重置,看看是否能改善问题。您也许可以通过 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 规范认为只报告四个字符是个好主意。这是一个线索。尽管它们都显示为 SD 设备,但其中一个比另一个获得了更多的 libata 支持。正常工作的驱动器正在获取完整的固件版本,这意味着它遵守 SAT、scsi 到 ata 转换规范。这就是 SCSI 驱动器的样子。另一个不是。
- 相同的操作系统和内核版本?
- 相同的控制器固件?
- 相同的物理扩展器?
- 相同的扩展器固件?
- 如果将驱动器插入不同的端口,是否还会出现问题?
- 插入该端口的任何驱动器都无法获得 ATA 直通吗?
它没有说明坏的那个协商的链接速度是多少。这是秘诀。
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 更高的吞吐量。
我之所以这么说,是因为好的驱动器说它在第二代时协商过,而第二个驱动器没有说。如果您在两个驱动器上运行 hdparm 测试,并且数字相差很大,那么坏驱动器可能有问题,迫使它以较低的链接速度进行协商。
SAS 和 SATA 使用相同的电气/物理线路格式。唯一的不同之处在于,SAS 驱动器在通电或重置时会发出 COMINIT 啁啾声,然后发出 COMSAS 啁啾声,而 SATA 驱动器只会发出 (OOB) COMINIT 啁啾声。根据该协商,将激活相应的发现状态机,依此类推。
我不记得哪个状态机决定了 ATA 直通在何处可行。草案规范已经出炉……而且很厚。
希望这可以帮助。
答案2
第二个 SATA 磁盘可能连接到 SAS 端口,从而实现 SATA-on-SAS 隧道。
确保将 SATA 磁盘连接到真正的 SATA 端口。