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だけでなく/dev/sdc{1,2,3,4}もあるのはなぜですか?また、パーティション化されたデバイスのサイズが最大1.8 TiBまで追加されないのはなぜですか?

ベストアンサー1

partxLinuxは、起動(またはディスク接続)中または明示的に指示しない限り(fdiskを介してパーティションテーブルを使用または書き込みした後などblockdev --rereadpt)、パーティションテーブルを再読み込みしません。したがって、これらのいずれかを実行するまで、sdc[1-4]その項目は存在し続けます。

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

また、ディスク(またはそのパーティション)が使用されている場合(たとえば、ファイルシステム、スワップ、LVM PVなど)、カーネルはそれを再読み込みしません。もちろん、使用しているものがある場合は、ただ拭くだけで問題が発生します。

最後に強制的に再読み込みしようとすると、任意のデータがパーティションテーブルの署名と一致する可能性があります。 Linuxはさまざまなパーティションテーブル形式(カーネルをコンパイルするときにリストが選択されます)をサポートしていますが、その一部は1バイトほど小さいパーティションテーブル署名を持っているため、ランダムなデータ一致の可能性は1/256です。他のものは署名が長いため、可能性がはるかに低いです。全体的な可能性がどのくらいあるかはわかりませんが、カーネルログをすばやく確認すると、カーネルが認識するパーティションテーブルの形式が表示されます。

おすすめ記事