Linux

我的硬體機器中的所有磁碟設備是否都以 -sd 開頭?

  • September 4, 2018

在我的 bash 腳本中,我使用語法lsblk | grep sd以擷取我的硬體機器中的所有磁碟(不包括快閃記憶體卡或 rom)

我只是擔心某些磁碟設備名稱會與 sd 不同,我會錯過這些磁碟

是否可以 ?

lsblk | grep sd
sda                8:0    0   150G  0 disk
├─sda1             8:1    0   500M  0 part /boot
└─sda2             8:2    0 149.5G  0 part
sdb                8:16   0    20G  0 disk /id/sdb
sdc                8:32   0    20G  0 disk /id/sdc
sdd                8:48   0    20G  0 disk /id/sdd
sde                8:64   0    20G  0 disk /id/sde
sdf                8:80   0    20G  0 disk /id/sdf
sdg                8:96   0    20G  0 disk
sdh                8:112  0    20G  0 disk
sdi                8:128  0    20G  0 disk
sdj                8:144  0    20G  0 disk
sdk                8:160  0    20G  0 disk

大多數磁碟驅動程序使用sd前綴,但不是全部。歷史上sd代表“SCSI 磁碟”,但大多數磁碟使用接近SCSI的協議,並且大多數 Linux 磁碟驅動程序使用通用sd層加上控制器特定部分。但是,這不是一項義務,因此您需要檢查您的硬體。例如,eMMC設備具有前綴mmcblk. 一些硬體 RAID 驅動程序使用不同的前綴。虛擬機磁碟可能取決於虛擬化技術,也可能不/dev/sd*取決於虛擬化技術。

請注意,這也sd包括可移動驅動程序。例如,所有 USB 驅動器都有sd前綴,無論它們是硬碟、USB 密鑰、SD 卡讀卡器等。

另請注意,grep sd它非常脆弱,因為它匹配sd行上的任何位置,例如磁碟或分區標籤。grep '^sd'會不那麼脆弱。

總而言之,grep '^sd'做一些不是很有用的事情,但可能碰巧對你有用,這取決於你的硬體。如果您將安裝遷移到不同的硬體,它可能會停止工作。因此,您應該嘗試尋找其他東西。還要使用什麼取決於您所說的“所有磁碟(…)(不包括快閃記憶體卡或 ROM)”。畢竟,快閃記憶體是一種磁碟技術,沒有理由將它與旋轉磁碟區分開來。依賴機器是否虛擬化這一事實通常是個壞主意。如果您開始使用 RAID,則不清楚您是對底層硬體感興趣還是對可用於軟體的分區感興趣。

如果您只想查看不可移動驅動器,請查看並檢查文件中/sys/block/*包含哪些驅動器。這包括“非硬體”塊設備,例如 RAID/LVM 持有者和循環設備。0``removable

在 Linux 下,我建議將LVM用於不可移動媒體。它使管理變得容易得多。如果您使用 LVM,那麼或者pvdisplaylvdisplay可能會顯示您所追求的資訊(但我當然無法確定,因為您沒有告訴您要追求什麼)。

引用自:https://unix.stackexchange.com/questions/412731