Почему Linux отображает файлы блоков разделов устройства для диска без разделов?

Почему Linux отображает файлы блоков разделов устройства для диска без разделов?

У меня есть диск на 2 ТБ, который я перезаписал случайными данными. 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,8 ТБ?

решение1

Linux не перечитывает таблицу разделов, за исключением случаев загрузки (или подключения диска) или когда это явно указано (например, fdisk после записи или с помощью partxили blockdev --rereadpt). Так что пока вы не сделаете что-то из этого, sdc[1-4]будет продолжать существовать.

Самым простым исправлением будет вызвать, partprobeчтобы указать ядру перечитать таблицу разделов на всех устройствах или partprobe /dev/sdcперечитать таблицу разделов только на этом диске. Или вы можете использовать fdisk, чтобы записать эту пустую таблицу разделов, тогда fdisk сделает то же самое, что и partprobe.

Обратите внимание также, что ядро ​​не будет перечитывать его, если диск (или, скорее, любой из его разделов) используется (например, как файловая система, подкачка, LVM PV и т. д.). Конечно, если что-то использовалось, у вас возникли проблемы, поскольку вы просто стерли их.

Наконец, если вы уже пробовали принудительно перечитывать, возможно, ваши случайные данные просто совпадают с сигнатурой таблицы разделов. Linux поддерживает множество различных форматов таблиц разделов (список выбирается при компиляции ядра), и сигнатура некоторых из них составляет всего один байт, поэтому вероятность совпадения случайных данных составляет 1/256. У других подписи длиннее, поэтому вероятность гораздо ниже. Я не уверен, каков общий шанс, но быстрая проверка журналов ядра покажет, какой формат таблицы разделов распознало ядро.

Связанный контент