為什麼 Linux 顯示沒有分割區的磁碟的設備分區塊檔案?

為什麼 Linux 顯示沒有分割區的磁碟的設備分區塊檔案?

我有一個 2TB 磁碟,已用隨機資料覆蓋。fdisk確認設備沒有可識別的分區表。然而,我看到了磁碟的這 5 個裝置檔案: /dev/sdc{,1,2,3,4}

IE

# for i in /dev/sdc{,1,2,3,4} ; do fdisk -l -u $i ; done

Disk /dev/sdc: 1.8 TiB, 2000398934016 bytes, 3907029168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/sdc1: 555.1 GiB, 595985804288 bytes, 1164034774 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/sdc2: 1.6 TiB, 1781956913152 bytes, 3480384596 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/sdc3: 928.5 GiB, 997001973760 bytes, 1947269480 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/sdc4: 1 TiB, 1153125198336 bytes, 2252197653 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

同樣,該設備沒有分區表:

# fdisk /dev/sdc 

Welcome to fdisk (util-linux 2.25.2). 
Changes will remain in memory only, until you decide to write them. 
Be careful before using the write command. 

Device does not contain a recognized partition table. 
Created a new DOS disklabel with disk identifier 0x56b93c1d. 

Command (m for help): p 
Disk /dev/sdc: 1.8 TiB, 2000398934016 bytes, 3907029168 sectors 
Units: sectors of 1 * 512 = 512 bytes 
Sector size (logical/physical): 512 bytes / 512 bytes 
I/O size (minimum/optimal): 512 bytes / 512 bytes 
Disklabel type: dos 

為什麼會有分區裝置-也就是為什麼有 /dev/sdc{1,2,3,4} 而不僅僅是 /dev/sdc?此外,為什麼分區設備的大小加起來沒有達到 1.8TiB?

答案1

Linux 不會重新讀取分割區表,除非在啟動(或磁碟連線)時或明確告知這樣做時(例如,在寫入分割區表後透過 fdisk 或使用partxblockdev --rereadpt)。因此,在您執行其中一項之前,sdc[1-4]它將繼續存在。

最簡單的修復方法是呼叫partprobe命令核心重新讀取所有裝置上的分割區表,或partprobe /dev/sdc僅重新讀取該磁碟上的分割表。或者您可以使用 fdisk 寫入該空分區表,然後 fdisk 將執行與partprobe.

另請注意,如果磁碟(或其任何分割區)正在使用(例如,作為檔案系統、交換、LVM PV 等),核心將不會重新讀取它。當然,如果有正在使用的東西,那麼當你只是擦拭它們時就會遇到問題。

最後,如果您已經嘗試強制重新讀取,則您的隨機資料可能恰好與分割表簽章相符。 Linux 支援許多不同的分區表格式(該列表是在編譯核心時選擇的),其中一些分區表的簽名小至一個字節,因此隨機資料匹配的幾率為 1/256。其他人的簽名更長,所以機會要低得多。我不確定總體機會是什麼,但快速檢查內核日誌將顯示內核識別的分區表格式。

相關內容