bash - 測試磁碟是否未分割區

bash - 測試磁碟是否未分割區

我目前正在開發一個 DIY 網路存儲,它使用 mhddfs 聚合可用磁碟空間。

現在我想要的是,例如給定一個熱插拔托架,當我插入一個全新的未分割磁碟時,我希望使用 bash 腳本自動對磁碟進行分割並掛載新的 mhddfs 分割區。

如果伺服器關閉、插入新磁碟並再次開啟伺服器,也會發生相同的情況。

所以問題是:如何使用 bash 腳本偵測未分割的磁碟?

該問題還包括不應出現錯誤檢測。例如,如果插入加密磁碟,則不應自動重新分割和格式化 - 這一點是問題的主要興趣點。

答案1

執行檢查和分區的選項之一是parted命令。若要以「人類可讀」的格式取得系統中所有磁碟區塊設備的分割資訊:

/sbin/parted -l

或者,以“機器可讀”格式,使用:

/sbin/parted -lm

您將需要解析中的輸出以確定磁碟是否具有有效的分割表。

然後,使用類似的東西:

/sbin/parted <device> --script mkpart primary 1 -- -1

使用整個磁碟建立單一分割區。 mkpart 子命令的語法來自內存,我沒有具有可用磁碟的系統來驗證它是否正確

答案2

這是我用於備份的方法。

if [ $(/sbin/sfdisk -d ${DEV} 2>&1) == "" ]; then echo "Device not partitioned"; fi

其中 ${DEV} 是您正在詢問的裝置(最好從 udev 腳本運行。)

答案3

我假設您是在 Linux 核心上執行此操作。

使用fdisksfdiskutil-linux包裝中獲取:

fdisk -l /path/to/disk

或者:

sfdisk -l /path/to/disk

列出目前分區表。

Linux 會偵測可用分割區,因此尋找/dev/disk目錄可能足以滿足您的需求。

答案4

我真的很喜歡發布的答案堆疊溢位這顯示:

parted --script

喜歡:

parted --script /dev/sdb print

相關內容