Linux がパーティションのないディスクのデバイス パーティション ブロック ファイルを表示するのはなぜですか?

Linux がパーティションのないディスクのデバイス パーティション ブロック ファイルを表示するのはなぜですか?

ランダム データで上書きした 2TB のディスクがあります。fdiskデバイスに認識可能なパーティション テーブルがないことが確認できます。ただし、ディスクのデバイス ファイルは 5 つあります: /dev/sdc{,1,2,3,4}

つまり

# 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

partxLinux は、起動時 (またはディスク接続時) または明示的に指示された場合 (たとえば、書き込み後に fdisk によって、またはによって)を除き、パーティション テーブルを再読み込みしませんblockdev --rereadpt。したがって、これらのいずれかを実行するまで、sdc[1-4]は存在し続けます。

最も簡単な修正方法は、 を呼び出して、partprobeカーネルにすべてのデバイスのパーティション テーブルを再読み込みするように指示するか、partprobe /dev/sdcそのディスクのパーティション テーブルのみを再読み込みするように指示することです。または、 fdisk を使用してその空のパーティション テーブルを書き込むと、 fdisk は と同じことを行いますpartprobe

また、ディスク (または、そのパーティションのいずれか) が使用中 (たとえば、ファイルシステム、スワップ、LVM PV など) の場合、カーネルはそれを再読み取りしないことにも注意してください。もちろん、使用中だった場合は、それらを消去したばかりなので問題が発生します。

最後に、すでに強制的に再読み込みを試みたことがある場合、ランダム データがたまたまパーティション テーブル シグネチャと一致している可能性があります。Linux はさまざまなパーティション テーブル形式をサポートしており (リストはカーネルのコンパイル時に選択されます)、一部のシグネチャは 1 バイトと小さいため、ランダム データが一致する確率は 1/256 です。その他のシグネチャはより長いため、確率ははるかに低くなります。全体的な確率はわかりませんが、カーネル ログをざっと確認すると、カーネルが認識したパーティション テーブル形式がわかります。

関連情報