Linux

hdparm序列號是垃圾

  • December 11, 2018

我正在嘗試使用“hdparm -I /dev/sda”從驅動器讀取型號和序列號,我發現在某些系統(例如:VMware 虛擬機)上,序列號和型號經常返回垃圾(見下文)。當我重複命令時,垃圾似乎會隨著時間而變化。有沒有辦法告訴 hdparm 不要輸出這些垃圾?(即如果無法讀取數據則不顯示)

/dev/sda:
SG_IO: bad/missing sense data, sb[]:  70 00 05 00 00 00 00 0a 00 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

ATA device, with non-removable media
�������@�����@�����@:       ����
       Serial Number:      ����@�����@����
       Firmware Revision:  ��O��
Standards:
       Likely used: 2
Configuration:
       CHS addressing not supported
       LBA    user addressable sectors:  116676416
       Logical/Physical Sector size:           512 bytes
       device size with M = 1024*1024:       56970 MBytes
       device size with M = 1000*1000:       59738 MBytes (59 GB)
       cache/buffer size  = unknown

hdparm -I /dev/sdX

此命令執行“辨識設備”,這是一種特定的 ATA 協議,它從設備的韌體中請求辨識資訊​​。例如,在物理驅動器的情況下,您可以在電腦的主機匯流排適配器和驅動器本身之間連接一個匯流排分析器,並查看通過 SATA 介面的辨識請求和來自驅動器的響應數據。

在虛擬機的情況下,libata 正在與被模擬為虛擬設備的硬碟驅動器韌體(通過虛擬 HBA)通信。從 hdparm 返回的辨識設備資訊取決於虛擬設備如何實現對該 ATA 命令的響應。hdparm 命令不知道它正在與虛擬設備通信。它只知道如何通過libata執行命令以及如何解析返回的資料結構。

在這種情況下,看看是否有辦法將虛擬設備的“垃圾”欄位設置為您選擇的任何值可能更有意義。

如果您使用的是 VirtualBox,請參閱: https ://www.virtualbox.org/manual/ch09.html#changevpd

或者,如果您只想從輸出中刪除二進製字元,您可以通過 tr 管道:

sudo hdparm -I / dev / sda | tr -cd ‘\11\12\15\40-\176’

引用自:https://serverfault.com/questions/662104