我的硬體機器中的所有磁碟設備是否都以 -sd 開頭?
在我的 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,那麼或者
pvdisplay
或lvdisplay
可能會顯示您所追求的資訊(但我當然無法確定,因為您沒有告訴您要追求什麼)。