ランダム データで上書きした 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
partx
Linux は、起動時 (またはディスク接続時) または明示的に指示された場合 (たとえば、書き込み後に fdisk によって、またはによって)を除き、パーティション テーブルを再読み込みしませんblockdev --rereadpt
。したがって、これらのいずれかを実行するまで、sdc[1-4]
は存在し続けます。
最も簡単な修正方法は、 を呼び出して、partprobe
カーネルにすべてのデバイスのパーティション テーブルを再読み込みするように指示するか、partprobe /dev/sdc
そのディスクのパーティション テーブルのみを再読み込みするように指示することです。または、 fdisk を使用してその空のパーティション テーブルを書き込むと、 fdisk は と同じことを行いますpartprobe
。
また、ディスク (または、そのパーティションのいずれか) が使用中 (たとえば、ファイルシステム、スワップ、LVM PV など) の場合、カーネルはそれを再読み取りしないことにも注意してください。もちろん、使用中だった場合は、それらを消去したばかりなので問題が発生します。
最後に、すでに強制的に再読み込みを試みたことがある場合、ランダム データがたまたまパーティション テーブル シグネチャと一致している可能性があります。Linux はさまざまなパーティション テーブル形式をサポートしており (リストはカーネルのコンパイル時に選択されます)、一部のシグネチャは 1 バイトと小さいため、ランダム データが一致する確率は 1/256 です。その他のシグネチャはより長いため、確率ははるかに低くなります。全体的な確率はわかりませんが、カーネル ログをざっと確認すると、カーネルが認識したパーティション テーブル形式がわかります。