linux – SATA磁盘被识别为SCSI

我有两个相同的服务器具有相同的硬件和克隆的 Linux操作系统.他们都有Supermicro HBA AOC-S3008L.然而,一台服务器将SATA磁盘识别为SCSI,而另一台服务器将SATA磁盘正确识别为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 as 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上都显示为SCSI(除非它是一些提供原始块设备的顽固raid控制器).自从libsas被引入并且libata被集成以来(2008年?),这是真的.不同的是您的驱动器获得的支持级别.

是的,您的驱动器由所述控制器驱动,并且这些物理根据sysfs被送入看似SAS扩展器的状态.我不知道你有多少个托架,但无论哪种方式,在发现过程中看起来都存在协商问题,扩展器认为驱动器不能通过.

http://www.sasexpanders.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.

我说这是因为好的驱动器说它在第2代谈判,第二个没有说.如果你在两个驱动器上运行hdparm测试并且数字差别很大,那么坏驱动器可能会出现问题,导致它以较低的链接速度进行协商.

SAS和SATA使用相同的电气/物理电线格式.唯一不同的是,SAS驱动器在开机或复位时啁啾COMINIT然后COMSAS,而不是仅仅啁啾(OOB)COMINIT的SATA驱动器.根据该协商,激活适当的发现状态机,依此类推.

我不记得哪个状态机决定ATA passthrough的可行性.草案规格在那里……它很厚.

希望这可以帮助.

相关文章

文件查找(find) 1 find 简单的说,就是实时查找指定的内容或条件。特点:最新、最快、最准确。 用法:...
非交互式添加分区 方法一 添加/deb/sdb 下的分区,其实位置为1到1000M,第二个分区位置为1001至3000M,...
编译安装httpd 1 去官网下载源码包 为避免非法软件,一定要去官网下载http://www.apache.org httpd-2.4...
gdisk用法 gdisk - InteractiveGUIDpartitiontable (GPT) manipulator GPTfdisk (akagdisk) isatext-mo...
1 一定用快捷键 这里简单的说下几个常用的快捷按键。 1.1 移动光标快捷键 Crtl + a 光标回到命令行...
bash shell中测试命令 test命令提供了if-than语句中测试不同条件的途径。如果test命令中列出的条件成立...